packages feed

YampaSynth-0.2: YampaSynth.cabal

name: YampaSynth
version: 0.2
cabal-Version: >= 1.6
license: BSD3
license-file: LICENSE
copyright: (c) 2007-2014 George Giorgidze and Henrik Nilsson
author: George Giorgidze and Henrik Nilsson
maintainer: George Giorgidze (giorgidze@gmail.com)
homepage: http://www-db.informatik.uni-tuebingen.de/team/giorgidze
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 (<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.

build-type: Simple

data-files: gui/YampaSynth.glade, README

source-repository head
  type:     git
  location: https://github.com/giorgidze/YampaSynth.git

flag wav
  description: Builds yampasynth-wav executable which synthesizes a MIDI music and writes result into a WAVE audio file.
  default: True

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.
  default: False

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.
  default: False

executable yampasynth-wav
  if flag (wav)
    build-depends: base < 5, array, bytestring, containers, Yampa, HCodecs >= 0.5
  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 >= 0.5
  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 >= 0.5
  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