Programming Computers for Musical Sound

Ross Bencina
home page email
Page last updated October 2000

On the 5th of October 2000 I presented a talk about musical computer programming at Electrofringe 2000. This page provides links discussed during the talk.

Audio programming information

Irrespective of your level of expertise the music-dsp mailing list is one of the best places on the internet to ask questions and get information about musical programming. The home page provides details of how to subscribe to the music-dsp mailing list, has reviews of various music-dsp related books etc.
http://shoko.calarts.edu/~glmrboy/musicdsp/music-dsp.html

The music-dsp source code archive has free source code for many common audio processing algorithms (filters, effects etc.) donated by members of the music-dsp mailing list:
http://www.smartelectronix.com/musicdsp/

Harmony Central - Effects Explained provides good explanations of some common audio effects:
http://www.harmony-central.com/Effects/

The Linux Audio Development (LAD) Mailing List is the place to go for GNU/Linux audio hackers:
http://www.linuxdj.com/audio/lad/

Sound synthesis languages

CSound is a free "sound compiler", you write a program in the CSound language and CSound converts in into a sound file, or in real-time on some platforms. CSound is free and is available for all major operating systems and others too.
http://mitpress.mit.edu/e-books/csound/frontpage.html

SAOL is a sound programming language which is part of the MPEG-4 specification. SAOL is a language definition, not an actual implementation. There are links to a number of (free) implementations of SAOL and other documents at the SAOL home page:
http://sound.media.mit.edu/mpeg4/

SuperCollider is a real-time software synthesis programming environment for Power Macintosh computers. SuperCollider is not free, but a save-disabled demo version is available. SuperCollider is considered by many to be the state-of-the-art in software synthesis languages:
http://www.audiosynth.com/

Quasimodo is a free real-time software synthesis programming language for GNU/Linux:
http://www.quasimodo.org/

Programming libraries / extensions

JSyn is a sound synthesis library for Java. It allows users to create and control real-time audio patches by combining pre-defined unit generators.
http://www.softsynth.com/

CMIX is a collection of routines for soundfile processing and a binding for the CMIX scripting language MINC. You use CMIX by writing a soundfile processing routine in C and then controlling them from a MINC script. Built in routines for soundfile mixing are included. CMIX works on most UNIX platforms including GNU/Linux. http://www.music.princeton.edu/winham/cmix.html
MacCMix provides similar functionality on the Macintosh but is controlled by AppleScript. See: http://www.audiomulch.com/~rossb/

If you want to quickly get a real-time audio program running under Windows (Macintosh and other to follow) then consider the PortAudio portable audio library:
http://www.audiomulch.com/portaudio/

The VST2 plugin format may be used to write audio synthesis and effects plugins for many professional and shareware music programs:
http://www.steinberg.net/

Sndlib makes it easy to read and write common soundfile formats:
http://www-ccrma.stanford.edu/CCRMA/Software/sndlib/

If you need information on soundfile formats (or any other file format for that matter) wotsit.org is an excellent place to go:
http://www.wotsit.org/