From a81a642db90b1305e333bde53b7a4408ed67211d Mon Sep 17 00:00:00 2001 From: f4exb Date: Sun, 6 Aug 2017 17:48:18 +0200 Subject: [PATCH] WFM modulator: pull a number of input audio samples depending on total interpolation. Fixes issue #43 --- plugins/channeltx/modwfm/wfmmod.cpp | 8 +++++--- plugins/channeltx/modwfm/wfmmod.h | 2 ++ plugins/channeltx/modwfm/wfmmodplugin.cpp | 2 +- 3 files changed, 8 insertions(+), 4 deletions(-) diff --git a/plugins/channeltx/modwfm/wfmmod.cpp b/plugins/channeltx/modwfm/wfmmod.cpp index 61c3a0826..7a9cdc28a 100644 --- a/plugins/channeltx/modwfm/wfmmod.cpp +++ b/plugins/channeltx/modwfm/wfmmod.cpp @@ -168,7 +168,7 @@ void WFMMod::pull(Sample& sample) void WFMMod::pullAudio(int nbSamples) { - unsigned int nbSamplesAudio = nbSamples * m_interpolatorDistance; + unsigned int nbSamplesAudio = nbSamples * ((Real) m_config.m_audioSampleRate / (Real) m_config.m_basebandSampleRate); if (nbSamplesAudio > m_audioBuffer.size()) { @@ -295,13 +295,15 @@ bool WFMMod::handleMessage(const Message& cmd) { UpChannelizer::MsgChannelizerNotification& notif = (UpChannelizer::MsgChannelizerNotification&) cmd; - m_config.m_outputSampleRate = notif.getSampleRate(); + m_config.m_basebandSampleRate = notif.getBasebandSampleRate(); + m_config.m_outputSampleRate = notif.getSampleRate(); m_config.m_inputFrequencyOffset = notif.getFrequencyOffset(); apply(); qDebug() << "WFMMod::handleMessage: MsgChannelizerNotification:" - << " m_outputSampleRate: " << m_config.m_outputSampleRate + << " m_basebandSampleRate: " << m_config.m_basebandSampleRate + << " m_outputSampleRate: " << m_config.m_outputSampleRate << " m_inputFrequencyOffset: " << m_config.m_inputFrequencyOffset; return true; diff --git a/plugins/channeltx/modwfm/wfmmod.h b/plugins/channeltx/modwfm/wfmmod.h index 8a1e91b50..cc6202745 100644 --- a/plugins/channeltx/modwfm/wfmmod.h +++ b/plugins/channeltx/modwfm/wfmmod.h @@ -278,6 +278,7 @@ private: }; struct Config { + int m_basebandSampleRate; int m_outputSampleRate; qint64 m_inputFrequencyOffset; Real m_rfBandwidth; @@ -290,6 +291,7 @@ private: bool m_playLoop; Config() : + m_basebandSampleRate(0), m_outputSampleRate(-1), m_inputFrequencyOffset(0), m_rfBandwidth(-1), diff --git a/plugins/channeltx/modwfm/wfmmodplugin.cpp b/plugins/channeltx/modwfm/wfmmodplugin.cpp index 8d6b58d83..486077437 100644 --- a/plugins/channeltx/modwfm/wfmmodplugin.cpp +++ b/plugins/channeltx/modwfm/wfmmodplugin.cpp @@ -23,7 +23,7 @@ const PluginDescriptor WFMModPlugin::m_pluginDescriptor = { QString("WFM Modulator"), - QString("3.5.0"), + QString("3.5.4"), QString("(c) Edouard Griffiths, F4EXB"), QString("https://github.com/f4exb/sdrangel"), true,