Библиотека C / C ++ для кодирования файлов .wav

Мне нужна библиотека для MS VC6, которая кодирует дискретизированные данные, которые находятся в форме массива с плавающей запятой, в формат аудиофайла, предпочтительно wav.Также есть библиотека, которая может кодировать образцы в форму pcm и воспроизводить их напрямую через звуковую карту без сначала сохранить файл WAV ??


person nabeel ahmad    schedule 30.11.2009    source источник
comment
duplicate: stackoverflow.com/questions/1451606/   -  person Georg Fritzsche    schedule 30.11.2009


Ответы (2)


Как уже отмечалось, формат файла WAV очень прост. Чтобы просто проиграть семплы, используйте функции waveOut; они задокументированы.

Чтобы преобразовать образец с плавающей запятой в 16-разрядный образец PCM со знаком, просто преобразуйте образец в 16-разрядный диапазон. Например, предположив, что образец находится в диапазоне от -1,0 до +1,0, умножьте его на 32767,0 и преобразуйте его в целое число:

int16_t sample = static_cast<int16_t>(32767.0 * float_sample);

Когда они у вас есть, просто используйте функции waveOut * для воспроизведения сэмплов.

person janm    schedule 01.12.2009

Похоже, libsndfile (www.mega-nerd.com/libsndfile/) и SndLib (ccrma.stanford.edu/software/snd/sndlib/) сделает то, что вы хотеть.

person Larry Engholm    schedule 30.12.2009