Что именно означает «тишина» в аудио API SDL? - PullRequest
2 голосов
/ 30 ноября 2010

В SDL, когда вы настраиваете свое устройство вывода звука, вы и SDL должны договориться о аудиоформате - например, стерео 16,1-битная 44,1 кГц со знаком с прямым порядком байтов.Все в порядке.Но наряду с окончательным согласованным форматом вы также получите вычисленное значение «тишины», которое не выглядит хорошо документированным.

Образец тихого звука, очевидно, состоит из одного и того же значения сэмпла, повторяемого снова и снова, и выхочу, чтобы это было на «нулевом» уровне.В каком-то смысле подойдет любое постоянное значение, но вы должны согласиться со значением (чтобы вы не получали всплывающих окон при переключении на другой звук), и в нормальном мире вы хотите выбрать значение взрыва в центре вашего семпла-value range.

Так что, если вам случится использовать неподписанный формат для диапазона значений семпла для 0 ... что угодно, ваше значение тишины будет (независимо от / 2).

РЕДАКТИРОВАТЬ - вставлено "без знака" ниже, чтобы избежать путаницы.

Это все хорошо.Но заданное вами значение молчания является 8-разрядным целым числом без знака.Это не очень хорошо работает, если вы хотите беззнаковые 16-битные сэмплы - для значения логического молчания 0x8000 требуется два разных байтовых значения и они должны быть в правильном порядке байтов.

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

Что, конечно, означает, что я неправильно понялточка.

Итак, если это не то, как предполагается использовать значение молчания, как должно его использовать?

1 Ответ

1 голос
/ 30 ноября 2010

У меня нет доказательств, подтверждающих это, но я думаю, что здесь предполагается, что «молчание» можно интерпретировать как «молчание для распространенных форматов звуковых карт». Те, которые:

  1. 8-разрядные целые числа без знака
  2. 16-разрядные целые числа со знаком
  3. 32-разрядные целые числа со знаком (для 24-разрядных аудиоданных)
  4. Нормализованная 32-битная с плавающей точкой
  5. Нормализованная 64-битная с плавающей точкой.

Во всех случаях, кроме 8-разрядного без знака, ноль (0) является значением «нулевой амплитуды». Таким образом, возвращенное 8-разрядное целое число без знака содержит все возможные значения «нулевой амплитуды» для этих форматов.

...