Я пытаюсь управлять своим стерео от моего телефона на базе Android, с помощью mpd. Мне сцепили поле Ubuntu 16.04 до стереосистемы через USB-> Toslink-> DSP-> маршрут усилителей. Я пытаюсь управлять jackd через mpd демона... и я испытываю некоторые затруднения.
До сих пор я смог:
1) Заставьте mpd играть музыку локально на моем поле Ubuntu. MPDroid (по моему телефону) хорошо работает с mpd на этом уровне, управляя музыкой на моем поле Ubuntu.
2) Управляйте моей стереосистемой через разъем от поля Ubuntu, с помощью инфраструктуры разъема и mplayer.
Я сильно подозреваю, что моя проблема, я не понимаю, какой mpd.conf должен управлять разъемом.
Вот является мой текущий mpd.conf audio_output разделом:
audio_output {
type "jack"
name "my JACK device"
device "hw:1,0"
autostart "yes"
destination_ports "playback_9, playback_10"
}
Я выбрал destination_ports 9 и 10, потому что это производит сигнал Toslink. Но я сильно подозреваю, что это - то, что я отформатировал неправильно.
и версия, которая играет локально:
audio_output {
type "alsa"
name "My ALSA Device"
device "hw:0,0" # optional
mixer_type "hardware" # optional
mixer_device "default" # optional
mixer_control "PCM" # optional
mixer_index "0" # optional
}
Вот несколько вещей, которые, вероятно, помогут. слесарно-водопроводные работы разъема, прекрасные для передачи по каналу mplayer вывод к моему аудиоустройству usb. Файл .jack-инфраструктуры, который работы:
(connect "MPlayer \[[0-9]+\]:out_0" "system:playback_9")
(connect "MPlayer \[[0-9]+\]:out_1" "system:playback_10")
aplay-l вывод:
**** List of PLAYBACK Hardware Devices ****
card 0: PCH [HDA Intel PCH], device 0: ALC269VC Analog [ALC269VC Analog]
Subdevices: 1/1
Subdevice #0: subdevice #0
card 1: USBStreamer [USBStreamer], device 0: USB Audio [USB Audio]
Subdevices: 1/1
Subdevice #0: subdevice #0
card 2: NVidia [HDA NVidia], device 3: HDMI 0 [HDMI 0]
Subdevices: 1/1
Subdevice #0: subdevice #0
card 2: NVidia [HDA NVidia], device 7: HDMI 1 [HDMI 1]
Subdevices: 1/1
Subdevice #0: subdevice #0
card 2: NVidia [HDA NVidia], device 8: HDMI 2 [HDMI 2]
Subdevices: 1/1
Subdevice #0: subdevice #0
Я нашел документацию доступной для mpd онлайн немного трудный читать, и это имеет тенденцию становиться немного неопределенным когда дело доходит до использования его с jackd. Совет? Я предполагаю, что делаю довольно простую ошибку. Спасибо за любую справку.
править: с версией "разъема" mpd.conf в/etc/mpd.conf я получаю это, как произведено к "sudo systemctl состояние mpd" команда:
● mpd.service - Music Player Daemon
Loaded: loaded (/lib/systemd/system/mpd.service; disabled; vendor preset: enabled)
Active: active (running) since Sun 2016-07-03 23:58:34 PDT; 52s ago
Main PID: 3651 (mpd)
CGroup: /system.slice/mpd.service
└─3651 /usr/bin/mpd --no-daemon
Jul 03 23:58:34 rybu-ThinkPad-W530 systemd[1]: Started Music Player Daemon.
Jul 03 23:58:38 rybu-ThinkPad-W530 pulseaudio[3665]: [pulseaudio] module-jackdbus-detect.c: Unable to contact D-Bus session bus: org.freedesktop.DBus.Error.NotSupported: Unable to autolaunch a dbus-daemon without a $DISPLAY for X11
Jul 03 23:58:38 rybu-ThinkPad-W530 pulseaudio[3665]: [pulseaudio] module.c: Failed to load module "module-jackdbus-detect" (argument: "channels=2"): initialization failed.
Jul 03 23:58:38 rybu-ThinkPad-W530 pulseaudio[3665]: [pulseaudio] main.c: Module load failed.
Jul 03 23:58:38 rybu-ThinkPad-W530 pulseaudio[3665]: [pulseaudio] server-lookup.c: Unable to contact D-Bus: org.freedesktop.DBus.Error.NotSupported: Unable to autolaunch a dbus-daemon without a $DISPLAY for X11
Jul 03 23:58:38 rybu-ThinkPad-W530 pulseaudio[3665]: [pulseaudio] main.c: Unable to contact D-Bus: org.freedesktop.DBus.Error.NotSupported: Unable to autolaunch a dbus-daemon without a $DISPLAY for X11
Jul 03 23:58:38 rybu-ThinkPad-W530 pulseaudio[3665]: [pulseaudio] bluez5-util.c: GetManagedObjects() failed: org.freedesktop.DBus.Error.AccessDenied: Rejected send message, 2 matched rules; type="method_call", sender=":1.177" (uid=122 pid=3665 comm="/usr/bin/pulseaudio --start --log-target=syslog ") interface="org.freedesktop.DBus.ObjectManager" member="GetManagedObjects" error name="(unset)" requested_reply="0" destination="org.bluez" (uid=0 pid=1018 comm="/usr/lib/bluetooth/bluetoothd ")
Я предполагаю, что должен упомянуть еще одну вещь. После установки mpd, мои времена начальной загрузки системы стали значительно медленнее. Иногда похоже, что компьютер ничего не делает, таким образом, я перезагружаю систему снова. Иногда требуется 3 перезагрузки, прежде чем я смогу добраться до приглашения ко входу в систему.
редактирование 2: Возможно, я могу решить эту проблему путем предотвращения разъема полностью. Вот/var/lib/alsa/asound.state файл, часть, относящаяся к моему usbaudio устройству:
state.USBStreamer {
control.1 {
iface PCM
name 'Playback Channel Map'
value.0 0
value.1 0
value.2 0
value.3 0
value.4 0
value.5 0
value.6 0
value.7 0
value.8 0
value.9 0
comment {
access read
type INTEGER
count 10
range '0 - 36'
}
}
control.2 {
iface PCM
name 'Capture Channel Map'
value.0 0
value.1 0
value.2 0
value.3 0
value.4 0
value.5 0
value.6 0
value.7 0
value.8 0
value.9 0
comment {
access read
type INTEGER
count 10
range '0 - 36'
}
}
control.3 {
iface MIXER
name 'USBStreamer Output Playback Switch'
value.0 true
value.1 true
value.2 true
value.3 true
value.4 true
value.5 true
value.6 true
value.7 true
value.8 true
value.9 true
comment {
access 'read write'
type BOOLEAN
count 10
}
}
control.4 {
iface MIXER
name 'USBStreamer Output Playback Switch'
index 1
value true
comment {
access 'read write'
type BOOLEAN
count 1
}
}
control.5 {
iface MIXER
name 'USBStreamer Output Playback Volume'
value.0 255
value.1 255
value.2 255
value.3 255
value.4 255
value.5 255
value.6 255
value.7 255
value.8 255
value.9 255
comment {
access 'read write'
type INTEGER
count 10
range '0 - 255'
dbmin -12750
dbmax 0
dbvalue.0 0
dbvalue.1 0
dbvalue.2 0
dbvalue.3 0
dbvalue.4 0
dbvalue.5 0
dbvalue.6 0
dbvalue.7 0
dbvalue.8 0
dbvalue.9 0
}
}
control.6 {
iface MIXER
name 'USBStreamer Output Playback Volume'
index 1
value 152
comment {
access 'read write'
type INTEGER
count 1
range '0 - 255'
dbmin -12750
dbmax 0
dbvalue.0 -5150
}
}
control.7 {
iface MIXER
name 'USBStreamer Clock Selector'
value 'USBStreamer Internal Clock'
comment {
access 'read write'
type ENUMERATED
count 1
item.0 'USBStreamer Internal Clock'
item.1 'USBStreamer TOSLINK Clock'
}
}
control.8 {
iface MIXER
name 'Mic Capture Switch'
value.0 true
value.1 true
value.2 true
value.3 true
value.4 true
value.5 true
value.6 true
value.7 true
value.8 true
value.9 true
comment {
access 'read write'
type BOOLEAN
count 10
}
}
control.9 {
iface MIXER
name 'Mic Capture Switch'
index 1
value true
comment {
access 'read write'
type BOOLEAN
count 1
}
}
control.10 {
iface MIXER
name 'Mic Capture Volume'
value.0 255
value.1 255
value.2 255
value.3 255
value.4 255
value.5 255
value.6 255
value.7 255
value.8 255
value.9 255
comment {
access 'read write'
type INTEGER
count 10
range '0 - 255'
dbmin -12750
dbmax 0
dbvalue.0 0
dbvalue.1 0
dbvalue.2 0
dbvalue.3 0
dbvalue.4 0
dbvalue.5 0
dbvalue.6 0
dbvalue.7 0
dbvalue.8 0
dbvalue.9 0
}
}
control.11 {
iface MIXER
name 'Mic Capture Volume'
index 1
value 255
comment {
access 'read write'
type INTEGER
count 1
range '0 - 255'
dbmin -12750
dbmax 0
dbvalue.0 0
}
}
Если я читаю, что правильно похоже, возможно, что соответствующие каналы аудиовыхода отключены звук? Каналы 8 и 9 - те важные для аудиовыхода по кабелю Toslink, таким образом, я подозреваю, что должен изменить те значения, и возможно я могу сделать прямой вывод ALSA от mpd.
Странно, если я удаляю asound.state и затем воссоздаю его с "sudo alsactl хранилище" команда, отображение канала полностью отличается:
state.USBStreamer {
control.1 {
iface PCM
name 'Playback Channel Map'
value.0 3
value.1 4
value.2 7
value.3 8
value.4 5
value.5 6
value.6 12
value.7 13
value.8 11
value.9 9
comment {
access read
type INTEGER
count 10
range '0 - 36'
}
}
Но это все еще не производит звука.
Другая вещь, которую я рассматриваю, состоит в том, что, так как ДЖЕК может подыграть моему usbstreamer, и он использует ALSA, поэтому возможно, я могу просто выяснить, какие настройки его использование с ALSA, и копирует их./proc/asound/card1 каталог имеет текущие настройки для этой карты, таким образом, я запускаю его играющий с разъемом и mplayer, и прочитываю файлы.
stream0:
miniDSP USBStreamer at usb-0000:00:14.0-2, high speed : USB Audio
Playback:
Status: Running
Interface = 1
Altset = 1
Packet Size = 280
Momentary freq = 44100 Hz (0x5.8330)
Feedback Format = 16.16
Interface 1
Altset 1
Format: S32_LE
Channels: 10
Endpoint: 1 OUT (ASYNC)
Rates: 44100, 48000, 88200, 96000, 176400, 192000
Data packet interval: 125 us
Capture:
Status: Running
Interface = 2
Altset = 1
Packet Size = 280
Momentary freq = 44100 Hz (0x5.8333)
Interface 2
Altset 1
Format: S32_LE
Channels: 10
Endpoint: 2 IN (ASYNC)
Rates: 44100, 48000, 88200, 96000, 176400, 192000
Data packet interval: 125 us
usbbus:
003/005
usbmixer:
USB Mixer: usb_id=0x27520016, ctrlif=0, ctlerr=0
Card: miniDSP USBStreamer at usb-0000:00:14.0-2, high speed
Unit: 10
Control: name="USBStreamer Output Playback Volume", index=1
Info: id=10, control=2, cmask=0x0, channels=1, type="S16"
Volume: min=-32640, max=0, dBmin=-12750, dBmax=0
Unit: 10
Control: name="USBStreamer Output Playback Volume", index=0
Info: id=10, control=2, cmask=0x3ff, channels=10, type="S16"
Volume: min=-32640, max=0, dBmin=-12750, dBmax=0
Unit: 10
Control: name="USBStreamer Output Playback Switch", index=1
Info: id=10, control=1, cmask=0x0, channels=1, type="INV_BOOLEAN"
Volume: min=0, max=1, dBmin=0, dBmax=0
Unit: 10
Control: name="USBStreamer Output Playback Switch", index=0
Info: id=10, control=1, cmask=0x3ff, channels=10, type="INV_BOOLEAN"
Volume: min=0, max=1, dBmin=0, dBmax=0
Unit: 11
Control: name="Mic Capture Volume", index=1
Info: id=11, control=2, cmask=0x0, channels=1, type="S16"
Volume: min=-32640, max=0, dBmin=-12750, dBmax=0
Unit: 11
Control: name="Mic Capture Volume", index=0
Info: id=11, control=2, cmask=0x3ff, channels=10, type="S16"
Volume: min=-32640, max=0, dBmin=-12750, dBmax=0
Unit: 11
Control: name="Mic Capture Switch", index=1
Info: id=11, control=1, cmask=0x0, channels=1, type="INV_BOOLEAN"
Volume: min=0, max=1, dBmin=0, dBmax=0
Unit: 11
Control: name="Mic Capture Switch", index=0
Info: id=11, control=1, cmask=0x3ff, channels=10, type="INV_BOOLEAN"
Volume: min=0, max=1, dBmin=0, dBmax=0
Unit: 40
Control: name="USBStreamer Clock Selector", index=0
Info: id=40, control=1, cmask=0x0, channels=1, type="U8"
Volume: min=1, max=2, dBmin=0, dBmax=0
pcm0p/info:
card: 1
device: 0
subdevice: 0
stream: PLAYBACK
id: USB Audio
name: USB Audio
subname: subdevice #0
class: 0
subclass: 0
subdevices_count: 1
subdevices_avail: 0
pcm0p/sub0/hw_params:
access: MMAP_INTERLEAVED
format: S32_LE
subformat: STD
channels: 10
rate: 44100 (44100/1)
period_size: 1024
buffer_size: 2048
pcm0p/sub0/info
card: 1
device: 0
subdevice: 0
stream: PLAYBACK
id: USB Audio
name: USB Audio
subname: subdevice #0
class: 0
subclass: 0
subdevices_count: 1
subdevices_avail: 0
pcm0p/sub0/status
state: RUNNING
owner_pid : 12545
trigger_time: 50245.966761737
tstamp : 0.000000000
delay : 2010
avail : 72
avail_max : 1029
-----
hw_ptr : 325870664
appl_ptr : 325872640
pcm0p/sub0/sw_params:
tstamp_mode: NONE
period_step: 1
avail_min: 1024
start_threshold: 0
stop_threshold: 2048
silence_threshold: 0
silence_size: 0
boundary: 4611686018427387904
Хм, если информация о каналах там, она умно скрыта!
Volker Schatz описывает установку устройства ALSA для переключения каналов. Похоже, что это сделало другой путь, чем просто проигрывание вокруг с картой канала воспроизведения:
http://www.volkerschatz.com/noise/alsa.html
Таблица, кажется, устройство для смешивания канала, и если Вы используете целочисленные записи (0 и 1) для коммутации каналов. Наконец это начинает иметь смысл. i.j нотация является координатами пар, описывая записи квадратной матрицы.
править: Некоторый прогресс. "aplay-L" команда дает список имен устройств. Для этого usbstreamer это дает:
sysdefault:CARD=USBStreamer
USBStreamer, USB Audio
Default Audio Device
front:CARD=USBStreamer,DEV=0
USBStreamer, USB Audio
Front speakers
surround21:CARD=USBStreamer,DEV=0
USBStreamer, USB Audio
2.1 Surround output to Front and Subwoofer speakers
surround40:CARD=USBStreamer,DEV=0
USBStreamer, USB Audio
4.0 Surround output to Front and Rear speakers
surround41:CARD=USBStreamer,DEV=0
USBStreamer, USB Audio
4.1 Surround output to Front, Rear and Subwoofer speakers
surround50:CARD=USBStreamer,DEV=0
USBStreamer, USB Audio
5.0 Surround output to Front, Center and Rear speakers
surround51:CARD=USBStreamer,DEV=0
USBStreamer, USB Audio
5.1 Surround output to Front, Center, Rear and Subwoofer speakers
surround71:CARD=USBStreamer,DEV=0
USBStreamer, USB Audio
7.1 Surround output to Front, Center, Side, Rear and Woofer speakers
iec958:CARD=USBStreamer,DEV=0
USBStreamer, USB Audio
IEC958 (S/PDIF) Digital Audio Output
dmix:CARD=USBStreamer,DEV=0
USBStreamer, USB Audio
Direct sample mixing device
dsnoop:CARD=USBStreamer,DEV=0
USBStreamer, USB Audio
Direct sample snooping device
hw:CARD=USBStreamer,DEV=0
USBStreamer, USB Audio
Direct hardware device without any conversions
plughw:CARD=USBStreamer,DEV=0
USBStreamer, USB Audio
Hardware device with all software conversions
Эти имена устройств очень удобны, отсюда можно выполнить команду:
speaker-test -c 10 -t sin -F S32_LE -D front:USBStreamer
который пробегает все динамики на том устройстве. Каналы 8 и 9 (как ожидалось) производят звук волны греха на левых и правых динамиках соответственно.
Таким образом, я думаю, что это означает, что я должен смочь получить прямой вывод ALSA своим динамикам, использующим конструкцию таблицы в asound.state. Я предположил бы, что Карта Канала воспроизведения могла бы допускать это также, но после довольно мало вожения с ним, неясно мне, как заставить его работать.
обновление:
Я изменил часть управления 1 asound.state файла, чтобы быть:
control.1 {
iface PCM
name 'Playback Channel Map'
value.0 0
value.1 0
value.2 0
value.3 0
value.4 0
value.5 0
value.6 0
value.7 0
value.8 3
value.9 4
comment {
access read
type INTEGER
count 10
range '0 - 36'
}
}
и это почти работает. Mplayer не подыграет alsa:device=hw=1.0, но сообщение об ошибке - то, что я отправляю неправильный формат на устройство. ALSA думает, что устройство только принимает S32LE. Технически, я думаю, что это - устройство S24LE. Я свяжусь с производителем для разрешения этого.
Таким образом, я добавляю - формат s32le к mplayer командной строке и материалу выходит из динамиков! Только, это - что-то вроде беспорядка. Это играет слишком быстро и... что-то еще продолжается. Существует некоторое частотное искажение. Я подозреваю то, что происходит, это отправляет s16le данные, как будто это - s32le данные, таким образом, существует определенная перестановка (временно) данных и сдвига подачи, и это играет слишком быстро.
Таким образом, теперь для получения этой работы я должен знать, как разговаривать s16le данные к надлежащему s24le и затем отформатировать ее как s32le, таким образом, USB-устройство счастливо.
обновление:
speaker-test -c 10 -t sin -D plughw:USBStreamer
хорошо работает и преобразовывает S16_LE в S32_LE.
К сожалению,
aplay -Dplughw:USBStreamer ./blah.wav
не работает. Возможно, отображение канала выключено для этого устройства?
Программное обеспечение Deadbeef подыгрывает usbstreamer с небольшим усилием. Я даю ему hw:USBStreamer устройство и говорю ему делать все 8-> 16-> преобразования на 24 бита, и это работает как очарование.
Проблема решена.
pcm.usbSTR {
type hw
card USBStreamer
device 0
}
pcm.usbREMAP {
type plug
slave.pcm usbSTR
ttable.0.8 1
ttable.1.9 1
}
pcm.!default {
type plug
slave.pcm usbREMAP
}
ctl.!default {
type plug
slave.pcm usbREMAP
}
Делают выше содержания/etc/asound.conf
, Этот файл (обычно) не существует в Ubuntu или LUbuntu, но если Вы создаете его, usbstreamer становится устройством ALSA по умолчанию, и каналы отображаются соответственно.
Это позволяет Вам делать audio_output раздел/etc/mpd.conf просто полями "типа" и "имени", "alsa" и "независимо от того, что Вы хотите" соответственно.
:::*
средний? внешняя машина была бы в состоянии соединиться с этим портом? – zcaudate 3 December 2018 в 14:03