M 2.6 ($74) is the most recent and probably final incarnation of an algorithmic composition program developed in 1986 by Joel Chadabe, John Offenhartz, Antony Widoff, and David Zicarelli. The program has had a checkered development history and owes its continuing existence to Zicarelli, who markets it through his company Cycling '74 (www.cycling74.com). M's user interface is showing its age, and some important features were omitted from the Mac OS X version, most notably tempo synchronization with other software. Nonetheless, M offers an unusual and compelling approach to algorithmic composition.
At the heart of M lies a pattern sequencer that can hold six 4-track note patterns. You can enter notes into patterns on a piano-roll display using the mouse, or you can play them in from a MIDI keyboard. For MIDI entry, you can play in real time or step time. You can also import patterns from the first track of any Standard MIDI File. But patterns are only the fodder; it's what M does with them that makes it interesting.
M can mess with your patterns in several ways. It can alter the note density, leaving out some notes. It can change the MIDI channel assignments of the tracks. It can vary note Velocities, durations, and timing within user-specified ranges. It can transpose the pattern. It can distort time by, for example, delaying the second of each pair of eighth notes for a swing feel. Most interestingly, M can reorder notes, either randomly or by creating a new, repeating sequence. In a clever and apparently nontrivial piece of programming, you can set up reordering to honor rest positions and, therefore, preserve rhythm (see Web Clip 1). Each of the above processes can be applied with individual settings for each of the four tracks within a pattern. As with patterns, M can store six setups, called Variables, for each type of alteration.
At a higher level, M allows you to save snapshots of pattern and Variable selections as well as of other critical M settings. You can recall those in real time as M plays, and snapshot sequences can even be recorded as Slide Shows. You can also capture M's MIDI output in Movies, which you can then export in Type 0 (single track) Standard MIDI File format. Because M can send and receive MIDI on any Core MIDI bus, you can use M to play standalone virtual instruments or plug-ins running in your DAW. If you're intrigued but aren't sure whether M is for you, download its save-disabled demo from the Cycling '74 Web site.