The csound-expression package
Let's make music with text! We can use Csound to describe our music. Csound has so many fantastic sound generators. It's very efficient. But sometimes Csound is too low level. So many details: integer identifiers for instruments and arrays, should I use control rate or audio rate signals, lack of abstractions, no nested expressions and it has limited set of types. This library embeds Csound in Haskell. We can use powerful Csound's primitives and glue them together with Haskell abstractions. The module Csound.Base exports all types and functions.
Overview of the library http://github.com/anton-k/csound-expression/blob/master/tutorial/Overview.markdown
Introduction to Csound and library for Haskell users http://github.com/anton-k/csound-expression/blob/master/tutorial/CsoundInstro.markdown
There are examples in the source code archive http://github.com/anton-k/csound-expression/tree/master/examples.
Keep it simple and compact (as functional as possible).
Make it open (No dependency on Score-generation libraries. Score (or list of events) is represented with type class. You can use your favorite Score-generation library if you provide an instance for the CsdSco type class. Currently there is support for temporal-music-notation library (see temporal-csound package).
How to install (for Csound and Haskell users)
To use the library we need:
GHC - haskell compiler. This library uses GHC-specific features (www.haskell.org/ghc).
cabal-install to install haskell packages (www.haskell.org/cabal).
Csound compiler (version 5.13 or higher). You must get it installed on your system. Since we are going to generate the csound code we need to compile it to sound somehow. We can find out how to install the Csound on www.csounds.com. To test whether csound is installed open the command line and type:
It should print a long message with version and available flags and libraries.
If everything is installed to install the library we can open the command line terminal and type:
cabal install csound-expression
Acknowledgements (I'd like to mention those who supported me a lot with their music and ideas):
music: entertainment for the braindead, annsannat & alizbar, toe, iamthemorning, atoms for piece / radiohead, loscil, boards of canada, Hozan Yamamoto, Tony Scott and Shinichi Yuize.
ideas: Conal Elliott, Oleg Kiselyov, Paul Hudak, Gabriel Gonzalez, Rich Hickey and Csound's community.
For package maintainers and hackage trustees