Aplique o filtro LADSPA a apenas um canal de saída multicanal com Alsa e PulseAudio

2

Eu quero aplicar um filtro, especificamente o glamour-bandpass-iir, a apenas um dos vários canais de saída.

Ainda estou perplexo depois de analisar os exemplos listados abaixo. Tenho certeza de que module-ladspa-sink e module-remap-sink são a solução para minhas necessidades. Não consigo, no entanto, entender os documentos em module-remap-sink . Para manter as coisas simples, vamos supor que o objetivo é ter o áudio% não filtrado da saída front L/R soundcard jack enquanto o rear L/R soundcard jack envia o áudio filtrado.

sink_name: The name for the new virtual sink. 
master: The name of the sink of which channels you're remapping. 
channels: Channel count of the new sink. 
channel_map: List of the channels that this sink will accept. 
master_channel_map: The channels in the master sink, where the channels listed in channel_map will be relayed to. channel_map and master_channel_map must have equal number of channels listed, because the channels will be mapped based on their position in the list, i.e. the first channel in channel_map will be relayed to the first channel in master_channel_map and so on. 
remix: Allow remixing of the mono or stereo streams to multiple channels (default is yes; set to "no" if you don't want the stereo stream to be up-mixed to all channels except subwoofer and channels named aux0-aux15).

link

O seguinte é o filtro que eu quero usar:

### LADSPA Sink
.ifexists module-ladspa-sink.so
.nofail
load-module module-ladspa-sink sink_name=ladspa_out master=alsa_out plugin=bandpass_iir_1892 label=bandpass_iir control=660.0,440.0,2
.fail
.endif

Alguém poderia gentilmente explicar como eu realizo source - > ladspa_out - > %código%. Especificamente, como eu preencho isso?

load-module module-remap-sink filt_sink <?> 2 <?left,?right> <?m_left,?m_right> <?yes>

Caso seja relevante, estou usando o som onboard do i945: center jack on soundcard

Editado após semanas de frustração ...

Eu tentei praticamente todas as configurações de alsa.long_card_name = "Intel ICH7 with ALC850 at irq 17" e /etc/pulse/default.pa que eu posso imaginar sem sucesso. Eu tentei usar várias permutações de ~/pulse/default.pa | module-udev-detect para configuração alsa com 4 ou 6 canais chamados front-left, front-right, esquerda, direita, aux0-4, traseira esquerda, traseira direita e module-alsa-sink e module-remap-sink , bem como o pretendido module-combine-sink . Embora o filtro funcione em um, dois ou quatro canais, é impossível obter simultaneamente uma saída não filtrada através de outros canais.

Eu perguntei no #pulseaudio no irc e me disseram que o que eu quero é impossível apenas com o pulso. Eu realmente apreciaria se alguém pudesse me indicar uma solução pulseaudio específica OU uma solução com outras ferramentas.

Obrigado.

    
por justinzane 29.09.2012 / 06:07

1 resposta

3

Atribuindo um filtro LADSPA a um único canal de áudio

Podemos fazer isso com o ajuste fino do módulo coletor pulseaudio LADSPA . Este módulo carrega um coletor onde qualquer plugin LADSP será aplicado. É o caso usual de aplicar um filtro a todos os canais, mas também podemos definir um único canal para atribuir um filtro ao remapeamento e combinação de canais.

Os seguintes comandos Pulse Audio estão envolvidos:

  1. Obtenha um sink_name e channel_map :

    válido
    pacmd list-sinks
    
  2. Carregue um filtro LADSPA:

    load-module module-ladspa-sink sink_name=ladspa_out master=alsa_out plugin=<filer> label=<label> control=<control>
    
  3. Crie um novo coletor remapeado:

    load-module remap-sink sink_name=<name> master=<sink> channels=<n> master_channel_map=<list> channel_map=<list>
    
  4. Crie um novo coletor combinado:

    pacmd load-module module-combine-sink sink_name=<name> sink_properties=device.description=<displayed_name> slaves=<list_of_n_sinks> channels=<n>
    

Para obter o efeito desejado, precisamos carregar o filtro LADSPA para criar um ladspa_out -sink com áudio filtrado de um determinado coletor. Então, precisamos criar pias separadas e nomeadas para cada canal de áudio. Os canais em que desejamos que o filtro seja aplicado precisam do ladspa_out -sink como master, os canais em que precisamos estar limpos precisam do sink não filtrado como master. Por fim, combinamos os canais separados novamente para nos fornecer um novo dissipador combinado.

Exemplo para dois canais

pacmd load-module module-ladspa-sink sink_name=ladspa_out master=alsa_output.pci-0000_00_14.2.analog-stereo plugin=bandpass_iir_1892 label=bandpass_iir control=660.0,440.0,2

Um novo coletor ladspa_out é criado usando o filtro bandpass_iir com determinados controles aplicados ao sinal de áudio de nosso coletor mestre (substitua pelo coletor mestre da etapa 1. acima)

pacmd load-module module-remap-sink sink_name=remapR master=ladspa_out channels=1 master_channel_map=front-right channel_map=front-right

Um coletor filtrado com o nome remapR é criado para o canal de áudio frontal direito do% filtrado ladspa_out .

pacmd load-module module-remap-sink sink_name=remapL master=alsa_output.pci-0000_00_14.2.analog-stereo channels=1 master_channel_map=front-left channel_map=front-left

Um coletor não filtrado remapL para o canal de áudio frontal esquerdo é criado a partir do nosso coletor mestre não filtrado, conforme definido acima.

pacmd load-module module-combine-sink sink_name=combine sink_properties=device.description=myCombine slaves=remapL,remapR channels=2

Um novo coletor combine (ou qualquer outro nome escolhido) será criado com 2 canais usando o coletor não filtrado remapL para o canal esquerdo e o coletor filtrado remapR para o canal direito. / p>

Agora podemos escolher esse coletor recém-criado (exibido como "myCombine") nas configurações de áudio para que o canal esquerdo não seja filtrado e o canal direito filtrado com o filtro LADSP acima.

No caso de termos mais de dois canais, teremos que executar essas etapas para todos os canais, substituindo cada canal por sinais filtrados ou não filtrados para combiná-los novamente na última etapa.

    
por Takkat 29.09.2012 / 10:34