Re: [ecasound] chain setup equivalence
Brought to you by:
kaiv
From: Kai V. <kve...@ec...> - 2010-01-17 18:42:44
|
Hi, On Sun, 6 Dec 2009, Joel Roth wrote: >> I wonder if these two lines are equivalent: >> >> -a:1,2 -i:something >> >> -a:1 -i:something -a:2 -i:something you replied to yourself already, but just you confirm that no, those are not equivalent. Every '-i' and '-o' is a separate "add input/output" actions. So the former adds one input to two chains, while the latter adds two separate inputs (that both happen to be labelled 'something') to two chains. > Attempting to answer my own question, the following > is valid: > > -a:1 -i:foo.wav > -a:2 -i:bar.wav > -a:1 -o:null > -a:2 -o:null Yes, this is valid, but note that two independent instance of 'null' are created. "-a:1,2 -o:null" is different in that only one 'null' object is created. > But not this: > > -a:1 -i:foo.wav > -a:2 -i:bar.wav > -a:1 -o:loop,1 > -a:2 -o:loop,1 This fails as 'loop' object raise an error if one tries to create multiple loops objects with the same id (same same direction). > You would need to say: > > -a:1 -i:foo.wav > -a:2 -i:bar.wav > -a:1,2 -o:loop,1 Or: -a:1 -i:foo.wav -a:2 -i:bar.wav -a:1 -o:loop,1 -a:2 -o:loop,2 Now create two 'loop' objects is ok as they have unique id's. But of course, usually you specifically want to attach the chains to the same loop object instance (and thus "-a:1,2 -o:loop,1" is what you want). ... The reason why this works like this is to make it easy to specify all routing (also the complex types) on the command-line. Well, not 100% sure about "easy", but at least with less typing. ;) One important bit is the this syntax for linking an input/output to multiple chains, while still allowing to have multiple instance of similar objects (e.g. multiple independent inputs reading from the same file). The approach is on purpose different than in gstreamer (how one connects pads of gstreamer pipelines when using gst-launch) and JACK port connections. |