Convertir una forma de onda de 32 bits en una forma de onda de 16 bits

He estado capturando audio usando el modo de captura de bucle invertido. La forma de onda capturada es una forma de onda de 32 bits. Estoy luchando para convertir esto en una forma de onda de 16 bits para que los codificadores como lame puedan manejarlo (dice Formato de datos no admitido: 0x0003).

Intenté cambiar los bits (no mi punto fuerte) en la secuencia de onda de 32 bits a 16 bits, pero el resultado todavía parece distorsionado.

La clase Wave32To16Stream parece explotar en este caso: if (sourceStream.WaveFormat.Encoding! = WaveFormatEncoding.IeeeFloat) arroja una nueva ApplicationException ("Solo se admiten puntos flotantes de 32 bits");

Idealmente, me gustaría capturar directamente a 16 bits, ¿no hay forma de establecer la profundidad de bits de captura? Si no, ¿alguien podría ayudarme a convertir la corriente de agua?

Un ejemplo de una forma de onda capturada se puede encontrar aquí:http://dl.dropbox.com/u/454409/test.wav (10mb)

También me conformaría con alguna forma de codificar esto en mp3 con cojo, he intentado cada permutación de parámetros que se me ocurre para que acepte el archivo wave. Lo interesante es que Audacity (que usa lame_enc para codificar mp3) fue capaz de crear un mp3 a partir de la forma de onda (pero tal vez Audacity lo convierta automáticamente a 16 bits antes de pasarlo a cojo).

Respuestas a la pregunta(3)

Su respuesta a la pregunta