базовый блок данных WAV - PullRequest
2 голосов
/ 23 мая 2011

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

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

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

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

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

Ответы [ 2 ]

1 голос
/ 23 мая 2011

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

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

0 голосов
/ 23 мая 2011

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

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

...