FNELSON@OBERLIN.BITNET (02/09/90)
Here is the info ... hope its not too long. Algorithmic Approaches to Interactive Composition by Gary Lee Nelson Professor Electronic and Computer Music Oberlin College Oberlin, OH 44074 Goal The aim of this research is to produce a personalized system for automating aspects of my composition technique so that a fine level of control can be exerted during live performance. The focus on interaction and realtime decision making is intended to reintroduce improvisation as a fundamental component of musical creation with technological media. Hardware The equipment used in this project includes a Macintosh SE/30 computer, with a 1MHZ MIDI interface, Yamaha TX816 and TX81Z modular synthesizers, a DX7 keyboard synthesizer, and MIDI wind controllers. The "solo" instruments consist of the DX7, a WX7 MIDI wind controller, and a custom-designed "MIDI Horn". The MIDI outputs of these three instruments are merged through the a Southworth JamBox 4+. The composite MIDI signal is then presented to the Macintosh. Three different MIDI transmission channels are used so that the keyboard and the wind instruments can be active simultaneously. The Macintosh immediately echoes MIDI signals from the Horn and the WX7 to the Macintosh MIDI output port. The WX7 and the MIDI Horn produce no sound by themselves so the solo signals are routed to the TX81Z. The TX816 functions as an accompanying ensemble of 128 players grouped in eight timbral choirs. A Roland SRV2000 digital reverberation unit, a Fostex 2050 mixer (for the TX8), and a Tascam M106 mixer round out the system. All components are mounted in portable cases for travel. Software All of the programs are written in Think C for the Macintosh to achieve maximum speed, flexibility in development, fine tuning, and alterability. The skeleton of my programs is MOXC. MOXC was written at Carnegie Mellon University by Roger Dannenberg for the IBM PC. MOXC was originally ported to the Macintosh by John Maloney at CMU and further optimized and enhanced by the present writer. MOXC is in the public domain and can be purchased from the Center for Art and Technology, Carnegie-Mellon University, Pittsburgh, PA 15213. My last information was that they were charging $20 for a disk with all source code and a nice manual. Both IBM and Mac versions are available. You must purchase the appropriate C compiler separately. MOXC consists of three parts, a parser, an interpreter, and a scheduler. The parser is an interrupt driven MIDI reader. It buffers MIDI bytes, collects them into data packets (key up, key down, program change, etc.) and immediately informs the composer's program that a MIDI event has occurred by calling event handling functions. Standard means for filtering MIDI input data are provided so that voluminous signals like keyboard aftertouch can be removed. The interpreter consists of a set of composer-written functions that handle each MIDI event. These functions are given prescribed names by the parser and must be present in the user program. Events that are of no interest to the user can be discarded by providing empty functions. The instructions in the event handlers constitute the composer's protocols for interaction between solo events and events generated for the accompaniment. The scheduler maintains a queue of pending events and executes them when their action times arrive. The interpreter can post future events with a scheduling function. The arguments of this function give the time delay before the event is to occur, the function that is to be executed, and the arguments to be used for the scheduled function. Scheduled functions may, in turn, schedule other events so that event chains may be launched. The CMU scheduler operates in a polling mode but my version will eventually be interrupt driven. The simplest use of MOXC is the communication between the MIDI wind controllers and the TX81Z for the solo voice. Input events from the wind controllers are parsed in MOXC and passed to the interpreter. The interpreter transposes the solo channel to one of the TX81Z receive channels and echoes the event. Likewise, the WX7 transmits on channel 3 and produces sound by mapping onto channel 10, a second TX81Z receive channel. The parser and interpreter are fast enough to permit performance without noticeable time delay as the MIDI signals pass through the Macintosh. The scheduler has, thus far, permitted quite complicated real time algorithmic composition without distortion of musical time. Programming Techniques The works composed to date are represented as program modules or function groups that define the musical materials for each piece and specify strategies of interaction. Materials range from predefined sequences of pitches and durations to real time composition algorithms. Each module includes an initialization function that loads appropriate voices into the synthesizers and sets performance parameters. Global variables determine how the "orchestra" reacts to the solo performers. Reactions can be running accompaniments where the soloist takes on the role of conductor by shaping large scale parameters such as dynamics, tone color, tempo, and spatial location. Tighter interactions involve interpretation of particular combinations of solo events as "seeds" for accompaniment algorithms. This provides a rich environment where the soloist can begin by improvising and fine tune a piece by learning and selecting actions and the consequent reactions. My most recent experiments involve real time fractal algorithms and the generation of hierarchical formal structures with self-similarity through various layers. Performance Techniques The main performance strategy is the mapping of MIDI events from the WX7, Horn, or keyboard into wider musical domains. For example, the continuous changes in breath pressure are mapped into key velocity so that the soloist can control the dynamics and timbre of the accompaniment. The foot switches, pedals, and other continuous controllers can be mapped onto any parameter of the accompaniment or composition algorithm. A particularly promising technique was inspired by Max Mathews and his digital drum. A sequence or tune is stored in the Macintosh. When the soloist holds a particular fingering the program steps through the sequence. If the soloist wants to play freely, a succession of different notes are fingered and the Macintosh echoes them without change to the TX81Z. This strategy introduces a performance mode where the player can concentrate on rhythm and articulation. Conclusion The results described briefly here represent about two year's work with an exciting set of inexpensive yet flexible tools that have only recently come together. There are many alternatives for organizing interactive composition and performance with computers and digital synthesizers. It will be essential in all work of this type to maintain an openness in musical thought. We must make no assumptions about the nature of musical instruments or music programs. We are on the verge of a fundamental change in the way music is made. We can only guess what the art will be like in an environment where individual expression is free from the technological, esthetic, and social constraints that have characterized the music making of the past. Samples If you get into MOXC and want to see the source code for these pieces, send me a blank diskette and return postage. I have a cassette of the music I have performed in more than 50 concerts since 1988. If you would like a copy, send me $10 to cover copying costs and postage. If anyone is interested, I can post program notes that describe the music more than the technology.