One of the wonderful things about max for live is the fact that you can modulate any parameter in Ableton Live that is automatable. For example, using a simple max for live patch, you can designate a waveform that will control the desired parameter(s) in real-time. This comes in very handy for parameters that you could not automate so quickly by hand, or for designing sounds that are so nuanced that it would require several takes to get right by hand. This fine-grained control over the parameters of instruments is extended to the features of Live itself, such as views, sequencer editing, playback controls, and more, all within the realm of Max for Live.
Figure 1: A Max for Live patch that modulates the pan control on a mixer track
I have created a Max for Live patch that modulates the filter cutoff control of the operator synthesizer in Ableton Live. The waveform that I enlisted is the stock cosine wave generated by the Cycle Object in Max MSP. The cycle object takes the first 512 samples of a given waveform and performs modulation on the target parameter of any automatable parameter in live, including the synthesizers, samplers, and the controls of Live itself using the Live Object Model.
After being very intimidated by the enormous amount of controls that Max for Live has to offer, I took up the very small challenge of recreating one of the example patches from the documentation that modulates the pan control of Ableton Live. Much to my surprise, it worked without a hitch!
The basic concept of Max for Live is that there is a set of reference objects that represent things in Live, whether those things are functionality, controls, or the appearance of Ableton Live. As many computer programmers may be aware of, there are three basic components to a computer program, and indeed, to any design. These three things represent how something looks, what something means, and what it does. This design pattern as it is sometimes referred to is "model-view-controller" or MVC.
The three pieces that correspond to MVC in Max for Live are the Live.object, the live.observer, and the live.path objects. Additionally, there is a live.remote object that performs modulation via signals defined by the max for live patch.
In my first real max for live patch, I sent a message "get name" into the live.object object, and then sent the result to the Print Window. I wanted to know what automation ID was given to the filter cutoff knob of Operator, and I admit that at first, it was a bit of trial and error. There are well over 200 modulatable parameters in Operator alone, not to mention all of the Device Rack, plus all of the other devices in other tracks, plus all of the controls in Live itself!
Figure 3: the greyed-out filter knob is now under Max for Live's control!
As we all know, and as I am very fond of saying when waxing philosophical, big things are made of small things. So starting small, I chose one control that I wanted to modulate, and experimented by navigating the live.path until I reached a control that was close to the location of the filter cutoff knob, regarding the numbering of automation ID's in live. I was about 15 numbers off so I just added a few more to get to the filter knob, and then send a signal via the cycle object that scrolled the knob back and forth through all 512 states of the knob at a rate of about two tenths of a second, or 0.2 hertz I believe.
As an overview, Max for Live provides a scope of sorts to peek into and manipulate all of the little gears and levers that one might imagine inside of a computer program like Ableton Live. I have often wondered what lurks inside of a program like this, ever since the early days of using Cakewalk Studio 5 for Windows 95 and later Cubase for Windows XP. Later on as I progressed to Logic Studio and finally to Ableton Live, i found myself asking friends in the coffee shop, "so how do you, like, make a computer program make graphics and stuff on the screen."
Figure 4: Targeting one of many parameters to automate in live
By carefully studying the tutorials of Max MSP on and off for the past few years...I can now begin to wrap my head around what all of the objects in Max mean, and what you can do with them. But only after toying around a little with the included tutorials can I now truly see how many awesome possibilities await discovery. For example, having studied the works of Karlheinz Stockhausen and Iannis Xenakis a little, and listening to autechre for a good number of years, suddenly the fabric that makes up such complex and strange compositions becomes more familiar. You can see how incredibly inter-woven and detailed arrangements can come into fruition. Recently i have been watching Olav Basoski's excellent "Designing Sounds for Dance Music" in Ableton Live. The level of detail that Mr. Basoski pays attention to in the tutorials is astounding. After watching the sound unfold, i was inspired to dig deeper into the Operator instrument in Live and try to manipulate the controls in an animated way.
One such example of composition that uses sophisticated methodologies that yield interesting designs is serialism. Pioneered by the likes of Pierre Boulez, serialism lends itself to composition of self-similar components. I have often imagined a theoretical song that is made entirely of square waves. The tones themselves would be square waves, which in turn have their amplitude turn on and off like a pulse using square waves, which could be modulated by other square waves with frequency modulation, and the entire song has starts and stops that are controlled by one big macroscopic square wave using a volume or pitch change. It is this traversal of orders of magnitude that fascinates me so much with the level of detail that Max for Live provides for the composer.
In order to realize this goal, I will first create a much more simple song using sine waves, then move on to a sawtooth wave, which I recently read about in tutorial 4 of MSP via the phaser object, then finally a square wave song. The sine wave song that I am proposing to create will begin with this Max for Live patch that can scroll through parameters, perhaps itself being controlled by a sine wave, modulating those parameters cyclically per interval, which generate tones comprised of these sine waves in and of themselves. I know, it all sounds very...geeky, But I don't mind sharing these ideas a priori, as I don't suppose I have to worry about someone stealing my idea, because, and I say this jokingly, who in the world would want to do something like this? Probably no one would, but that is the point entirely; with Max for Live, your own unique and original ideas are more likely to rise to the surface when you create something with such a fully featured and diverse tool, as each patch cannot help but be a little bit different, having so many component parts to choose from. All this, with the flexibility of Ableton Live, makes for a very rich environment for anyone to realize their musical dreams. This makes me think about extending the composition even further with visuals and color, which is in fact possible with Jitter, included with Max MSP Jitter, but that will be a topic for a future tutorial!
Have a look at the patch for yourself, and you can find the link here... Please feel free to play around with the patch and add whatever you like! You can upload your own max for live patches here... The spirit of freedom and invention is the essence of Max for Live, and i look forward to seeing what you do with this simple control. I plan on adding many more controls that will let you select additional banks in order to modulate any number of synthesizers, samplers, or even another Max for Live instruments of your own creation!