James Thompson
James Thompson

Reputation: 65

Looking for an expressive audio programming language or library

I'm looking for an audio processing language or library which will allow me to experiment with different synthesis techniques. I've looked at Processing which I think is great at what it does, but haven't found any inspiring (and simple) audio libraries.

As a baseline, I want to simply create my own sample buffers and play them back (ideally in realtime). As a plus, the ability to handle MIDI events would be great. I'm an experienced C++ programmer so I could do it natively on but had hoped there was a more DSL (domain specific language) approach.

I have access to Windows, Mac or Linux so not too bothered yet about platform. Other languages I can deal with are C#, Java & Python.

Thanks

James

Upvotes: 2

Views: 2858

Answers (6)

arnaldo
arnaldo

Reputation: 894

One interesting point of SuperCollider is the usage on android devices, and it's intercommunication with python trough out other modules. Here goes an example

Upvotes: 1

Fredrik
Fredrik

Reputation: 2317

Have a look at NAudio, an open source .NET audio SDK for working with audio files and devices in Windows. Some features include:

http://naudio.codeplex.com/

NAudio Features:

Play back audio using a variety of APIs
Decompress audio from different Wave Formats
Record audio using WaveIn, WASAPI or ASIO
Read and Write standard .WAV files
Mix and manipulate audio streams using a 32 bit floating mixing engine
Extensive support for reading and writing MIDI files
Full MIDI event model
Basic support for Windows Mixer APIs
A collection of useful Windows Forms Controls
Some basic audio effects, including a compressor

Upvotes: 0

stringbot
stringbot

Reputation: 66

I've always been a big fan of SuperCollider. It's designed for Mac OS X but also works on Linux.

The language is mostly based on SmallTalk, and it's pretty easy to pick up if you understand the basics of functional programming. The quality of the sound output by the SC Server is very good and there is plenty of documentation both built into the app environment and available online.

Upvotes: 1

bloodcell
bloodcell

Reputation: 601

Max MSP is an audio production tool that is highly expressive.

I guess you could say it's a high-level tool, and not a low-level programming language. My impression of it is that it's geared towards the technical musician or the artistic engineer, but anyway it kicks ass and you could go low-level with it if you want.

Upvotes: 1

bgporter
bgporter

Reputation: 36504

Depending on how much you want to stay out of the low-level housekeeping details, you may want to look at CSound , or if you want to not actually write code, the patching-based system PureData is great to work with. As @Lou points out, ChucK is interesting (but was too buggy to use the last time I checked it out).

If you really do want to write code, look at the Synthesis Toolkit, a set of C++ classes for audio processing and synthesis.

For an app framework, I recommend JUCE, which has incredibly nice cross-platform handling of audio/midi IO and GUI elements.

Upvotes: 3

Lou Franco
Lou Franco

Reputation: 89172

I know you didn't say Ruby, but check out Archaeopteryx

https://github.com/gilesbowkett/archaeopteryx/wiki

or ChucK

http://chuck.cs.princeton.edu/

Upvotes: 0

Related Questions