3

Raspbian を搭載した Raspberry Pi と NuForce uDAC-3 USB-DAC を使用して音楽プレーヤー システムを構築しています。

/etc/mpd.confのこれらの行を使用して、Piのサウンドシステムの代わりにDACを使用するmpdを取得しました。私の知る限り、ここで重要なことは、デフォルトの 0 ではなくハードウェア デバイス 1 を選択することです。

audio_output {
   type            "alsa"
   name            "My ALSA Device"
   device          "hw:1,0"        # optional
   format          "44100:16:2"    # optional
   mixer_device    "default"       # optional
   mixer_control   "PCM"           # optional
   mixer_index     "0"             # optional
}

ただし、私の DAC (snd_usb_audio) に使用されているドライバーは、ハードウェアのボリューム コントロールをサポートしていません。たとえば、alsamixer で使用できるボリューム コントロールはありません。私の知る限り、それはそのドライバーの既知の「機能」であるか、その DAC のサポートです。/etc/mpd.confでこれをコメント解除することで、mpdがボリュームを制御できるようになりました。

mixer_type                      "software"

現在の主な問題は、統合されたサウンドシステムにはなかったボリュームコントロールに遅延があることです. つまり、クライアント プログラム (QMPDClient) で音量コントロールをスライドすると、音量の変化が聞こえるまでに、短いながらも顕著な遅延があります。それは耐えられますが、すべてが本当に正常に機能するかどうか疑問に思います.

2 つ目の問題は、最初の問題に多少関連していますが、構成ファイルに関する限り、サウンドをより完璧にする方法がないかどうか疑問に思っていることです。

インターネットで見つけた /etc/asound.conf のさまざまな例を試しましたが、それらが何をすべきか理解できないか、単に機能していません。私が得ると思ったのは、mpdによって認識されるDACのマスターボリュームコントロール、またはマスターボリュームコントロールを備え、サウンドをDACに供給する仮想サウンドカードのいずれかです。最初、 /etc/asound.conf は空でしたが、今でも空であり、何も影響を与えていないようです。

関連性がある場合に備えて、音楽は CD からリッピングされた .flac ファイルにあります。

4

2 に答える 2

4

snd-usb-audio ドライバーは、外部 dac のハードウェア ボリューム コントロールをサポートします。問題は、あなたのDACがそれをサポートしているかどうかです。私は Micromega MYDAC を USB 2.0 に設定し、背面に小さなスイッチを付けて使用しています。プラグインした後、 dmesg は次のようになります。

$ dmesg 
[  489.232193] usb 2-2: new high-speed USB device number 4 using ehci-pci
[  489.365330] usb 2-2: New USB device found, idVendor=26f2, idProduct=0200
[  489.365340] usb 2-2: New USB device strings: Mfr=1, Product=2, SerialNumber=3
[  489.365348] usb 2-2: Product: MICROMEGA MYDAC
[  489.365355] usb 2-2: Manufacturer: MICROMEGA 
[  489.365361] usb 2-2: SerialNumber: 0000
[  489.855449] usbcore: registered new interface driver snd-usb-audio

amixer を使用すると、ボリューム コントロール インターフェイスが表示されます。

$ amixer -c MYDAC scontents
Simple mixer control 'MICROMEGA Clock Selector',0
  Capabilities: pvolume pswitch
  Playback channels: Front Left - Front Right
  Limits: Playback 0 - 127
  Mono:
  Front Left: Playback 127 [100%] [0.00dB] [off]
  Front Right: Playback 127 [100%] [0.00dB] [off]
Simple mixer control 'MICROMEGA Clock Selector',1
  Capabilities: pvolume pvolume-joined pswitch pswitch-joined
  Playback channels: Mono
  Limits: Playback 0 - 127
  Mono: Playback 121 [95%] [-6.00dB] [off]

私の mpd.conf の audio_output セクションには以下が含まれます。

audio_output {
type "alsa"
name "MICROMEGA MYDAC"
device "hw:MYDAC" 
mixer_type "hardware"
mixer_device "hw:MYDAC"
mixer_control "MICROMEGA Clock Selector" 
replay_gain_handler "mixer"
auto_resample "no"
auto_channels "no"
auto_format "no"
}

mpc コマンドまたはその他の mpd クライアントを使用して、ボリュームを任意のパーセンテージに設定できるようになりました。

$ mpc volume 100
Oscar Peterson - On A Clear Day You Can See Forever
[playing] #169/213   0:30/4:25 (11%)
volume:100%   repeat: on    random: on    single: off   consume: off

$ mpc volume 90
Oscar Peterson - On A Clear Day You Can See Forever
[playing] #169/213   0:33/4:25 (12%)
volume: 90%   repeat: on    random: on    single: off   consume: off

