Rest Probabilities Added to the GMS

A feature that I have been interested in adding to the GMS for quite a while is rest probabilities. Prior to adding this feature the GMS generated a sequence of notes without ever playing any rests. What’s exciting about the rest probability feature is that now you can add space into the generative phrases that the GMS creates.

Each preset can have a rest probability that ranges from zero to one-hundred. At zero notes will play continually just as it worked prior to adding the feature. At one-hundred only rests will play. Elsewhere in-between the probability of a rest occurring instead of a note is based on comparing a random number between one and one-hundred to the user adjusted setting. If the user setting is less than the randomly selected number then a note is played, otherwise the note is skipped and replaced by a rest of the same duration. I have uploaded a new Mac build for the application (beta 0.11) available for download on the GMS page.

GMS Video Experiment with Reason

GMS Video Experiment w/ Reason from Dane Messall on Vimeo.

My student, Dane Messall, has been experimenting with the GMS over the break and just posted this video experiment. He imported the video into the GMS and then interfaced it with Reason’s Thor synthesizer to generate the sound. Nice one, Dane!

GMS Beta Release, September 28, 2009

gms_grabI have decided on September 28, 2009 as the release date of the GMS, coinciding with my performance with Graham O’Brien, and my birthday. We can call it a combination Ostraka with Dial System and DJ Zenrock show, GMS beta software release, and birthday party. Currently I am releasing a binary version of the software for Mac OS X only. A windows version is in the works, with no prediction of when it’ll arrive.

The GMS is a Gestural Music Sequencer that I developed in Processing (processing.org). The application samples video and displays it either normally or inverted so it looks as though you’re looking into a mirror. Each frame is analyzed for brightness, then the X and Y data of the brightest pixel is converted into a MIDI note. These notes produce a non-repeating sequence based on movement within the range of the capture device.

For more details, including audio examples and video produced using the GMS, checkout the
GMS category. There’s also a Gestural Music Sequencer Documentary Short produced by Josh Clos, that does a good job of illustrating what the software does.

Getting Reacquainted with the GMS

triquetra_rehearseI have had a number of problems migrating my Processing.org application known as the GMS from my old MacBook Pro running OS X 10.4.11 to my new one running 10.5.7. The first issue was alack of support for the IAC drivers in Java, next were some funky conflicts with the Java class I was using to load and save presets. With the help of Grant Muller I have solved these problems.

While I was at it I took on a couple of other issues as well in preparation for my performance on Sunday. All that’s left is for me to become reacquainted with the application in tandem with Ableton Suite 8.

This is actually the hard part because I have use the application effectively as an instrument and real-time visualizer. One problem is running out of hands and fingers while producing the visuals and capturing the MIDI clips. Another danger is the music becoming repetitive while making adjustments. Here’s a quick recording I made while practicing.

Reacquainting Myself with the GMS

External MIDI Control via XML

After a few performances live looping with Ableton and the GMS, I have found it cumbersome and frustrating to have to repeatedly swap between the two applications. To solve this, I have added he ability to control the GMS with an external MIDI device. I achieved this by creating an XML document with the parameters included as tags with a CC attribute to designate what control change value to use for each setting here’s a few lines out of the XML document.

<GMSMidiController>
    <MIDIControllerName>Korg MS2000</MIDIControllerName>
    <MidiChannel CC="31" type="knob" />
    <TopOctaveIncrement CC="82" type="button" />
    <BottomOctaveIncrement CC="78" type="button" />
    <Preset useProgramChange="true" />
    <ToggleFreeMode CC="77" type="button" />
    <StartStop CC="89" type="button" />
    <Sustain CC="64" invert="false" type="pedal" />
    <SetDuration CC="30" type="knob" />
    <ToggleDotted CC="92" type="button" />
    <SetScale CC="29" type="knob" />
    <ToggleMirroring CC="86" type="button" />
</GMSMidiController>

As you can see I’m using knobs to adjust some settings and buttons to adjust others. It’s really fun to turn a knob on my Korg MS2000 and see the sliders in my software start to move in response. Program change for presets and note on for transposition will work from any old controller, but the rest of the parameters need to be mapped to knobs, sliders or buttons. In total I have around thirty-six specific parameters that are now adjustable with a controller.

GMS Performance Excerpt #4