Moog Modular V and Max/MSP geek-o-rama

I thought that Paris Hilton woman was never going to leave! It was bad enough that the whole cultural mission from Absurdistan snarfed all the canapes (I don’t think that anyone bought that flummery about food being a required prop for declaiming their national epic poem), but Ms. Hilton spent the whole party waving that huge ring in everybody’s face and hoovering up the jello chiffon. Well I never….

Alright. I’m lying and trying to make my life sound like a gay, mad whirl. Actually, J. and I spent the afternoon shopping (shoes. for her.) and passed a most agreeable evening at home watching a DVD of Nero Wolfe. The content of the following ramble is so unremittingly geeky that I simply thought maybe I should tart things up a bit. It doesn’t seem to be working.

I’ve spent a little time exploring the new version of the Moog Modular V that I mentioned recently–more specifically, working on ways that I could use it alongside my favorite graphic programming environment.You can stare at the graphs all day long, or try to figure out interesting ways to have fun with it. I appear to have opted for the latter.

I suspect that I am not alone in this. It’s probably that class of people who want to use those filters that’s behind the fact that there’s a second version of their VST plug-in that just handles effects, and is obviously used for processing external audio.

I spent some time trying to make sense of the abbreviations for each parameter (and they’re nearly always cryptic, regardless of who makes the plug-ins. Guess how I know?) and generally trying to make sense of what VST parameters I could control. One of the things I use at times like this is this simple little MSP patch that lets me load a plug-in and then populate a menu with all of its available parameters, which I can then tweak. Here’s a copy of the patch in text format:

—-
max v2;
#N vpatcher 52 46 611 293;
#P origin -38 104;
#P window setfont “Sans Serif” 9.;
#P comment 34 119 196 196617 grab a knob and twist to see messages and parameters displayed here;
#P user ubumenu 34 172 100 196617 0 0 1 0;
#X prefix_set 0 0 <none> 0;
#P hidden newex 99 126 27 196617 – 1;
#P hidden newex 99 106 52 196617 unpack i f;
#P hidden newex 34 126 61 196617 prepend set;
#P user textedit 34 148 246 167 0 3 9 41 0.561785;
#P comment 413 94 124 196617 the parameter values must be in the floating point range of 0. to 1.;
#P comment 274 95 124 196617 you can choose which parameter to control by choosing it from the ubumenu;
#P button 19 -34 15 0;
#P button 19 -54 15 0;
#P button 19 -74 15 0;
#P comment 34 -33 289 196617 if you want to look at the plug-in’s front panel , click here;
#P comment 34 -53 286 196617 click here to fill that ubumenu with plug-in parameter names;
#P hidden message 19 -12 29 196617 open;
#P newex 275 168 27 196617 + 1;
#P flonum 413 147 32 9 0. 1. 35 3 0 0 0 221 221 221 222 222 222 0 0 0;
#P newex 275 190 45 196617 pak 0 0.;
#P hidden newex 274 58 75 196617 prepend append;
#P user ubumenu 274 147 100 196617 0 0 1 0;
#X prefix_set 0 0 <none> 0;
#P hidden message 351 78 32 196617 clear;
#P hidden button 352 59 15 0;
#P hidden message 101 -12 26 196617 plug;
#P hidden message 52 -12 42 196617 params;
#N vst~ loaduniqueid 0;
#P newobj 60 71 79 196617 vst~;
#P comment 34 -73 289 196617 click here to choose a plug-in;
#P hidden connect 16 0 11 0;
#P hidden fasten 1 3 20 0 104 95 39 95;
#P hidden connect 20 0 19 0;
#P hidden connect 7 0 23 0;
#P hidden connect 5 0 23 0;
#P hidden connect 22 0 23 0;
#P hidden connect 15 0 2 0;
#P hidden connect 2 0 1 0;
#P hidden connect 3 0 1 0;
#P hidden connect 11 0 1 0;
#P fasten 8 0 1 0 280 253 27 253 27 59 65 59;
#P hidden connect 1 3 21 0;
#P hidden connect 21 0 22 0;
#P hidden connect 14 0 3 0;
#P hidden fasten 1 2 7 0 91 95 250 95 250 51 279 51;
#P hidden connect 7 0 6 0;
#P hidden connect 5 0 6 0;
#P connect 6 0 10 0;
#P connect 10 0 8 0;
#P hidden connect 9 0 8 1;
#P hidden connect 4 0 5 0;
#P hidden fasten 2 0 4 0 57 15 357 15;
#P pop;

—-

You’ll notice a second window that allows you to just grab a fader or dial and see what messages correspond to that action (and a handy menu that’s populated when you load the plug-in that will actually show you the parameter, too). If you’re so inclined, you can always add some objects and connect the audio, etc. This was really all I needed.

So after quite a bit of twiddling and listening and typing, I think I’ve got a good first draft of what the VST version of the Moog Modular V rack looks like if you’re running a Max patch and talking to by sending parameter number – value messages to a vst~ object that contains the Moog (of course, the value is always in the range 0-1.0 as a floating point number). There are a few things I’ve got questions about (and this is a work in progress), but you can upload a PDF file that contains the table I produced after all this study here.

Here are a couple of general comments that may not be clear for the first-time vst~ object message-sending cryptoanalogista:

  • One of the cool features of the Moog Modular V is that the hex-nut modulation input jacks also work as knobs that let you set the amount of modulation from any source. Happily, every single hex-nut jack/knob in the rack is parameterized.
  • Not everything is controllable. If you’re accustomed to pluggo’s tendency to have every single switch and toggle be a controllable VST parameter, you’ll find that’s not the case. Things like rotary octave switches or filter select switches aren’t parameterized. There are also some cases in which sequencer settings aren’t addressable.
  • I’m still trying to figure this one out (the Arturia customer support people seem pretty cool), but it would appear that using the Driver oscillators (i.e. the “master” oscillators for each group of three”) actually sends the same message to all three parameters of each oscillator rather than being a single parameter source or control… at least I think so. This means that you can address each of the three oscillators individually. At least it looks that way at this point.

Geek Note 1: the parameters are numbered differently between the “instrument” and the “effect” versions of the Moog Modular V. While the abbreviations are the same, their ordering is not.

Now that I’ve got a better sense of the VST implementation of the plug-in, I can take my Max/MSP patches that generate algorithmic outputs, scale the outputs to the 0-1.0 range, append a parameter number, ship `em off to a vst~ plug-in hosting a Moog Modular V synth, and let `er rip.

Geek Note 2: You can find a nice set of “starter” building blocks for constructing sequencer and processing abstractions/thingies Darwin Grosse (he of Creativesynth fame) made here. Just look for the QuickStart stuff.

Moog Modular V and Max/MSP geek-o-rama

No replies yet.

You must be logged in to reply to this topic.