# MUSIC-N

MUSIC-N refers to a family of computer music programs and programming languages descended from or influenced by MUSIC, a program written by Max Mathews in 1957 at Bell Labs. MUSIC was the first computer program for generating digital audio waveforms through direct synthesis. It was one of the first programs for making music (in actuality, sound) on a digital computer, and was certainly the first program to gain wide acceptance in the music research community as viable for that task. The world's first computer-controlled music was generated in Australia by programmer Geoff Hill on the CSIRAC computer which was designed and built by Trevor Pearcey and Maston Beard. However, CSIRAC produced sound by sending raw pulses to the speaker, it did not produce standard digital audio with PCM samples, like the MUSIC-series of programs.

## Design

All MUSIC-N derivative programs have a (more-or-less) common design, made up of a library of functions built around simple signal-processing and synthesis routines (written as "opcodes" or unit generators). These simple opcodes are then constructed by the user into an instrument (usually through a text-based instruction file, but increasingly through a graphical interface) that defines a sound which is then "played" by a second file (called the score) which specifies notes, durations, pitches, amplitudes, and other parameters relevant to the musical informatics of the piece. Some variants of the language merge the instrument and score, though most still distinguish between control-level functions (which operate on the music) and functions that run at the sampling rate of the audio being generated (which operate on the sound). A notable exception is ChucK, which unifies audio-rate and control-rate timing into a single framework, allowing arbitrarily fine time granularity and also one mechanism to manage both. This has the advantage of more flexible and readable code as well as drawbacks of reduced system performance.
MUSIC-N and derived software are mostly available as complete self-contained programs, which can have different types of user-interfaces, from text- to GUI-based ones. In this aspect, Csound and RTcmix have since evolved to work effectively as software libraries which can be accessed through a variety of frontends and programming languages, such as C, C++, Java, Python, Tcl, Lua, Lisp, Scheme, etc., as well as other music systems such as Pure Data, Max/MSP and plugin frameworks LADSPA and VST.
A number of highly original (and to this day largely unchallenged) assumptions are implemented in MUSIC and its descendants about the best way to create sound on a computer. Many of Mathews' implementations (such as using pre-calculated arrays for waveform and envelope storage, the use of a scheduler that runs in musical time rather than at audio rate) are the norm for most hardware and software synthesis and audio DSP systems today.

## Family

MUSIC included a number of variants, e.g.:
* MUSIC was developed by Mathews on an IBM 704 at Bell Labs in 1957 (this original version was later referred to as MUSIC I)
* MUSIC II was developed by Mathews on an IBM 7094 at Bell Labs in 1958
* MUSIC III was developed by Mathews on an IBM 7090 at Bell Labs in 1960
* MUSIC IV was developed by Mathews and J. Miller on an IBM 7094 at Bell Labs in 1963
    Derivatives of MUSIC IV include:
   * MUSIC IVB was developed by G. Winham and H. Howe on an IBM 7094 at Princeton University in 1965
      * MUSIC 4BF was developed by H. Howe and G. Winham on an IBM System/360 at Princeton University in 1967
      * MUSIC 360 was developed by Barry Vercoe on an IBM System/360 at Princeton University in 1969
      * MUSIC 11 was developed by B. Vercoe, S. Haflich, R. Hale, and C. Howe on a DEC PDP-11 at MIT in 1973
      * Csound (descended from MUSIC 11 and in wide use today)
   * MUS10 was developed by J. Chowning, D. Poole, and L. Smith on a DEC PDP-10 in Stanford University 1966
* MUSIC V was developed by Mathews and J. Miller on a GE 645 in 1966 at Bell Labs
    MUSIC V was considerably augmented at IRCAM in Paris by John Gardner and Jean-Louis Richer to enable it to process digitized sounds as well as to synthesize sounds
   * CMusic was developed by F. R. Moore and D. G. Loy on a DEC VAX-11 at UCSD in 1980
   * CMIX / Real-time Cmix was developed by Paul Lansky, Brad Garton, and others on an IBM System/370 at Princeton University starting in 1982
Structured Audio Orchestra Language (SAOL) is an imperative, MUSIC-N programming language, which is part of the MPEG-4 audio standard, by Eric Scheirer
Less obviously, MUSIC can be seen as the parent program for:
* RTSKED (a later RealTime Scheduling language by Max Mathews)
* Max/MSP
* Pure Data
* AudioMulch
* SuperCollider
* JSyn
* Common Lisp Music
* ChucK
* Any other computer synthesis language that relies on a modular system (e.g. Reaktor).

## MUSIC IV

MUSIC IV was a computer music synthesis software package written by Max Mathews. The program was an expansion of earlier packages written by Mathews to produce music by direct digital computation, which could be heard by converting samples to audible sound using a digital-to-analog converter (DAC). MUSIC IV was further expanded by Godfrey Winham and Hubert Howe into MUSIC IVB, and then into MUSIC IVBF, a more portable version written in FORTRAN. It is a precursor to CSound.
MUSIC IV allows the programmer to enter a musical score as a text file and have each note played with a particular "musical instrument", which is a software algorithm. Some instruments are supplied in the package, but the programmer can supply new instruments in the form of FORTRAN code, to be compiled and called by the MUSIC IV package to generate output.
As designed, the package was not intended for real-time generation of music as is done by a modern portable electronic keyboard instrument; instead, entire songs or musical pieces are encoded and processed into a digital file on disk or tape containing the stream of samples. Prior to the advent of low-cost digital audio gear in the late 1980s, the samples were typically sent to a DAC and recorded on analog tape.