Personal tools

Yampa

From HaskellWiki

(Difference between revisions)
Jump to: navigation, search
(Category:Music)
(use HackagePackage template)
Line 3: Line 3:
 
Yampa was originally developed by the [http://haskell.cs.yale.edu/ Yale Haskell Group] based on the original idea of [http://www.conal.net Conal Elliott's] [[Fran]].
 
Yampa was originally developed by the [http://haskell.cs.yale.edu/ Yale Haskell Group] based on the original idea of [http://www.conal.net Conal Elliott's] [[Fran]].
   
'''[https://github.com/eamsden/Animas Download Animas]''' (most up to date Yampa fork, or [http://hackage.haskell.org/cgi-bin/hackage-scripts/package/Yampa download original Yampa])
+
'''[https://github.com/eamsden/Animas Download Animas]''' (most up to date Yampa fork, or download original {{HackagePackage|id=Yampa}})
   
 
== Introduction ==
 
== Introduction ==
Line 67: Line 67:
 
== Known users ==
 
== Known users ==
 
 
* [http://hackage.haskell.org/cgi-bin/hackage-scripts/package/YampaSynth YampaSynth] - is a software synthesizer implemented in Haskell using Yampa. It contains a framework of sound generating and sound shaping modules (e.g. oscillator, amplifier, mixer, envelope generator, filter, etc.) and example applications.
+
* {{HackagePackage|id=YampaSynth}} - is a software synthesizer implemented in Haskell using Yampa. It contains a framework of sound generating and sound shaping modules (e.g. oscillator, amplifier, mixer, envelope generator, filter, etc.) and example applications.
 
* [http://www.haskell.org/haskellwiki/Frag Frag]; a simple Quake 3 clone, using a very early version of Yampa called arrowized functional reactive programming (AFRP)
 
* [http://www.haskell.org/haskellwiki/Frag Frag]; a simple Quake 3 clone, using a very early version of Yampa called arrowized functional reactive programming (AFRP)
* [http://hackage.haskell.org/cgi-bin/hackage-scripts/package/SpaceInvaders Space Invaders]; a video game, demonstrating the usage of Yampa
+
* {{HackagePackage|id=SpaceInvaders}}; a video game, demonstrating the usage of Yampa
 
* [http://haskell.cs.yale.edu/?page_id=376 Nettle] - Programming Network Routers
 
* [http://haskell.cs.yale.edu/?page_id=376 Nettle] - Programming Network Routers
 
* [http://haskell.cs.yale.edu/?page_id=103 Euterpea] - computer music development (also uses [[CCA]])
 
* [http://haskell.cs.yale.edu/?page_id=103 Euterpea] - computer music development (also uses [[CCA]])

Revision as of 07:23, 17 July 2011

Yampa is a domain-specific embedded language for the programming of hybrid (discrete and continuous time) systems using the concepts of Functional Reactive Programming (FRP). Yampa is structured using Arrows, which greatly reduce the chance of introducing space- and time-leaks into reactive, time-varying systems.

Yampa was originally developed by the Yale Haskell Group based on the original idea of Conal Elliott's Fran.

Download Animas (most up to date Yampa fork, or download original Yampa)

Contents

1 Introduction

2 Primitive signal functions

Yampa signal functions.png

(download original Image:Yampa signal functions.svg‎)

3 Switches

Each switch comes in two different flavors:

  1. immediate: switch to the new behaviour immediately and also calculate the return value based on the new behaviour.
  2. delayed: return the value based on the old behaviour, but use the new behaviour afterwards. To use delayed switch prefix the switching functions with the letter 'd', f.e. 'drpSwitchB'.

4 Reactimation

5 External Links

6 Known users

  • YampaSynth - is a software synthesizer implemented in Haskell using Yampa. It contains a framework of sound generating and sound shaping modules (e.g. oscillator, amplifier, mixer, envelope generator, filter, etc.) and example applications.
  • Frag; a simple Quake 3 clone, using a very early version of Yampa called arrowized functional reactive programming (AFRP)
  • SpaceInvaders; a video game, demonstrating the usage of Yampa
  • Nettle - Programming Network Routers
  • Euterpea - computer music development (also uses CCA)

7 Known forks