I don't know of any good gen~repository, but nearly everytime i need something concrete i find a lot of papers discribing the math, and then the implementation is not very hard anymore. I guess that doesn't help a lot..
I took a class on delay-based signal processing using Gen last fall and the way we got our feet in the door was to take a bunch of block diagrams of a range of filters and effects and just start recreating them in Gen.
Here's a link to the PDF of block diagrams that we used for the course.
@dtr: Z^-1 (z-1 in my notes above) is a single sample delay. Use the history operator.
@Andreas: The class was amazing! I ended my graduate coursework on a (physically modeled) high note for sure. The way that Gen allows you to just piece these kinds of diagrams together still floors me.
University of North Texas
Composition faculty Jon Christopher Nelson was the instructor.
"Delay Based Signal Processing"
It was a one-off graduate seminar for the "Topics in Electroacoustic Music" course offered here once a year. We focused mainly on using Gen with a little Csound thrown in. We went from building simple filters to physical modeling.
I don't have the links archived on my new machine, unfortunately.
The ones I found most interesting were the threads on anti-aliasing and envelopes. Envelopes are a hard thing to figure out, especially with extra features.
I also found those discussions helpful as a way of finding out the pros and cons of particular methods. I'd often start at MusicDSP then move over to KVR to see what had happened to that idea. Sorry, this is all really vague.
Peter: I'm looking to start building some "analogue delay emulation" things, so it's saturation, compression, delays and filters that are on my radar (preferably simpler than the big ladder examples ;) ), as well as weird osc/envelope things.
Basically, I've found out that I can actually learn gen~ by taking things apart. It really works for me.
For saturation: the distortion algorithms patch posted in the projects section a year or two ago.
For delays: are you thinking bucket brigade or tape? (I'm guessing tape) I have a non-pitchchanging algorithm if you're interested. You might also consider using an allpass delay to progressively smear the phase.
For filters: you probably just need something pretty simple, like a one pole lowpass, if it's inside the feedback loop.
For compression: rebuild the compressor example in gen~...
(I'd also add that a lot of these things can be done just in MSP, but if you want some weirder behavior, then gen~ obliges...)
Also, something I've found really helpful in aggressive feedback loops that works way better than clipping:
It's a tanh approximation for x close to 0, but it asymptotically approaches 0 (instead of ±1) as x approaches infinity, which makes it a fantastic feedback killer/compressor.
Glad to be helpful; many others have done the same for me. Here's a fun one with the faux-tanh shaper:
If you turn the output gain up slowly, you can use it with a live mic with no problems for controlled feedback. I use this with my classes to demonstrate how powerful feedback can be when you can properly control it. (it's also a quick demo of what Max can do that normal effects don't)
3) extra notes from max/msp forum user stringtapper (source of document):
April 21, 2013 | 12:03 am
Here’s a little key I had in my notes for the class:
x(n) = input
y(n) = output
(n) = "sample of the moment"
(n-1) = delay of one sample
z-1 = single sample delay (history operator)
z-n = some variable sample delay (delay operator)
z-m = "moving" delay (delay operator w/modulation of delay time)
triangle = multiply (*~ or * in Gen)
small ‘-‘ sign = invert a value (subtract instead of add)
circle with "+" = addition operator
black dot = branching point
note: Z^-1 (z-1 in my notes above) is a single sample delay. Use the history
screenshots ok, but please use code to Submit final ideas and work in progress.
all videos welcome, TY, Vimeo, whatever.
this is not a one on one, collaborations are encouraged. As are discussions when people get stuck. This is the point, to encourage discussion and learning. Anyone want to do a tutorial, feel welcome, especially from established YTbrrs Max etc.
got an idea, upload your code, see what feedback you get, perhaps join a crew!
there are no winners except those who complete the challenge successfully in one way or another. A post will be made for these discussions. Bon chance meine leibling patchers.
I had to remove my Mac build of Godel from my server, as it was >64MB. Has Cycling74 done anything to improve the size of standalones yet? I have been waiting since Max 6, if it hasnt maybe I should file a request.
Where the triangles are *~ in gen so all the a's are just multiplication coefficients, what does the "-" on the b coefficients imply? That they should be multiplying below 0 (i.e. division)? or does the "-" mean subtract? If "-" means subtract, why would it be on a triangle (which is multiplication)?
Triangle = multiply (I'm guessing this is historically related to the use of op-amps). The negative sign indicates inversion.
The coefficients don't necessarily have to be less than one--that depends on the design of the filter. In a onepole, yes, but not in some biquad implementations. (the so-called "triangle of stability") For example in the highpass coefficients on the page below, there are some coefficients that could individually exceed +/-1.