The YampaSynth package
YampaSynth is a software synthesizer implemented in Yampa, domain specific language embedded in Haskell. It contains a little framework of sound generating and sound shaping modules (e.g. oscillator, amplifier, mixer, envelope generator, filter, etc.) and example applications:
yampasynth-wav is an application which synthesizes a MIDI music and writes result into a WAVE audio file.
yampasynth-openal is an application which synthesizes a MIDI music and sends audio data in real-time to a sound card. We use Haskell binding of OpenAL library as an interface to audio hardware.
yampasynth-gtk is an application with the simple graphical user interface which allows you to play a music with various instruments in real-time using the keyboard of your computer. We use Haskell binding of GTK library for GUI programming and Haskell binding of OpenAL library as an interface to audio hardware.
Software synthesizer uses the MIDI standard as a music description and the SoundFont standard as an instrument description.
Implementation is based on the paper Switched-on Yampa: Declarative Programming of Modular Synthesizers, by George Giorgidze and Henrik Nilsson (http://www.cs.nott.ac.uk/~ggg/publications/padl2008.pdf), In Proceedings of 10th International Symposium on Practical Aspects of Declarative Languages, San Francisco, CA, USA, January 7-8, 2008.
This is mainly a proof of concept, but already useful to some extent.
[Skip to Readme]
|Versions||0.0.1, 0.0.2, 0.1, 0.1.1, 0.1.2, 0.2|
|Dependencies||array, base (<5), bytestring, containers, glade, gtk, HCodecs (>=0.5), OpenAL, Yampa [details]|
|Copyright||(c) 2007-2014 George Giorgidze and Henrik Nilsson|
|Author||George Giorgidze and Henrik Nilsson|
|Maintainer||George Giorgidze (email@example.com)|
|Source repository||head: git clone https://github.com/giorgidze/YampaSynth.git|
|Uploaded||Fri May 30 00:20:40 UTC 2014 by GeorgeGiorgidze|
|Distributions||LTSHaskell:0.2, NixOS:0.2, Stackage:0.2, Tumbleweed:0.2|
|Downloads||1937 total (45 in the last 30 days)|
|Status||Docs not available [build log]
Last success reported on 2016-10-26 [all 10 reports]
Hackage Matrix CI
|wav||Builds yampasynth-wav executable which synthesizes a MIDI music and writes result into a WAVE audio file.||Enabled||Automatic|
|openal||Builds yampasynth-openal executable which synthesizes MIDI music and sends audio data in real-time to a sound card. We use Haskell binding of OpenAL library as an interface to audio hardware.||Disabled||Automatic|
|gtk||Builds yampasynth-gtk executable with simple graphical user interface which allows you to play music with various instruments in real-time using keyboard of your computer. We use Haskell binding of GTK library for GUI programming and Haskell binding of OpenAL library as an interface to audio hardware.||Disabled||Automatic|
Use -f <flag> to enable a flag, or -f -<flag> to disable that flag. More info
For package maintainers and hackage trustees