A great resource for open-source audio software and libraries (quite a bit of which are cross-platform Linux/MacOS/Windows) is http://linux-sound.org
Here are some highlights:
http://ardour.org/ (linux and macos, GPL)
quote:
Ardour is a digital audio workstation. You can use it to record, edit and mix multi-track audio. Produce your own CD's. Mix video soundtracks. Experiment with new ideas about music and sound. Generate sound installations for 12 speaker gallery shows. Have Fun.
Ardour capabilities include: multichannel recording, non-linear, non-destructive region based editing with unlimited undo/redo, full automation support, a mixer whose capabilities rival high end hardware consoles, lots of plugins to warp, shift and shape your music, and controllable from hardware control surfaces at the same time as it syncs to timecode. If you've been looking for a tool similar to ProTools, Nuendo, Cubase SX, Digital Performer, Samplitude or Sequoia, you might have found it.
http://supercollider.sourceforge.net/ (linux and macos, GPL)
quote:
SuperCollider is a state of the art, realtime sound synthesis server as well as an interpreted Object Oriented language which is based on Smalltalk but with C language family syntax. The language functions as a network client to the sound synthesis server.
http://ccrma.stanford.edu/software/stk/ (linux, macos and windows, free for non-commercial use open source) The Synthesis Toolkit contains synthesis building blocks as c++ classes, and many physical models of musical instruments (emulating an instrument with maths).
http://freesoftware.ircam.fr/rubrique.php3?id_rubrique=14 (unix, macos, windows, GPL)
quote:
jMax is a visual programming environment for building interactive real-time music and multimedia applications. jMax is a new implementation of the MAX software written originally by Miller Puckette at Ircam. The name MAX is an homage to Max Matthews, one of the fathers of computer music.
The MAX concepts
MAX reuses the patchable modular analog synthesizer metaphor. You build patches by placing modules on a graphic surface and connecting these modules together with patch cords. The connections represent paths on which values or signal streams are send between the modules. These modules are either processing units (arithmetics, timing, ...), data containers (tables, ...), system inputs and outputs (audio, MIDI, ...).