mirror of
				https://github.com/ShaYmez/xlxd.git
				synced 2025-10-30 12:30:20 -04:00 
			
		
		
		
	Do not square energy as we are not complex. Do not clamp gain
This commit is contained in:
		
							parent
							
								
									66eab222c4
								
							
						
					
					
						commit
						3c06fb0ac1
					
				| @ -42,7 +42,7 @@ CAGC::CAGC(float initialLeveldB) | |||||||
|     m_GainMin = pow(10.0f, (initialLeveldB - 10.0f)/20.0f); |     m_GainMin = pow(10.0f, (initialLeveldB - 10.0f)/20.0f); | ||||||
|                          |                          | ||||||
|     m_EnergyPrime = 1.0f; |     m_EnergyPrime = 1.0f; | ||||||
|     m_targetEnergy = 32768.0f;//TODO : Move to parameter ?
 |     m_targetEnergy = 32767.0f;//TODO : Move to parameter ?
 | ||||||
| 
 | 
 | ||||||
|     m_Bandwidth = 1e-2f;//TODO : Move to parameter ?    
 |     m_Bandwidth = 1e-2f;//TODO : Move to parameter ?    
 | ||||||
|     m_Alpha = m_Bandwidth;   |     m_Alpha = m_Bandwidth;   | ||||||
| @ -70,8 +70,8 @@ void CAGC::Apply(uint8 * voice, int size) | |||||||
|         // apply gain to input sample
 |         // apply gain to input sample
 | ||||||
|         float output = input * m_Gain; |         float output = input * m_Gain; | ||||||
| 
 | 
 | ||||||
|         // compute output signal energy
 |         // compute output signal energy, scaled to 0 to 1
 | ||||||
|         float instantEnergy = (output * output) / m_targetEnergy; |         float instantEnergy = abs(output) / m_targetEnergy; | ||||||
| 
 | 
 | ||||||
|         // smooth energy estimate using single-pole low-pass filter
 |         // smooth energy estimate using single-pole low-pass filter
 | ||||||
|         m_EnergyPrime = (1.0f - m_Alpha) * m_EnergyPrime + m_Alpha * instantEnergy; |         m_EnergyPrime = (1.0f - m_Alpha) * m_EnergyPrime + m_Alpha * instantEnergy; | ||||||
| @ -81,10 +81,10 @@ void CAGC::Apply(uint8 * voice, int size) | |||||||
|             m_Gain *= exp( -0.5f * m_Alpha * log(m_EnergyPrime) );  |             m_Gain *= exp( -0.5f * m_Alpha * log(m_EnergyPrime) );  | ||||||
| 
 | 
 | ||||||
|         // clamp gain
 |         // clamp gain
 | ||||||
|         if (m_Gain > m_GainMax) |         /*if (m_Gain > m_GainMax)
 | ||||||
|             m_Gain = m_GainMax; |             m_Gain = m_GainMax; | ||||||
|         else if(m_Gain < m_GainMin) |         else if(m_Gain < m_GainMin) | ||||||
|             m_Gain = m_GainMin; |             m_Gain = m_GainMin;*/ | ||||||
| 
 | 
 | ||||||
|         //write processed sample back
 |         //write processed sample back
 | ||||||
|         voice[i] = HIBYTE((short)output); |         voice[i] = HIBYTE((short)output); | ||||||
|  | |||||||
		Loading…
	
	
			
			x
			
			
		
	
		Reference in New Issue
	
	Block a user