Modular effects chains & instruments
I’m trying to create a very organic soundscape. It requires that during run time new instruments (sine waves or noise or sound files) can be added. Also, I’d like to be able to add dynamic effects to these "instruments". Rather than creating five or so preset effects, I’d like to be able to add a blank (initialized object class) effect to an instrument and allow it to change over time.
For example, you might have a sine wave, and then an echo effect is added. This echo effect should be able to be modified without effecting the other echo effects applied to other instruments. In effect, I’d like to create a DAW effects chain system.
What are some techniques you all have come up with or can think of for creating reusable, dynamic & scalable object in Max?
I’m on the brink of sharing something that may interest you:
It’s a modular patching system that uses scripting to load bpatchers which feed to/from a mixing matrix. The audio parts of the bpatchers are loaded into Alex Harker’s dynamicdsp~ object, so they can be loaded/unloaded on the fly without breaking the signal chain.
There are also separate modulation and (Midi) input bpatchers, a transport based clocking system and an external mixer for getting physical inputs and/or other patches into the system.
The audio modules are all stereo-in, stereo-out and they can be anything from simple synthesis or sample playback modules to effects processors, sequencers etc.
I’ve built around 40 modules for it so far, and there are templates for building the modules, which I hope will make it a fairly simple task to develop your own.
I’m submitting it for my MSc. project, so I don’t want to release it before it’s properly ready, but I’m hoping that should be quite soon.
In the meantime, here are some Youtube demos:
I want this NOW!!!!!
Thomas, it is the best tutorial for good patching techniques i have come across in ages. your students are very lucky. the entire "tlB’ section of the site could be simply listed on the ‘Tools’ pages over here. congrats on LSD and LVD.
> the entire "tlB’ section of the site could be simply listed on the ‘Tools’ pages over here.
Ok, now you can find it both in the "Projects" section (LSD-LVD-tLb) and under "Tools".
N.B. some part does not really work under Max 6, I try to find workarounds.
I find the usage of MVC pattern in Max quite ‘revolutionary’ being in contrast to the Max paradigm based on tight integration of processing and user interface. Are there any notable drawbacks regarding efficiency or timing?
right, pattrstorage and pattr are bottlenecks here. But most of the time you are passing values from user interface objects around which are quite seldom updated. The MSP signal flow is not touched. Critical is the LFO usage since the modulation values are finally send via pattrstorage to the destination pattrs, but generally this is still usable, even if events are dropped by qlim.
I attach a LSD demo session in which a filter frequency is controlled in different ways, via Modulation and the Sequencer plugin.
On the other hand using the MVC pattern makes patching so much easier and better debuggable that I accept any possible speed drawbacks. At least for theater work the timing is more than sufficient. And consider the simple re-use of models either in Max or Max for Live, just with different user interfaces.