простой WAV 16-битный / 8-битный конвертер исходного кода? - PullRequest
0 голосов
/ 27 июня 2011

Может ли кто-нибудь предоставить мне ссылку на исходный код (предпочтительно C / C ++) простого 16-разрядного WAV-преобразователя WAV (и обратно, если это возможно)?У меня есть базовые знания C ++, и мне нужен ресурс для понимания написания и преобразования значений в wav для моего нового проекта.На данный момент у меня есть лекция о структуре фрагментов RIFF.

Также приветствуются любые формулы для преобразования значений между различными битовыми глубинами (также эти нестандартные) ...

Я предпочту этобыть простым и командной строкой, чтобы я мог редактировать его с помощью блокнота и легко компилировать.

Заранее спасибо!

1 Ответ

1 голос
/ 31 июля 2011

Для чтения и записи WAV-файлов ознакомьтесь со спецификацией:
https://ccrma.stanford.edu/courses/422/projects/WaveFormat/

Для преобразования между 8 и 16 битами вам просто нужно разделить или умножить на 256.
Например,(преобразование из 16 в 8 бит в C):

  • Вы открываете 16-битный файл и (еще не существует) 8-битный файл, используя fopen().
  • Вы читаетеначало 16-битного файла и запишите начало 8-битного файла в соответствии со спецификацией.
  • Затем выполните следующие действия для каждого семпла:
    int sample = 0;
    // read 2 bytes (= 16 bits) from the 16 bit file into sample:
    fread (&sample, 2, 1, wav_file_16bit);
    sample /= 256; // divide sample by 256
    // write 1 byte (= 8 bits) to the 8 bit file:
    fwrite (&sample, 1, 1, wav_file_8bit);
  • Не забудьте закрыть файлы.

Если вам нужна более конкретная информация, пожалуйста, спросите.

...