Physical Control of Synthesis with Max for Live
Andrew Turner on Jan 20, 2011 in Max Msp • 0 comments
The technologies that have powered electronic music have come a long way. Since the first Moog synthesizers appeared on the scene, musicians have been wanting to plug instruments together to make them interact in interesting ways. Indeed, since the early folk festival scene when Bob Dylan took to the stage and ran his electric guitar through an amplifier and a speaker cabinet, critics have had much to say about the subjective quality of the sound of these electronic instruments. I would guess that much of this subjectivity is contingent upon the mystery that surrounds the physical makeup of the instruments themselves, as well as the phenomena that govern the tonal quality of these unique and often misunderstood instruments.
Many listeners such as myself may view electronic music with a sense of intrigue. I admit that when hearing old Joy Electric or Coil tracks from the 90's, I often wondered how complex or simple the devices they were using as instruments were in reality. As it turns out, the instruments themselves span a range of very simple concepts to complex implementations of their simplistic component parts. I suppose that is why there are now more analog synthesizer manufacturers than there were in the "golden days" of analog synthesis.
On www.macProVideo.com, Richard Lainhart gives an excellent tutorial on Advanced Synthesis. This fantastic guide inspired me to study exactly what control voltage is, and how one would go about creating it. The major inhibitor to studying analog synthesis is, I believe, cost. The high level of detail that accompanies a fully-featured synthesizer drives the price of an analog modular such as the Buchla 200e to that which would exceed many an enthusiast's yearly wages (myself included).
Alternatively, with the rise of processor and memory specs on home computers, and the trend in more affordable software and hardware, many users now have access to the rich feature set of virtual analog synthesis. Check out Scott Freiman's superb tutorial on Reaktor's new physical modeling capabilities in his Native Instruments Tips N' Tricks video..
My first hardware virtual analog synthesizer was the Roland JP-8000, successor to the classic Jupiter-8 virtual analog. Many software manufacturers have cleverly figured out how to emulate control voltage in order to provide the rich modulation offered by the classic analog synthesizers of yore. Later on, MIDI was introduced and MAX offered a way to control MIDI messages in a very granular way. Recently, the Open Sound Control protocol (OSC) was pioneered by CNMAT at Berkeley. This is also a way of defining changing characteristics of a performance with electronic instruments.
But the humble control voltage is where it all started and in this tutorial, I will show you how you can create your own control voltage with parts you can buy at radio shack for under 20 USD (and up).
In Figure 1, I have 4 "AA" batteries totalling 6 volts going into a breadboard, housing a 555 timer and a few capacitors and resistors. This circuit can be found online in myriad variations. Please feel free to email me at firstname.lastname@example.org if you would like more specific information regarding this setup. The output of this circuit drives another timer, as seen on Figure 2.
Figure 1: a 555 timer driving a light-emitting diode
A second 555 timer is setup to produce an audible tone. These Integrated Circuits are so commonplace that they only cost about 25 cents up to a dollar and you can find them inside everything from airplane control towers to microwave ovens. I arranged a few resistors and capacitors according to a schematic that I found online to produce an audible tone in sync with the light emitting diode (L.E.D.) from Figure 1.
Figure 2: a 555 timer producing an audible tone
Also at "The Shack", I picked up this digital multimeter, which measures the output from the circuits. (This was expensive, but not necessary, as you can bypass this amenity by using an arduino and Max as one alternative solution for sampling a home-made circuit). The measurements in this case fluctuated from roughly 0 to 4 volts dc. In Figure 3, you can see the digital readout of the digital multimeter when I used it to measure the output of the circuit from Figure 2. This gave an on/off pulse at 1.5 second intervals. I could see and hear the pulse according to these two circuits. I would use this pulse as my control voltage source for inputting into the computer. From there, you could route this voltage (represented as data) to a virtual instrument via Max for Live, or out to a physical hardware synthesizer's control voltage input. I decided to record the control voltage in Live as automation data.
Figure 3: a digital multimeter measuring the output of the control voltage circuit
Fortunately, the multimeter came with software, which you could install only on Windows (sadly), however, it gave me the data from the multimeter, which measured the circuit as I touched the probes of the multimeter to and away from the circuit to check levels. This would not be unlike plugging an audio signal into and out of a patch panel in a typical recording studio's patchbay.
Figure 4 shows the output of the multimeter, with the timestamp of one sample per second and the measurement in millivolts AC. The multimeter has an RS-232 serial port which you can plug into a computer. Serial is kind of like USB's Great-Grand-Dad.
Figure 4: the text from the digital multimeter's software package
The software from the multimeter also provides a graphical view of the signal, Figure 5 shows a representation of the signal going from 0 to 4 volts d.c.
Figure 5: a pulse wave (kind of) going into the computer from a home-made circuit
As mentioned earlier, there are less expensive and possibly more flexible alternatives to using a multimeter and software to sample the data. Pursing this alternative, I experimented with the circuit by going from the output directly into an Arduino microcontroller and programming it to read the signal on one of the analog inputs, and used the serial tutorial in Max to visualize this pulse wave coming in. From the Max patch, you can go into Ableton Live and drive any parameter you like, thanks to Max for Live. You can see the rise and fall of the voltage (sampled at a higher resolution of 100 milliseconds) in Figure 6.
Figure 6: a Max patch's visualization via the LCD object from the home-made circuit
Going back to the multimeter's measurements, I needed a way to parse the data that I received from the home-made circuit, so I used Google Spreadsheets to parse the data into time and velocity, basically just using simple macros to trim the unecessary text such as the colons, am/pm, and units like millivolts AC, with time on the x-axis and velocity on the y-axis, using the custom Max patch as seen in Figure 7.
Figure 7: reading the home-made circuit's data from a text file in Max, derived from the multimeter's digitized wave-form
In Figures 8 and 9, you can see the data in Max, and Ableton Live, respectively. I mapped the output of Max to a live.dial object in Max for Live, and then recorded that knob's modulated movement on a track in Ableton Live as automation data. You can see that the waveforms are similar. It corresponded to me touching the multimeter's probes to the circuit, and releasing the probes. When the probes touched the home-made circuit, you can see the pulse wave's shape emerge. You could use this waveform as kind of a wacky low-frequency oscillator (LFO), to make a track's volume rise and fall, a synthesizer's timbre to dynamically fluctuate, or give the tempo some wild wow-and-flutter, all at once if you like!
Figure 8: an iTable object in Max representing the output of the home-made circuit
I hope that this demonstration illustrates that you can use inexpensive and inventive methods to create your own custom control schema to make electronic music that sounds just as expressive as your own imagination can dream up. It's quite a lot of fun to invent ways to interact with electronic music, and in the age of information, there are no shortages of sources that you can tap into to make music that is as unique as the age we live in. As an aside, consider the possibilities of querying a Google spreadsheet with an iPhone app (there is an open-source Cocoa API for this out on Google code), or using a flex sensor or motor's solenoid to sample data from a small wind-mill, or even sampling your vehicle's GPS data! The key is to be creative and have fun, using all the wonderful new technology out there to your advantage as a composer in the internet-connected age.
Please feel free to ask any questions or offer your insights in the comments below. I'd love to hear from you!