ALSA 또는 PulseAudio를 사용하여 스테레오 소스를 8채널 PCM으로 다시 매핑하고 볼륨을 줄이려면 어떻게 해야 합니까?

ALSA 또는 PulseAudio를 사용하여 스테레오 소스를 8채널 PCM으로 다시 매핑하고 볼륨을 줄이려면 어떻게 해야 합니까?

내 설정 세부 사항은 다음과 같습니다.

Intel HD 카드(card0)가 내장되어 있으며 기존의 모든 응용 프로그램이 기본적으로 사용됩니다. 일반적으로 스테레오 출력은 스테레오 파일 및 스트리밍 응용 프로그램에서 카드로 출력됩니다.

이제 USB 사운드 카드(카드 1: XMOS의 xCORE-200)를 추가하고 8개 출력(트위터 4개, 스피커 4개)의 비표준 배열을 갖게 되었습니다. 대칭형이므로 왼쪽에 트위터 2개/스피커 2개, 오른쪽에 트위터 2개/스피커 2개가 있습니다. 채널 배열은 다음과 같습니다.

[0, 1, FrontRightTweeter, RearRightTweeter, LeftRearTweeter, LeftFrontTweeter, 6, 7, 8, 9, RightFrontSpeaker, RightRearSpeaker, LeftRearSpeaker, LeftFrontSpeaker, 14, 15]

크로스오버는 이미 처리되었으므로 왼쪽이 완전히 새로운 왼쪽으로 가고 오른쪽이 완전히 새로운 오른쪽으로 들어가도록 모든 스테레오 소스를 다시 매핑하고 싶습니다.

또한 수동 테스트를 통해 항상 소스 볼륨을 크게(약 90%) 줄여서 새 스피커 설정에 적합한 수준에 도달해야 했습니다. 그래서 나는 이 일을 즉석에서도 할 수 있어야 합니다.

.asoundrc 및 PulseAudio 모듈을 통해 ALSA를 사용하는 몇 가지 예를 살펴봤지만 모든 부분을 성공적으로 연결할 수 없는 것 같습니다. 특히 적은 채널 소스에서 더 많은 채널 소스로(보통 그 반대) . 나는 원하는 채널 재매핑과 볼륨 감소를 달성할 샘플 .asoundrc 또는 PulseAudio 모듈 구성(둘 중 더 합리적인 것)을 찾고 있습니다. 감사해요!

답변1

이는 플러그인 에 통합된 플러그인 ttable옵션을 통해 가능합니다.routeplug

pcm.MyLittleDevice {
    type plug
    slave {
        pcm "hw:1"
        channels 16
    }
    ttable [
        [ 0 0 0 0 1 1 0 0 0 0 0 0 1 1 0 0 ]
        [ 0 0 1 1 0 0 0 0 0 0 1 1 0 0 0 0 ]
    ]
}

볼륨을 줄이려면 1s를 더 작은 값으로 바꾸세요.

답변2

@CL님 감사합니다. , 이것이 제가 생각해낸 해결책입니다:

pcm.xcoreremapped {
    type plug
    hint {
        show on
        description "Remapping stereo to 8-ch speaker array."
    }
    slave {
        pcm "hw:1,0"
        channels 16
    }
    ttable [
        [ 0.05 0.05 0.05 0.05 0.05 0.05 0.05 0.05 0.05 0.05 0.05 0.05 0.05 0.05 0.05 0.05 ]
        [ 0.05 0.05 0.05 0.05 0.05 0.05 0.05 0.05 0.05 0.05 0.05 0.05 0.05 0.05 0.05 0.05 ]
    ]
}

0.05는 각 채널의 볼륨 레벨을 원하는 위치로 줄입니다. 구성을 더 쉽게 하기 위해 모든 채널을 다시 매핑했습니다. 올바르게 매핑하는 것에 대해 걱정할 필요가 없었고, 잠재적인 성능 영향을 모니터링하겠지만 사용하지 않는 채널을 다시 매핑해도 아무런 해가 없는 것 같았습니다.

관련 정보