mirror of
				https://github.com/f4exb/sdrangel.git
				synced 2025-10-31 13:00:26 -04:00 
			
		
		
		
	Center audio spectrum.
This commit is contained in:
		
							parent
							
								
									fa780d9134
								
							
						
					
					
						commit
						960700249c
					
				| @ -80,7 +80,8 @@ void NFMDemod::feed(SampleVector::const_iterator begin, SampleVector::const_iter | ||||
| 			demod = m_volume * m_lowpass.filter(demod); | ||||
| 			sample = demod * 32767; | ||||
| 
 | ||||
| 			if (!(framedrop & 3)) | ||||
| 			// Display audio spectrum to 12kHz
 | ||||
| 			if (!(framedrop & 1)) | ||||
| 				m_sampleBuffer.push_back(Sample(sample, sample)); | ||||
| 
 | ||||
| 			if(m_squelchState > 0) | ||||
|  | ||||
| @ -163,7 +163,7 @@ NFMDemodGUI::NFMDemodGUI(PluginAPI* pluginAPI, QWidget* parent) : | ||||
| 	m_pluginAPI->addAudioSource(m_audioFifo); | ||||
| 	m_pluginAPI->addSampleSink(m_threadedSampleSink); | ||||
| 
 | ||||
| 	ui->glSpectrum->setCenterFrequency(0); | ||||
| 	ui->glSpectrum->setCenterFrequency(6000); | ||||
| 	ui->glSpectrum->setSampleRate(12000); | ||||
| 	ui->glSpectrum->setDisplayWaterfall(true); | ||||
| 	ui->glSpectrum->setDisplayMaxHold(true); | ||||
|  | ||||
| @ -137,11 +137,10 @@ SSBDemodGUI::SSBDemodGUI(PluginAPI* pluginAPI, QWidget* parent) : | ||||
| 	m_pluginAPI->addAudioSource(m_audioFifo); | ||||
| 	m_pluginAPI->addSampleSink(m_threadedSampleSink); | ||||
| 
 | ||||
| 	ui->glSpectrum->setCenterFrequency(0); | ||||
| 	ui->glSpectrum->setSampleRate(12000); | ||||
| 	ui->glSpectrum->setCenterFrequency(3000); | ||||
| 	ui->glSpectrum->setSampleRate(6000); | ||||
| 	ui->glSpectrum->setDisplayWaterfall(true); | ||||
| 	ui->glSpectrum->setDisplayMaxHold(true); | ||||
| 	m_spectrumVis->configure(m_threadedSampleSink->getMessageQueue(), 64, 10, FFTWindow::BlackmanHarris); | ||||
| 
 | ||||
| 	m_channelMarker = new ChannelMarker(this); | ||||
| 	m_channelMarker->setColor(Qt::red); | ||||
|  | ||||
| @ -60,19 +60,30 @@ void SpectrumVis::feed(SampleVector::const_iterator begin, SampleVector::const_i | ||||
| 			Real ofs = 20.0f * log10f(1.0f / m_fftSize); | ||||
| 			Real mult = (10.0f / log2f(10.0f)); | ||||
| 			const Complex* fftOut = m_fft->out(); | ||||
| 			size_t spectrumStart = 0; | ||||
| 			Complex c; | ||||
| 			Real v; | ||||
| 			size_t halfSize = m_fftSize / 2; | ||||
| 
 | ||||
| 			if ( positiveOnly ) { | ||||
| 				Real logZero = ofs + mult * log2f( 0 ); | ||||
| 				for(size_t i = 0; i < m_fftSize / 2; i++) | ||||
| 					m_logPowerSpectrum[i] = logZero; | ||||
| 				spectrumStart = m_fftSize / 2; | ||||
| 			} | ||||
| 			for(size_t i = spectrumStart; i < m_fftSize; i++) { | ||||
| 				Complex c = fftOut[((i + (m_fftSize >> 1)) & (m_fftSize - 1))]; | ||||
| 				Real v = c.real() * c.real() + c.imag() * c.imag(); | ||||
| 				v = mult * log2f(v) + ofs; | ||||
| 				m_logPowerSpectrum[i] = v; | ||||
| 				for(size_t i = 0; i < halfSize; i++) { | ||||
| 					c = fftOut[i]; | ||||
| 					v = c.real() * c.real() + c.imag() * c.imag(); | ||||
| 					v = mult * log2f(v) + ofs; | ||||
| 					m_logPowerSpectrum[i * 2] = v; | ||||
| 					m_logPowerSpectrum[i * 2 + 1] = v; | ||||
| 				} | ||||
| 			} else { | ||||
| 				for(size_t i = 0; i < halfSize; i++) { | ||||
| 					c = fftOut[i + halfSize]; | ||||
| 					v = c.real() * c.real() + c.imag() * c.imag(); | ||||
| 					v = mult * log2f(v) + ofs; | ||||
| 					m_logPowerSpectrum[i] = v; | ||||
| 
 | ||||
| 					c = fftOut[i]; | ||||
| 					v = c.real() * c.real() + c.imag() * c.imag(); | ||||
| 					v = mult * log2f(v) + ofs; | ||||
| 					m_logPowerSpectrum[i + halfSize] = v; | ||||
| 				} | ||||
| 			} | ||||
| 
 | ||||
| 			// send new data to visualisation
 | ||||
|  | ||||
		Loading…
	
	
			
			x
			
			
		
	
		Reference in New Issue
	
	Block a user