You are not logged in.

#1 2015-09-17 21:28:25

hotvic
Member
Registered: 2013-02-11
Posts: 109

ALSA: split stereo channels then filter then join

How can I split a stereo output in two separate mono outputs then apply a different filter to each one and then join both again ?

This is what I got so far:

pcm_slave.twochannel {
    pcm "dmix"
    channels 2
    rate 48000
    buffer_size 4096
    period_size 2048
    periods 0
    period_time 0
}

pcm.chn1 {
    type plug
    slave.pcm {
        type dshare
        ipc_key 15555
        slave twochannel
        bindings.0 0
    }
}

pcm.chn2 {
    type plug
    slave.pcm {
        type dshare
        ipc_key 15556
        slave twochannel
        bindings.0 1
    }
}

pcm.high {
    type ladspa
    slave.pcm "chn1"
    path "/usr/lib/ladspa"
    channels 1
    plugins {
        0 {
            label hpf
            input {
                controls [ 125 ]
            }
        }
    }
}

pcm.low {
    type ladspa
    slave.pcm "chn2"
    path "/usr/lib/ladspa"
    channels 1
    plugins {
        0 {
            label lpf
            input {
                controls [ 100 ]
            }
        }
        1 {
            label hpf
            input {
                controls [ 40 ]
            }
        }
    }
}

pcm.output {
    type multi
    slaves.a.pcm "high"
    slaves.a.channels 1
    slaves.b.pcm "low"
    slaves.b.channels 2
    bindings.0.slave a
    bindings.0.channel 0
    bindings.1.slave b
    bindings.1.channel 1
}

it works the part of separate and apply filter, i.e. "low" and "high" works, but "output" which join both channels as expected* doesn't work.

*:

ALSA lib pcm_dshare.c:706:(snd_pcm_dshare_open) unable to open slave
Playback open error: -16,Device or resource busy

Any solution ?

Thanks wink

Last edited by hotvic (2015-09-17 21:30:24)

Offline

Board footer

Powered by FluxBB