したがって、オーディオインターフェイスごとに18の入力チャンネルがあります。これらのデバイスのデータは、PortAudioというライブラリを使用するC ++プログラムを介して提供されます。問題は、デバイスごとに13以上のチャネルを受信し始めると、単一の機能を使用しているように見える負荷をpaInputOverflow
処理できないため、問題が発生し始めることです。recordCallback
(空のコールバック関数を試してみましたが、まだpaInputOverflow
問題が発生したため、コードには関係ありません。)
まず、使用するチャンネルを選択してチャンネルを分割し、別のコールバックに別のチャンネルを処理させる方法があると思いました。しかし、これはMacCoreとASIOでのみサポートされているようで、ALSAを使用しています。
第二に、私の考えは、入力チャンネルを2つのデバイスに分割することでした。デフォルトでは、最初の9つのチャネルには1つの仮想デバイスを使用し、残りの9つのチャネルには2番目の仮想デバイスを使用しました。
私は試してみましたが、pactl load-module module-remap-source
リマップを作成しましたが、PortAudioで別の入力「デバイス」として検出できませんでした。また、/etc/asound.conf
次のように編集して分割してみてください。
次のように使用してください。
pcm_slave.firstdevice {
pcm "hw:5,0"
channel 18
}
pcm.firsthalf {
type plug
slave.pcm {
type dsnoop
ipc_key 12345
slave firstdevice
bindings [ 0 1 2 3 4 5 6 7 8 ]
}
}
pcm.secondhalf {
type plug
slave.pcm {
type dsnoop
ipc_key 12345
slave firstdevice
bindings [ 9 10 11 12 13 14 15 16 17 ]
}
}
残念ながら、これはまったく機能しません。私が何か間違っていると思います。しかし、この時点で私は何も考えていませんでした。どんな助けでも大変感謝します。
PS:私が使っている特定のディストリビューションはUbuntu 18.04です。
答え1
"hw:5,0"
別名でカードを参照しないでください"hw:M-Audio18"
。たとえば、次のようにエイリアスを取得できます。
aplay -l