mirror of
https://github.com/portapack-mayhem/mayhem-firmware.git
synced 2026-09-08 15:59:08 +00:00
Add AM spectrum ZOOM x3/x4 with optimized x4 decimation (#3304)
* Add AM spectrum zoom x3 and x4 * Optimize AM spectrum zoom x4 processing * Fix AM spectrum zoom formatting * Fix AM spectrum zoom header formatting
This commit is contained in:
@@ -77,6 +77,8 @@ constexpr fir_taps_real<16> taps_audio_wide_halfband_0{
|
||||
* contiguous 256-sample FFT frame is being collected:
|
||||
* 384kHz -> 192kHz (Zoom x1)
|
||||
* 192kHz -> 96kHz (additional stage for Zoom x2)
|
||||
* 96kHz -> 48kHz (additional stage for Zoom x3)
|
||||
* 96kHz -> 48kHz -> 24kHz (after the direct /4 stage for Zoom x4)
|
||||
*/
|
||||
constexpr fir_taps_real<63> taps_audio_spectrum_halfband{
|
||||
.low_frequency_normalized = -0.23f,
|
||||
@@ -149,6 +151,49 @@ constexpr fir_taps_real<63> taps_audio_spectrum_halfband{
|
||||
}},
|
||||
};
|
||||
|
||||
/* Direct 384kHz -> 96kHz spectrum decimator for AM Zoom x4.
|
||||
* Equiripple low-pass: passband edge 25.92kHz, stopband edge 70.08kHz.
|
||||
*/
|
||||
constexpr fir_taps_real<32> taps_audio_spectrum_decim_4{
|
||||
.low_frequency_normalized = -25920.0f / 384000.0f,
|
||||
.high_frequency_normalized = 25920.0f / 384000.0f,
|
||||
.transition_normalized = 44160.0f / 384000.0f,
|
||||
.taps = {{
|
||||
-26,
|
||||
-62,
|
||||
-79,
|
||||
-24,
|
||||
126,
|
||||
312,
|
||||
377,
|
||||
154,
|
||||
-389,
|
||||
-1020,
|
||||
-1263,
|
||||
-616,
|
||||
1137,
|
||||
3685,
|
||||
6234,
|
||||
7829,
|
||||
7829,
|
||||
6234,
|
||||
3685,
|
||||
1137,
|
||||
-616,
|
||||
-1263,
|
||||
-1020,
|
||||
-389,
|
||||
154,
|
||||
377,
|
||||
312,
|
||||
126,
|
||||
-24,
|
||||
-79,
|
||||
-62,
|
||||
-26,
|
||||
}},
|
||||
};
|
||||
|
||||
// NBFM 16K0F3E emission type /////////////////////////////////////////////
|
||||
|
||||
// IFIR image-reject filter: fs=3072000, pass=8000, stop=344000, decim=8, fout=384000
|
||||
|
||||
@@ -728,6 +728,8 @@ class AMConfigureMessage : public Message {
|
||||
enum class Zoom_waterfall : size_t {
|
||||
ZOOM_x_1 = 1,
|
||||
ZOOM_x_2 = 2,
|
||||
ZOOM_x_3 = 4,
|
||||
ZOOM_x_4 = 8,
|
||||
};
|
||||
|
||||
constexpr AMConfigureMessage(
|
||||
|
||||
Reference in New Issue
Block a user