mirror of
				https://github.com/f4exb/sdrangel.git
				synced 2025-11-04 05:30:32 -05:00 
			
		
		
		
	DSD demod: rescale demod gain and volume
This commit is contained in:
		
							parent
							
								
									65ec5015df
								
							
						
					
					
						commit
						6e2e8dc2b5
					
				@ -57,7 +57,7 @@ DSDDemod::DSDDemod(DeviceSourceAPI *deviceAPI) :
 | 
				
			|||||||
	m_config.m_inputFrequencyOffset = 0;
 | 
						m_config.m_inputFrequencyOffset = 0;
 | 
				
			||||||
	m_config.m_rfBandwidth = 10000.0;
 | 
						m_config.m_rfBandwidth = 10000.0;
 | 
				
			||||||
    m_config.m_fmDeviation = 5000.0;
 | 
					    m_config.m_fmDeviation = 5000.0;
 | 
				
			||||||
	m_config.m_demodGain = 100;
 | 
						m_config.m_demodGain = 1.0;
 | 
				
			||||||
	m_config.m_squelchGate = 5; // 10s of ms at 48000 Hz sample rate. Corresponds to 2400 for AGC attack
 | 
						m_config.m_squelchGate = 5; // 10s of ms at 48000 Hz sample rate. Corresponds to 2400 for AGC attack
 | 
				
			||||||
	m_config.m_squelch = -30.0;
 | 
						m_config.m_squelch = -30.0;
 | 
				
			||||||
	m_config.m_volume = 1.0;
 | 
						m_config.m_volume = 1.0;
 | 
				
			||||||
@ -107,8 +107,8 @@ DSDDemod::~DSDDemod()
 | 
				
			|||||||
