views:

929

answers:

9

I would like to write an interactive song. It would contain state and logic. A listener/user should be able to modify some state vars using a GUI or a MIDI interface. Listener accessible vars don't have to directly represent tempo, pitch or any other music property. They would rather represent values that logic would process in order to make changes to the song.

Do I have to write such platform myself or something fitting my imagination already exists?

+5  A: 

Look at cSounds and PureData.

S.Lott
A: 

I am not sure if it covers what you are after for, but have a look at Java Sound API. For a FAQ about what it can do see here. The benefits are that is already bundled in the SDK and JRE and that is cross platform. Also, you could build the GUI using any Java toolkit.

kgiannakakis
+4  A: 

If you are happy to use Java, check out JFugue.

Dan Dyer
A: 

I don't really get what you want to do, but here is a list of some CL music software, both for composition and cognition: http://www.cliki.net/Music

Svante
+2  A: 

Have a look at Strasheela:

It's a composition system based on the programming language Oz. Learning Oz isn't easy, as it it combines the functional and the logic programming paradigm. However if you liked the SICP book, then you will probably like it too.

Strasheela treats music composition as a Constraint Statisfaction Problem (CSP), and seeks "solutions" for it. It means that the music style is defined as mathematical constraints on integer numbers (finite domain), that must be statisfied, and the built-in constraint solving system computes the solutions "automatically".

P.S.: I cannot program in Oz, but I'm on my way of learning it.

A: 

You're looking for an Audio Programming Language. Another option you should consider is Processing - used by many artists and musicians for this type of work.

Adam Davis
A: 

If it weren't for the interactive bits, I'd suggest looking at Haskore or Nyquist, both effectively being DSLs for music generation.

Definitely take a look at Alex McLean's livecoding demos, though. It's more flexible and interactive as you can possibly imagine, using SuperCollider through OpenSoundControl.

ephemient
DSL = Domain-specific language
endolith
A: 

Answer is for .NET:
I found something, checkout NAudio by Mark Heath, a great .NET music library I would say it should be contained in the BCL.

midi-dot-net is another great C# project by Tom Lokovic.

Shimmy