name: YampaSynth version: 0.1.2 cabal-Version: >= 1.2 license: BSD3 license-file: LICENSE copyright: (c) 2007-2010 George Giorgidze and Henrik Nilsson author: George Giorgidze and Henrik Nilsson maintainer: George Giorgidze (GGG at CS dot NOTT dot AC dot UK) homepage: http://www.cs.nott.ac.uk/~ggg/ stability: experimental category: Sound, Music synopsis: Software synthesizer description: 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 (), 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. build-type: Simple data-files: gui/YampaSynth.glade, README flag wav description: Builds yampasynth-wav executable which synthesizes a MIDI music and writes result into a WAVE audio file. flag openal description: 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. flag gtk description: 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. executable yampasynth-wav if flag (wav) build-depends: base < 5, array, bytestring, containers, Yampa, HCodecs else buildable: False hs-source-dirs: src main-is: Main/Wav.hs other-modules: SynthBasics, SynthParams, MidiSynth, Player.Wav ghc-options: -O3 -Wall executable yampasynth-openal if flag (openal) build-Depends: base < 5, array, containers, OpenAL, Yampa, HCodecs else buildable: False extensions: FlexibleInstances, UndecidableInstances hs-source-dirs: src main-is: Main/OpenAL.hs other-modules: SynthBasics, SynthParams, MidiSynth, Player.OpenAL ghc-options: -threaded -O3 -Wall executable yampasynth-gtk if flag (gtk) build-Depends: base < 5, array, containers, OpenAL, glade, gtk, Yampa, HCodecs else buildable: False extensions: FlexibleInstances, UndecidableInstances hs-source-dirs: src main-is: Main/Gtk.hs other-modules: SynthBasics, SynthParams, MidiSynth, Player.OpenAL, Player.Gtk ghc-options: -threaded -O3 -Wall