основной блок данных wav

У меня есть вопрос об основном фрагменте данных файла wav.

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

Это высокое и низкое?

  • значение 0000 => самое низкое?
  • значение FFFF => самое высокое?
  • значение 8FFF => нет звука?

Если да, то когда я хочу уменьшить громкость на 50%, все, что мне нужно сделать, это просто классифицировать низкий и высокий уровень и разделить на 2?


person kim taeyun    schedule 22.05.2011    source источник
comment
Я перефразировал ваш вопрос, чтобы сделать его более читабельным. Хороший вопрос, однако.   -  person Mark Heath    schedule 23.05.2011


Ответы (2)


Файлы WAV могут содержать сэмплы с разной разрядностью и кодировкой, но одним из наиболее часто используемых является 16-битный PCM. С 16-битными данными PCM в файле WAV каждые два байта должны интерпретироваться как короткие (т. е. двухбайтовые числа со знаком). В файлах WAV сэмплы всегда имеют обратный порядок байтов. Если вы пометите свой вопрос языком, кто-то может предоставить простой пример кода. В C/C++ вы должны преобразовать свой массив данных, считанных из файла, в (короткое *), что позволит вам легко получить доступ к каждому образцу.

Чтобы ответить на вторую часть вашего вопроса, да, вы можете уменьшить объем, уменьшив вдвое значение каждого образца.

person Mark Heath    schedule 23.05.2011
comment
я пытаюсь получить все положительные и отрицательные компоненты сигнала из необработанного аудио wav, используя приведенный ниже код... gist.github.com/anonymous/9937987..am я правильно делаю?? - person Dev.K.; 02.04.2014

Ваше понимание кажется прекрасным. Единственное, что я могу сказать, это один байт будет самым значащим байтом, а один будет наименее значащим. Кроме этого, вы, кажется, на месте.

И ваш вопрос в порядке (во всяком случае, по моему мнению!) Хотя можно было бы получить более полезные ответы, если бы вы задали конкретный вопрос по программированию, но я понимаю, что это может быть невозможно.

person CL22    schedule 23.05.2011
comment
могу я спросить вас, какой из них является наименее значащим байтом и почему? - person kim taeyun; 23.05.2011