アルサとの最初の構成戦争の後( CL。 の助けを借りて勝ちました)チェック この質問 .. ..
私は今さらに行きたいと思います:
セットアップでマルチチャンネルサウンドを再生できますが、同時に再生する必要があります。
Dmixを使用すると役立つことがわかりましたが、正しいasound.confファイルを設定する際に問題が発生します。ここでは、試したさまざまな解決策とそれぞれの結果を示します。
初期(マルチチャネルで動作しますが、同時には動作しません)asound.conf:
pcm.!default {
type asym
playback.pcm {
type plug
slave.pcm "surround40:CA0106"
}
capture.pcm {
type plug
slave.pcm "hw:CA0106"
}
}
初期(同時に再生しますが、マルチチャネルではなく、ここでは2チャネルのみ)asound.conf:
pcm.dmixed {
type dmix
ipc_key 1024
ipc_key_add_uid 0
slave.pcm "hw:CA0106"
}
pcm.duplex {
type asym
playback.pcm "dmixed"
}
# Instruct ALSA to use pcm.duplex as the default device
pcm.!default {
type plug
slave.pcm "duplex"
}
上記の設定に関する注意このasound.confを使用すると、2つのサウンドを同時に再生できますが、2チャンネルでのみ、マルチチャンネルの容量が失われました...
また、私の最初のasound.conf(上記の最初の抜粋)で機能していたいくつかのサウンドは、このasound.confでは機能しなくなりましたここに失敗メッセージがあります:
[root@server Sons]# aplay -N Apparition.wav
Playing WAVE 'Apparition.wav' : Signed 32 bit Little Endian, Rate 22050 Hz, Channels 4
aplay: set_params:1015: Unable to install hw params:
ACCESS: RW_INTERLEAVED
FORMAT: S32_LE
SUBFORMAT: STD
SAMPLE_BITS: 32
FRAME_BITS: 128
CHANNELS: 4
RATE: NONE
PERIOD_TIME: 125000
PERIOD_SIZE: NONE
PERIOD_BYTES: (44096 44112)
PERIODS: (1 2)
BUFFER_TIME: (249977 249978)
BUFFER_SIZE: 5512
BUFFER_BYTES: 88192
TICK_TIME: 0
そして1つの実用的なサウンドの例:
[root@server Sons]# aplay -vN Disparition.wav
Playing WAVE 'Disparition.wav' : Signed 32 bit Little Endian, Rate 22254 Hz, Channels 4
Plug PCM: Route conversion PCM (sformat=S32_LE)
Transformation table:
0 <- 0
1 <- 1
Its setup is:
stream : PLAYBACK
access : RW_INTERLEAVED
format : S32_LE
subformat : STD
channels : 4
rate : 22254
exact rate : 22254 (22254/1)
msbits : 32
buffer_size : 5563
period_size : 2781
period_time : 125000
tstamp_mode : NONE
period_step : 1
avail_min : 2781
period_event : 0
start_threshold : 5563
stop_threshold : 5563
silence_threshold: 0
silence_size : 0
boundary : 729153536
Slave: Rate conversion PCM (48000, sformat=S16_LE)
Its setup is:
stream : PLAYBACK
access : MMAP_INTERLEAVED
format : S32_LE
subformat : STD
channels : 2
rate : 22254
exact rate : 22254 (22254/1)
msbits : 32
buffer_size : 5563
period_size : 2781
period_time : 125000
tstamp_mode : NONE
period_step : 1
avail_min : 2781
period_event : 0
start_threshold : 5563
stop_threshold : 5563
silence_threshold: 0
silence_size : 0
boundary : 729153536
Slave: Direct Stream Mixing PCM
Its setup is:
stream : PLAYBACK
access : MMAP_INTERLEAVED
format : S16_LE
subformat : STD
channels : 2
rate : 48000
exact rate : 48000 (48000/1)
msbits : 16
buffer_size : 12000
period_size : 6000
period_time : 125000
tstamp_mode : NONE
period_step : 1
avail_min : 6000
period_event : 0
start_threshold : 12000
stop_threshold : 12000
silence_threshold: 0
silence_size : 0
boundary : 1572864000
Hardware PCM card 0 'CA0106' device 0 subdevice 0
Its setup is:
stream : PLAYBACK
access : MMAP_INTERLEAVED
format : S16_LE
subformat : STD
channels : 2
rate : 48000
exact rate : 48000 (48000/1)
msbits : 16
buffer_size : 12000
period_size : 6000
period_time : 125000
tstamp_mode : ENABLE
period_step : 1
avail_min : 6000
period_event : 0
start_threshold : 1
stop_threshold : 1572864000
silence_threshold: 0
silence_size : 1572864000
boundary : 1572864000
「-N」オプションを使用して、非常に短いサウンドを次々にすばやく再生します。このアクションを取り除くことはできません。
簡単に言うと、マルチチャネル容量を維持できるasound.confファイルを探していますが、2つの異なるサウンドを同時に再生することもできます。
2つのサウンドのうち、1つは2つのフロントスピーカーを使用し、もう1つは2つのリアスピーカーを使用します。どちらのサウンドも、2つのチャネル(サウンドに応じてフロントまたはリア)が空白の4つのチャネルを使用して構築されます。
私の少しの理解から、最初に「カスタムデバイス」(プラグタイプまたは他のタイプ?)を指定してから、それらを「混合」する必要があります。これは、内部のslave.pcmハードウェアアドレスを変更しようとしたためです。 pcm.dmixedブロックですが、このブロックのタイプが正しくないことを示すエラーが表示されます(または同様のもの、必要に応じて正確なメッセージを提供できます...)
hw:CA0106
に
surround40:CA0106
その問題を解決するのに役立つ情報やアイデアは大歓迎です。
PDATE_1: CLに続きます。アドバイス、私はこのasound.confを作成しました:
pcm.dmixed {
type dmix
ipc_key 1024
ipc_key_add_uid 0
slave {
pcm "hw:0,0"
channels 4
}
}
pcm.dmixed2 {
type dmix
ipc_key 1025
ipc_key_add_uid 0
slave {
pcm "hw:0,1"
channels 4
}
}
pcm.quad {
type multi
slave.pcm "dmixed"
slave.pcm "dmixed2"
}
# Instruct ALSA to use pcm.quad as the default device
pcm.!default {
type plug
slave.pcm "quad"
}
しかし、それはまだ機能していません...それはこのエラーで失敗します:
ALSA lib pcm_multi.c:1042:(_snd_pcm_multi_open) Unknown field slave
スレーブ定義が欠落しているように見えますが、どこにあるのかわかりません...
PDATE_2:ここでは、CLのおかげで、最新の「ほぼ」作業ファイルが2つのパートで再生されています(詳細についてはコメントを参照)が、何もないよりはましです。
pcm.!default { # The "!" is used to overwrite an existing definition (pcm.default in this case ...)
type asym
playback.pcm {
type plug # plug is the "automatic conversion" plugin : convert data rate, channel and format on demand
slave.pcm "quad"
}
}
pcm.dmix_front { # Define the front speakers device : hw:0,0
type dmix
ipc_key 12345
ipc_key_add_uid 0
slave.pcm "hw:0,0"
}
pcm.dmix_rear { # Define the rear speakers device : hw:0,1
type dmix
ipc_key 67890
ipc_key_add_uid 0
slave.pcm "hw:0,1"
}
pcm.quad {
type multi
slaves {
a { pcm dmix_front channels 2 }
b { pcm dmix_rear channels 2 }
}
bindings [
{ slave a channel 0 }
{ slave a channel 1 }
{ slave b channel 0 }
{ slave b channel 1 }
]
}
私はついにアプリからplug:dmix_frontとplug:dmix_frontを使用するようになりました。
CLありがとうございます。あなたの親切なサポートと忍耐のために。
documentation によると、次のようなものが機能するはずです。
pcm.dmix_front {
type dmix
ipc_key 12345
ipc_key_add_uid 0
slave.pcm "hw:0,0"
}
pcm.dmix_rear {
type dmix
ipc_key 67890
ipc_key_add_uid 0
slave.pcm "hw:0,1"
}
pcm.quad {
type multi
slaves {
a { pcm dmix_front channels 2 }
b { pcm dmix_rear channels 2 }
}
bindings [
{ slave a channel 0 }
{ slave a channel 1 }
{ slave b channel 0 }
{ slave b channel 1 }
]
}