The MusicKit V5.6.2

Leigh M. Smith

Oz Music Code LLC.


Revision History
Revision $Revision: 3656 $$Date: 2009-12-05 14:31:45 +0100 (Sat, 05 Dec 2009) $

These are overall comments (incorporating original notes by David A. Jaffe) and serve as the highest level overview of the MusicKit version 5.6.2 — the “README”.

Table of Contents
Feature List
References at Other Sites
MusicKit Mail-lists
Further Documentation
Online Documentation
Contributors, History and Acknowledgements
Supported Platforms
MacOS X support
Linux support
Windows support
Supported Programming Languages
Version numbering of the MusicKit
Subversion Branch Structure
Original MusicKit License
License for MusicKit Post-4.2 Code
Downloading and Installing the Distribution
Installing Supporting Libraries
Installing MusicKit Binaries
Installing From The Source Tarball
Retrieving Sources From The Subversion Repository
Compiling The Sources
Building the Documentation
Included Applications and Example Code
Applications in the distribution
Example code in the distribution
What works?
What doesn't work? / What needs doing?
API Changes in MusicKit V5.X frameworks
Frameworks replace libraries
Include Files
Class naming conventions
Class Specific Changes
Contributing Fixes
Supporting The MusicKit Project by Donations
Published Documentation
Suggested Reading


The MusicKit is an object-oriented software system for building music, sound, signal processing, and MIDI applications. It has been used in such diverse commercial applications as music sequencers, computer games, and document processors. Professors and students in academia have used the MusicKit in a host of areas, including music performance, scientific experiments, computer-aided instruction, and physical modeling. The MusicKit was 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 four decades ago, was the first widely available “computer music compiler”).

The NeXT MusicKit was first demonstrated at the 1988 NeXT product introduction and was bundled in NeXT software releases 1.0 and 2.0. Beginning with NeXT's 3.0 release, the MusicKit was no longer part of the standard NeXT software release. Instead, it was being distributed and supported as Version 4.0 by the Center for Computer Research in Music and Acoustics (CCRMA) of Stanford University. Versions 5.0 to 5.4.1 were then supported by tomandandy music, porting to several more popular operating systems.

The MusicKit Distribution is a comprehensive package that includes on-line documentation, programming examples, utilities, applications and sample score documents. The MusicKit is dependent on the SndKit distribution, originally written by Stephen Brandon, and both Framework collections are available at the same distribution site. The SndKit was written to be a complete open source implementation of NeXTs SoundKit. The re-write started and almost finished before the SoundKit itself was released in source code form.

Source code is available for everything, with the exception of the NeXT hardware implementation of the low-level sound and DSP drivers. 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 committed to the Subversion repository to have them incorporated for future releases. Commercial software developers may freely incorporate and adapt the software to accelerate development of software products.

Feature List

The following is a partial list of the highlights of the MusicKit provided by David Jaffe on his web-page:

  • Applicable to composers writing real-time computer music applications.

  • Applicable to programmers writing cross-platform audio/music applications.

  • Extensible, high-level object-oriented frameworks that are a super-set of Music V and MIDI paradigms.

  • Written in Objective C and C, using Apple's OpenStep/Cocoa API, the FoundationKit.

  • Using the Python to Objective C bridge PyObjC enables applications and utilities to be written in Python, an interpreted object-oriented language.

  • Functionally comparable (although architecturally dissimilar) to JMSL (Java Music Specification Language).

  • Representation system capable of depicting phrase-level structure such as legato transitions.

  • General time management/scheduling mechanism, supporting synchronization to MIDI time code.

  • Efficient real-time synthesis and sound processing, including option for quadraphonic sound.

  • Complete support for multiple MIDI inputs and outputs.

  • On NeXT machines, digital sound I/O from the DSP port with support for NeXT serial port devices.

  • Fully-dynamic DSP resource allocation system with dynamic linking and loading, on multiple DSPs.

  • Non-real time mode, where the DSP returns data to the application or writes a sound file.

  • Suite of applications, including Ensemble — an interactive algorithmic composition and performance environment (including a built-in sampler), and ScorePlayer — a Scorefile and standard MIDI file player.

  • Library of instruments, including FM, wavetable, physical modeling and waveshaping synthesis.

  • Library of unit generators for synthesis and sound processing.

  • Documentation, programming examples, utilities, including a sound file mixer, sample rate converter, etc.

  • ScoreFile, a textual scripting language for music.

  • Connectable audio processing modules (“plugins”) including standard audio effects such as reverb. Support for Apple AudioUnits.

  • Sound data held in a specifiable variety of formats, i.e 8, 16, 24 bit or floating point. Allows trading off sample data size vs. processing time.

  • MP3 file reading and writing. Decoding of MP3 can be done in a background thread after reading, or on-the-fly during playback, allowing selection of memory consumption versus processor load.

  • MP3 and Ogg/Vorbis streaming of audio output to web servers using the libshout library. The libshout library license is LGPL, not GPL and so do not compromise the MusicKit license

References at Other Sites

The MusicKit is listed on the following web sites and open source portals:

MusicKit Mail-lists

Don't assume nothing is being done if you don't hear anything for a while! The maintainers are usually adding fixes/code, but full releases are less frequent. The Subversion repository can be used to track all updates and obtain them as they are committed by developers.

SourceForge kindly hosts the MusicKit.