musikinformatik / Steno

Concatenative little metalanguage for live coding
GNU General Public License v2.0
65 stars 7 forks source link

filter `dryIn` busIndex needs to be corrected for sequenced nesting #27

Closed LFSaw closed 7 years ago

LFSaw commented 7 years ago

I tried hard to track this one down, now I don't know how to do further...

s.boot;

t = Steno.push(1)

(
// internal snooping
b = Bus.audio(s, 1);
t.filter(\w, {|in, c| Out.ar(b, in); Amplitude.ar(in).poll; in});
b.scope;
t.quelle(\a, {|in, c| SinOsc.ar});
t.filter(\b, {|in, c| LPF.ar(in)});
)
-- abw

// turn off filter
t.set(\b, \mix, 0)

// this should do no difference but it seems that there's no signal on the dryIn bus
-- (abw)
// >> silence
LFSaw commented 7 years ago

I guess the culprit is in StenoStack:beginSerial

LFSaw commented 7 years ago

or rather the routingFunction in Steno:initSynthDefs that is recycled for '(' (and otherwise used for all closing brackets.

telephon commented 7 years ago

t.dumpStructure(postDryIn:true)

(was broken by tailBus, needed to replace -8 by -10.)

"abw"
------------  a  ------------
0
(0)
0
------------  b  ------------
0
(0)
0
------------  w  ------------
0
(0)
0
-- (abw)
------------  (  ------------
0
(0)
   1
------------  a  ------------
   1
(0)
   1
------------  b  ------------
   1
(0)
   1
------------  w  ------------
   1
(0)
   1
------------  )  ------------
   1
(0)
0
telephon commented 7 years ago

filters should do this only for parallel not for serial. For the latter, they should have dryInof the same bus as the out bus.

telephon commented 7 years ago

(correcting my previous comment)

dryIn means (and this is perhaps a little hard to grasp): the signal from outside the previous parenthesis (think "one level higher").

inputOutside = In.ar(stenoSignal.dryIn, numChannels);  // dryIn: bus outside parenthesis

I remember we had some confusions about the meanings of through and mix. I think her ewe get the result.

For a quick fix (basically ignoring the possibility of using the dry signal), I've made a branch, try it...

telephon commented 7 years ago

https://github.com/telephon/Steno/tree/topic-preliminary-fix-01

telephon commented 7 years ago

ah wrong repository, sorry. I'm too tired today to do any more...

LFSaw commented 7 years ago

we have to talk about naming.

LFSaw commented 7 years ago

so the (merged) tree https://github.com/telephon/Steno/tree/topic-preliminary-fix-01 seemingly fixes this issue but you wrote in the commit comment that "later we should reconsider the drySignal once more." What do you mean by that?

telephon commented 7 years ago

With this fix, we lose the ability to route the dry signal (actually better called OutsideIn or something) into the synth. We'll need a parameter for that and we should take a careful look at the roles of dryIn and oldSignal in the filter, because there may be some things not entirely correct now.