따라서 오디오 인터페이스당 18개의 입력 채널이 있습니다. 이러한 장치의 데이터는 PortAudio라는 라이브러리를 사용하는 C++ 프로그램을 통해 제공됩니다. 문제는 장치당 13개 이상의 채널을 받기 시작하면 단일 기능을 사용하는 것처럼 보이는 로드를 paInputOverflow
처리할 수 없기 때문에 문제가 발생하기 시작한다는 것입니다. recordCallback
(빈 콜백 함수를 사용해 보았지만 여전히 paInputOverflow
문제가 발생했으므로 코드와 관련이 없습니다.)
첫째, 사용할 채널을 선택하여 채널을 분할하고 다른 콜백이 다른 채널을 처리하도록 할 수 있는 방법이 있을 수 있다고 생각했습니다. 그러나 이것은 MacCore 및 ASIO에서만 지원되는 것처럼 보이며 ALSA를 사용하고 있습니다.
둘째, 내 생각은 입력 채널을 두 개의 장치로 분할하는 것이었습니다. 기본적으로 처음 9개 채널에는 하나의 가상 장치를 사용하고 나머지 9개 채널에는 두 번째 가상 장치를 사용했습니다.
을 사용해 보았지만 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 ]
}
}
불행히도 이것은 전혀 작동하지 않습니다. 내가 뭔가 잘못하고 있는 것 같아요. 하지만 이 시점에서 나는 아무 생각이 없었다. 어떤 도움이라도 대단히 감사하겠습니다.
추신: 제가 사용하고 있는 특정 배포판은 Ubuntu 18.04입니다.
답변1
"hw:5,0"
별칭으로 카드를 참조 하지 마십시오 "hw:M-Audio18"
. 예를 들어 다음을 사용하여 별칭을 얻을 수 있습니다.
aplay -l