Anton Kholomiov
2013-11-01 19:02:03 UTC
Dear Haskell artists,
I'm glad to announce the new version of the library csound-expression [1]
It's a csound code generator with functional interface.
Csound is an audio programming language. It can describe synthesizers
and trigger them in real time (with midi devices or event streams) and
offline
(with list of notes). The csound compiler turns the text based description
to
audio files or real-time performance. It's very efficient but low-level.
It has more than 1500 sound processing units.
The csound-expression embedds the csound in haskell.
We can use the powerfull csound primitives and glue them
together with haskell.
All wiring is hidden with functional interface.
The instrument is a function that takes parameters and turns them
to the sound signals. We can use midi devices, event streams or
lists of notes with instruments and get the final polyphonic signal.
Then we can use this sound in another instrument or apply effects to it.
We can create sound right in ghci. Just one line to make it going:
Prelude Csound.Base> dac $ osc 440
Creates a sine wave and sends it speakers.
Prelude Csound.Base> dac $ (* 0.5) $ midi $ onMsg osc
Triggers a sine wave with a midi-device.
For more information checkout the 5-minutes guide [2].
Key features:
* tries to be simple and minimal (several lines to get the sound going)
* uses functional intrfaces
* implements all csound opcodes
* uses FRP-model to describe the event streams (merge, filter, map)
* no barrier between notes and sounds (we can trigger the
instrument with events, get the mixed sound and use it in
another instrument)
* it's safe to use. The output signal is clipped by 1, so
the value of the amplitude can not exceed the 1.
* it's open to other libraries. The list of notes is a type class
users can use their own libraries.
There is a collection of the instruments in the package
csound-catalog [3]
[1] http://hackage.haskell.org/package/csound-expression-3.0.0
[2]
https://github.com/anton-k/csound-expression/blob/master/tutorial/QuickStart.markdown
[3] http://hackage.haskell.org/package/csound-catalog-0.1
Anton
I'm glad to announce the new version of the library csound-expression [1]
It's a csound code generator with functional interface.
Csound is an audio programming language. It can describe synthesizers
and trigger them in real time (with midi devices or event streams) and
offline
(with list of notes). The csound compiler turns the text based description
to
audio files or real-time performance. It's very efficient but low-level.
It has more than 1500 sound processing units.
The csound-expression embedds the csound in haskell.
We can use the powerfull csound primitives and glue them
together with haskell.
All wiring is hidden with functional interface.
The instrument is a function that takes parameters and turns them
to the sound signals. We can use midi devices, event streams or
lists of notes with instruments and get the final polyphonic signal.
Then we can use this sound in another instrument or apply effects to it.
We can create sound right in ghci. Just one line to make it going:
Prelude Csound.Base> dac $ osc 440
Creates a sine wave and sends it speakers.
Prelude Csound.Base> dac $ (* 0.5) $ midi $ onMsg osc
Triggers a sine wave with a midi-device.
For more information checkout the 5-minutes guide [2].
Key features:
* tries to be simple and minimal (several lines to get the sound going)
* uses functional intrfaces
* implements all csound opcodes
* uses FRP-model to describe the event streams (merge, filter, map)
* no barrier between notes and sounds (we can trigger the
instrument with events, get the mixed sound and use it in
another instrument)
* it's safe to use. The output signal is clipped by 1, so
the value of the amplitude can not exceed the 1.
* it's open to other libraries. The list of notes is a type class
users can use their own libraries.
There is a collection of the instruments in the package
csound-catalog [3]
[1] http://hackage.haskell.org/package/csound-expression-3.0.0
[2]
https://github.com/anton-k/csound-expression/blob/master/tutorial/QuickStart.markdown
[3] http://hackage.haskell.org/package/csound-catalog-0.1
Anton