PCMサンプルのストリームは2種類あります。どういうわけかそれらを混ぜて、同じ出力デバイスでALSAと遊ぶことはできますか?ALSAを使用して複数のPCMストリームを混合する方法
私はミキサーを使用する可能性がありますが、私はそれがドキュメントの不足を理解するのが難しいと思っています。誰も、これがどのように実装されるかについて、実際には何らかの情報を提供してください。
ありがとうございます!
PCMサンプルのストリームは2種類あります。どういうわけかそれらを混ぜて、同じ出力デバイスでALSAと遊ぶことはできますか?ALSAを使用して複数のPCMストリームを混合する方法
私はミキサーを使用する可能性がありますが、私はそれがドキュメントの不足を理解するのが難しいと思っています。誰も、これがどのように実装されるかについて、実際には何らかの情報を提供してください。
ありがとうございます!
そのために、私たちのシステムに.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
があります。 "bindings"セクションは必要ありませんが、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
には、 "hw:0,0"というブロックがあり、 "hw0mix"というブロックがあります。次の行のコメントを変更することで、(新しく作成された)ストリームの出力を、
#pcm.!default hw0mix
pcm.!default hw3mix
NB:私の様々なUSBサウンドのために安定したデバイス番号を確保する方法を見つけるために少し大変でした...:「3 HW」:上記「0,0 HW」のようなデバイスを指し、デバイスの場合は、「同じタイプの複数のカードを注文する」の指示hereが見つかりました。構成は、ファイル内の1行で構成され、/etc/modprobe.d/
になっています。これは再起動後も同じデバイスを参照するために0や3のような数字を得る方法です。
この回答は非常に参考になりますが、私はちょっと混乱していて、もっと説明していただければ幸いです。 2番目の 'aplay'コマンドは' -D default'を持っていますが、最初のコマンドはなぜですか? 'bindings'セクションの意味は何ですか?' ctl.dmixer'は何ですか? 2つ以上のストリームを混合することは可能ですか? 3つの 'aplay'コマンドを同時に実行するとどうなりますか?なぜ 'pcm .default'と' pcm.dmixer'の名前を変更して間接を避けることができるのでしょうか? – Metamorphic