analogue synthesis: doepfer like modules

Michele Verità's icon

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

k9's icon

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

marlon brando's icon

This sounds veery interesting.

I would love to be able to follow this project, and hopefully participate

Michele Verità's icon

@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

k9's icon

I think saving the patches as individual files, then using bpatchers to patch everything together gives you a nice feeling of virtual modularity.

Kai

seejayjames's icon

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!

Roman Thilenius's icon

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!

Axiom-Crux's icon

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.

Axiom-Crux's icon

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.

Michele Verità's icon

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

Michele Verità's icon

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

Michele Verità's icon

here it is a super rough basic oscillator..a good starting point?...how would you complete this..
still max 4.6 here

Roman Thilenius's icon

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

Axiom-Crux's icon

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.

Roman Thilenius's icon

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.

Michele Verità's icon

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

Eav's icon

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

Michele Verità's icon

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!

Axiom-Crux's icon

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.

Eav's icon

Sweet, keep going!

best

yves

Roman Thilenius's icon

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?

Michele Verità's icon

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

k9's icon

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

Michele Verità's icon

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?

Michele Verità's icon

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!!

Roman Thilenius's icon

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~.

Luke Hall's icon

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

Michele Verità's icon

ouch..sounds very interesting..unfortunately still max 4.6 here..

Luke Hall's icon

I've attached the file. Try using the supercollider conversion tool available from the link below. No guarantees it will work flawlessly though.

lh

thelizard's icon

I recently released a collection of Max/MSP modules based on Eurorack and Doepfer modules.

ADHD101's icon

@thelizard Nice way to start, huh.