02 октября 2022

Воспроизведение DSD в foobar2000.

 

DSD - это такой формат передачи звука, который имеет разрядность всего в 1 бит и частоту до нескольких десятков мегагерц. Используется в Super AudioCD и совершенно не нужен обычному человеку.
 
Я купил себе несколько звуковых устройств, которые умеют подобный формат звука самостоятельно воспроизводить, и захотел разобраться, как же данные из файла передать на устройство без перекодирования в PCM. При этом очень хотелось это всё делать привычным проигрывателем.
 
На данный момент моим любимым проигрывателем является foobar2000. Интерфейс у проигрывателя максимально настраиваемый, куча плагинов практически для всего. Вот с ним и буду разбираться. В интернете инструкции для его настройки есть, тут я собрал всё в кучу, чтобы самому потом не потеряться.

Звук в формате DSD можно передавать на устройство двумя разными способами:
  • Native DSD;
  • DSD over PCM (DoP) .
В первом случае поток данных передаётся на устройство как есть. Так можно передавать поток любой частоты, которую поддерживает устройство. Но для этого нужна поддержка ASIO в проигрывателе, и должны быть установлены соответствующие драйверы для устройства.

Во втором случае данные DSD упаковываются внутрь кадров PCM и в таком виде передаются на устройство. Устройство должно эти данные распознать и корректно воспроизвести. Но в этом случае даже для самого простого DSD64 нужна поддержка частоты дискретизации 176,4 кГц.

Я рассмотрю оба варианта.

Для foobar2000 нужно установить как минимум два плагина:
  • foo_out_asio для воспроизведения звука через ASIO;
  • foo_input_sacd для поддержки формата DSD.
После установки обоих плагинов в настройках проигрывателя появятся новые пункты, а в списке выбора устройств вывода звука появятся названия с приставкой "ASIO:":
 

В этом списке представлены все установленные в системе интерфейсы ASIO. Из него надо выбрать тот, к которому относится подключённое устройство. Это надо сделать до выполнения других настроек из-за того, что плагин для SACD будет выполнять настройку только выбранного устройства. Если сначала выполнить настройку SACD, а потом поменять устройство вывода, то настройки будут сохранены для предыдущего устройства.

Теперь открываем настройки SACD:

Тут надо только выбрать пункт "DSD" и списке "Type" и нажать кнопку "OK".

Теперь проигрыватель foobar2000 будет воспроизводить ISO-образы SACD и отдельные файлы со звуком в формате DSD в режиме DoP. Разницу между пунктами "DSD" и "DSD+PCM" я заметил только в том, что при выборе второго пункта начинает работать анализатор спектра. Усилитель наушников FiiO BTR5 в любом случае отображал, что воспроизводит DSD64.

При попытке проиграть DSD256 я получал сообщение, что проигрыватель не может установить нужную частоту дискретизации 705,6 кГц, потому что для устройства предел 384 кГц.

Вот с этим я воевал довольно долго, пока не нашёл, что для плагина "foo_out_asio", есть альтернатива с названием foo_out_asio+dsd. В этом плагине как раз реализована функциональность воспроизведения DSD потоком без обёртки его в PCM.

После установки этого плагина в списке устройств вывода появятся ещё пункты с приставкой "ASIO+DSD:". После выбора нужного устройства опять же надо будет повторить настройку вывода SACD.

В случае "foo_out_asio+dsd" воспроизведение всегда выполняется в режиме Native DSD, а при выборе "DSD+PCM" ещё и анализатор спектра работать начинает.

Все опыты я проводил на версии проигрывателя foobar2000 1.6.*. Сейчас доступна версия 2.0, но на 64-разрядной версии инструкция точно работать не будет, потому что все плагины есть только в виде 32-битных версий. Возможно, что уже есть сборки плагинов для новой версии, но я это не проверял.