void DSDDemod::configure(MessageQueue* messageQueue,
 | 
					void DSDDemod::configure(MessageQueue* messageQueue,
 | 
				
			||||||
		Real rfBandwidth,
 | 
							Real rfBandwidth,
 | 
				
			||||||
		Real fmDeviation,
 | 
							Real fmDeviation,
 | 
				
			||||||
		int  demodGain,
 | 
							Real demodGain,
 | 
				
			||||||
		int  volume,
 | 
							Real volume,
 | 
				
			||||||
		int  baudRate,
 | 
							int  baudRate,
 | 
				
			||||||
		int  squelchGate,
 | 
							int  squelchGate,
 | 
				
			||||||
		Real squelch,
 | 
							Real squelch,
 | 
				
			||||||
@ -182,7 +182,7 @@ void DSDDemod::feed(const SampleVector::const_iterator& begin, const SampleVecto
 | 
				
			|||||||
 | 
					
 | 
				
			||||||
            m_magsqCount++;
 | 
					            m_magsqCount++;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
            Real demod = 32768.0f * m_phaseDiscri.phaseDiscriminator(ci) * ((float) m_running.m_demodGain / 100.0f);
 | 
					            Real demod = 32768.0f * m_phaseDiscri.phaseDiscriminator(ci) * m_running.m_demodGain;
 | 
				
			||||||
            m_sampleCount++;
 | 
					            m_sampleCount++;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
            // AF processing
 | 
					            // AF processing
 | 
				
			||||||
@ -414,8 +414,8 @@ bool DSDDemod::handleMessage(const Message& cmd)
 | 
				
			|||||||
 | 
					
 | 
				
			||||||
		qDebug() << "DSDDemod::handleMessage: MsgConfigureDSDDemod: m_rfBandwidth: " << m_config.m_rfBandwidth
 | 
							qDebug() << "DSDDemod::handleMessage: MsgConfigureDSDDemod: m_rfBandwidth: " << m_config.m_rfBandwidth
 | 
				
			||||||
                << " m_fmDeviation: " << m_config.m_fmDeviation
 | 
					                << " m_fmDeviation: " << m_config.m_fmDeviation
 | 
				
			||||||
				<< " m_demodGain: " << m_config.m_demodGain / 100.0
 | 
									<< " m_demodGain: " << m_config.m_demodGain
 | 
				
			||||||
				<< " m_volume: " << m_config.m_volume / 10.0
 | 
									<< " m_volume: " << m_config.m_volume
 | 
				
			||||||
                << " m_baudRate: " << m_config.m_baudRate
 | 
					                << " m_baudRate: " << m_config.m_baudRate
 | 
				
			||||||
				<< " m_squelchGate" << m_config.m_squelchGate
 | 
									<< " m_squelchGate" << m_config.m_squelchGate
 | 
				
			||||||
				<< " m_squelch: " << m_config.m_squelch
 | 
									<< " m_squelch: " << m_config.m_squelch
 | 
				
			||||||
@ -483,7 +483,7 @@ void DSDDemod::apply(bool force)
 | 
				
			|||||||
 | 
					
 | 
				
			||||||
    if ((m_config.m_volume != m_running.m_volume) || force)
 | 
					    if ((m_config.m_volume != m_running.m_volume) || force)
 | 
				
			||||||
    {
 | 
					    {
 | 
				
			||||||
        m_dsdDecoder.setAudioGain(m_config.m_volume / 10.0f);
 | 
					        m_dsdDecoder.setAudioGain(m_config.m_volume);
 | 
				
			||||||
    }
 | 
					    }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
    if ((m_config.m_baudRate != m_running.m_baudRate) || force)
 | 
					    if ((m_config.m_baudRate != m_running.m_baudRate) || force)
 | 
				
			||||||
 | 
				
			|||||||
@ -71,8 +71,8 @@ public:
 | 
				
			|||||||
	void configure(MessageQueue* messageQueue,
 | 
						void configure(MessageQueue* messageQueue,
 | 
				
			||||||
			Real rfBandwidth,
 | 
								Real rfBandwidth,
 | 
				
			||||||
			Real fmDeviation,
 | 
								Real fmDeviation,
 | 
				
			||||||
			int  demodGain,
 | 
								Real demodGain,
 | 
				
			||||||
            int  volume,
 | 
					            Real volume,
 | 
				
			||||||
            int  baudRate,
 | 
					            int  baudRate,
 | 
				
			||||||
			int  squelchGate,
 | 
								int  squelchGate,
 | 
				
			||||||
			Real squelch,
 | 
								Real squelch,
 | 
				
			||||||
@ -141,8 +141,8 @@ private:
 | 
				
			|||||||
	public:
 | 
						public:
 | 
				
			||||||
		Real getRFBandwidth() const { return m_rfBandwidth; }
 | 
							Real getRFBandwidth() const { return m_rfBandwidth; }
 | 
				
			||||||
        Real getFMDeviation() const { return m_fmDeviation; }
 | 
					        Real getFMDeviation() const { return m_fmDeviation; }
 | 
				
			||||||
		int  getDemodGain() const { return m_demodGain; }
 | 
					        Real getDemodGain() const { return m_demodGain; }
 | 
				
			||||||
        int  getVolume() const { return m_volume; }
 | 
					        Real getVolume() const { return m_volume; }
 | 
				
			||||||
        int  getBaudRate() const { return m_baudRate; }
 | 
					        int  getBaudRate() const { return m_baudRate; }
 | 
				
			||||||
		int  getSquelchGate() const { return m_squelchGate; }
 | 
							int  getSquelchGate() const { return m_squelchGate; }
 | 
				
			||||||
		Real getSquelch() const { return m_squelch; }
 | 
							Real getSquelch() const { return m_squelch; }
 | 
				
			||||||
@ -159,8 +159,8 @@ private:
 | 
				
			|||||||
 | 
					
 | 
				
			||||||
		static MsgConfigureDSDDemod* create(Real rfBandwidth,
 | 
							static MsgConfigureDSDDemod* create(Real rfBandwidth,
 | 
				
			||||||
                Real fmDeviation,
 | 
					                Real fmDeviation,
 | 
				
			||||||
				int  demodGain,
 | 
					                Real demodGain,
 | 
				
			||||||
				int  volume,
 | 
									Real volume,
 | 
				
			||||||
				int  baudRate,
 | 
									int  baudRate,
 | 
				
			||||||
				int  squelchGate,
 | 
									int  squelchGate,
 | 
				
			||||||
				Real squelch,
 | 
									Real squelch,
 | 
				
			||||||
@ -200,7 +200,7 @@ private:
 | 
				
			|||||||
		Real m_rfBandwidth;
 | 
							Real m_rfBandwidth;
 | 
				
			||||||
        Real m_fmDeviation;
 | 
					        Real m_fmDeviation;
 | 
				
			||||||
		Real m_demodGain;
 | 
							Real m_demodGain;
 | 
				
			||||||
		int  m_volume;
 | 
							Real m_volume;
 | 
				
			||||||
		int  m_baudRate;
 | 
							int  m_baudRate;
 | 
				
			||||||
		int  m_squelchGate;
 | 
							int  m_squelchGate;
 | 
				
			||||||
		Real m_squelch;
 | 
							Real m_squelch;
 | 
				
			||||||
@ -216,10 +216,10 @@ private:
 | 
				
			|||||||
        quint16 m_udpPort;
 | 
					        quint16 m_udpPort;
 | 
				
			||||||
        bool m_force;
 | 
					        bool m_force;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
		MsgConfigureDSDDemod(int rfBandwidth,
 | 
							MsgConfigureDSDDemod(Real rfBandwidth,
 | 
				
			||||||
                int  fmDeviation,
 | 
							        Real fmDeviation,
 | 
				
			||||||
				int  demodGain,
 | 
							        Real demodGain,
 | 
				
			||||||
				int  volume,
 | 
									Real volume,
 | 
				
			||||||
				int  baudRate,
 | 
									int  baudRate,
 | 
				
			||||||
				int  squelchGate,
 | 
									int  squelchGate,
 | 
				
			||||||
				Real squelch,
 | 
									Real squelch,
 | 
				
			||||||
@ -266,8 +266,8 @@ private:
 | 
				
			|||||||
		qint64 m_inputFrequencyOffset;
 | 
							qint64 m_inputFrequencyOffset;
 | 
				
			||||||
		Real m_rfBandwidth;
 | 
							Real m_rfBandwidth;
 | 
				
			||||||
        Real m_fmDeviation;
 | 
					        Real m_fmDeviation;
 | 
				
			||||||
		int  m_demodGain;
 | 
					        Real m_demodGain;
 | 
				
			||||||
		int  m_volume;
 | 
					        Real m_volume;
 | 
				
			||||||
		int  m_baudRate;
 | 
							int  m_baudRate;
 | 
				
			||||||
		int  m_squelchGate;
 | 
							int  m_squelchGate;
 | 
				
			||||||
		Real m_squelch;
 | 
							Real m_squelch;
 | 
				
			||||||
@ -288,8 +288,8 @@ private:
 | 
				
			|||||||
			m_inputFrequencyOffset(0),
 | 
								m_inputFrequencyOffset(0),
 | 
				
			||||||
			m_rfBandwidth(10000.0),
 | 
								m_rfBandwidth(10000.0),
 | 
				
			||||||
            m_fmDeviation(5000.0),
 | 
					            m_fmDeviation(5000.0),
 | 
				
			||||||
			m_demodGain(-1),
 | 
								m_demodGain(1.0),
 | 
				
			||||||
			m_volume(-1),
 | 
								m_volume(1.0),
 | 
				
			||||||
			m_baudRate(4800),
 | 
								m_baudRate(4800),
 | 
				
			||||||
			m_squelchGate(1),
 | 
								m_squelchGate(1),
 | 
				
			||||||
			m_squelch(0),
 | 
								m_squelch(0),
 | 
				
			||||||
 | 
				
			|||||||
@ -409,8 +409,8 @@ void DSDDemodGUI::applySettings(bool force)
 | 
				
			|||||||
		m_dsdDemod->configure(m_dsdDemod->getInputMessageQueue(),
 | 
							m_dsdDemod->configure(m_dsdDemod->getInputMessageQueue(),
 | 
				
			||||||
			ui->rfBW->value() * 100.0,
 | 
								ui->rfBW->value() * 100.0,
 | 
				
			||||||
            ui->fmDeviation->value() * 100.0,
 | 
					            ui->fmDeviation->value() * 100.0,
 | 
				
			||||||
			ui->demodGain->value(),
 | 
								ui->demodGain->value() / 100.0,
 | 
				
			||||||
			ui->volume->value(),
 | 
								ui->volume->value() / 10.0,
 | 
				
			||||||
			DSDDemodBaudRates::getRate(ui->baudRate->currentIndex()),
 | 
								DSDDemodBaudRates::getRate(ui->baudRate->currentIndex()),
 | 
				
			||||||
			ui->squelchGate->value(), // in 10ths of ms
 | 
								ui->squelchGate->value(), // in 10ths of ms
 | 
				
			||||||
			ui->squelch->value(),
 | 
								ui->squelch->value(),
 | 
				
			||||||
 | 
				
			|||||||
@ -33,10 +33,10 @@ void DSDDemodSettings::resetToDefaults()
 | 
				
			|||||||
    m_inputSampleRate = 96000;
 | 
					    m_inputSampleRate = 96000;
 | 
				
			||||||
    m_inputFrequencyOffset = 0;
 | 
					    m_inputFrequencyOffset = 0;
 | 
				
			||||||
    m_rfBandwidth = 10000.0;
 | 
					    m_rfBandwidth = 10000.0;
 | 
				
			||||||
 | 
					    m_fmDeviation = 5000.0;
 | 
				
			||||||
    m_demodGain = 1.0;
 | 
					    m_demodGain = 1.0;
 | 
				
			||||||
    m_volume = 1.0;
 | 
					    m_volume = 1.0;
 | 
				
			||||||
    m_baudRate = 4800;
 | 
					    m_baudRate = 4800;
 | 
				
			||||||
    m_fmDeviation = 5000.0;
 | 
					 | 
				
			||||||
    m_squelchGate = 5; // 10s of ms at 48000 Hz sample rate. Corresponds to 2400 for AGC attack
 | 
					    m_squelchGate = 5; // 10s of ms at 48000 Hz sample rate. Corresponds to 2400 for AGC attack
 | 
				
			||||||
    m_squelch = -30.0;
 | 
					    m_squelch = -30.0;
 | 
				
			||||||
    m_audioMute = false;
 | 
					    m_audioMute = false;
 | 
				
			||||||
 | 
				
			|||||||
@ -26,10 +26,10 @@ struct DSDDemodSettings
 | 
				
			|||||||
    int m_inputSampleRate;
 | 
					    int m_inputSampleRate;
 | 
				
			||||||
    qint64 m_inputFrequencyOffset;
 | 
					    qint64 m_inputFrequencyOffset;
 | 
				
			||||||
    Real  m_rfBandwidth;
 | 
					    Real  m_rfBandwidth;
 | 
				
			||||||
 | 
					    Real  m_fmDeviation;
 | 
				
			||||||
    Real  m_demodGain;
 | 
					    Real  m_demodGain;
 | 
				
			||||||
    Real  m_volume;
 | 
					    Real  m_volume;
 | 
				
			||||||
    int  m_baudRate;
 | 
					    int  m_baudRate;
 | 
				
			||||||
    Real  m_fmDeviation;
 | 
					 | 
				
			||||||
    int  m_squelchGate;
 | 
					    int  m_squelchGate;
 | 
				
			||||||
    Real m_squelch;
 | 
					    Real m_squelch;
 | 
				
			||||||
    bool m_audioMute;
 | 
					    bool m_audioMute;
 | 
				
			||||||
 | 
				
			|||||||
		Loading…
	
	
			
			x
			
			
		
	
		Reference in New Issue
	
	Block a user