snd_aloopモジュールの理解に問題があります。
pulseaudioを使用せずにalsaを介してすべてのオーディオをルーティングしようとしています。 jackdを起動すると、alsa以外のアプリケーションでは音が出ませんが、Rhythmboxやその他の基本的なJackサポートなどのソフトウェアは正常に動作します。
主な理由は主にオーディオ編集をしますが、オンラインでビデオも聞くからです。
alsaが利用可能であることを読みました。snd_aloopモジュール仮想ハードウェアを設定すると、 alsa_in および alsa_out メカニズムを使用して、ジャックではなくアプリケーションオーディオをルーティングして、ジャックで正しく再生できます。
私は次のような多くのチュートリアルを読んだ。これ、これたくさんの書類を確認しました。ここそしてここしかも。
私を最も混乱させるのは、ループバック設定とalsa_inとalsa_outの仕組みです。
たとえば、snd_aloopモジュールの場合、2つのデバイスと8つのサブデバイスがあります。
これは私のaplay-l
姿です。
**** List of PLAYBACK Hardware Devices ****
card 0: Loopback [Loopback], device 0: Loopback PCM [Loopback PCM]
Subdevices: 8/8
Subdevice #0: subdevice #0
Subdevice #1: subdevice #1
Subdevice #2: subdevice #2
Subdevice #3: subdevice #3
Subdevice #4: subdevice #4
Subdevice #5: subdevice #5
Subdevice #6: subdevice #6
Subdevice #7: subdevice #7
card 0: Loopback [Loopback], device 1: Loopback PCM [Loopback PCM]
Subdevices: 8/8
Subdevice #0: subdevice #0
Subdevice #1: subdevice #1
Subdevice #2: subdevice #2
Subdevice #3: subdevice #3
Subdevice #4: subdevice #4
Subdevice #5: subdevice #5
Subdevice #6: subdevice #6
Subdevice #7: subdevice #7
card 1: PCH [HDA Intel PCH], device 0: CS4208 Analog [CS4208 Analog]
Subdevices: 0/1
Subdevice #0: subdevice #0
card 1: PCH [HDA Intel PCH], device 1: CS4208 Digital [CS4208 Digital]
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
次のようにシステムを設定しようとすると:
#jack capture and playback
pcm.jack_capture_1 {
type plug
slave.pcm "hw:Loopback,0,0"
}
pcm.jack_playback_1 {
type plug
slave.pcm "hw:Loopback,0,1"
}
#alsa capture and playback
pcm.alsa_input_1 {
type plug
slave.pcm "hw:Loopback,1,0"
}
pcm.alsa_output_1 {
type plug
slave.pcm "hw:Loopback,1,1"
}
#playback devices
pcm.jack_audio_1 {
type asym
playback.pcm "jack_playback_1"
capture.pcm "jack_capture_1"
}
それからalsa_out -j "playback" -d jack_audio_1 sound.wav
ジャックルーティングダイアグラムから接続しても、まだ出力は出ません。
私の質問:私の設定を見ると、ループバックjack_capture_1がhw:0,0にバインドされ、ループバックjack_playback_1がhw:0,1にバインドされています。
これは、jack_capture_1に送信されたすべてのサウンドをjack_playback_1からエコーする必要があることを意味します。そうですか?
alsa_inはjackのセッションに入るalsaオーディオストリームでもあり、alsa_outはjackが完了した後に出力するalsaオーディオストリームですか?
私はsnd_aloopで読むことができるすべてを読みましたが、公式文書少し足りないようです。
誰でもこの問題を解決するのに役立ちますか?
答え1
答えが少し遅れましたが、誰かがこの内容が役に立つかもしれません。 ;)
/etc/modprobe.d/alsa.conf
alias snd-card-8 snd-aloop
options snd_aloop index=8 id=loop0 enable=1
/etc/asound.conf
#### Linrad ####
pcm.loop0_0_0 {
type plug
slave {
pcm "hw:loop0,0,0"
format FLOAT_LE
rate 96000
}
}
pcm.linrad_alsa {
type asym
playback.pcm "loop0_0_0"
capture.pcm "loop0_0_0"
hint {
show on
description "Linrad: ALSA"
}
}
pcm.loop0_1_0 {
type plug
slave {
pcm "hw:loop0,1,0"
format FLOAT_LE
rate 96000
}
}
pcm.linrad_jack {
type asym
playback.pcm "loop0_1_0"
capture.pcm "loop0_1_0"
hint {
show on
description "Linrad: JACK"
}
}
#### WSJTX ####
pcm.loop0_0_1 {
type plug
slave {
pcm "hw:loop0,0,1"
format FLOAT_LE
rate 96000
}
}
pcm.wsjtx_alsa {
type asym
playback.pcm "loop0_0_1"
capture.pcm "loop0_0_1"
hint {
show on
description "WSJTX: ALSA"
}
}
pcm.loop0_1_1 {
type plug
slave {
pcm "hw:loop0,1,1"
format FLOAT_LE
rate 96000
}
}
pcm.wsjtx_jack {
type asym
playback.pcm "loop0_1_1"
capture.pcm "loop0_1_1"
hint {
show on
description "WSJTX: JACK"
}
}
....
jack用のパイプの場合は、次のようになります(jackdの起動後に実行されるシェルスクリプトに配置されます)。
alsa_in -j "WSJTX source" -d wsjtx_jack -q 1 &> /dev/null &
alsa_out -j "WSJTX sink" -d wsjtx_jack -q 1 &> /dev/null &