Для чтения и записи 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);
- Не забудьте закрыть файлы.
Если вам нужна более конкретная информация, пожалуйста, спросите.