Храните их как 32- или 64-битные signed int
, float
или double
, если вы не занимаетесь пространством и не заботитесь о том, чтобы упаковать их в как можно меньшее пространство.
Аудиосэмплы часто передаются и передаются как 24-битные, поскольку это обычно разрешение ЦАП и АЦП - хотя на большинстве компьютерных устройств не удивляйтесь, обнаружив, что нижние 3 из 4 битов случайным образом отскакивают от шума.
Операции цифровой обработки сигналов - что обычно происходит после сбора образцов - все включают добавление взвешенных сумм выборок. Образец, хранящийся в целочисленном типе, можно рассматривать как двоичный файл с фиксированной точкой с подразумеваемой двоичной точкой в некоторой произвольной точке - положение которой вы можете выбрать стратегически, чтобы сохранить как можно больше битов точности.
Например, сумма двух 24-битных целых чисел дает результат 25 бит. После 8 таких добавлений 32-битный тип будет переполняться, и вам нужно будет повторно нормализовать, округляя и сдвигая вправо.
Поэтому, если вы используете целочисленные типы для хранения ваших выборок, используйте самые большие из возможных и начните с выборок в младших 24 битах.
Типы с плавающей запятой, конечно, позаботятся об этой детали за вас, хотя у вас меньше выбора, когда происходит перенормировка. Они являются обычным выбором для обработки звука, когда доступна аппаратная поддержка. Одинарная точность float
имеет 24-битную мантиссу, поэтому может содержать 24-битную выборку без потери точности.
Обычно выборки с плавающей запятой хранятся в диапазоне -1.0f < x < 1.0f
.
person
marko
schedule
05.07.2013