From fdfa4351adb812c9b332097cacddeec85281a191 Mon Sep 17 00:00:00 2001 From: f4exb Date: Sun, 6 Aug 2017 17:23:27 +0200 Subject: [PATCH] AM modulator: pull a number of input audio samples depending on total interpolation. Fixes issue #43 --- plugins/channeltx/modam/ammod.cpp | 6 ++++-- plugins/channeltx/modam/ammod.h | 2 ++ plugins/channeltx/modam/ammodplugin.cpp | 2 +- 3 files changed, 7 insertions(+), 3 deletions(-) diff --git a/plugins/channeltx/modam/ammod.cpp b/plugins/channeltx/modam/ammod.cpp index f610467df..01f276250 100644 --- a/plugins/channeltx/modam/ammod.cpp +++ b/plugins/channeltx/modam/ammod.cpp @@ -141,7 +141,7 @@ void AMMod::pull(Sample& sample) void AMMod::pullAudio(int nbSamples) { // qDebug("AMMod::pullAudio: %d", nbSamples); - unsigned int nbAudioSamples = nbSamples * m_interpolatorDistance; + unsigned int nbAudioSamples = nbSamples * ((Real) m_config.m_audioSampleRate / (Real) m_config.m_basebandSampleRate); if (nbAudioSamples > m_audioBuffer.size()) { @@ -268,13 +268,15 @@ bool AMMod::handleMessage(const Message& cmd) { UpChannelizer::MsgChannelizerNotification& notif = (UpChannelizer::MsgChannelizerNotification&) cmd; + m_config.m_basebandSampleRate = notif.getBasebandSampleRate(); m_config.m_outputSampleRate = notif.getSampleRate(); m_config.m_inputFrequencyOffset = notif.getFrequencyOffset(); apply(); qDebug() << "AMMod::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/modam/ammod.h b/plugins/channeltx/modam/ammod.h index 1081a64ad..8780d18e1 100644 --- a/plugins/channeltx/modam/ammod.h +++ b/plugins/channeltx/modam/ammod.h @@ -255,6 +255,7 @@ private: }; struct Config { + int m_basebandSampleRate; int m_outputSampleRate; qint64 m_inputFrequencyOffset; Real m_rfBandwidth; @@ -266,6 +267,7 @@ private: bool m_playLoop; Config() : + m_basebandSampleRate(0), m_outputSampleRate(-1), m_inputFrequencyOffset(0), m_rfBandwidth(-1), diff --git a/plugins/channeltx/modam/ammodplugin.cpp b/plugins/channeltx/modam/ammodplugin.cpp index 13f3d4258..90acaa704 100644 --- a/plugins/channeltx/modam/ammodplugin.cpp +++ b/plugins/channeltx/modam/ammodplugin.cpp @@ -23,7 +23,7 @@ const PluginDescriptor AMModPlugin::m_pluginDescriptor = { QString("AM Modulator"), - QString("3.5.0"), + QString("3.5.4"), QString("(c) Edouard Griffiths, F4EXB"), QString("https://github.com/f4exb/sdrangel"), true,