");

Концепция

Только для Windows

ОС Windows имеет две встроенные звуковые подсистемы: профессиональную ASIO от Steinberg, которая де-факто является стандартом для качественной записи звука, и оригинальную WASAPI Exclusive от Microsoft с возможностью воспроизведения в режиме без обработки аудиопотока.

В экосистеме Apple подсистема Core Audio последние полтора десятилетия в первую очередь ориентирована на iOS для iPhone, что вполне объяснимо, macOS вторична и используется в основном для разработки приложений iOS. Также отсутствует поддержка режима вывода Native DSD.

В Linux нет единой звуковой подсистемы. В разных версиях и сборках могут использоваться разные подсистемы. Настройка качественного вывода звука в Linux сложна и непредсказуема. Плеер, который хорошо воспроизводит музыку на одной системе, может не работать на другой.

Профессиональный подход

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

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

Абсолютная точность

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

Конечно, по желанию заказчика в плеер может быть добавлена обработка звукового сигнала, не противоречащая основной концепции. Например, понижение дискретизации или эквализация для определенного аудиотракта.

Нативный исходный код

Обычно при написании аудио плееров используют языки программирования высокого уровня. В простейшем случае достаточно одного оператора: Play(путь к файлу), остальное сделают компилятор и операционная система. Это будет вполне хорошо работать в современных системах, если вас устраивает обычный уровень качества звучания. Серьезные плееры используют более сложные алгоритмы, но языки высокого уровня практически всегда. Так проще, удобнее и можно легко компилировать для разных платформ.

Я пишу код на языке базового уровня и использую только основные функции ОС Windows, без задействования Open GL, DirectX, .NET Framework и т. п. Ну а ядро аудио движка написано на ассемблере, что позволяет напрямую управлять аудио потоком без лишних прослоек.

Без джиттера

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

Автоматическая настройка

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

Без тэгов

Тэги ID3 были придуманы давным-давно для небольших mp3 файлов. Современные файлы с записями в высоком разрешении значительно больше. Чтобы прочитать название треков, нужно открыть каждый файл и найти нужную информацию, которая записывается в самом конце файла. Это отнимает время и ресурсы. Гораздо проще прочитать название файла, которое и есть название трека, как правило.