Como eu uso o ALSA ou o PulseAudio para remapear a fonte estéreo para um PCM de 8 canais e diminuir o volume?

1

Os detalhes da minha configuração são os seguintes:

Placa Intel HD integrada (card0), para a qual todos os meus aplicativos existentes são usados por padrão. Geralmente saída estéreo saindo para o cartão de arquivos estéreo e aplicativos de streaming.

Agora adicionei uma placa de som USB (card1: xCORE-200, do XMOS) e tenho uma matriz não padrão de 8 saídas: 4 tweeters, 4 alto-falantes. Eles são simétricos, de modo que 2 tweeters / 2 falantes no lado esquerdo e 2 tweeters / 2 falantes no lado direito. A matriz de canais é assim:

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

O crossover já foi manipulado, então eu gostaria de simplesmente remapear todas as fontes estéreo para que a esquerda vá para todo o novo lado esquerdo e a direita vá para o novo lado direito.

Além disso, a partir do teste manual, eu sempre tive que diminuir significativamente o volume (em ~ 90%) da fonte para obter um nível razoável de minha nova configuração de alto-falante. Então eu preciso ser capaz de fazer isso na hora também.

Eu olhei vários exemplos usando ALSA através dos módulos .asoundrc e PulseAudio, e parece que não consigo conectar todas as partes com sucesso - especialmente indo de menos fontes de canal para mais canais (geralmente é ao contrário) . Eu estou procurando por um exemplo .asoundrc ou configuração do módulo PulseAudio (o que faz mais sentido) que pode alcançar o remapeamento de canal e redução de volume que estou fotografando para. Obrigado!

    
por Crunchex 06.09.2016 / 19:01

2 respostas

1

Isso é possível com a opção ttable do plug-in route , que também está integrado no plug-in plug :

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 ]
    ]
}

Para reduzir o volume, substitua o 1 s por valores menores.

    
por 07.09.2016 / 09:34
0

Obrigado a @CL. , esta é a solução que eu criei:

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 reduz o nível de volume em cada canal para onde eu quero que ele esteja. E acabei fazendo o remapeamento para todos os canais para facilitar a configuração - eu não precisava me preocupar em fazer o mapeamento correto e parecia não haver nenhum dano ao remapeamento dos canais não utilizados, embora eu monitorarei um possível impacto no desempenho.

    
por 12.09.2016 / 19:41