downloaded from CCRMA World Wide Web server on may 20 1995 1943w


Heinrich Taube Visiting Composer

Common Music (CM) is a compositional language implemented in Common Lisp and CLOS and takes advantage of CLOS's multiple inheritance and method combination to support a wide range of compositional entities and associated behaviors. Because of the underlying representation, Common Music encourages user extensions to both its classification scheme (either by "mixing in'' pre-existing classes or defining new root classes from scratch) and to the pre-defined instances of objects that the system uses.

Fundamental to the language is a classification taxonomy that defines compositional concepts such as scores, parts, scales, notes, rhythms, dynamics and compositional tools such as item streams, functions, algorithms and generators. A rich and complex compositional environment is built from these basic concepts through subclassification and mixins. The Common Music system currently runs on NeXT, Macintosh, SGI, SUN and 486/Windows computers and outputs music in the following formats: real-time MIDI and MIDI file, Common Lisp Music sound file and score file, Common Music Notation Postscript and input file, Music Kit score file, CSound scorefile, and RT score file.

Stella is a system that uses persistent objects to support algorithmic and editorial styles of music composition in Common Music. By algorithmic, it is meant the specification of musical material is made indirectly through a program that creates it. By editorial, it is meant the specification of musical material is made directly by the composer. Using Stella's representation system, the composer may select or mix either style as appropriate to a given compositional situation. Stella comes with an editor that supports a simple, non-Lisp command interface. This editor treats a composition as a structured data base and supports a powerful query language for the algorithmic examination and modification of musical material.

[Rick Taube is currently on the research staff of the Institut fuer Musik und Akustik at the Zentrum fuer Kunst und Medientechnologie in Karlsruhe, Germany, where he is continuing work on this project. He can be reached via email at:]


Schottstaedt, B. "Pla: A Composer's Idea of a Language,'' Computer Music Journal, 7(1):11-21, 1983.


Nick Porcaro Software Engineering Consultant

SynthBuilder is a user-extensible, object-oriented, NEXTSTEP Music Kit application for interactive real-time design of synthesizer patches. Patches are represented by networks of digital signal processing elements called unit generators and MIDI event elements called note filters and note generators. SynthBuilder is based on Eric Jordan's GraSP application, created at Princeton University in 1992, and the NeXT Draw example.

The graphical interface enables construction of complex patches without having to write a single line of code, and the underlying Music Kit software provides support for real-time DSP synthesis and MIDI. This means there is no "compute, then listen'' cycle to slow down the process of developing a patch. It can be tried out immediately on a MIDI keyboard, and unit generator and note filter parameters can be adjusted in real time while a note is still sounding. Sixteen bit stereo sound is synthesized immediately on one or more DSP56001 signal processing chips, and can be controlled from the user interface with software-simulated or physical MIDI devices.

In addition to synthesis, the system supports configurations for sound processing via the DSP serial port which is also used for sound output to DACs and other digital I/O devices. MIDI messages can be mapped to unit generator object control methods, permitting high-level control of patch parameters. For example, a MIDI key number can be readily mapped into frequency, and then mapped into a delay line length via a graphically constructed lookup table. A single MIDI event can be fed to (or through) multiple note filters, each of which can modify the event stream and/or control one or more unit generator parameters.

Polyphony is handled in SynthBuilder by graphically specifying a voice allocation scheme. Optionally, a Music Kit SynthPatch can be generated (in high-level source-code form) and used in another application. Dynamically loadable custom "inspectors'' (user interfaces) can be created for patch elements. Dynamic loading promotes easy distribution and sharing of inspector modules, and promotes a fast, efficient development cycle. The process of creating a custom inspector is facilitated by a default-inspector-generator which takes a DSP assembly macro and a signal-flow/parameter list specification as input, and creates working interface code which can then be customized.

As of this writing, SynthBuilder has more than 50 graphical custom inspectors, including an envelope editor, digital filter response curves, and a MIDI lookup table. SynthBuilder is currently being used by researchers at CCRMA to explore new synthesis techniques. SynthBuilder is now in the alpha release stage on both NeXT and Intel Pentium systems. Supported DSP cards for Intel systems include the Ariel PC56D, the Turtle Beach Multisound or Monterrey, and the i*link i56.


David A. Jaffe Visiting Composer

Julius O. Smith III Associate Professor of Music

