2013-07-05 4 views
2

Что такое «стандартный способ» работы с 24-битным звуком? На самом деле, нет доступных 24-битных типов данных. Вот методы, которые приходят мне на ум:Работа с 24-битными образцами аудио

  1. Представляет 24-битные звуковые образцы в виде 32-битных int и игнорируют верхние восемь бит.
  2. Как и (1), но игнорируйте нижние восемь бит.
  3. Представление 24-битных аудиокассет как 32-битных поплавков.
  4. Представляем образцы как структуры из 3 байтов (допустимо для C/C++, но плохо для Java).

Как вы это работаете?

ответ

2

Сохраните их как 32- или 64-разрядные signed int s или float или double, если вы не осведомлены о пространстве и не заботитесь о их упаковке в самое маленькое возможное место.

Образцы аудиосигналов часто отображаются как 24-битные аудио-аппаратные средства, так как это обычно является разрешением ЦАП и АЦП - хотя на большинстве компьютерных аппаратов не удивляйтесь, если вы найдете дно 3 из 4 бит случайным образом с шумом.

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

Например, сумма двух 24-битовых целых чисел дает результат из 25 бит. После 8 таких дополнений 32-разрядный тип будет переполняться, и вам нужно будет нормализовать, округляя и сдвинув вправо.

Поэтому, если вы используете целые типы для хранения своих образцов, используйте максимально возможное число и начинайте с образцов в наименее значимых 24 бит.

Тип плавающей точки, конечно, позаботится об этой детали для вас, хотя у вас будет меньше выбора, когда происходит перенормировка. Они являются обычным выбором для обработки звука, где доступна аппаратная поддержка. Одна точность float имеет 24-битную мантиссу, поэтому может содержать 24-битный образец без потери точности.

Обычно образцы с плавающей точкой хранятся в диапазоне -1.0f < x < 1.0f.

+0

Спасибо за ваш очень продуманный ответ о моей проблеме! Если бы вы были мной, какое аудио-образцовое представление вы бы предпочли использовать для обработки звука на Java, включая FFT и выравнивание? 32-разрядные целые числа или 32-битные поплавки? – ezpresso

+0

Я не думаю, что в этом случае у вас есть другой выбор, кроме 'float'. БПФ в целочисленной арифметике - очень, очень тяжелая работа. – marko

+0

Большое вам спасибо! Надо идти кодированием! – ezpresso