Программирование звука в Windows (C++)

Программирование звука в Windows (C++) — Vorbis OGG

Конечно же менее рискованно в коммерческом отношении (для успеха вашего программного продукта) опираться на широко распространённые форматы (например OGG менее распространён по сравнению с MP3). Но давайте задумаемся насчёт сравнения OGG и MP3 форматов.

Цитата из одного источника

Еще один, упомянутый мною вскользь, залог хорошего non-stop воспроизведения это удаление тишины. Эта необходимость вызвана еще одним дурацким свойством MP3 формата — добавление тишины в начало и конец трека (около 0,1 с).

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

В силу особенностей стандарта МР3 кодированный сигнал содержит некоторое количество (определяемое кодером) тишины или малозаметного шума перед началом сигнала.

MP3-поток сдвинут во времени относительно оригинала на 25-40 миллисекунд

А значит, при обратном декодировании MP3 в WAV-файл полученный аудиопоток будет содержать полную тишину (сигнал с нулевой амплитудой) протяженностью около 25-40 мс (в зависимости от кодера, использованного для компрессии).

При таком масштабе хорошо видна 30-миллисекундная тишина в начале исследуемого трека

КОНЕЦ ЦИТАТЫ.

Ещё очень важный фактор: OGG-формат абсолютно бесплатен!

Если всё делать по закону, то вы должны отчислять определённую сумму за каждый девайс или ПО, в котором используется формат MP3. Причём, если вы только декодируете, то сумма эта в несколько раз меньше.

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

Примеры исходных кодов для распаковки OGG-файлов с диска или копий файлов из памяти можно погуглить.

Я планирую здесь опубликовать свои C++ классы (изначально писал их для Windows).

Программирование звука в Windows (C++)