7.1 USB 사운드 카드의 출력을 4개의 서로 다른 스테레오 쌍으로 분할

7.1 USB 사운드 카드의 출력을 4개의 서로 다른 스테레오 쌍으로 분할

내 계획은 7.1 USB 사운드 카드(AUREON XFIRE 8.0 HD)의 아날로그 출력 4개를 별도의 스테레오 쌍으로 사용하여 Ubuntu 22.04 및 Shairport Sync를 사용하여 멀티룸 오디오 설정을 만드는 것입니다.

.asoundrcShairport 동기화(또는 ALSA를 지원하는 다른 소스)에서 사용할 수 있는 가상 장치를 생성하려면 다음이 필요합니다 .

pcm.stereoA {
    # 0 - Front Left
    # 1 - Front Right
    type route;
    slave.pcm "hw:1,0";
    slave.channels 8;
    ttable.0.0 1;
    ttable.1.1 1;
}

pcm.stereoB {
    # 2 - Front Center
    # 3 - LFE
    type route;
    slave.pcm "hw:1,0";
    slave.channels 8;
    ttable.0.3 1;
    ttable.1.2 1;
}

pcm.stereoC {
    # 4 - Rear Right
    # 5 - Rear Left
    type route;
    slave.pcm "hw:1,0";
    slave.channels 8;
    ttable.0.4 1;
    ttable.1.5 1;
}

pcm.stereoD {
    # 6 - Side Right
    # 7 - Side Left
    type route;
    slave.pcm "hw:1,0";
    slave.channels 8;
    ttable.0.7 1;
    ttable.1.6 1;
}

이제 문제는 이것이 stereoA다른 출력의 경우 Shaiport Sync를 통해 사용될 때 오디오가 음소거 상태로 유지된다는 것입니다.

그러나 스피커 테스트로 테스트하면 정상적으로 작동합니다.

speaker-test -D stereoB -c 2

speaker-test 1.2.6

Playback device is stereoB
Stream parameters are 48000Hz, S16_LE, 2 channels
Using 16 octaves of pink noise
Rate set to 48000Hz (requested 48000Hz)
Buffer size range from 12 to 96000
Period size range from 6 to 48000
Using max buffer size 96000
Periods = 4
was set period_size = 24000
was set buffer_size = 96000
 1 - Front Center
 0 - LFE

여기에서는 올바른 출력에서 ​​재생되는 소음을 테스트할 수 있습니다.

Shairport Sync가 스테레오B를 출력 장치로 사용하라는 지시를 받으면 실제로 오디오 스트림도 받아들이고 재생 중인 것처럼 보입니다(다른 것을 재생하려고 할 때 오디오 장치도 사용 중입니다). 그래서 잘못된 채널에서 재생되고 있는 것 같아요.

스테레오 쌍이 실제로 "전면 왼쪽" 및 "전면 오른쪽"이라는 실제 스테레오 쌍처럼 작동하도록 채널 매핑을 수정하려면 어떻게 해야 합니까?

답변1

내 구성이 실제로 꽤 잘 작동한다는 것을 알았습니다. AirPlay 대상 간에 전환할 때 macOS가 볼륨 슬라이더를 상당히 낮은 볼륨으로 재설정한다는 사실을 깨닫지 못했기 때문에 다른 출력을 테스트할 때 오디오가 들리지 않았습니다.

그 과정에서 제가 배운 것은 pcm_slave섹션을 정의하고 pcm해당 섹션에서 이를 참조함으로써 구성을 약간 단순화할 수 있다는 것입니다.

따라서 누군가가 유용하다고 생각할 경우를 대비하여 업데이트된 구성을 여기에 남겨두겠습니다.

pcm_slave.outs {
    pcm "hw:1,0";
    channels 8;
}

pcm.stereoA {
    type route;
    slave outs;
    ttable.0.0 1;
    ttable.1.1 1;
}

pcm.stereoB {
    type route;
    slave outs;
    ttable.0.3 1;
    ttable.1.2 1;
}

pcm.stereoC {
    type route;
    slave outs;
    ttable.0.4 1;
    ttable.1.5 1;
}

pcm.stereoD {
    type route;
    slave outs;
    ttable.0.6 1;
    ttable.1.7 1;
}

관련 정보