Хотя это не относится к .mp3 как таковым, потенциально может быть некоторая полезная информация в Will C. Книга Пиркла, Проектирование плагинов аудиоэффектов в C ++ .
Он рассказывает о том, как аудиоформат .wav хранит свою информацию. Используются целые числа со знаком от -32 768 до 32 767. Это представляет диапазон 2 ^ 16 в биполярном формате, где показатель степени соответствует глубине в битах (чаще всего 16 или 24).
Еще одна важная вещь, которую следует отметить, - это то, что в то время как фазовая инверсия является распространенным явлением во многих аудио приложениях нет соответствующего целого числа для инвертирования -32,768. Чтобы компенсировать это, обычно значение -32,768 трактуется как -32,767. Это имеет значение только при использовании значения 0 при обработке, что чаще всего имеет место. В противном случае можно расширить верхний предел до 32 768.
Он заявляет, что для приложений обработки звука более распространено иметь дело с числами с плавающей запятой либо между 0.0f и 1.0f, либо -1.0f и 1.0f. Причина в том, что из-за того, что сложение и умножение являются общими операциями в DSP, мы избегаем переполнения этого диапазона, если мы используем эти числа с плавающей запятой. В биполярном целочисленном формате слишком легко найти два числа, которые приводят к произведению или сумме за пределами этого диапазона. В диапазоне от -1,0f до 1,0f любые два числа всегда приводят к продукту, который все еще находится в этом диапазоне. К сожалению, дополнение все еще требует осторожности, но ...
Извините, у меня нет конкретной информации о .mp3s конкретно, но, возможно, это все еще может быть проницательным.
Удачи!