Выборка файлов WAV, чтобы получить амплитуду в определенное время

Мне интересно, есть ли способ циклически перебирать WAV-файл, чтобы получить амплитуду /DB определенной точки в WAV-файле. Сейчас я читаю его в байтовый массив, но это не помогает мне из того, что я вижу.

Я использую это в сочетании с некоторыми разработанными мною аппаратными средствами, которые кодируют световые данные в двоичный формат и выводят аудио. Я не буду вдаваться в подробности, но мне нужно быть в состоянии сделать это на C# или C++. Я не могу найти информацию об этом где-либо. Я никогда не программировал ничего, связанного со звуком, так что извините, если это очень просто.

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

Я надеюсь, что это достаточно информации, и спасибо заранее, если вы любезны помочь.

1 ответ

Это возможно, и это делается простым способом: файл со звуком PCM содержит одно значение для каждого канала на каждую (1/ частоту дискретизации) секунды.

Однако значения могут варьироваться: 8-битные, 16-битные значения с плавающей запятой одинарной точности. Вы, безусловно, должны принять это во внимание, и по этой причине вы не можете напрямую брать байты из байтового массива.

Файл.WAV также имеет заголовок, предшествующий фактической полезной нагрузке.

Другие вопросы по тегам