From 6a6d4a3c9b24e1cc3b78b284355016065f379fbc Mon Sep 17 00:00:00 2001 From: Jakob Ketterl Date: Thu, 17 Sep 2020 22:21:49 +0200 Subject: [PATCH] secondary fft is now complex, better display for digimodes based on FM --- csdr/csdr.py | 8 +++----- htdocs/openwebrx.js | 27 +++++++++------------------ 2 files changed, 12 insertions(+), 23 deletions(-) diff --git a/csdr/csdr.py b/csdr/csdr.py index 9681e39..de39d83 100644 --- a/csdr/csdr.py +++ b/csdr/csdr.py @@ -278,9 +278,9 @@ class dsp(object): chain = ["cat {input_pipe}"] if which == "fft": chain += [ - "csdr realpart_cf", - "csdr fft_fc {secondary_fft_input_size} {secondary_fft_block_size}", + "csdr fft_cc {secondary_fft_input_size} {secondary_fft_block_size}", "csdr logpower_cf -70", + "csdr fft_exchange_sides_ff {secondary_fft_input_size}", ] if self.fft_compression == "adpcm": chain += ["csdr compress_fft_adpcm_f_u8 {secondary_fft_size}"] @@ -318,9 +318,7 @@ class dsp(object): self.restart() def secondary_fft_block_size(self): - return (self.samp_rate / self.decimation) / ( - self.fft_fps * 2 - ) # *2 is there because we do FFT on real signal here + return (self.samp_rate / self.decimation) / self.fft_fps def secondary_decimation(self): return 1 # currently unused diff --git a/htdocs/openwebrx.js b/htdocs/openwebrx.js index 6625b01..35fc3d5 100644 --- a/htdocs/openwebrx.js +++ b/htdocs/openwebrx.js @@ -1628,8 +1628,8 @@ function secondary_demod_waterfall_add(data) { } function secondary_demod_update_marker() { - var width = Math.max((secondary_bw / (if_samp_rate / 2)) * secondary_demod_canvas_width, 5); - var center_at = (secondary_demod_channel_freq / (if_samp_rate / 2)) * secondary_demod_canvas_width + secondary_demod_canvas_left; + var width = Math.max((secondary_bw / if_samp_rate) * secondary_demod_canvas_width, 5); + var center_at = ((secondary_demod_channel_freq - secondary_demod_low_cut) / if_samp_rate) * secondary_demod_canvas_width; var left = center_at - width / 2; $("#openwebrx-digimode-select-channel").width(width).css("left", left + "px") } @@ -1677,26 +1677,17 @@ function secondary_demod_canvas_container_mouseup(evt) { function secondary_demod_waterfall_set_zoom(low_cut, high_cut) { if (!secondary_demod_canvases_initialized) return; - if (low_cut < 0 && high_cut < 0) { - var hctmp = high_cut; - var lctmp = low_cut; - low_cut = -hctmp; - high_cut = -lctmp; - } - else if (low_cut < 0 && high_cut > 0) { - high_cut = Math.max(Math.abs(high_cut), Math.abs(low_cut)); - low_cut = 0; - } secondary_demod_low_cut = low_cut; secondary_demod_high_cut = high_cut; var shown_bw = high_cut - low_cut; - secondary_demod_canvas_width = $(secondary_demod_canvas_container).width() * (if_samp_rate / 2) / shown_bw; - secondary_demod_canvas_left = -secondary_demod_canvas_width * (low_cut / (if_samp_rate / 2)); - //console.log("setzoom", secondary_demod_canvas_width, secondary_demod_canvas_left, low_cut, high_cut); + secondary_demod_canvas_width = $(secondary_demod_canvas_container).width() * (if_samp_rate) / shown_bw; + secondary_demod_canvas_left = (-secondary_demod_canvas_width / 2) - (low_cut / if_samp_rate) * secondary_demod_canvas_width; secondary_demod_canvases.map(function (x) { - $(x).css("left", secondary_demod_canvas_left + "px").css("width", secondary_demod_canvas_width + "px"); - }) - ; + $(x).css({ + left: secondary_demod_canvas_left + "px", + width: secondary_demod_canvas_width + "px" + }); + }); secondary_demod_update_channel_freq_from_event(); }