Snd_aloopモジュールに頭を巻き付けるのに問題があります。
私はpulseaudioを使わずにすべてのオーディオをalsa経由でルーティングしようとしています。ジャックを開始した場合、alsa以外のアプリからの音は聞こえませんが、rhythmboxやその他のネイティブジャックでサポートされているソフトウェアなどは問題なく動作します。
主な理由は、私は主にオーディオ編集を行っていますが、オンラインでもビデオを聴いているからです。
私はalsa snd_aloopモジュール を使用して仮想ハードウェアをセットアップし、ジャック以外のアプリのオーディオをルーティングしてうまく再生できることを読んでいましたalsa_inおよびalsa_outメカニズムを介したジャック付き。
私は これ 、 これ のようなかなりの数のチュートリアルを読みました多くのドキュメント here と here も調べました。
私にとって最も混乱しているのは、ループバックのセットアップと、alsa_inとalsa_outの動作方法です。
たとえば、snd_aloopモジュールでは、8つのサブデバイスを持つ2つのデバイスがあります
僕の 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はジャックセッションに入るalsaオーディオストリームであり、alsa_outはジャックが終了後に出力するalsaオーディオストリームですか?
私はsnd_aloopでできることをすべて読んでいますが、彼らの 公式ドキュメント でさえ少し不足しているようです。
誰かが私がこれを整理するのを手伝ってもらえますか?
答えが少し遅れていますが、誰かがこれが役立つと思うかもしれません;)
/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"
}
}
....
そして、このようなものをジャックするための配管(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 &