配置用于通过MPD使用的USB-DAC的音量控制



我正在使用带有raspbian和nuforce udac-3 USB-DAC的Raspberry Pi构建音乐播放器系统。

我获得了MPD使用DAC,而不是使用这些行中的这些行中的DAC,而不是在/etc/mpd.conf中。据我所知,这里的必不可少的是选择HW设备1而不是默认设备0。

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)中滑动音量控制时,在听到卷的变化之前,会有一个简短但显着的延迟。这是可以忍受的,但让我想知道一切是否真的尽其所能。

第二个问题与第一个问题有关,我想知道就任何配置文件而言是否有一种方法可以使声音更加完美。

我尝试了我在Internet上发现的/etc/asound.conf的各种示例,但是我不明白他们应该做什么,或者它们只是不起作用。我认为我会得到的是MPD识别的DAC的主音量控制,或者是具有主卷控件的虚拟声卡,并且可以将声音送达DAC。最初,/etc/asound.conf是空的,现在仍然没有任何影响。

只是为了有任何相关性,音乐中是从CD中删除的.flac文件。

SND-usb-audio驱动程序确实支持外部DAC中的硬件音量控制。问题是您的DAC是否支持它。我正在使用Micromega MyDAC设置为USB 2.0,而Little Switch则在背面。插入后,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的接口,我们看到外部DAC将其卷设置为90%时的实际情况。由于其体积的限制为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 dB的音量。这根本不是该卷的90%。数据库量表应如下:

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

因此,DAC应将体积减少0.9 dB,而不是13 dB。

当您想使用replayGain自动控制音量时,这将变得更加灾难性。MPD使用DB量表如上所述。我将所有CD撕成flac,并添加了replaygain标签。这些在其他两个不使用外部DAC(三星平板电脑上的Android上的PowerAmp和OpenPandora设备上的DeadBeaf)的系统上正常工作。所有卷甚至都很好。

例如,当我将MPD与MyDac一起使用时,例如。MPD用-4.3 dB的曲目ReplayGain播放一首歌。因此,MPD指示该界面自20log 0.60 = -4.3 dB以来,界面达到60%。但是,该接口不会达到数量的60%。相反,它将其参数0..127设置为60%的值,即0.60 x 127 = 76。由于最大参数值127对应于0 dB,而76为127-51,DAC简单地减少到-51 dB而不是预期的-4.3 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的百分比和数量的数量解释是完全没有用的。不幸的是,我还有一个外部DAC,它给出了" amixer scontents"命令的相似输出,即,它通过整个1DB步骤降低,并且它仅将百分比卷控制命令映射到DAC的音量参数的百分比。我不能说谁在这里有错。我会争辩DAC制造商。最终结果是,外部DAC中的音量控制实际上是不可能的。

我尚未找到任何外部DAC的报告,该报告可以根据数据库量表正确控制硬件卷。因此,我猜软件混音器量控制是唯一的选择,即使您以这种方式放松质量。我很想站起来。

要获得较低的延迟,请减少buffer_time设置:

audio_output {
    ...
    buffer_time 100000
}

相关内容

  • 没有找到相关文章

最新更新