The YampaSynth package

[Tags: bsd3]

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:

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 (, 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.


Versions0.0.1, 0.0.2, 0.1, 0.1.1, 0.1.2, 0.2
Change logNone available
Dependenciesarray, base (<5), bytestring, containers, glade, gtk, HCodecs (>=0.5), OpenAL, Yampa
Copyright(c) 2007-2014 George Giorgidze and Henrik Nilsson
AuthorGeorge Giorgidze and Henrik Nilsson
MaintainerGeorge Giorgidze (
CategorySound, Music
Home page
Source repositoryhead: git clone
Executablesyampasynth-gtk, yampasynth-openal, yampasynth-wav
UploadedFri May 30 00:20:40 UTC 2014 by GeorgeGiorgidze
DistributionsLTSHaskell:0.2, NixOS:0.2, Stackage:0.2
Downloads1224 total (94 in last 30 days)
StatusDocs not available [build log]
Last success reported on 2015-05-18 [all 2 reports]


wavBuilds yampasynth-wav executable which synthesizes a MIDI music and writes result into a WAVE audio file.Enabled
openalBuilds 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
gtkBuilds 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

Use -f <flag> to enable a flag, or -f -<flag> to disable that flag. More info


Maintainers' corner

For package maintainers and hackage trustees