The Cyclotron: A Tool for Tweaking Time...
(...and some Related Ruminations about Rhythm)

Dan Trueman
Music Department, Princeton University
May 2007

The Cyclotron is a visual interface for experimenting with rhythmic cycles. I wrote the original version of the Cyclotron in 1996 for use with RT (Paul Lansky’s real-time mixing program), and was recently inspired to revive it by a number of  things, including:

  1. Justin London’s work with entrainment, maximal evenness, and well-formedness with regards to meter; see his book and this online article for more information. London was actually my first music theory teacher, and I was happy to rediscover his work years later and find it so pertinent to some of my current interests.
  2. the asymmetrical and decidedly ill-formed springar dance meters from Norway (the telespringar and valdresspringar in particular, both typically performed on Hardanger fiddle, which I study). David Code has presented an intriguing set of problems that the springar and a few other meters present to London’s theory, and I’m hoping he’ll make it available online soon.

In truth, the revival was somewhat accidental. While on sabbatical this year, I have been attempting to reinvent my ways of working with digital sound, and one day while poking around at Processing, I decided to see how hard it would be to recreate the Cyclotron interface and hook it up to ChucK (which I have been learning in hopes of finding an alternative to Max/MSP). It turned out to be quite easy (much easier than when I first coded the Cyclotron years ago), the hardest part being creating reliable communication between the two programs with OSC.

There are, naturally, many things conceptually similar to the Cyclotron, none of which actually had anything to do with my interest in making it, but nevertheless deserve mention:

  1. the Circle Machine
  2. the Revolution Synthesizer
  3. this game that my daughter likes to play

And I’m sure there are others.

So, here it is.

To view this content, you need to install Java from java.com

And here is the Processing source code: cyc_sa

