this one has got me stumped.
i have 4 effects: distortion, ringmod, filter and pitch shift,
lets call them D R F and P
each can be turned on and off by a toggle. that's easy. if i run them in serial, i can just choose to bypass one effect by using the toggle.
however, what i want, is run the signal through the effects in the order that i press the toggles.
so, for example, i turn on D, then P, then R...then i want the signal to go through D, then P, then R...in that order.
but then, if i turn off D, and then turn on F, i want the signal to go through P, then R, then F
hope that's not too confusing.
so anyway, basically i want to be able to put my signal through effects in the order that they are turned on.
i'm sure that there must be a simple way to make this abstraction, but i have been sitting here for ages, and cannot figure it out.
anyone got any ideas?
-
Effects chain order
-
ok, so i'm making progress. can't believe it can be so tricky though.
now all i need is this:
input: 10, 10000000, 1000, 1
output: 2, 4 ,3, 1
(because 1 is the smallest, 10 is next, 1000 is next, and 10000000 is next) -
i think have understand what you want to do, for the dynamic routing i have a solution, with r~ and s~ wich you could command with [set ...< message.
It seems really tricky to interface with toggling
It needs some classical arrays function like pop push.
i don't understand this :
input: 10, 10000000, 1000, 1
output: 2, 4 ,3, 1 -
for the dynamic routing i have a solution, with r~ and s~ wich you could command with [set ...< message.
mm....do you want to post that then? -
When I wanted dynamic routing (of messages, not signals) in a patch, I had a column of symbol boxes containing the names of the effects, with up/down bangs next to them - if you clicked the up bang it would swap with the one above and if you clicked the down bang it would swap with the one below. Then I had a separate set of enable/disable toggles for each effect. I found that an intuitive interface, because I could see what was happening just by looking at it - no having to remember which one was turned on first or whatever.
Regarding neko's idea, you could have a chain of lots of these (with slot1 => slot2, slot3, etc):
|
[s~ slot1-bypass]
[r~ slot1-bypass]
|
and your fx would look like this:
[r~ fx1-r]
|
do stuff
|
[s~ fx1-s]
Then when you want to plug in fx1 in slot1:
send "set fx1-r" to the [s~ slot1-bypass]
send "set fx1-s" to the [r~ slot1-bypass]
To be more clever, link the send~ of one fx~ to the receive~ of another. Look up the theory of doubly-linked lists in computer science, that should tell you how to do things like remove and insert from arbitary places in the chain. -
here is what i meant:
#N canvas 287 265 540 442 12;
#X obj 175 236 r~;
#X obj 14 387 dac~;
#X obj 272 236 r~;
#X obj 376 236 r~;
#X obj 174 354 s~ fx1;
#X obj 273 354 s~ fx2;
#X obj 375 354 s~ fx3;
#X obj 24 338 r~;
#X obj 18 21 osc~ 100;
#X obj 17 60 s~ input;
#X msg 175 108 set input;
#X msg 188 159 set fx2;
#X msg 197 185 set fx3;
#X msg 24 226 set input;
#X msg 34 252 set fx1;
#X msg 44 277 set fx2;
#X msg 53 303 set fx3;
#X msg 272 108 set input;
#X msg 284 134 set fx1;
#X msg 293 185 set fx3;
#X msg 376 108 set input;
#X msg 388 134 set fx1;
#X msg 398 159 set fx2;
#X connect 0 0 4 0;
#X connect 2 0 5 0;
#X connect 3 0 6 0;
#X connect 7 0 1 0;
#X connect 7 0 1 1;
#X connect 8 0 9 0;
#X connect 10 0 0 0;
#X connect 11 0 0 0;
#X connect 12 0 0 0;
#X connect 13 0 7 0;
#X connect 14 0 7 0;
#X connect 15 0 7 0;
#X connect 16 0 7 0;
#X connect 17 0 2 0;
#X connect 18 0 2 0;
#X connect 19 0 2 0;
#X connect 20 0 3 0;
#X connect 21 0 3 0;
#X connect 22 0 3 0; -
thanks neko and claudius....i'm gonna finally get this tomorrow, i know it.
"Look up the theory of doubly-linked lists in computer science" .... and here was me thinking that dynamic routing would be easy! ha ha ha! -
I had the same problem a while ago, and I tried to resolve it with r~ even.
With a little difference, my effects are dynamically created too.
That [r~] object works correctly (on my system) only in a dyn~ patch, otherwise it requieres an edition to pass the audio signal.
patco -
@ Hardoff - know this is a dusty old topic but did you ever solve the dynamic toggling (effects chain run in order of toggling) ? i've just run in to exactly the same problem and i cant see how to achieve it with s~
thanks, stu
-
what a blast from the past. this must be one of the first forum threads.
i don't remember what i did, or even if i ever figured it out. and my patches from that era are mostly long gone on broken hard drives.
but i think there are enough hints in this thread to make a start. sorry i can't be of more help.
-
i did something a bit different in a fx rack i once built in pd. i used a [entry] textfield object where you can type the desired order of the fx, e.g.: "wah-wah delay phaser" or something. the routing works with [catch~] / [throw~] combinations and [set[ messages. you may want to have a look at it:
http://www.toxonic.de/#guitar_rack
hope this helps... -
nice one Toxonic! The [entry] routing method is great and could work for me i think, although i wonder if it's possible to remove certain entries from the box on command, as in the way the (append) message adds new ones? That would make this method perfect for my needs, although its not mentioned in the [entry] help file. i suppose removing things has got nothing to do with [entering] things
many thanks for your help
-
i'm not really sure, if i got what you mean - but whenever you hit the "send" button, the actual order will be set. so you can remove or add or insert new entries whenever you want.
-
sure, although i was thinking of using this in a live setting, wherein i've got on/off toggles from reactivision fiducials as my input. i think ill go probably go with catch and throws with set messages if i cant suss this [entry] problem. many thanks anyway, really nice patch
cheers, stu