Sam and I had the pleasure of meeting Masato Tsutsui in Japan in December and discussing his interesting Max-based projects.
Here’s one for the holidays:
It’s getting frosty in San Francisco these past couple of weeks, but here at sea level, we rarely get to see much snow. The California Academy of Sciences has a new exhibit that let’s us get a little taste of snow in Golden Gate Park. The other day, while reading the Chronicle, Lilli spotted a story about Toshiro Chiang’s computer-controlled artificial snow machines at California Academy of Sciences. Having originally met Tosh at the first Expo ’74, and having seen some of his Max-driven exhibition controls before, I got in touch with him to see what was behind it all. Max of course!
Here are the details we got from him:
It’s max/msp & some unix, all running on a Mac mini. The original program was written 4 years ago. Back then, we needed to tie together a showcontroller and DMX lightboard asap. This economical solution enabled us to quickly and cleanly solve every problem, with tools that we already had on site.
The patch supports DMX cues and low-voltage digital i/o. There are diagnostic indicators for system health as well as feedback. The computer itself lives in a 1RU rackspace, alongside a 1RU KVM, an ipad-driven mixingboard and some Crown amplifiers. There is even a large industrial push-button, which when enabled with an inline switch-guarded toggle (imagine that red hooded-toggle for fighter pilots enabling weapons in the movies), allows people to have it snow on demand. This feature is no longer used, but can still be supported.
There was originally a stage as well, with some par cam lights and Martin MiniMAC controllable spotlights (with full color + gobos + and pan/tilt/zoom motion!!). This is why the patch needed to support live DMX mixing and cues. There were daytime cues, night cues, special event cues, etc. This feature is also no longer utilized.
Lastly, the computer is the same one which drove our former Piazza Dancing Fountain, in which it tied a schedule to midi triggers, synchronizing the solenoid valves of 16 laminar jets and 6 leap jets to things like Electrolane, Peggy Lee & Ratatat. When we want to switch cpu configurations between fountain and snow, we just open a different patch!
During the month of November, I took a little journey into a new programming area: creating content specifically for the Ableton Push control device. This hardware has a unique place within the Max community due to its tight integration with Ableton Live (and therefore Max for Live), but it is also a powerful control surface in its own right.
With help from Mark Egloff of Ableton, I started with a goal: to create a device that would be a usable performance tool, but would “take over” the button grid on the Push to make it easy to manipulate in real time. I chose an 8-band EQ-like device that I called the Frequency Mixer, and created the code necessary to run it solely from the Push. See the result (along with some video).
Next up was to work directly with the Push in Max – completely outside the Live environment. Based on some information that Mark (Egloff) provided, I was able to determine the values needed to update the Push button matrix RGB values, and created an interesting, if rather useless, 8×8 image display. I can imagine using this to modify a program based on the display values, but have left this as an exercise for the willing Push student!
Finally, based on feedback received on YouTube, I modified the first (Frequency Mixer) project to act on other tracks in a Live set. This way, you could either mix multiple channels, or (by inverting the values) crossfade multiple tracks from a single instance of the Frequency Mixer. This is based on the use of send and receive objects that share a specific name, which is propagated through the entire Live set. See the result — a fun extension to the original device.
While I create some specific devices and projects, the implication should be much greater – that the Push, like many other controller devices, is an interesting playground for the creative coder. Hopefully you will find tips and techniques that can help you get more extensive use out of your Push!
“One of my early desires as a musician was to sculpt and organize directly the sound material, so as to extend compositional control to the sonic level – to compose the sound itself, instead of merely composing with sounds.”
A strange loop arises when, by moving only upwards or downwards, one finds oneself back where one started. The concept of a strange loop was proposed and extensively discussed by Douglas Hofstadter in Gödel, Escher, Bach. In it, he describes a beautifully-structured framework for exploring the question of how a sense of self arises out of something that has no self; to go from a state of meaninglessness to something that can refer to itself.
One kind of audible strange loop is called a Shepard tone. This illusion was invented by the psychologist Roger Shepard in 1964. He used a computer to create a series of tones that seems to rise forever. Jean-Claude Risset created a version of the scale where the tones glide continuously. The tone appears to rise (or descend) continuously in pitch, yet return to its starting note.
These pieces were the result of several years of collaboration with Max Matthews at Bell Labs, realized with Music V. Music V was an extension of Music III, (including Music III’s innovative concept of generating units which pre-dated voltage control as a formal protocol), rewritten in Fortran, with added support for analog to digital conversion so one could manipulate digital audio directly. Music V was also distributed free of charge, at the request of Max Matthews, to stimulate research and the production of computer music. During his time at Bell Labs, Risset also compiled a catalog of computer synthesized sounds, including FM and additive examples, for a synthesis course he gave in 1969 with John Chowning at Stanford University.
I set about executing a Risset glissando in Max without referencing existing implementations. I deduced that one would need a master phasor, subdivided in 90 degree phase offsets to act as the control system for the effect. Each subdivided output controls the pitch of an oscillator that moves four octaves, thus the distance between the quadratic outputs is always an octave.
The second part of effect is controlling the output level of each oscillator. The most logical way to do this is to use the existing phase-offset phasor output. The output of half of a cosine function from 270 to 90 degrees produces the correct shape for our purposes. So, if we reduce the magnitude of our phasor output by half, and shift the phase by three quarters, we’ve achieved our goal. Now when the ramp controlling the output pitch is at its most extreme (at either edge), the oscillator output is inaudible.
My first implementation of the Risset glissando resulted in a new Beap oscillator type. These oscillators are designed to accept a 1v/oct input, so, as long as all oscillators are connected to the same master phasor output, they can be stacked and played like normal oscillators. In other words, one could think about musical structures using the normal rules of harmony.
In addition, I produced a Quadrature Risset Generator module, which, when given a 0-5v phasor input, will produce eight control voltages corresponding to a pitch and amplitude pair for each quadrature output. This module can be used with any Beap oscillator to produce Risset glissandos, or used in conjunction with quantizers to produce chromatic or diatonic Risset figures that endlessly rise or fall.
At this point, I migrated to MaxForLive to produce a couple polyphonic Risset synthesizers, one based on subtractive synthesis and one based on a simple two operator FM group.
Here is a generative Risset Ableton Live set. This uses one Aleatoric module to generate the notes, followed by a mutating MIDI delay, followed by the FM Risset Synthesizer set to a period of 32 measures.
Some example output:
These devices have been added to my Live 9 Inspiration Suite along some related devices like an aleatoric generator and a couple new delay effects. (click the Download .zip button). As always, the latest version of Beap, including the new Risset modules, can be found at the Beap site.
Computer music is still in its infancy and there is so much area to explore. Risset’s work has inspired me to challenge some of my assumptions about music that I thought were fixed.
This all began as a joke within the “Material Team” – since we do a visual programming language, we should have an audio podcast! We could do virtual patching with phrases like “You really need to connect the second outlet of the umenu, because that’ll give you what you really want for the midiout object.” Yuck, yuck, yuck.
But, just for fun, I decided to give it a try anyway. You know what? It turns out it is really fascinating. The reasons is that you don’t talk programming; rather, you talk about inspiration, creativity, hard work, personal backgrounds and future visions. In fact, behind every stack of code is a very interesting person, and chatting with them for a podcast turns out to be very interesting.
I’ve put up the first three episodes (since that’s what is required to begin the iTunes process), and will be doing one new podcast each week until I exhaust myself. If you are interested in being interviewed, or if you know someone that should be interviewed, drop me a line and let me know.
The web page that libsyn maintains for the podcast is here: The ArtMusicTech Podcast