私のシステム [ubuntu 22.04] で ALSA とループバックを設定するのに苦労しています。ヘッドフォンとループバック ストリームを結合して、オーディオを再生するときに、オーディオ ジャックから聞こえるだけでなく、プログラムで使用できるループバックも聞こえるようにしたいと考えています。[周波数パターンを分析するため]
私は指示に従っていたhttps://github.com/maximtrp/spectrumLEDループバックカーネルsnd-aloopをロードした
aplay -l は以下を出力します。
$ aplay -l
**** List of PLAYBACK Hardware Devices ****
card 0: Headphones [bcm2835 Headphones], device 0: bcm2835 Headphones [bcm2835 Headphones]
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: 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 1: 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
そして、次のように /etc に asound.conf を作成しようとしました。
pcm.!default {
type plug
playback.pcm "out"
capture.pcm "loopin"
}
pcm.out {
type plug
slave.pcm {
type multi
slaves {
a { channels 2 pcm "output" }
b { channels 2 pcm "loopout" }
}
bindings {
0 { slave a channel 0 }
1 { slave a channel 1 }
2 { slave b channel 0 }
3 { slave b channel 1 }
}
}
ttable [
[ 1 0 1 0 ] # left -> a.left, b.left
[ 0 1 0 1 ] # right -> a.right, b.right
]
}
pcm.loopout {
type dmix
ipc_key 1025
slave.pcm "hw:1,0,0"
slave {
period_time 0
period_size 1024
buffer_size 8192
channels 2
}
bindings {
0 0
1 1
}
}
pcm.loopin {
type plug
slave.pcm "hw:1,1,0"
}
pcm.output {
type dmix
ipc_key 1024
slave.pcm "hw:0,0"
slave {
period_time 0
period_size 1024
buffer_size 8192
channels 2
}
bindings {
0 0
1 1
}
}
しかし、何をしてもループバックは再生と同時には機能しないようです。そのため、再生を聞くには
$ aplay ファイル.wav
[または]
$ mpv 音楽.mp3
ヘッドフォン ジャックからのオーディオ出力のみを提供し、周波数を分析するために使用しようとしているプログラムにストリームを送信しません...
唯一効果があると思われる方法は、
$ aplay file.wav -D hw:1,1
しかし、オーディオジャックからの出力は再生されません。
asound.conf に何か問題がありますか?
ネットでいろいろ調べてみましたが、うまくいくものは見つかりませんでした。
基本バージョンを試してみましたhttps://stackoverflow.com/questions/7002423/how-to-mix-multiple-pcm-streams-using-alsa
asound.conf
pcm.!default {
type plug
slave.pcm "dmixer"
}
pcm.dmixer {
type dmix
ipc_key 1024
slave {
pcm "hw:1,0"
period_time 0
period_size 1024
buffer_size 4096
rate 44100
}
bindings {
0 0
1 1
}
}
ctl.dmixer {
type hw
card 0
}
しかし、これもうまくいかないようです。
また、なぜループバックが 2 つあるのかについても非常に混乱しています。
誰かこれを明確にしてくれませんか?このdmixとmultiプラグインはどのように機能するのでしょうか?ドキュメントは非常にわかりにくいようです