Linuxでハイレゾ対応USB-DACを使う
自分の環境
Ubuntuとかでも多分同じだと思います。
ハイレゾにしない場合
USB Audio Class対応のUSB-DACは、ただ接続するだけで使えるようになります。OS付属のサウンドコントロールのツールやpavucontrol(PulseAudio音量設定)でデバイスを有効にすれば、どんなプレーヤーでも使えるはずです。ただし、排他的にデバイスを利用できないし、サンプリング周波数も44.1kHzとかになってしまう。
ハイレゾで聞きたい場合
Linuxのサウンドシステム
Linuxのサウンド周りのデータの流れは、
PulseAudio -> ALSA -> サウンドデバイス
となっているようです。以下の図がわかりやすいです。
https://wiki.ubuntulinux.jp/UbuntuStudioTips/Setup/UbuntuSoundSystem
つまり、音声ファイルそのままの周波数で再生するためにはALSAに直接データを送るべき、ということです、たぶん(Windowsで言えばWASAPI排他モードに当たるのでしょうか)。
設定
まず、PulseAudioがUSB-DACを利用しないようにします。pavucontrol(PulseAudio音量設定)をインストールし、設定タブから使いたいデバイスをオフにします。これはCUIでできるかもしれません。
次に、自分のUSB-DACがどう認識さているか確認します。card2, stream0 は違う数字かもしれません。
% cat /proc/asound/card2/stream0 TEAC TEAC USB AUDIO DEVICE at usb-0000:00:13.2-2, high speed : USB Audio Playback: Status: Stop Interface 3 Altset 1 Format: S16_LE Channels: 2 Endpoint: 3 OUT (ASYNC) Rates: 32000, 44100, 48000, 88200, 96000, 176400, 192000 Data packet interval: 125 us Interface 3 Altset 2 Format: S24_3LE Channels: 2 Endpoint: 3 OUT (ASYNC) Rates: 32000, 44100, 48000, 88200, 96000, 176400, 192000 Data packet interval: 125 us
次にプレーヤーの設定です。ALSAで直接再生できるプレーヤーをいくつか探してみたところAudaciousが良さそうでした。PCMデバイスをUSB-DACに設定します。いくつか同デバイスの項目が出てきたので、デジタルで送ってくれそうなS/PDIFに設定しました。ビット震度は先程のFormatの一番高い値にしたいのですが、S24_3LEとあるのに24ビットにできませんでした。"_3"が付いているのはは3ビット単位で転送するフォーマットのようで、Audaciousではその設定ができないようです、たぶん。
以上です。