[Sharing/Emulation] "Analog" Shift Register

cudnylon's icon

I was reading about shift register modules for analog synths and put together this msp version of the concept. It's a canon/s&h/delay with 4 outputs. On each trigger the first output samples the input. The other outputs hold past samples, moving down one output on each trigger. For a better explanation this is the module i based my patch on. http://www.ear-group.net/model_23.html

*NOTE*
I'm not 100% sure this is the best way to implement this concept. The delay~s prevent all the sah~ from outputting the same values but there may be a more computationally effective method (without leaving signal domain). This is not a CPU eater by any means but for those who can't spare the processing I figure it's worth mentioning since this is meant to be incorporated into larger patches.

Max Patch
Copy patch and select New From Clipboard in Max.

Noob4Life's icon

this is really great!
i might just swap out '

Max Patch
Copy patch and select New From Clipboard in Max.

cudnylon's icon

thanks for the tip!

Roman Thilenius's icon

why [delay~] ? why not [-~ 0.25] ?

Chris Muir's icon

I didn't look at your patch, but the object [bucket] pretty much just does this.

cudnylon's icon

[delay~] gives the previous output a little extra time so that they don't all output the same values. i'm not sure where the [-~ 0.25] would go. the trigger has to happen at the same time and math on the outputs would defeat the purpose.

the idea is
____ = out1 out2 out3 out4
trig1 = 0.37 0.00 0.00 0.00
trig2 = 0.91 0.37 0.00 0.00
trig3 = 0.54 0.91 0.37 0.00
trig4 = 0.18 0.54 0.91 0.37
trig5 = 0.66 0.18 0.54 0.91
etc.

it looks like [bucket] is the scheduler version of this. my patch is a signal rate version. i'm using it as an abstraction in a "digital modular" i'm building.

Wetterberg's icon

might be fun to try a version that simply converts from sig to float and then back again?

Roman Thilenius's icon

ah, i did not have max yesterday and could not figure what it does using the runtime.

since today i have my maxmsp computer back on the net.^^

well if you would measure the difference between the first and the second value of
out1, you could create the very next output of output2 by adding this difference value,
i.e. recalculate the values instead of storing them.

i might post a patch later.

Wetterberg's icon

BTW I think the Plan B ASR is a straight up copy of the Serge ASR... Peter G had a *cough* tendency *cough* to copy ;)

here's my take on it, using [bucket] as you mention above. I guess you do lose a tiny bit of temporal resolution in the process, but for the normal use (arabesques and such) then scheduler rate is just dandy.

I just did this to add it to my snippets collection really.

seems like you're not on v5, so here's the patch in png form:
http://i.imgur.com/O2kL9.png

Max Patch
Copy patch and select New From Clipboard in Max.