Gyre is a program I've been writing in Max/MSP for playing my Buchla 200e. It will probably always be a work in progress, but I've been working on it in my spare time for quite a while. It's about time to update this documentation to reflect the current state of the program. A page that describes the version from three years ago can be found here. There have been a lot of changes since I did the previous documentation, although a lot of it is infrastructure-related e.g. conversion to Max 5, multi-window interface, new control surface (Livid instruments block)

One of the things I really like about Gyre is that it separates the timing information from the note generation processes. This means that I can have a rhythm going driving a step sequencer, then switch to a Sample & Hold driven from the same rhythm pattern.

Looking at the various subsections of the Gyre main window, at the top we have a thin strip of global controls. Below that we have the four NoteTwisters, and heading towards the bottom, we find the timing sections: the Pulser and the Beat Clock, as well as the Master Preset section.

Beat Clock


The Beat Clock is pretty simple, it provides a pulse to the rest of the system. It can drive MIDI clock, and theoretically sync to it as well, but my current MIDI interface tries to be "smart" about MIDI clock, and doesn't deliver the raw data to Max, so I can't really test it.


The Pulser is loosely based on the Buchla 242 Programmable Pulser. It provides five rows of timing patterns, all of the same length (up to 48 steps). The Pulser section can save presets of its settings, and that preset is saved as part of the Master Preset. The pulser is integrated with the block control surface. This picture shows that the Pulser section is selected (note white selection outline around the pulser section) and row one has been "thrown over" to the block for editing (note blue hilight on row one). The vertical hilight, here on step five, indicates the current pulser step.


Note Twisters

At the top of the main Gyre window are four Note Twisters. Each of these drives one note buss on the Buchla 225e MIDI interface. Each twister can use one of four different styles of note generation. Currently implemented are Shape Player, Scanning Sequencer, Random, Sample & Hold. They all take their timing info from a pulser row. The Twisters can also be independently clocked, and the clock can be put through a random function with an adjustable trigger density.

Shape player takes "shapes" which are held in tables, and plays them in a variety of ways.


ScanSeq is sort of like a step sequencer, with a few addressing modes. There is a block editor for the note sequence which is pretty flexible, and much faster than using the on-screen sliders for most editing.


Random implements several flavors of Random note generation.


Sample & Hold is pretty much like a sample hold run through a quantizer, in analog synth terms.


AdHoc has been the test bed for new Twisters. Currently it holds an arpeggiator, and a note delay. These can either listen to incoming MIDI sources, or can listen to other Gyre players.


GestureSystem window


As of this version of Gyre, the GestureSystem has been spun off into its own window. It allows for the recording of arbitrary gestures from a MIDI source or an on-screen slider. There are eight gesture players, which can be synced to the Pulser cycle time. The time base for individual Gestures can be set to conform to some relationship to the Pulser cycle time (e.g. play gesture one in 1x the Pulser cycle time, gesture two takes 3x the Pulser cycle time.) Gestures can be looped (sort of like an LFO with an arbitrary wave shape) or play single shot (sort of a like a envelope generator).

The gesture system can be played from the block control surface. I can launch gestures, record gestures, control speed, looping, etc. from the control surface. This is great fun.

Scale / Key Selection and visualation

One of my pet peeves with sequencers is how hard it is to change key and pitch classes on the fly. I've attempted to address this in Gyre by having a flexible note quantitization and selection scheme. The scale grid on the left side of the window can hold 48 scales/modes of my choosing, and the Circle of Fifths control sets the root pitch. This ScaleSelect window can be completely driven from the block controller. On the block, the Circle of Fifths looks more like the Diamond of Fifths, but works quite well.


So now that I have a flexible way to set pitch class, how am I going to remember all those modes? Easy, I'm going to cheat. Here is the mode visualizer, which shows the current mode and key, in note names, guitar tab as well as a keyboard.



I'm now using a Roland Handsonic as part of my setup. The Handsonic provide three MIDI channels worth of percussion, as well as a couple channels of melodic instruments. I now have a DrumGrid sequencer that is well-interfaced with both the Handsonic and the block.



My current control surface is a Livid Instruments block. There is a section that deals with mapping the block to various destinations within Gyre.


This particular screenshot reflects the Pulser Row that has been sent to the block for editing from the Pulser screenshot, above. It took me a little while to get used to the Pulser representation being linear, and the block representation being a grid, but it's not that hard to wrap your hear around.

Adding fairly deep control to a complicated system like Gyre is a non-trivial undertaking. It took me a long time to be able to drive Gyre from the block. It was time well spent though. Being to largely control the system from the block has really made Gyre feel like more of an instrument.

This "documents" version 0.9.1 of Gyre, April, 2010 About_Gyre

Back to my main Buchla page. Electric Music Box