Re: [ecasound] ecasound ladspa question

New Message Reply About this list Date view Thread view Subject view Author view Other groups

Subject: Re: [ecasound] ecasound ladspa question
From: Aaron Heller (heller_AT_AI.SRI.COM)
Date: Sun Jul 25 2004 - 03:50:43 EEST

Thanks for the quick reply and thanks for all the work you've put into
ecasound. It is really a great tool.

Kai Vehmanen wrote:

> On Tue, 20 Jul 2004, Aaron Heller wrote:
>>If I have the following setup:
>> ecasound \
>> -a:1 -f:s24_be,1,96000 -i:W.raw -eac 400 \
>> -a:2 -f:s24_be,1,96000 -i:X.raw -erc:1,2 -eac 0,1 -eac 400 \
>> -a:3 -f:s24_be,1,96000 -i:Y.raw -erc:1,3 -eac 0,1 -eac 400 \
>> -a:4 -f:s24_be,1,96000 -i:Z.raw -erc:1,4 -eac 0,1 -eac 400 \
>> -a:1,2,3,4 \
>> -f:32,4,96000 \
>> -el:singlePara,8,12000,2.5 \
>> -o:WXYZ.wav
> [...]
>>Where "singlePara" is a one-channel LADSPA plugin. Does ecasound make
>>one instance and apply it only the first channel or are four instances
>>made and applied to each channel. The latter is the behavior of Jack-Rack.
> That's also true for Ecasound, if the plugin has exacly one input and
> output, a new plugin instance is created for each channel when
> processing multichannel Ecasound chains.
> The problem with above setup is that you are adding singlePara four times,
> once for chain '1', once for '2', and so on. As '4' is a 4ch chain, '3'
> a 3ch chain, etc, there's quite a lot of processing overhead.

So you are saying that 1+2+3+4 = 10 instances (!!) of singlePara are
being created in the set up shown above.

> But I guess
> that shouldn't be a problem here, in any case singlePara is applied to
> all input signals. One way a round this is to use:
> ecasound \
> -a:1 -f:s24_be,1,96000 -i:W.raw -ea:400 \
> -a:2 -f:s24_be,1,96000 -i:X.raw -erc:1,2 -eac 0,1 -ea:400 \
> -a:3 -f:s24_be,1,96000 -i:Y.raw -erc:1,3 -eac 0,1 -ea:400 \
> -a:4 -f:s24_be,1,96000 -i:Z.raw -erc:1,4 -eac 0,1 -ea:400 \
> -a:1,2,3,4 \
> -o loop,1 \
> -a:5 -i loop,1 \
> -f:32,4,96000 \
> -el:singlePara,8,12000,2.5 \
> -o:WXYZ.wav

Ah-Ha! Let me test my understanding.... This is creating a new
four-channel chain, "5", in which the LADSPA plugin is instantiated,
thereby only creating four instances of the plugin. It seems to me that
if I want to use a 4x4 plugin, I have to do this, otherwise the plugin
would only be applied to chain "4", which is not at all correct. This
new chain "5" is essentially equivalent to my jack-rack now.

After playing with this, I found I needed another -f:32,4,96000 after
the -a:1,2,3,4 or else the "loop" was only one channel, not four. For
reference, here's the .ecs file of what I ended up with. It has a
second loop to feed the output of the plugins into a series of chains
that split it back up into individual files.

This brings up a further question. ecasound uses 32-bit floats
internally (correct?), so would it be better if these loops were
-f:f32_le,4,96000 to eliminate conversion to and from s32_le.

[heller_AT_blumlein 3-21-2004 Audio]$ cat czech-phil-4.ecs

# ecasound chainsetup file

# general
# -b:256 -r:50 -z:intbuf -z:db,100000 -X -z:noxruns -z:nopsr

# audio inputs
-a:1 -f:s24_be,1,96000 -i:Take-8-W.raw,
-a:2 -f:s24_be,1,96000 -i:Take-8-X.raw,
-a:3 -f:s24_be,1,96000 -i:Take-8-Y.raw,
-a:4 -f:s24_be,1,96000 -i:Take-8-Z.raw,
-a:5 -f:f32_le,4,96000 -i:loop,1,1

# audio outputs
-a:1,2,3,4 -f:f32_le,4,96000 -o:loop,1,1
-a:5 -f:s32_le,4,96000 -o:loop,2
-a:6,7,8,9 -i:loop,2
-a:6 -f:s32_le,1,96000 -o:Take-8-LF.wav
-a:7 -f:s32_le,1,96000 -o:Take-8-RF.wav
-a:8 -f:s32_le,1,96000 -o:Take-8-LR.wav
-a:9 -f:s32_le,1,96000 -o:Take-8-RR.wav

# chain operators and controllers
-a:1 -ea:400.00
-a:2 -erc:1.00,2.00 -eac:0.00,1.00 -ea:400.00
-a:3 -erc:1.00,3.00 -eac:0.00,1.00 -ea:400.00
-a:4 -erc:1.00,4.00 -eac:0.00,1.00 -ea:400.00
-a:5 -eli:9094,15.00 -eli:9097,130.00,0.65,270.00,0.55,1.00
-eli:1203,8.00,12000.00,2.50 -eli:1203,3.00,80.0
-a:7 -erc:2,1
-a:8 -erc:3,1
-a:9 -erc:4,1
[heller_AT_blumlein 3-21-2004 Audio]$

> ... also note the '-eac 400' to '-ea:400' change. You'll want to apply the
> amplify to all channels.

Yes, thanks for spotting that.
>>What happens when the LADSPA plugin is 4x4 (four inputs and four
>>outputs, e.g., bf2quad).
> Then Ecasound channels are mapped one-to-one to plugin inputs and outputs.
> In other words you need to have a 4ch Ecasound chain to use bf2quad.

Got it. This has been very instructive. Thank you!!!

One more question....

If I instantiate, say a 4-in 8-out plugin, will ecasound create an
8-channel chain, mapping channels 1-4 to the inputs and 1-8 to the
outputs? (I think yes).

Aaron Heller <>
Menlo Park, CA USA

New Message Reply About this list Date view Thread view Subject view Author view Other groups

This archive was generated by hypermail 2b28 : Sun Jul 25 2004 - 03:52:22 EEST