PCM サンプルの 2 つの異なるストリームがあります。どういうわけかそれらを混ぜて、同じ出力デバイスで ALSA で再生することは可能ですか?
ミキサーを使用すると可能かもしれないと読みましたが、ドキュメントが不足しているため、理解するのが難しいと感じています。これがどのように実装されるかについて、誰かが何らかの情報を提供してくれませんか (実際に実装されている場合)。
ありがとう!
そのためには、システムに .asoundrc ファイルがあるかどうかを確認してください。そこにない場合は、作成して /home フォルダーに配置できます。次の設定で更新します。
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
}
システム上のデバイスのリストを取得するために使用$aplay -l
します。hw:X,Y は、ハードウェアのこのマッピングから取得されます。ここで、X はカード番号、Y はデバイス番号です。
次に、ターミナルを開き、最初の PCM ストリームを再生し
$aplay -f cd pcm_sound1.wav
ます。別のタブで、2 番目の PCM ストリームを再生します。
$aplay -f cd -D default pcm_sound2.wav
2 つの PCM データ ストリームが混在します。
乾杯、
これが別の答えに値するかどうかはわかりません。HSC の回答と"ALSA Wiki - The Dmix Howto"の例を使用しました。Dmix のドキュメントは確かに少しイライラします。
ここ~/.asoundrc
に私のために働く例があります。「バインディング」セクションは不要ですが、HOWTO には「マルチチャネル チップの動作が速くなる」と書かれています (気にするかどうかわかりません)。「0 1 1 0」をバインドすると、左右のチャンネルが切り替わります。「0 1 1 1」をバインドすると、右耳にゴミが入ります...明らかipc_key
に必須パラメーターです。ランダムな整数を選択しました。
# example 1
pcm.hw3mix {
type dmix
ipc_key 1939 # must be unique
slave {
pcm "hw:3"
period_time 0
period_size 1024 # must be power of 2
buffer_size 4096
rate 44100
}
bindings {
0 0
1 1
}
}
pcm.!default hw3mix
最後の行は、私の新しいhw3mix
デバイスをデフォルトのデバイスにします。
上記を簡略化して次のようにしました。
# example 2
pcm.hw3mix {
type dmix
ipc_key 1939 # must be unique
slave { pcm "hw:3" }
}
pcm.!default hw3mix
そしてそれはうまくいくようです。
上記の ALSA Wiki リンクで提案されているように、次のようにさらに単純化できます。
# example 3
pcm.dsp0 {
type plug
slave.pcm "dmix"
}
pcm.!default dsp0
これはさらに次のように単純化できます。
# example 4
pcm.!default {
type plug
slave.pcm "dmix"
}
あるいは:
# example 5
pcm.!default plug:dmix
ただし、最後の 3 つの例では、Dmix プラグインのパラメーターを指定できません。複数のストリームを「hw:3」にミックスするデバイスを作りたかったのです。これはデフォルトのデバイスではないため、Dmix のパラメーターとして指定する必要があると思います。そのため、上記の 2 番目の例を使用しました。私の実際~/.asoundrc
の には、「hw0mix」と呼ばれる「hw:0,0」のブロックもあるため、次の行のコメントを変更することで、ヘッドフォンとスピーカーの間で (新しく作成された) ストリームの出力を切り替えることができます。
#pcm.!default hw0mix
pcm.!default hw3mix
注意: 上記は "hw:0,0" や "hw:3" などのデバイスを指しています。さまざまな USB サウンド デバイスの安定したデバイス番号を確保する方法を見つけるのは少し難しかったです。こちらの手順を参照してください。 「同じ種類の複数のカードを注文する」の下。構成は、 のファイル内の 1 行で構成されます/etc/modprobe.d/
。これが、再起動後も同じデバイスを参照するために 0 や 3 などの数字を取得する方法です。