7.1サウンドカードには8つの独立したモノラルチャンネルがありますが、同時に8つのチャンネルでサウンドを再生できます。

7.1サウンドカードには8つの独立したモノラルチャンネルがありますが、同時に8つのチャンネルでサウンドを再生できます。

Raspberry Pi 3およびUSB 7.1チャンネルサウンドカードを使用するプライベートサウンドプロジェクトでは、サウンドカードを8つの独立したモノラルチャンネルとして使用して、特定のチャンネルでさまざまなモノラルサウンドを再生する必要があります。時には、2つ以上のモノラルサウンドが特定のチャンネルで同時に(混合)再生されることがあります。最後に、設定ファイル.asoundrcでこれを行う方法を見つけました。

pcm_slave.usbsoundcard {
pcm "hw:1"
rate 44100
channels 8
periods 128
period_time 0
period_size 1024
buffer_time 0
buffer_size 4096
}

pcm.ch1 {
type dmix
slave usbsoundcard
ipc_key 1001
bindings [ 0 ]
}

pcm.ch2 {
type dmix
slave usbsoundcard
ipc_key 1001
bindings [ 1 ]
}

pcm.ch3 {
type dmix
slave usbsoundcard
ipc_key 1001
bindings [ 6 ]
}

pcm.ch4 {
type dmix
slave usbsoundcard
ipc_key 1001
bindings [ 7 ]
}

pcm.ch5 {
type dmix
slave usbsoundcard
ipc_key 1001
bindings [ 2 ]
}

pcm.ch6 {
type dmix
slave usbsoundcard
ipc_key 1001
bindings [ 3 ]
}

pcm.ch7 {
type dmix
slave usbsoundcard
ipc_key 1001
bindings [ 4 ]
}

pcm.ch8 {
type dmix
slave usbsoundcard
ipc_key 1001
bindings [ 5 ]
}

この設定ファイルを使用すると、目的のチャンネルで好きなものを再生できます。必要に応じて、次のコマンドを使用して各独立チャンネルで同時に複数のサウンドを再生できます。

aplay -D plug:ch3 sound1_mono.wav &
aplay -D plug:ch3 sound2_mono.wav &  # sound 2 mixed with sound 1 on channel 3
aplay -D plug:ch7 sound3_mono.wav &
aplay -D plug:ch8 sound4_mono.wav &

など...

しかし、私は別の可能性を追加したいと思います。 8つのモノラルチャンネルすべてで再生されるサウンドをルーティングする必要がある「all」という仮想チャンネルを追加したいと思います。最終的な目標は、Asterisk pbxシステムをこのチャンネルを使用するインターコムとして構成することです。呼び出されると、Asteriskは自動的に応答し、音声がサウンドカードの8つのチャンネルすべてでルーティング(混合)されるようにします。

私は無実に試みた:

pcm.all {
type dmix
slave usbsoundcard
ipc_key 1001
bindings [ 0 1 2 3 4 5 6 7 ]
}

しかし、これはうまくいきません。テストのために、「すべての」仮想チャンネルでモノラルサウンドも再生しました。次のようにすると、aplay -Dplug:all sound5_mono.wavサウンドがすべてのチャンネルch1 ... ch8で正しく再生され、他のwavファイルは再生されません。しかし、すでにサウンドが再生されているチャンネルではsound5_monoが聞こえません。 wav ところで硬い音がしますね

.asoundrcファイルを機能させるにはどうすればよいですか?私がしたいのは、一種のオーディオマルチルームです。さまざまな部屋で各チャンネルch1 ... .ch8の異なるモノラルファイルを再生し、SIP電話を使用してラズベリーパイに電話すると、すべての部屋で音声を再生(ミックス)します。

ベストアンサー1

最後の提案が仮想チャンネル「すべて」に適用されていなくても多くの助けになり、同じUSBサウンドカードを使用して自分のコンピュータで完全に動作しようとしました。

構成ファイルは次のとおりです。

pcm.dmix8 {
    type dmix
    ipc_key 1001
    slave {
        pcm "hw:2"
        rate 44100
        channels 8
        period_size 1024
        buffer_size 32768
    } }

pcm.ch1 {
    type plug
    slave.pcm dmix8
    ttable.0.0 1 }

pcm.ch2 {
    type plug
    slave.pcm dmix8
    ttable.0.1 1 }

pcm.ch3 {
    type plug
    slave.pcm dmix8
    ttable.0.6 1 }

pcm.ch4 {
    type plug
    slave.pcm dmix8
    ttable.0.7 1 }

pcm.ch5 {
    type plug
    slave.pcm dmix8
    ttable.0.4 1 }

pcm.ch6 {
    type plug
    slave.pcm dmix8
    ttable.0.5 1 }

pcm.ch7 {
    type plug
    slave.pcm dmix8
    ttable.0.6 1 }

pcm.ch8 {
    type plug
    slave.pcm dmix8
    ttable.0.7 1 }

pcm.all {
    type plug
    slave.pcm dmix8
    ttable.0.0 1
    ttable.0.1 1
    ttable.0.2 1
    ttable.0.3 1
    ttable.0.4 1
    ttable.0.5 1
    ttable.0.6 1
    ttable.0.7 1 }

この設定ファイルを使用すると、すべてが期待どおりに動作します! Asteriskは「すべての」チャンネルをローカルソフトフォンとして使用し、ch1 ... ch8は8つの異なる部屋でさまざまなモノラルサウンドを再生します。 Asteriskを呼び出すと自動的に応答になり、部屋にある既存の音と8HPの音が混ざって聞こえますね:)

助けてくれてありがとう!

次に、私はRaspberry Pi 3ボードで試してみましたが、他の動作をする理由はありませんでした。

おすすめ記事