Notes On The Use Of MS-DOS MIDI Algorithmic Composition Programs The general subject of algorithmic composition programs available for per- sonal computers has been well-covered in the various music-tech magazines, particularly in the articles written by Carter Scholtz. This article instead focuses on the use of such programs as are currently available for MS-DOS machines (IBM and clones/compatibles). Standard MIDI hardware is presumed (i.e., an MPU-401 or compatible interface), but as we shall see, other hard- ware may be required for a particular program's operation. In my studio, I routinely make use of the following "algorithmic compo- sers": Cool Shoes Software's Sound Globs, Intelligent Music/Voyetra's M/pc, Jim Binkley's RAVEL, and John Dunn's Music Box. In this paper I will briefly discuss the general nature of each program and then demonstrate typical ap- plications. Sound Globs is perhaps the most experimentally oriented of all these pack- ages. As its authors state, its processes tend towards a more stochastic ap- proach to creating music textures, as opposed to being merely another phrase generator. The program is divided into two basic levels: first, textures are created, then those textures are "performed" from the Performance page. Per- haps one of Sound Globs' most interesting features is its Pitch Quantum: this function sets a pitch-bend value before each note, enabling intonations other than equal-tempered twelve-tone. Only equal-temperament is supported at this time, but some amazing things can be done "as is": I have been experimenting with 15-tone, 31-tone, and 19-tone equal-temperaments, and I'm far from hav- ing exhausted the sonic possibilities there. As in all such programs, various other controls set up and vary density (horizontal and vertical), loudness, durations, and tempo, and everything is controllable in real-time. Sound Globs has certainly one of the most ingenious interfaces: two graphs are pro- vided, one a statistical "read-out" of the results of control manipulations, the other being a probability distributions map for initializing frequency of occurrence of a given variable's data. File management is very impressive: almost everything has its own file-save/load capability, making it possible to swap and blend various parts of different "songs". It should be obvious that "song" is probably not the most apt description for what Sound Globs does best, and the real-time controls in the Performance page invite ap- parently endless manipulations upon the individual textures. Live "computer music" shows could be set up using only Sound Globs and a few synths/sam- plers, the program is that full-featured. Two more niceties need to be men- tioned: the calculator and the performance language. The calculator is just a neat plus, enabling me to find out just what would the pitch quantum be for a 29-tone octave. The performance language isn't really a language in the sense of BASIC or Pascal, but it lets the user automate command sequences which might otherwise be impractical to implement "by hand". Intelligent Music has long been recognized as one of the leaders in devel- oping unique software for composers, Jam Factory and M being their most wide- ly known products. M has been ported to the MS-DOS environment by Ed Demko at Voyetra Technologies, where it is now marketed as M/pc. The ported version is virtually identical to its Macintosh original, due in large part to the use of a run-time version of Microsoft's Windows 2.1 graphic interface. Color is used beautifully and practically, helping make M/pc both pleasurable and highly productive. Unlike Sound Globs, M/pc excels at phrase generation and manipulation, making it perhaps best suited for any music oriented towards traditional forms. The program has what seems at first to be a bewildering array of controls, but it soon becomes clear that it is possible to do the same thing in a variety of ways. Output can be rigidly determined or left to the designs of the computer ; controls are available to perform a number of variations upon material, including transpositions, note-order rotations, retrograding, filling with rests, linearizing chords, etc., and all in real- time. I typically use M/pc in the following manner: after entering a phrase, I then set up a graduated series of algorithmically-controlled variables, running the phrase through the series until I hear something I might like to finesse. I may then choose to either continue working with the material while still in M/pc, or I can save a performance as a MIDI file and transfer it in- to my sequencer for manipulation there. Variables set-ups can be saved as "snapshots", and whole series of those may be triggered manually or automat- ically (as a "slideshow"). Any performance can be saved as either a native M/pc file or as a Standard MIDI file. It's worth pointing out that while M/pc is certainly most viable in tonal harmonic environments, its real power as a phrase manipulator is excellently employed in any equal-tempered environment, from gamelan to serialism. Its approaches to rhythm control are most impressive, making it an easy matter to generate dozens, even hundreds of variants upon material in very short order. The two programs above are both commercially available from companies dedicated to their ongoing improvement. Sound Globs is due for an update soon which will likely incorporate color (it's now in monochrome only) and an im- proved interface appearance, and M/pc will soon be available for Windows 3.0. The next two programs are from individual authors, are both in the public do- main, and are not likely to receive much more improvement from their writers; however, improvements are certainly possible, given that each program is ex- tensible by way of either user-defined routines or (in the case of RAVEL) a user-defined interface. Jim Binkley's RAVEL is best described as a MIDI programming environment: the package includes MOS, a MIDI operating system, and MC, the MIDI compiler. Programs are written in what appears to be a limited subset of C, with a host of added MIDI functions. Although conventional forms may be written and per- formed in RAVEL, its greatest strengths appear when a program utilizes its various algorithmic routines to either create note-lists or perform manipula- tions upon given arrays of notes (or just about anything else). One of RAVEL's most powerful features is its ability to imbed and send system- exclusive messages from within the flow of note-events: much of my work in RAVEL has explored this aspect in ways virtually impossible in conventional sequencing environments. The following examples illustrate typical RAVEL code: Ex.1 a=mchoose(C,D,E) # choose one note from the possibilities b=mchoose(e,q,h) # ditto for the duration c=mrandrange(20,30) # choose a velocity from the indicated range rnot=a # assign the value of a to the note symbol rlen=b # " " " " b " " length " rvel=c # " " " " c " " velocity " rnot rlen rvel # the RAVEL note action, i.e., play the note with # the assigned pitch, duration, and intensity Ex.2 x=mrandrange(0,31) putm 0xf0 # begin sys-ex putm 0x43 # Yamaha id putm 0x10 # device number putm 0x01 # group/subgroup putm 6 # parameter putm x # data putm 0xf7 # end sys-ex Example #1 is a straightforward note statement, rather easy to construe, and of course it is independent of the machine it is sent to. Example #2 is quite different: the RAVEL function putm sends a systems-exclusive message down the MIDI line, without benefit of a timed event. For this reason it is important to determine the optimal placement of the message within the piece structure. Even so, the composer has the opportunity to subject such aspects as the group/subgroup, parameter, and data to the same sorts of randomizing routines as note data. For instance, Ex.2 might be altered so as to allow the machine to make a choice of the parameter affected at run-time (allowance for data range must be made, but RAVEL provides case switching as in C). Masking is possible, and range delimitation is supported, as is bit manipulation: clearly, RAVEL permits a wide range of controls over any MIDI instrument that receives system-exclusive messages, opening the doors to simultaneous control of the pitch domain and that of the sound-generators. RAVEL is arguably the most powerful of all these programs, yet it is also the least user-friendly. It is entirely dependent upon the user to define virtually everything, but the trade-off is that it allows the user access to that "everything", even to the extent of designing a character-based window- ing interface for real-time interaction. The environment absolutely necessi- tates having to learn to write "code" in the conventional sense of coding in computer languages, but given that the language is rather limited that's not a terribly difficult thing to do. Nevertheless, the musician will find that RAVEL's power shows itself only as far as s/he is willing to make the effort to learn the language and its system. Fortunately, the documentation is thor- ough and complete enough for even a novice programmer to learn the basics easily, while experimentation reveals the rest. Like RAVEL, John Dunn's Music Box first appeared as a marketed product. I first read about it some years ago in Electronic Musician: it was advertised as a music-generation program selling for around $250, and like RAVEL its author has placed the program into the public domain. Unlike RAVEL though, John Dunn has included the source code for Music Box ; he has also included the means for creating and implementing user-defined routines. Music Box is quite different from all of the above programs: its main page shows a collection of nearly inscrutable icons, each of which performs some clearly defined function. The icons are in fact program modules which are linked together in almost any way to create a system of patchings which then (hopefully) output any sort of MIDI data. Again like RAVEL, Music Box allows access to hardware at low levels, letting the knowledgeable programmer mani- pulate data in almost any way. New modules may be added to the main page, but they must be coded in assembly, a somewhat more daunting task than coding in RAVEL, but at least the extensibility is there. The modules present include phrase and pattern generators, sequencers/switches, math & logic routines, note output generators, clocks, etc., the output of any and all of which can be routed to just about anywhere. In this way, Music Box resembles a modular analog synthesizer, but the computer (and the program) will continue to pro- vide copies of any given module to provide an embarassment of patching pos- sibilities. Recent work with Music Box has shown me that it is indeed a very powerful program, second only to RAVEL in its MIDI capabilities, but like RAVEL it requires a complete engagement with the user, i.e., nothing is done "for" the user, everything has to be prepared *by* the user. Like all of the other pro- grams reviewed here, Music Box allows complete real-time control, and once the modules and the patching system are clearly understood, a wide range of musics can be explored. The program is perhaps best employed with either a number of sound generators or with a multi-timbral unit, but it will work with a single sound source. At the start of this paper I mentioned that there may be particular hard- ware requirements for a given program: with the exception of RAVEL, all of these applications require a mouse, and all them (RAVEL included) perform best with a fast CPU (AT-class or higher). Remember, these programs are doing a fair amount of real-time calculation while running, and adding such items as real-time control via MIDI controllers really bogs down anything less than a 10MHz AT. M/pc, with its run-time Windows environment, doesn't quite make it on an XT, even a Turbo model: in fact, Voyetra recommends an AT-class machine or better. Music Box absolutely requires color capability: it will work with CGA, but EGA/VGA is not only nicer on the eyes, it also adds some more pages of workspace. Sound Globs will accomodate a math coprocessor if one is installed, but it isn't a necessity. 640K RAM should be available for any of these packages, even though the programs will run in less space. As mentioned regarding Music Box, the more sound sources you have, the more these programs get to really show their stuff. Amazing things occur when one of these progs is controlling four or five multi-timbral synths and/or samplers ; I believe M/pc would probably be the best choice for any system limited to only one sound generator. Regarding documentation: the commercial programs of course have very nice bound manuals, complete with tutorials, indices, and pictures to help the user into the arcana of algorithmic composition. The nice surprise is that the situation is nearly ditto for the public domain pieces: RAVEL's documen- tation is quite complete, as is that for Music Box, though the latter could use a little more explanation of its conceptual organization (not many of us MIDI-heads have much acquaintance with modular analog synths). RAVEL also comes packaged with a number of extremely helpful examples of code for study and compilation. Yet one thing more: the four programs reviewed here are not the only applications of their kind available for the MS-DOS MIDI world. Cool Shoes' Drummer and LTA's Track Genie are two others that should be included, and I'm sure that other such programs are out there that I haven't yet seen. I use Drummer frequently for the creation of drum patterns, but it can be used with any sound source, making it very handy for short pattern-oriented phrases. I don't own Track Genie: I have tried out the demo, but without documentation the program is rather formidable (as is true of any of these packages). Where to get 'em: Sound Globs $175.00 (formerly available from Twelve-Tone Systems) Drummer $ 79.95 from: Cool Shoes Software PO Box 391 Burlington, MA 01803 617-229-9942 M/pc $189.95 from: Voyetra Technologies 333 Fifth Ave. Pelham, NY 10803 914-738-4500 Track Genie $ ?? from: LTA Productions PO Box 6623 Hamden, CT 06517 203-787-9857 RAVEL $ free from the IEMUG bulletin board (405-733-3102), some money payable to the author for registration (shareware) from: Humworks/Jim Binkley 5814 SW Taylor Portland, OR 97221 Music Box $ free from various MIDI bulletin boards such as ENIAC (301-460-9134)