analogue synthesis: doepfer like modules
hi, i would like to build a replica of this modular system in max..is there someone who already did something like this i could start from..i don't have any experience at all with these analogue beauties..i know i can mess around with waveforms, lfo and stuff (and i already do plenty of modular mess) but i don't know how the real modules work
mic
one way would be to go to doepfer.de and read the PDF manuals on their modular-synthesizer modules of the A-100. Everything is available online for free.
I am toying with a similar idea, and this is where I started. maybe once you get started a bit deeper we can exchange some modules...
start with the Oscillator A 110 and try to build something that has a few of the features. You will probably need the tutorials and the help files a lot.
But it's a great way to learn a lot about synthesis. I think it's a monstrous task to actually build a modular synth in MaxMSP, but once you start you learn so much, that it will certainly be worth it.
Kai
This sounds veery interesting.
I would love to be able to follow this project, and hopefully participate
@k9 yes i just downloaded the A100_info pdf..i'll build a simple vco oscillator and post it here so we can discuss some basic modularity-issues
I think saving the patches as individual files, then using bpatchers to patch everything together gives you a nice feeling of virtual modularity.
Kai
k9 wrote on Wed, 15 April 2009 07:57I think saving the patches as individual files, then using bpatchers to patch everything together gives you a nice feeling of virtual modularity.
Kai
indeed, I think that's one of the original purposes for bpatcher, to have everything as contained units with some room for uniqueness (using arguments), but able to communicate with the larger picture as well. Lots you can do with them for a project like this, like with [pattrstorage @greedy 1].
Having a master control for each bank of modules is very handy for setting things while you create, especially having a "default" button which gets everything to a state that you know should sound like X, so you can keep track of what's happening as things grow and get more complex. You could have a [receive reset] in each bpatch which sets everything to the original defaults, like freq = 0, level = 0, waveform = sine... whatever makes sense. Also I usually have a "bank bpatcher" which itself has the (8 or however many) bpatch modules in it, so you can utilize scroll bars in just that part of the main patch. That way you can have multiple independent parts of the main UI which go well off the screen, but the main patch doesn't need to scroll all over the place.
using numbers into "patching_rect $1 $2 $3 $4" for your bpatchers, then saving the groups as presets, would let you save different spatial layouts of your bpatchers that you could switch between. you can even work a little magic with [mousestate] to make elements draggable, though popup windows are easier to set up for this. look at [thispatcher] to see about window messages, like floating on or off, which can be helpful. There's also the All Windows Active toggle which changes the feel of working with multiple windows.
You can use matrix~ to route everything around and change where things go on the fly, and preset these master routing settings. So one of a bank of (say) 8 main oscillators can go to any of 8 LFO's, or ring modulators, or other effects, all in Runtime and without changing any cords. And of course there's poly~ which definitely should be investigated for multiple synth generation that has a modular feel, like with different #s of things active at different times.
With all the great tools provided in Max I don't think it's a monstrous task
...and it's true, one will learn a lot not just about synthesis, but patching and UI concerns too.
best of luck!
rebuilding the analog original would mean to implement a lot of artificial limits into the maxmsp enviroment.
in maxmsp you have the option to plug 5 cables to 1 target, or the other way round, or both.
this means max gives you far more possibilties than a doepfer or buchla will ever do. use them!
I replicated a bunch of the doepfer modules as best I could in max about a year ago, and it sounds amazing. Ill make it available someday. I plan to make it into a whole virtual max doepfer type bpatcher abstraction collection.
I should also mention that a huuuuge part of my achieving of analogueish sound qualty was to use tanh~ after every amped CV and audio signal, this made it so when you turned them up passed their top value you got more of an analogue type warming response then flat clipping which makes things very digital. that was the single most important thing I learned.
Axiom-Crux wrote on Wed, 15 April 2009 18:23I should also mention that a huuuuge part of my achieving of analogueish sound qualty was to use tanh~ after every amped CV and audio signal, this made it so when you turned them up passed their top value you got more of an analogue type warming response then flat clipping which makes things very digital. that was the single most important thing I learned.
hei thanks for this tip..i hope you could post a basic osc with al the tricks that make it sounds good that could be a solid start to build upon
i know this can seem a simple task (and i've been maxin since a while so i used extensively bpatches ,changable arguments, matrix~ routing and etc) but it can be time consuming start from scratch without knowing if it's worth or not
here it is a super rough basic oscillator..a good starting point?...how would you complete this..
still max 4.6 here
Michele Verita wrote on Wed, 15 April 2009 21:06here it is a super rough basic oscillator..a good starting point?...how would you complete this..
still max 4.6 here
looks good.
next thing to do:
- make abstractions out of the 4 oscs.
- polyfy the oscs.
- polyfy the whole signal chain, and offer an ON OFF button in the interface.
- ftom-+-mtof? you can do better than that.
i would (i actually did) shift the tanh stuff to below -1. and +1 only - so that up to 0 dB there is no effect. all modules would (mine do) allow up to +12 dB (-2. - 2.) of maximum gain then in order to get a saturation effect.
-110
dont polyify anything, analogue modular is built on the idea of the exact opposite... unless its just for on off dsp signal conservation.
Also you might want to figure out how tanh~ works so you can use it to achieve the desired effect, as you have it here its not really doing anything. It only warms signals amplified above -1 to 1 going into it.
Quote: unless its just for on off dsp signal conservation.
nicholas: of course, only for on/off.
what can be nice though is to make a multivoice version of a big patch with many modules in it. but thats step # 2 in the course. we keep it in mind until next week.
Quote:
Also you might want to figure out how tanh~ works so you can use it to achieve the desired effect
exactly.
see picture for one possible version.
i usually mix its output with the original to get different colors.
yeah sure i forgot to put a gain control +0/+12 db to amplify signal before tanh..added now..i'll post some other fancy modules soon (adsr, vc adsr, lfos, filters..)..many thanks to all you guys
Hi all,
I think it's a very interesting idea, rebuilding a modular system. I'm the proud owner of an ever expanding Eurorack based modular system, and i adore the sound of it. I'm really curious to see how this is going to work.
For even more complex modules, you could try to recreate the Cwejman modules (http://www.cwejman.net/cwejman.net/modular.htm)
One of the most interesting things with a hardware analogue system is you can use the controller signals as audio and vice versa, without the risk of having a system overflow... So far no resume button by doepfer or another brand.
Anyway, good luck with the coding, i'm looking forward to see your idea grow.
Best,
yves
hey guys this is where i'm now..
a nice feature i put: first instantiate modules in bpatchers then open matrix patcher and dinamically create the audio router and the connected matrixctrl with labels!
incidently, in on of my first max analogue modular patches, I found out you can use knobs w float output for matrixctrl, and thus you can use the matrix for all of your cv and volume scaling, ill find the patch and post if it still works.
Sweet, keep going!
best
yves
oh no, a modular system without patching cords!
i´ve always hated large send/recieve systems with dynamic names because sooner or later you loose overview.
dont you run into trouble when you want to make 30 instances of module X?
ahah yes i agree with you..patchchords are so analogue style!..but in relative small systems controlling signal routing with matrixctrl is great!..you can easily experiment with all the available routing possibilities
I think matrixctrl is a nice object to have in a module (to mix diffferent waveforms, for example?), or to have in a mixer module.
relying entirely on matrix will give you something like a Synthi AKS I think... modular, with a matrix field. a good way to patch up a system of a certain number of modules, but maybe not the best system to be flexibly expanded.
Kai
mmm well in a small system (that is not necessarly dynamic..at the moment i'm not interested in having a menu from which i choose which module to load dynamically) i think there is not a better solution than matrixctrl + matrix to route audio signals and control signals quickly
how would you approach this issue in bigger and dynamic systems if you want to route everything to anything?
Roman Thilenius wrote on Tue, 21 April 2009 05:19
oh no, a modular system without patching cords!
i´ve always hated large send/recieve systems with dynamic names because sooner or later you loose overview.
dont you run into trouble when you want to make 30 instances of module X?
loading 30 instances of a module is an extreme but interesting situation i think would be a hell even in reason if you want to try differnt routings between them!!
Michele Verit� wrote on Tue, 21 April 2009 08:42ahah yes i agree with you..patchchords are so analogue style!..but in relative small systems controlling signal routing with matrixctrl is great!..you can easily experiment with all the available routing possibilities
the matrix way of course allows easy saving of connections, which is a different approach with a different advantage. (as i still use OS9 50% of the time i stay away from pattr stuff... )
in best case we had both .. a matrix with a patching GUI!
p.s. about 30 instances: you need a system for creating dynamic [send] names, for example by using the "#0_" method.
i have such abstractions for data, but never tried it with send~.
Here's a [matrix~] like patchbay that you can load into a [bpatcher] and make connections with your mouse when not in edit mode. You might find it useful, even though it's not particularly tidy. I might revisit it and have another look, could be worth implementing it in javascript, perhaps.
lh
ouch..sounds very interesting..unfortunately still max 4.6 here..
I've attached the file. Try using the supercollider conversion tool available from the link below. No guarantees it will work flawlessly though.
lh
I recently released a collection of Max/MSP modules based on Eurorack and Doepfer modules.
Download here:
http://mhetrick.github.com/euromax.html
@thelizard Nice way to start, huh.