Si quisiera reducir la amplitud de un archivo WAV en un 25%, me gustaría escribir algo como esto:¿Cómo atenúo un archivo WAV con un valor de decibel determinado?
for (int i = 0; i < data.Length; i++)
{
data[i] *= 0.75;
}
Una gran cantidad de los artículos que he leído en técnicas de audio, sin embargo, hablar de amplitud en términos de decibelios. Entiendo la naturaleza logarítmica de las unidades de decibeles en principio, pero no tanto en términos de código real.
Mi pregunta es: si quisiera atenuar el volumen de un archivo WAV digamos 20 decibeles, ¿cómo haría esto en código como en el ejemplo anterior?
actualización: fórmula (basado en la respuesta de Nils Pipenbrinck) para atenuar por un número determinado de decibelios (entró como un número, por ejemplo positivo 10, 20, etc.):
public void AttenuateAudio(float[] data, int decibels)
{
float gain = (float)Math.Pow(10, (double)-decibels/20.0);
for (int i = 0; i < data.Length; i++)
{
data[i] *= gain;
}
}
Así, si quiero para atenuar por decibeles, el factor de ganancia es .1.
@sth: ¿cómo te atreves a editar mi pregunta? Solo por eso, te estoy dando un desorden de insignias y una "k" después de tu representante. – MusiGenesis
':)' – sth