Convertendo um formato de onda de 32 bits para um formato de onda de 16 bits

Eu tenho capturado áudio usando o modo de captura de loopback. A forma de onda capturada é uma forma de onda de 32 bits. Estou tendo dificuldades para converter isso em uma forma de onda de 16 bits para que codificadores como o lame possam lidar com isso (diz Formato de dados não suportado: 0x0003).

Eu tentei mudar os bits (não o meu ponto forte) no próprio fluxo de onda de 32 para 16 bits, mas o resultado ainda parece distorcido.

A classe Wave32To16Stream parece explodir neste caso: if (sourceStream.WaveFormat.Encoding! = WaveFormatEncoding.IeeeFloat) lança new ApplicationException ("Somente ponto flutuante de 32 bits suportado");

Idealmente, eu gostaria de capturar apenas direto para 16 bits, não há como definir a profundidade do bit de captura? Caso contrário, alguém poderia me ajudar com a conversão do fluxo de ondas?

Um exemplo de uma forma de onda capturada pode ser encontrada aqui:http://dl.dropbox.com/u/454409/test.wav (10mb)

Eu também aceitaria alguma maneira de codificar isso para mp3 com coxo, tentei todas as permutações de parâmetros que consigo pensar para aceitar o arquivo wave. O interessante é que o Audacity (que usa lame_enc para codificar mp3s) conseguiu criar um mp3 a partir da forma de onda (mas talvez o Audacity o converta automaticamente em 16 bits antes de passá-lo para o lame).

questionAnswers(3)

yourAnswerToTheQuestion