しかし、ここから悪いニュースが始まります。amixer とのインターフェースを見ると、ボリュームを 90% に設定したときに外部 DAC が実際に何をしたかがわかります。音量の制限は 0..127 であるため、音量を 127 の 90%、つまり 114 に設定しました。114 は 127-13 であるため、単純に音量を 13 dB 下げました。

$ amixer -c MYDAC scontents
Simple mixer control 'MICROMEGA Clock Selector',0
  Capabilities: pvolume pswitch
  Playback channels: Front Left - Front Right
  Limits: Playback 0 - 127
  Mono:
  Front Left: Playback 114 [90%] [-13.00dB] [on]
  Front Right: Playback 114 [90%] [-13.00dB] [on]

したがって、127 から 1 段階下げるごとに、音量が 1 dB 減少します。これは、ボリュームの 90% がどうあるべきかということではありません。dB スケールは次のように機能します。

0    dB = 100%
-0.9 dB =  90%
-1.9 dB =  80%
-6   dB =  50%
-20  dB =  10%

したがって、DAC は音量を 13 dB ではなく 0.9 dB 下げる必要があります。

これは、replaygain を使用して音量を自動的に制御したい場合には、さらに悲惨なことになります。mpd は、上で示した dB スケールを使用します。すべての CD を flac にリッピングし、replaygain タグを追加しました。これらは、外部 DAC を使用しない他の 2 つのシステム (Samsung タブレットの Android の Poweramp と openPandora デバイスの Deadbeaf) で正常に動作します。すべてのボリュームがきれいに均等に出ます。

たとえば、MYDAC で mpd を使用すると、次のようなことが起こります。mpd は、トラック再生ゲインが -4.3 dB の曲を再生します。20log 0.60 = -4.3 dB であるため、mpd はインターフェイスに 60% になるように指示します。ただし、インターフェースはボリュームの 60% には達しません。代わりに、パラメータ 0..127 を 60% の値 (0.60 x 127=76) に設定します。パラメータの最大値 127 は 0 dB に対応し、76 は 127-51 であるため、DAC は意図した -4.3 dB ではなく、単に -51 dB に減少します。その結果、音楽がまったく聞こえなくなりました。

$ metaflac --list 01.Dancers_in_Love.flac
....
METADATA block #2
  type: 4 (VORBIS_COMMENT)
  comments: 11
    comment[0]: ARTIST=Duke Ellington
    comment[1]: ALBUM=The Small Groups
    comment[2]: TITLE=Dancers in Love
    comment[3]: GENRE=Big Band
    comment[4]: TRACKNUMBER=01
    comment[5]: CDDB=7d10d619
    comment[6]: REPLAYGAIN_REFERENCE_LOUDNESS=89.0 dB
    comment[7]: REPLAYGAIN_TRACK_GAIN=-4.34 dB
    comment[8]: REPLAYGAIN_TRACK_PEAK=0.81216431
    comment[9]: REPLAYGAIN_ALBUM_GAIN=-3.61 dB
    comment[10]: REPLAYGAIN_ALBUM_PEAK=0.81216431

$ mpc 
Duke Ellington - Dancers in Love
[playing] #90/213   0:04/1:55 (3%)
volume: 60%   repeat: on    random: on    single: off   consume: off

$ amixer -c MYDAC scontents
Simple mixer control 'MICROMEGA Clock Selector',0
  Capabilities: pvolume pswitch
  Playback channels: Front Left - Front Right
  Limits: Playback 0 - 127
  Mono:
  Front Left: Playback 76 [60%] [-51.00dB] [on]
  Front Right: Playback 76 [60%] [-51.00dB] [on]

この外部 DAC によるボリュームのパーセンテージとボリュームの dB の解釈はまったく役に立たないようです。残念ながら、「amixer scontents」コマンドの同様の出力を提供する別の外部 DAC があります。つまり、1dB ステップ全体で減少し、パーセンテージ ボリューム コントロール コマンドを単純に DAC のボリューム パラメータのパーセンテージにマップします。ここでは誰が悪いとは言えません。私はDACメーカーを主張します。最終的な結果として、外部 DAC でのボリューム コントロールは事実上不可能になります。

dB スケールに従ってハードウェア ボリューム コントロールを正しく行う外部 DAC のレポートは見つかりませんでした。したがって、ソフトウェア ミキサーのボリューム コントロールが唯一のオプションだと思います。しかし、私は修正されたいと思っています。

于 2014-06-29T12:28:26.817 に答える
1

待ち時間を短縮するには、buffer_time 設定を減らします。

audio_output {
    ...
    buffer_time 100000
}
于 2014-03-09T15:48:51.617 に答える