First of all, some caveats. This particular version (hacked up for the web) is barely functional; it uses some simple java sound synthesis and the GUI drawing framerate (25 fps) to control timing, so it will break down quickly -- spokes a little too close, or a too fast tempo, CPU too slow... and things start to go haywire (and I haven't even tested it on Windows; let me know if you do and it works!). In fact, it may not work at all depending on your machine (it works ok on my Macbook) but hopefully you can get a sense of how it works. To really use it, it needs to be linked to a powerful audio engine like ChucK, Max/MSP or Supercollider; I'll share some example code using it with ChucK below.

Playing with the interface will reveal most of its functionality. An overview:

  1. a phasor rotates clockwise (vertical => zero phase).
  2. when the phasor passes a spoke, it generates an event (in this case, a sound).
  3. the spokes can be manipulated in various ways, their lengths and cap sizes controlling whatever we want; in this example the spoke length controls pitch and the capsize gain.
  4. a series of tics around the circumference evenly divide the cycle and can be used as quantize points; choosing a spoke and hitting the Quantize button under "spoke time" will truncate the selected spoke time to the nearest lower-value tic. (these tics are a new addition to the original Cyclotron, specifically inspired by London's cyclical representation of meter, and I can't imagine using the interface without them anymore).
  5. a series of concentric circles can similarly be used to quantize spoke length.
  6. clicking on the cap of spoke will allow you to drag it around. If you hold down the "a" key, the angle will remain constant; similarly, holding down the "s" key will keep the spoke length constant. Holding down the "d" key will allow you to drag and control the capsize. Shift-clicking will allow you to add a spoke, whereas Shift-k will delete the currently selected spoke.
  7. there are two kinds of warping. the first, controlled by the yellow'ish slider, will warp the actual spoke positions. the second will actually warp the rate at which the phasor moves; values greater than 1. will create an accelerating phasor, values less than 1., a decelerating phasor.
  8. the "cycle len" box establishes how long the cycle is, and the "time inc" box is non-functional in this web version. it can be used for creating sudden changes in speed at a spoke-point.

Ok, some things to try. First, set the number of spokes to 4 (by typing in the "# spokes" box and hitting return; this will distribute the spokes evenly across the cycle) and the number of Q-tics to 9. Now, check the "all?" button to the left and hit the left-most Quantize button. The spokes should move to the nearest lower-valued tic, resulting in a 2+2+2+3 meter. One of the neat things about this is that you always get a "maximally even" distribution of spokes, and London uses this specific example to discuss maximal evenness (this is the rhythm to Dave Brubeck's "Blue Rondo a la Turk").

Similarly, if we set the number of spokes to 5 and the number of Q-tics to 12 and then quantize all the spokes, we get a common West African bell pattern (2+2+3+2+3), also discussed on the London webpage. And again, using 4 spokes and 10 Q-tics and quantizing, we get the North Indian jhaptal tala (or at least the basic time ratios, 2+3+2+3) that London discusses. To me, as a composer interested in messing around with rhythm, this is great fun!

Now, it is also possible to explore various uneven beat distributions. For example, it is easy to generate something like the dhamar tala (5+2+3+4), though not as easy as the jhaptal tala because it is not maximally even; create 4 spokes, 14 Q-tics, and then move the spokes close to the appropriate tics and quantize them individually.

The springar meters are more challenging, and they provoke some interesting questions. To begin with, listen to Hovin-Stubben, a telespringar performed here by Loretta Kelley and also watch the dance (with different tunes) here and here. This is a dance in three, and if you don't believe me, check out this page. You still may not believe it, but that's how the fiddlers and dancers think about it. Basically, the three beats are of different lengths, and it is impossible to come up with an even subdivision that works for all three beats that isn't absurdly fast, and such a subdivision would have no musical relevance to the fiddlers and dancers; in fact, it would just be confusing. When fiddlers play triplets through this meter, the triplets stretch and compress according to these beat lengths, rather than beats of different lengths being generated by different numbers of subdivisions (as in all the examples described above). David Code has created a nice little software metronome that will articulate various flavors of springar; here is a recording of his metronome beating a telespringar, with beats of ratios 39:33:28 (based on measurements taken by the Norwegian composer Eivind Groven).

We can recreate this pulse in the Cyclotron pretty easily; simply set the three spokes to times matching those ratios (first spoke points vertical, second spoke at 0.39, third spoke at 0.72). A cycle length of about 1.5 seconds works well. But if you want to subdivide these pulses into, say, triplets, some interesting issues arise; do you divide each beat evenly into three, or are the pulses within the triplets themselves of different lengths. The former is easy enough to do -- simply divide each beat length by three and place two spokes appropriately -- but the latter is a bit more intriguing and suggests a fundamental warping of time across the bar; this is what initially inspired the "warp inc" functionality, and we can get a very close approximation of the Code telespringar metronome pulse by having three evenly distributed spokes and setting "warp-inc" to 1.5 and "cycle len" to 1.5. To experiment with triplets this way, simply create nine evenly distributed spokes and use the same "warp-inc" and "cycle len" values (this will probably break the web version of the Cyclotron). The three main pulses should probably be differentiated from the triplets, perhaps by greater cap sizes and/or different spoke lengths.

Straight time, uneven spoke distribution

Warped time, even spoke distribution

Ok, so maybe this is splitting hairs; they both sound quite similar, and neither of these are "right" -- probably both are "wrong" (and there are obviously other variations). For one thing, different fiddlers perform these triplets differently, some spreading the triplets evenly over each beat, others "front-loading" the triplet so that it goes by quickly at the at beginning of each beat (Olav Øyaland does this, for instance), sort of like this:

Straight time, "front-loaded" triplets

Even within a tune the fiddler might change things up; I have heard Knut Buen basically flatten out the beats, making them perfectly even, when playing continous triplets at the end of a tune; the dancers happily go along for the ride. It's all quite mysterious and wonderful and in some ways seems to confirm London's "many-meters" hypothesis; all of these are different learned flavors of a particular class of meter (a meta-meter, perhaps).

So, back to the earlier examples: while they both sound similar, the approaches are conceptual opposites; with the first, we create beats of different lengths and allow time to pass at a constant rate, whereas in the second we create beats of identical "lengths" but we adjust our sense of how times passes -- rather than passing at a constant rate, time ebbs and flows. In the end, my interest here is compositional (a tangent on this in a moment); I'm not trying to find the "correct" explanation for how this crazy dance works -- I mostly just like to play it for/with dancers. But it is from the dance that my attraction to the second model comes. In the telespringar, the dancers step naturally on beat one, sink somewhat heavily on beat two, and then have a slight rise and skip on beat three. When a room full of dancers and a fiddler are in sync, it is as if all are connected by a web of invisible rubber bands, their heads all bobbing slightly in unison. The sense of gravity, especially on beat two, is palpable, and it is this sense of gravity that, to me, seems to warp time and take what would otherwise be a simple dance of three even beats and stretch it out. (for a rather dark video example of telespringar, see this).

<tangent> I've been wrestling with these ideas compositionally for many years. As a graduate student, I wrote a string quartet where I asked the players to "springar" the beats (it was notated in simple 3/4) -- an utter failure. I wrote several springar-inspired fiddle tunes which have worked well (though they don't qualify as true traditional springars; I can't resist mucking things up here and there!), and recently I have been teaching these tunes to members of two groups that I play with (QQQ and So Percussion). The first real success with this was "Cal's City Garden (with Cage)," from my piece Five (and-a-half) Gardens (see a clip from the first workshop of this piece to get a sense of it). Here I arranged one of my pseudo-springar tunes for percussion (flower pots, drums, etc...) and then taught the group the feel; percussionists, especially So, are usually game for trying unfamiliar things like this. We then played together -- a lot -- and while I wouldn't claim that our resulting performance is a "springar," it does have a similar sense of bent time and it was created aurally and physically, rather than through some hyper-complex notation scheme -- in some ways, the whole process was not unlike how a fiddler learns the dances traditionally (it is an aural tradition, after all).

Not that I am against hyper-complex notation, however. In a more recent piece, Triptick (for piano trio), I imagined stretching triplets over bars of different lengths; in particular, I worked a lot with this sequence of time signatures: ||: 5/8 - 4/8 - 3/8 - 4/8 :|| and stretched triplets across each bar. Ok, what the heck, here are some examples:

I am excited about how this affects our sense of time and how the contrast between warped triplets and straight triplets (or, more generally, warped and straight time) can create a kind of metric tension and release (in the 2nd audio example for Triptick, for example, after it runs beyond the notated example). And while it is challenging at first, the physicality of it is learnable and seems familiar to me from my experiences learning the physicality of the springar (including the complex footstomping ). And while it is based on even subdivisions, I anticipate the players (at certain parts of the piece) will forget the counting and simply feel stretching and compressing, after they have learned it. </tangent>

Back to the Cyclotron... I used the original Cyclotron in only one piece (Waltz) and abandoned it, though Nick Brooke made wonderful use of it for Pemangku. While my original intention for the Cyclotron was to create a place to mess with ideas and generate material, I became intrigued by its potential as an unusual metronome, something I could actually play along with and use to try to get different metric structures into my body. This is, after all, one of the reasons we build machines -- they can bring us new places. Why should the springar be the only warped meter I can play? And surely there are other kinds of meters yet to be discovered which can twist time.

In Lasso and Corral: Variations on an Ill-Formed Meter each player has a Cyclotron on a laptop near their music stand. The laptops are synchronized over the network and each generates its own click-track that is audible to the audience and players. Sometimes all four players have the same Cyclotron pattern, but often not. In 7/4 throughout, Lasso and Corral relies on the Cyclotron to bring the players in and out of warped time together. Here are two excerpts, the first with unison Cyclotrons, the second with differing Cyclotrons (these are contiguous, both in the one mp3 clip):

The top line indicates how the tempo varies over the course of each bar, as controlled by the Cyclotron "warp inc" function. The click lines indicate the rhythmic patterns articulated by the click for each player; these can be monitored visually on the laptops as needed. The downbeat of each bar occurs when the phasor points directly down; the screen will also flash red on the downbeat so the player can see it out of the corner of the eye.

Not unlike the new Cyclotron (and this very webpage), Lasso and Corral began without my even realizing it. I was playing my fiddle with the various Cyclotron layers that now make up the metric complex for this piece, improvising, getting a sense for how it felt in its variations when I got an inkling that I could actually make a piece out of this and, like, play it with other people. We'll see (at this writing we are scheduling our first rehearsals for the premiere), but I hope this is just the beginning of my fun with this little program. Check out my notes about this piece for more thoughts about all this...

Ok, this all began as a simple introduction to the *new* *improved* Cyclotron and turned into a long self-involved exploration of my own little obsessions. Apologies. Now, if you'd actually like to try this thing fer real, here is some guidance:

for Mac folks, download this. For Windows or Linux users, you'll need a new ChucK binary. I have yet to test it on anything other than a Mac, but theoretically it Should Work. To run this on a Mac, open the Terminal, cd to the directory you put this folder (so, if you put it in the Applications folder, type "cd /Applications/cyc_chuck" in the Terminal) and then run this command:

./chuck SpokeEvent_class.ck Cyclotron_class.ck simpleClicker.ck

this should open up (after a few seconds) a window with the Cyclotron that you can then play with, and it should be much more robust than the web version on this page. You can also save and load .cyc files. For that matter, here are some .cyc files for the examples above:

and if you just want to look at the ChucK code (ChucK is great! I highly recommend it!) without downloading, here it is:

finally, here is the Lasso and Corral click-track software

There's a whole bunch that can be done, from running multiple Cyclotron/ChucK pairs at once (this is how I stumbled on Lasso and Corral), to having the "events" be just about anything. It could also be combined with Max/MSP or SuperCollider, if you feel like hacking at some OSC. Unlike the original Cyclotron, I don't think of this as a complete program; rather, it is a component to be wrapped up with anything else that might find it useful. Cycle Away!