The Music Kit is an object-oriented software system for building music, sound, signal processing, and MIDI applications in the NEXTSTEP programming environment. It has been used in such diverse commercial applications as music sequencers, computer games, and document processors. Professors and students have used the Music Kit in a host of areas, including music performance, scientific experiments, computer-aided instruction, and physical modeling. The Music Kit is the first to unify the MIDI and Music V paradigms, thus combining interaction with generality. (Music V, written by Max Mathews and others at Bell Labs three decades ago, was the first widely available "computer music compiler.'')

The NeXT Music Kit was first demonstrated at the 1988 NeXT product introduction and was bundled in NeXT software releases 1.0 and 2.0. Since the NEXTSTEP 3.0 release, the Music Kit has been distributed by CCRMA via ftp. Questions regarding the Music Kit can be sent to

The CCRMA Music Kit and DSP Tools Distribution (or "Music Kit'' for short) is a comprehensive package that includes on-line documentation, programming examples, utilities, applications and sample score documents. The package also comes with Bug56, a full featured, window-oriented, symbolic debugger by Ariel Corp. for the Motorola DSP5600x signal processing chip family.

Source code is available for everything except Bug56. (The low-level DSP and MIDI drivers are available only for NEXTSTEP-Intel.) This means researchers and developers may study the source or even customize the Music Kit and DSP Tools to suit their needs. Enhancements can be sent to to have them considered for future CCRMA releases. Commercial NeXT software developers may freely incorporate and adapt the software to accelerate development of NEXTSTEP software products. (Free commercial use of files copyrighted by NeXT Inc. are restricted to NEXTSTEP platforms.)

People who answered the Music Kit survey sent around last year will notice that many of the most requested items on the survey have been included in the 4.0 release. Please send your future Music Kit requests to To subscribe to a Music Kit news group, send email to See the Music Kit Release Notes for further details.

The Music Kit was designed by David A. Jaffe and Julius O. Smith, with input from James A. Moorer and Roger Dannenberg. The Objective-C portion of the Music Kit was written by David A. Jaffe, while the signal processing and synthesis portion was written by Julius O. Smith. The Ensemble application and much of the SynthPatch library were written by Michael McNabb. Douglas Fulton had primary responsibility for the documentation. Others who contributed to the project included Dana Massie, Lee Boynton, Greg Kellogg, Douglas Keislar, Michael Minnick, Perry Cook, John Strawn and Rob Poor.

Music Kit References

D. Jaffe, "An Overview of the NeXT Music Kit,'' Proc. 1989 International Computer Music Conference, Columbus, Ohio, Computer Music Assoc., pp. 135-138.

D. Jaffe and Lee Boynton, "An Overview of the Sound and Music Kits for the NeXT Computer,'' Computer Music Journal, MIT Press, vol. 14, no. 2, pp. 48-55, 1989. Reprinted in book form in The Well-Tempered Object, Stephen Pope, ed., 1991, MIT Press.

J. O. Smith, D. Jaffe, and L. Boynton, "Music System Architecture on the NeXT Computer,'' Proc. 1989 Audio Engineering Society Conference, Los Angeles, California, 1989.

M. McNabb, "Ensemble, An Extensible Real-Time Performance Environment,'' Proc. 89th Audio Engineering Society Conference, Los Angeles, California, 1990.

D. Jaffe, "Efficient Dynamic Resource Management on Multiple DSPs, as Implemented in the NeXT Music Kit,'' Proc. 1990 International Computer Music Conference, Glasgow, Scotland, Computer Music Assoc., pp. 188-190.

D. Jaffe, "Musical and Extra-Musical Applications of the NeXT Music Kit,'' Proc. 1991 International Computer Music Conference, Montreal, Canada, Computer Music Assoc., pp. 521-524.

Highlights of the Music Kit 4.0 Release

* Conductor Synchronization to MIDI time code & generation of MIDI time code. * Real time processing of sound from DSP port (with example applications). * Playing sound out the DSP port to external DAT or DAC interfaces, with support for Ariel, Stealth, Singular Solutions and MetaResearch I/O products. * Waveshaping ("non-linear distortion'') synthesis. * "WaveEdit,'' the Graphical Waveform editor. * "SynthBuilder,'' the Graphical SynthPatch editor (available separately via ftp). * New, substantially enhanced version of the Ensemble application that supports sound processing instruments, graphical envelope editing, new NoteFilters and more. * New version of the ScorePlayer application that supports playing through DSP port. * Support for 32K DSP memory expansion, with automatic sensing. * Support for Ariel QuintProcessor 5-DSP board (with programming examples). * SynthPatch library included as programming example. * Support for quadraphonic sound output via the DSP serial port. * Workspace inspector for scorefiles. * Runs under NEXTSTEP on either NeXT or Intel-based hardware.

Highlights of the Music Kit 4.1 Release

The Music Kit 4.1 release is essentially Release 4.0 plus support for NEXTSTEP 486/Pentium machines. It uses one or more plug-in DSP cards to support music synthesis and digital audio processing. MIDI is similarly provided by plug-in cards. The release is "fat'' so there is only one package that works on both NeXT and Intel-processor computers.

For music synthesis and digital audio processing on Intel hardware, the 4.1 Music Kit provides drivers for three DSP sound cards, the Ariel PC-56D, the Turtle Beach Multisound and the i*link i56.

For MIDI on Intel hardware, the Music Kit provides a driver for MPU-401 cards (such as the MusicQuest family and the SoundBlaster-16), emulating the functionality of NeXT's MIDI driver, including synch to MIDI time code. Source to all the drivers is included in the Music Kit Source Package.

While only one DSP card is required, the power of a system can be scaled up by the use of multiple cards. An application built with the Music Kit can simultaneously use multiple DSP and MIDI cards by the same or different manufacturers, with details of DSP resource allocation handled automatically. In addition, the drivers provide automatic sensing so that applications can be moved between machines with different hardware configuration with no re-configuration necessary.

NeXT hardware has not been left behind. The Music Kit now supports the 192K DSP extension memory board (available from S.F.S.U.) with automatic sensing.

Other new features include a MusicKit panel for the Preferences application for setting various defaults and managing multiple DSP cards.

See the Music Kit 4.1 Announcement for further details regarding the supported DSP cards.

For further inquiries regarding the Music Kit or DSP tools, send email to To join the Music Kit email list, send a subscribe message to