PulseAudio/ALSA를 사용하여 물리적 입력 장치를 여러 가상 입력 장치로 분할하는 방법은 무엇입니까?

PulseAudio/ALSA를 사용하여 물리적 입력 장치를 여러 가상 입력 장치로 분할하는 방법은 무엇입니까?

따라서 오디오 인터페이스당 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

관련 정보