Re: [ecasound] channel manipulation

From: Patrick Shirkey <pshirkey@email-addr-hidden>
Date: Sat Sep 29 2012 - 13:15:32 EEST

On Sat, September 29, 2012 7:56 pm, Joel Roth wrote:
> On Sat, Sep 29, 2012 at 07:41:02PM +1000, Patrick Shirkey wrote:
>>
>> On Sat, September 29, 2012 7:25 pm, Joel Roth wrote:
>> > On Sat, Sep 29, 2012 at 06:54:11PM +1000, Patrick Shirkey wrote:
>> >
>> >> On Sat, September 29, 2012 6:14 pm, Joel Roth wrote:
>> >> > Hi Patrick,
>> >> >
>> >> > You mention the learning curve of Ecasound. I think it
>> >> > reflects the curve of learning to think in
>> >> > terms of audio streams and operators for manipulating
>> >> > them. Similar difficulties dog those who would exercise
>> >> > the full capabilities of ALSA using .alsarc files.
>> >> >
>> >>
>> >> It's more about the syntax. Being text based it is easy to make
>> mistakes
>> >> in the signal flow but I am getting my head around it now. It's an
>> >> elegant
>> >> way of getting things done once you know what you are doing.
>> >
>> > Yes, elegant and yes, with syntactical requirements like
>> > any programming language.
>> >
>> >> The input file is a stereo track. The output file is a 6 channel
>> track.
>> >
>> > Oops.
>> >
>> >> >> converter script:
>> >> >>
>> >> >> ecasound -t 5 -f:s16_be,6,48000 \
>> >> >> -a:1,2,3,4,5,6 -i TEST_1-2.aif \ # each chain 1-6 gets a copy of
>> six
>> >> >> channel audio
>> >> >> -a:1 -chmute:2 \ # chain 1, channel 2 is muted, other 5 channels
>> >> alive
>> >> >> -a:2 -chmute:1 \ # chain 2, channel 1 is muted, other 5 channels
>> >> alive
>> >> >> -a:3 -chmix:3 \ # chain 3, all six channels mixed to channel 3
>> >> >> -a:4 -chmix:4 \ # chain 4, all six channels mixed to channel 4
>> >> >> -a:5 -chmute:1 \# chain 5, channel 1 is muted, other 5 channels
>> >> alive
>> >> >> -a:6 -chmute:2 \ # chain 6, channel 2 is muted, other 5 channels
>> >> alive
>> >> >> -a:5,6 -o loop,1 \ # chains 5 and 6 summed to loop device loop,1
>> >> >> -a:7,8 -i loop,1 \ # chains 7 and 8 each get copy of loop,1 stream
>> >> >> -a:7 -ea:200 -chmix:5 \ # chain 7, all channels amplified, then
>> >> > # summed in channel 5
>> >> >> -a:8 -chmix:6 \ # chain 8, all channels summed in channel
>> 6
>> >> >> -a:all -o test-out.wav # all channels in all chains summed to
>> >> >> test-out.wav
>> >> >
>> >> >
>> >> > I think this may not be what you want to accomplish, because
>> >> > you're summing lots of copies of the same channels.
>> >> >
>> >>
>> >> The input track is a stereo track so I am only summing copies of the
>> >> left
>> >> and right signal input signal. The output track is a 6 channel
>> track. I
>> >> have removed all the additional processing filters to minimise
>> confusion
>> >> ;-)
>> >
>> > Okay, well the comments above still apply, even if the input
>> > is just two channels. :-)
>> >
>>
>> Yep. So should that result in silence on channels 5,6 ?
>>
>> >
>> >> >> +++
>> >> >>
>> >> >> ecasound: ERROR: [ECA-SESSION] : "Invalid argument, unable to
>> parse:
>> >> >> "-chmix:5""
>> >> >>
>> >> >> ecasound -t 5 -f:s16_be,6,48000 \
>> >> >> -a:1,2,3,4,5,6 -i TEST_1-2.aif \
>> >> >> -a:1 -chmute:2 \
>> >> >> -a:2 -chmute:1 \
>> >> >> -a:3 -chmix:3 \
>> >> >> -a:4 -chmix:4 \
>> >> >> -a:5 -chmute:1 \
>> >> >> -a:6 -chmute:2 \
>> >> >> -a:5,6 -chmix:5 -chcopy:5,6 \
>> >> >> -a:all -o test-out.wav
>> >> >>
>> >> >> +++
>> >> >
>> >> > Not sure what differently you want to accomplish
>> >> > with this second command.
>> >>
>> >> With the first command I get silence on channels 5,6 output. With the
>> >> second command I am trying to chmix a:5,6 to channel 5 to see if that
>> >> gives me an audible signal on the output track. However it fails for
>> >> some
>> >> reason. It doesn't want to chmix chain 5 and 6 at the same time. It
>> is
>> >> happy to do them individually for chain 3 and 4. I'm not sure why
>> that
>> >> would be a problem though.
>> >
>> > I would try creating your setup in small pieces and testing
>> > each piece. If you can get a good result processing
>> > chains separately, I would go for that.
>> >
>>
>> Ok, With the multi pass approach I have to do the following:
>>
>> 1: Create a four channel track with the correct filters
>> 2: Create a mono track with the left signal inverted
>> 3: Create a new mono track with the track from step 2 summed with the
>> right channel from the original file
>> 4: Apply my filters on the mono track from step 3 and output a stereo
>> track
>> 5; Combine the 4 channel track from step 1 with the stereo track from
>> step
>> 4 and write a new 6 channel track
>
> Good to read your complete requirement. I agree with your
> decision to solve them at the Ecasound chain setup level rather
> than with Ardour, Nama etc.
>
> What I'm recommending is that you write and test in small
> pieces, adding functionality in each iteration. When it's all
> running well, you can do your big processing in one go.
>

processing channels 1-4 works fine. It's just 5,6 that are not working for
me. Has anyone else had any luck with 6 channel output?

>> That by itself is not a problem but it will add a lot more time to my
>> processing task I have over 30 hours of audio to process, so I would
>> prefer to use a single pass solution if possible. Anyway for now I will
>> program the steps above and if someone has an idea on why the single
>> pass
>> chain does not work then I will be happy to modify it.
>>
>> > You may also find it easier (as I do) to write your commands to a file
>> > (e.g. Setup.ecs) and load it with
>> >
>> > ecasound -c -s Setup.ecs
>> >
>>
>> I already have a bash script so I'm running it like this:
>>
>> sh convert.sh
>
> If you do it as I recommend, you can use Ecasound's
> diagnostic commands (es, cs, fs) to check if your
> written setup matches what you actually want.
>
> Then you can use the 'start' command to run
> the audio engine.
>

Can I load multiple chain setups and run them in parallel with this method?

--
Patrick Shirkey
Boost Hardware Ltd
------------------------------------------------------------------------------
How fast is your code?
3 out of 4 devs don\\\'t know how their code performs in production.
Find out how slow your code is with AppDynamics Lite.
http://ad.doubleclick.net/clk;262219672;13503038;z?
http://info.appdynamics.com/FreeJavaPerformanceDownload.html
_______________________________________________
Ecasound-list mailing list
Ecasound-list@email-addr-hidden
https://lists.sourceforge.net/lists/listinfo/ecasound-list
Received on Sat Sep 29 16:15:01 2012

This archive was generated by hypermail 2.1.8 : Sat Sep 29 2012 - 16:15:01 EEST