2009-11-30 3 views
1

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

+0

дубликат: http://stackoverflow.com/questions/1451606/programably-make-and-play-a-sound-through-speakers-c –

ответ

2

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

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

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

После того, как у вас есть те, просто используйте * функции WaveOut играть образцы.

4

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

+0

Добавлены гиперссылки. –

Смежные вопросы