Как уже упоминали другие, вы должны знать, в каком формате находится буфер. Вы не можете просто работать непосредственно с байтами (ну, вы могли бы, но это стало бы довольно сложно).Большая часть необработанных данных PCM обычно составляет 44100 бит / с, 16 бит, 2 канала.Однако это не всегда так.Каждый из них может быть разным.Это не сильно повлияет, но это пример.Тем не менее, даже файлы WAV могут быть в других форматах (например, IEEE Float).Вам нужно будет правильно интерпретировать буфер как соответствующий тип данных, чтобы работать с ним.
Как:
BYTE buffer[3584];
if (SampleTypeIsPcm16Bit())
{
short *data = reinterpret_cast<short *>(buffer);
// Rock on
}
else if (SampleTypeIsFloat())
{
float *data = reinterpret_cast<float *>(buffer);
// Rock on
}
Конечно, вы можете сделать его более общим с шаблонами, но не обращайте на это внимания: P.
Имейте в виду, что если вы имеете дело с поплавками, они должны быть ограничены диапазоном -1,0 и 1,0.
Итак, вы говорите, что «добавить два значения и разделить на два» (упомянутое Джаспером) не работает?Как вы воспроизводите данные, когда вы просто слышите тишину?Интересно, если это проблема, потому что, если ваша математика выключена, вы, скорее всего, услышите глюки звука (щелчки / щелчки / и т. Д.), А не просто молчание.