Hey hey,
I was wondering if my code could be more elegant.
I have a switch (kSwitch), which can have two states. Now I need to change it over time. At the moment I'm doing this:
kSwitch = linseg(0, iDur1, 0, 0, 1, iDur2, 1, 0, 0, iDur3 0)
Is there a better, nicer, easier way?
Best wishes and TIA,
Jeanette
rory
(Rory Walsh)
March 20, 2021, 9:21am
2
You should also used a small table with 0 and 1 in it?
Jeanette_C
(Jeanette C.)
March 20, 2021, 10:04am
3
Mar 20 2021, Rory Walsh has written:
You should also used a small table with 0 and 1 in it?
Could you perhaps elaborate a little, please?
Best wishes,
Jeanette
rory
(Rory Walsh)
March 20, 2021, 12:09pm
4
You could also use an array and just switch between the two states? Or am I missing something?
joachim
(joachim heintz)
March 20, 2021, 12:24pm
5
you mean the durations are not the same, so it is an aperiodic switch?
i have a udo which is:
opcode Switch, k, k[]
kDurs[] xin
kndx init 0
kOut init 0
if metro(1/kDurs[kndx])==1 then
kOut = (kOut==0) ? 1 : 0
kndx = (kndx+1) % lenarray(kDurs)
endif
xout kOut
endop
you can feed it with an array of the durations, e.g.
instr 1
kOut Switch fillarray(1, .5, 1, .5, 2)
printk2 kOut
endin
schedule(1,0,10)
it will read the array in a loop, but it could also stop at last value, or whatever behaviour you wish for your case.
best -
joachim
Jeanette_C
(Jeanette C.)
March 20, 2021, 12:55pm
6
Many thanks, Joachim! This is neat! That's why I love this list! <3
Mar 20 2021, joachim heintz has written: