Библиотека C / C ++ для кодирования файлов .wav - PullRequest
1 голос
/ 30 ноября 2009

Мне нужна библиотека для MS VC6, которая кодирует выборочные данные в виде массива с плавающей точкой в ​​формат аудиофайла, предпочтительно wav Кроме того, есть ли библиотека, которая может кодировать сэмплы в формате PCM и воспроизводить их непосредственно через звуковую карту без предварительного сохранения файла WAV?

Ответы [ 2 ]

4 голосов
/ 30 декабря 2009

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

2 голосов
/ 01 декабря 2009

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

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

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

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

...