packages feed

hommage-0.0.5: doc/Sound.Hommage.Envelope.html

<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<!--Rendered using the Haskell Html Library v0.2-->
<HTML
><HEAD
  ><TITLE
    >Sound.Hommage.Envelope</TITLE
    ><LINK HREF = "haddock.css" REL = "stylesheet" TYPE = "text/css"
    ></HEAD
  ><BODY
  ><TABLE CLASS = "vanilla" CELLSPACING = "0" CELLPADDING = "0"
    ><TR
      ><TD CLASS = "topbar"
	><TABLE CLASS = "vanilla" CELLSPACING = "0" CELLPADDING = "0"
	  ><TR
	    ><TD
	      ><IMG SRC = "haskell_icon.gif" WIDTH = "16" HEIGHT = "16" ALT = " "
		></TD
	      ><TD CLASS = "title"
	      ></TD
	      ><TD CLASS = "topbut"
	      ><A HREF = "Sound.Hommage.html"
		>Parent</A
		></TD
	      ><TD CLASS = "topbut"
	      ><A HREF = "index.html"
		>Contents</A
		></TD
	      ><TD CLASS = "topbut"
	      ><A HREF = "doc-index.html"
		>Index</A
		></TD
	      ></TR
	    ></TABLE
	  ></TD
	></TR
      ><TR
      ><TD CLASS = "modulebar"
	><TABLE CLASS = "vanilla" CELLSPACING = "0" CELLPADDING = "0"
	  ><TR
	    ><TD
	      ><FONT SIZE = "6"
		>Sound.Hommage.Envelope</FONT
		></TD
	      ></TR
	    ></TABLE
	  ></TD
	></TR
      ><TR
      ><TD CLASS = "s15"
	></TD
	></TR
      ><TR
      ><TD
	><TABLE CLASS = "vanilla" CELLSPACING = "0" CELLPADDING = "0"
	  ><TR
	    ><TD CLASS = "section4"
	      ><B
		>Contents</B
		></TD
	      ></TR
	    ><TR
	    ><TD
	      ><DL
		><DT
		  ><A HREF = "#1"
		    > Env</A
		    ></DT
		  ><DT
		  ><A HREF = "#2"
		    > EnvLength</A
		    ></DT
		  ><DT
		  ><A HREF = "#3"
		    > ADSR</A
		    ></DT
		  ><DT
		  ><A HREF = "#4"
		    > Interpolate</A
		    ></DT
		  ></DL
		></TD
	      ></TR
	    ></TABLE
	  ></TD
	></TR
      ><TR
      ><TD CLASS = "s15"
	></TD
	></TR
      ><TR
      ><TD CLASS = "section1"
	>Description</TD
	></TR
      ><TR
      ><TD CLASS = "doc"
	> This module contains some functions and datatypes for envelopes.
   An envelope in generall is a kind of controll signal that modulates 
   (for example) the volume of a sound in a non-periodic way (getting
   loud at the beginning and fading out at the end...). It is
   also used to controll the duration of a sound, since (here) envelopes
   always produce finite signals.</TD
	></TR
      ><TR
      ><TD CLASS = "s15"
	></TD
	></TR
      ><TR
      ><TD CLASS = "section1"
	>Synopsis</TD
	></TR
      ><TR
      ><TD CLASS = "s15"
	></TD
	></TR
      ><TR
      ><TD CLASS = "body"
	><TABLE CLASS = "vanilla" CELLSPACING = "0" CELLPADDING = "0"
	  ><TR
	    ><TD CLASS = "decl"
	      ><SPAN CLASS = "keyword"
		>type</SPAN
		> <A HREF = "#t%3AEnv"
		>Env</A
		> = Int -&gt; [Double]</TD
	      ></TR
	    ><TR
	    ><TD CLASS = "s8"
	      ></TD
	      ></TR
	    ><TR
	    ><TD CLASS = "decl"
	      ><A HREF = "#v%3ArunEnv"
		>runEnv</A
		> :: [(<A HREF = "Sound.Hommage.Envelope.html#t%3AEnv"
		>Env</A
		>, <A HREF = "Sound.Hommage.Envelope.html#t%3AEnvLength"
		>EnvLength</A
		>)] -&gt; <A HREF = "Sound.Hommage.Envelope.html#t%3AEnv"
		>Env</A
		></TD
	      ></TR
	    ><TR
	    ><TD CLASS = "s8"
	      ></TD
	      ></TR
	    ><TR
	    ><TD CLASS = "decl"
	      ><A HREF = "#v%3A%3C%3F%3E"
		>(&lt;?&gt;)</A
		> :: (<A HREF = "Sound.Hommage.Envelope.html#t%3AIsEnv"
		>IsEnv</A
		> a) =&gt; a -&gt; <A HREF = "Sound.Hommage.Envelope.html#t%3AEnvLength"
		>EnvLength</A
		> -&gt; (<A HREF = "Sound.Hommage.Envelope.html#t%3AEnv"
		>Env</A
		>, <A HREF = "Sound.Hommage.Envelope.html#t%3AEnvLength"
		>EnvLength</A
		>)</TD
	      ></TR
	    ><TR
	    ><TD CLASS = "s8"
	      ></TD
	      ></TR
	    ><TR
	    ><TD CLASS = "decl"
	      ><SPAN CLASS = "keyword"
		>class</SPAN
		> <A HREF = "#t%3AIsEnv"
		>IsEnv</A
		> a  <SPAN CLASS = "keyword"
		>where</SPAN
		></TD
	      ></TR
	    ><TR
	    ><TD CLASS = "body"
	      ><TABLE CLASS = "vanilla" CELLSPACING = "0" CELLPADDING = "0"
		><TR
		  ><TD CLASS = "decl"
		    ><A HREF = "#v%3AtoEnv"
		      >toEnv</A
		      > :: a -&gt; <A HREF = "Sound.Hommage.Envelope.html#t%3AEnv"
		      >Env</A
		      ></TD
		    ></TR
		  ></TABLE
		></TD
	      ></TR
	    ><TR
	    ><TD CLASS = "s8"
	      ></TD
	      ></TR
	    ><TR
	    ><TD CLASS = "decl"
	      ><A HREF = "#v%3AcalculateEnvLengths"
		>calculateEnvLengths</A
		> :: Int -&gt; [<A HREF = "Sound.Hommage.Envelope.html#t%3AEnvLength"
		>EnvLength</A
		>] -&gt; [Int]</TD
	      ></TR
	    ><TR
	    ><TD CLASS = "s8"
	      ></TD
	      ></TR
	    ><TR
	    ><TD CLASS = "decl"
	      ><TABLE CLASS = "vanilla" CELLSPACING = "0" CELLPADDING = "0"
		><TR
		  ><TD CLASS = "decl"
		    ><SPAN CLASS = "keyword"
		      >data</SPAN
		      > <A HREF = "#t%3AEnvLength"
		      >EnvLength</A
		      > </TD
		    ></TR
		  ><TR
		  ><TD CLASS = "body"
		    ><TABLE CLASS = "vanilla" CELLSPACING = "0" CELLPADDING = "0"
		      ><TR
			><TD CLASS = "decl"
			  >= <A HREF = "#v%3AAbs"
			    >Abs</A
			    > Int</TD
			  ></TR
			><TR
			><TD CLASS = "decl"
			  >| <A HREF = "#v%3AAbs_"
			    >Abs_</A
			    > Int</TD
			  ></TR
			><TR
			><TD CLASS = "decl"
			  >| <A HREF = "#v%3AFlex"
			    >Flex</A
			    > Double</TD
			  ></TR
			><TR
			><TD CLASS = "decl"
			  >| <A HREF = "#v%3ARel"
			    >Rel</A
			    > (Ratio Int)</TD
			  ></TR
			><TR
			><TD CLASS = "decl"
			  >| <A HREF = "#v%3ARel_"
			    >Rel_</A
			    > (Ratio Int)</TD
			  ></TR
			></TABLE
		      ></TD
		    ></TR
		  ></TABLE
		></TD
	      ></TR
	    ><TR
	    ><TD CLASS = "s8"
	      ></TD
	      ></TR
	    ><TR
	    ><TD CLASS = "decl"
	      ><SPAN CLASS = "keyword"
		>type</SPAN
		> <A HREF = "#t%3AADSR"
		>ADSR</A
		> = (Int, Int, Double, Int)</TD
	      ></TR
	    ><TR
	    ><TD CLASS = "s8"
	      ></TD
	      ></TR
	    ><TR
	    ><TD CLASS = "decl"
	      ><TABLE CLASS = "vanilla" CELLSPACING = "0" CELLPADDING = "0"
		><TR
		  ><TD CLASS = "decl"
		    ><SPAN CLASS = "keyword"
		      >data</SPAN
		      > <A HREF = "#t%3AEnvShape"
		      >EnvShape</A
		      > </TD
		    ></TR
		  ><TR
		  ><TD CLASS = "body"
		    ><TABLE CLASS = "vanilla" CELLSPACING = "0" CELLPADDING = "0"
		      ><TR
			><TD CLASS = "decl"
			  >= <A HREF = "#v%3ALinear"
			    >Linear</A
			    ></TD
			  ></TR
			><TR
			><TD CLASS = "decl"
			  >| <A HREF = "#v%3ACosLike"
			    >CosLike</A
			    ></TD
			  ></TR
			></TABLE
		      ></TD
		    ></TR
		  ></TABLE
		></TD
	      ></TR
	    ><TR
	    ><TD CLASS = "s8"
	      ></TD
	      ></TR
	    ><TR
	    ><TD CLASS = "decl"
	      ><TABLE CLASS = "vanilla" CELLSPACING = "0" CELLPADDING = "0"
		><TR
		  ><TD CLASS = "decl"
		    ><SPAN CLASS = "keyword"
		      >data</SPAN
		      > <A HREF = "#t%3AEnvMode"
		      >EnvMode</A
		      > </TD
		    ></TR
		  ><TR
		  ><TD CLASS = "body"
		    ><TABLE CLASS = "vanilla" CELLSPACING = "0" CELLPADDING = "0"
		      ><TR
			><TD CLASS = "decl"
			  >= <A HREF = "#v%3AHoldS"
			    >HoldS</A
			    ></TD
			  ></TR
			><TR
			><TD CLASS = "decl"
			  >| <A HREF = "#v%3AFitS"
			    >FitS</A
			    ></TD
			  ></TR
			><TR
			><TD CLASS = "decl"
			  >| <A HREF = "#v%3AFitADR"
			    >FitADR</A
			    ></TD
			  ></TR
			></TABLE
		      ></TD
		    ></TR
		  ></TABLE
		></TD
	      ></TR
	    ><TR
	    ><TD CLASS = "s8"
	      ></TD
	      ></TR
	    ><TR
	    ><TD CLASS = "decl"
	      ><A HREF = "#v%3AplayADSR"
		>playADSR</A
		> :: <A HREF = "Sound.Hommage.Envelope.html#t%3AEnvMode"
		>EnvMode</A
		> -&gt; <A HREF = "Sound.Hommage.Envelope.html#t%3AEnvShape"
		>EnvShape</A
		> -&gt; <A HREF = "Sound.Hommage.Envelope.html#t%3AADSR"
		>ADSR</A
		> -&gt; Int -&gt; [Double]</TD
	      ></TR
	    ><TR
	    ><TD CLASS = "s8"
	      ></TD
	      ></TR
	    ><TR
	    ><TD CLASS = "decl"
	      ><SPAN CLASS = "keyword"
		>data</SPAN
		> <A HREF = "#t%3AInterpolate"
		>Interpolate</A
		>  = <A HREF = "#v%3AInterpolate"
		>Interpolate</A
		> <A HREF = "Sound.Hommage.Envelope.html#t%3AEnvShape"
		>EnvShape</A
		> (Double, Double)</TD
	      ></TR
	    ><TR
	    ><TD CLASS = "s8"
	      ></TD
	      ></TR
	    ><TR
	    ><TD CLASS = "decl"
	      ><SPAN CLASS = "keyword"
		>data</SPAN
		> <A HREF = "#t%3AConstant"
		>Constant</A
		>  = <A HREF = "#v%3AConstant"
		>Constant</A
		> Double</TD
	      ></TR
	    ><TR
	    ><TD CLASS = "s8"
	      ></TD
	      ></TR
	    ><TR
	    ><TD CLASS = "decl"
	      ><A HREF = "#v%3Ainterpolate"
		>interpolate</A
		> :: (Fractional a) =&gt; (a, a) -&gt; Int -&gt; [a]</TD
	      ></TR
	    ><TR
	    ><TD CLASS = "s8"
	      ></TD
	      ></TR
	    ><TR
	    ><TD CLASS = "decl"
	      ><A HREF = "#v%3Ainterpolate_cos"
		>interpolate_cos</A
		> :: (Floating a) =&gt; (a, a) -&gt; Int -&gt; [a]</TD
	      ></TR
	    ></TABLE
	  ></TD
	></TR
      ><TR
      ><TD CLASS = "s15"
	></TD
	></TR
      ><TR
      ><TD CLASS = "section1"
	>Documentation</TD
	></TR
      ><TR
      ><TD CLASS = "s15"
	></TD
	></TR
      ><TR
      ><TD CLASS = "doc"
	> An envelope is represented by a function of type <TT
	  ><A HREF = "Sound.Hommage.Envelope.html#t%3AEnv"
	    >Env</A
	    ></TT
	  >. 
   Such functions (or instances of class <TT
	  ><A HREF = "Sound.Hommage.Envelope.html#t%3AIsEnv"
	    >IsEnv</A
	    ></TT
	  >) can be combined
   into a sequence where every <TT
	  ><A HREF = "Sound.Hommage.Envelope.html#t%3AEnv"
	    >Env</A
	    ></TT
	  > is given a <TT
	  ><A HREF = "Sound.Hommage.Envelope.html#t%3AEnvLength"
	    >EnvLength</A
	    ></TT
	  > (using the
   binary operator <TT
	  ><A HREF = "Sound.Hommage.Envelope.html#v%3A%3C%3F%3E"
	    >&lt;?&gt;</A
	    ></TT
	  >.
   The whole sequence can be turnde into an <TT
	  ><A HREF = "Sound.Hommage.Envelope.html#t%3AEnv"
	    >Env</A
	    ></TT
	  > (and be played then)
   with <TT
	  ><A HREF = "Sound.Hommage.Envelope.html#v%3ArunEnv"
	    >runEnv</A
	    ></TT
	  >.</TD
	></TR
      ><TR
      ><TD CLASS = "s15"
	></TD
	></TR
      ><TR
      ><TD CLASS = "section1"
	><A NAME = "1"
	  > Env</A
	  ></TD
	></TR
      ><TR
      ><TD CLASS = "s15"
	></TD
	></TR
      ><TR
      ><TD CLASS = "decl"
	><SPAN CLASS = "keyword"
	  >type</SPAN
	  > <A NAME = "t%3AEnv"
	  ></A
	  ><B
	  >Env</B
	  > = Int -&gt; [Double]</TD
	></TR
      ><TR
      ><TD CLASS = "s15"
	></TD
	></TR
      ><TR
      ><TD CLASS = "decl"
	><A NAME = "v%3ArunEnv"
	  ></A
	  ><B
	  >runEnv</B
	  > :: [(<A HREF = "Sound.Hommage.Envelope.html#t%3AEnv"
	  >Env</A
	  >, <A HREF = "Sound.Hommage.Envelope.html#t%3AEnvLength"
	  >EnvLength</A
	  >)] -&gt; <A HREF = "Sound.Hommage.Envelope.html#t%3AEnv"
	  >Env</A
	  ></TD
	></TR
      ><TR
      ><TD CLASS = "s15"
	></TD
	></TR
      ><TR
      ><TD CLASS = "decl"
	><A NAME = "v%3A%3C%3F%3E"
	  ></A
	  ><B
	  >(&lt;?&gt;)</B
	  > :: (<A HREF = "Sound.Hommage.Envelope.html#t%3AIsEnv"
	  >IsEnv</A
	  > a) =&gt; a -&gt; <A HREF = "Sound.Hommage.Envelope.html#t%3AEnvLength"
	  >EnvLength</A
	  > -&gt; (<A HREF = "Sound.Hommage.Envelope.html#t%3AEnv"
	  >Env</A
	  >, <A HREF = "Sound.Hommage.Envelope.html#t%3AEnvLength"
	  >EnvLength</A
	  >)</TD
	></TR
      ><TR
      ><TD CLASS = "s15"
	></TD
	></TR
      ><TR
      ><TD CLASS = "decl"
	><SPAN CLASS = "keyword"
	  >class</SPAN
	  > <A NAME = "t%3AIsEnv"
	  ></A
	  ><B
	  >IsEnv</B
	  > a  <SPAN CLASS = "keyword"
	  >where</SPAN
	  ></TD
	></TR
      ><TR
      ><TD CLASS = "body"
	><TABLE CLASS = "vanilla" CELLSPACING = "0" CELLPADDING = "0"
	  ><TR
	    ><TD CLASS = "s8"
	      ></TD
	      ></TR
	    ><TR
	    ><TD CLASS = "section4"
	      >Methods</TD
	      ></TR
	    ><TR
	    ><TD CLASS = "body"
	      ><TABLE CLASS = "vanilla" CELLSPACING = "0" CELLPADDING = "0"
		><TR
		  ><TD CLASS = "decl"
		    ><A NAME = "v%3AtoEnv"
		      ></A
		      ><B
		      >toEnv</B
		      > :: a -&gt; <A HREF = "Sound.Hommage.Envelope.html#t%3AEnv"
		      >Env</A
		      ></TD
		    ></TR
		  ></TABLE
		></TD
	      ></TR
	    ><TR
	    ><TD CLASS = "s8"
	      ></TD
	      ></TR
	    ><TR
	    ><TD CLASS = "section4"
	      >Instances</TD
	      ></TR
	    ><TR
	    ><TD CLASS = "body"
	      ><TABLE CLASS = "vanilla" CELLSPACING = "1" CELLPADDING = "0"
		><TR
		  ><TD CLASS = "decl"
		    ><A HREF = "Sound.Hommage.Envelope.html#t%3AIsEnv"
		      >IsEnv</A
		      > <A HREF = "Sound.Hommage.Envelope.html#t%3AEnv"
		      >Env</A
		      ></TD
		    ></TR
		  ><TR
		  ><TD CLASS = "decl"
		    ><A HREF = "Sound.Hommage.Envelope.html#t%3AIsEnv"
		      >IsEnv</A
		      > <A HREF = "Sound.Hommage.Envelope.html#t%3AInterpolate"
		      >Interpolate</A
		      ></TD
		    ></TR
		  ><TR
		  ><TD CLASS = "decl"
		    ><A HREF = "Sound.Hommage.Envelope.html#t%3AIsEnv"
		      >IsEnv</A
		      > <A HREF = "Sound.Hommage.Envelope.html#t%3AConstant"
		      >Constant</A
		      ></TD
		    ></TR
		  ></TABLE
		></TD
	      ></TR
	    ></TABLE
	  ></TD
	></TR
      ><TR
      ><TD CLASS = "s15"
	></TD
	></TR
      ><TR
      ><TD CLASS = "section1"
	><A NAME = "2"
	  > EnvLength</A
	  ></TD
	></TR
      ><TR
      ><TD CLASS = "s15"
	></TD
	></TR
      ><TR
      ><TD CLASS = "decl"
	><A NAME = "v%3AcalculateEnvLengths"
	  ></A
	  ><B
	  >calculateEnvLengths</B
	  > :: Int -&gt; [<A HREF = "Sound.Hommage.Envelope.html#t%3AEnvLength"
	  >EnvLength</A
	  >] -&gt; [Int]</TD
	></TR
      ><TR
      ><TD CLASS = "doc"
	> Takes an absolute total length and a list of EnvLengths. Each <TT
	  ><A HREF = "Sound.Hommage.Envelope.html#t%3AEnvLength"
	    >EnvLength</A
	    ></TT
	  > is mapped
   to its length with respect to the total length and a resuming length that is
   the result of <TT
	  > total length - (all fixed lengths + all relative lengths) </TT
	  >. 
   This resuming lengths is distributed to the flexible lengths.</TD
	></TR
      ><TR
      ><TD CLASS = "s15"
	></TD
	></TR
      ><TR
      ><TD CLASS = "decl"
	><SPAN CLASS = "keyword"
	  >data</SPAN
	  > <A NAME = "t%3AEnvLength"
	  ></A
	  ><B
	  >EnvLength</B
	  > </TD
	></TR
      ><TR
      ><TD CLASS = "body"
	><TABLE CLASS = "vanilla" CELLSPACING = "0" CELLPADDING = "0"
	  ><TR
	    ><TD CLASS = "ndoc"
	      > <TT
		><A HREF = "Sound.Hommage.Envelope.html#t%3AEnvLength"
		  >EnvLength</A
		  ></TT
		> represents the length of a segment of an Envelope. </TD
	      ></TR
	    ><TR
	    ><TD CLASS = "section4"
	      >Constructors</TD
	      ></TR
	    ><TR
	    ><TD CLASS = "body"
	      ><TABLE CLASS = "vanilla" CELLSPACING = "1" CELLPADDING = "0"
		><TR
		  ><TD CLASS = "decl"
		    ><A NAME = "v%3AAbs"
		      ></A
		      ><B
		      >Abs</B
		      > Int</TD
		    ><TD CLASS = "rdoc"
		    > A fixed length.</TD
		    ></TR
		  ><TR
		  ><TD CLASS = "decl"
		    ><A NAME = "v%3AAbs_"
		      ></A
		      ><B
		      >Abs_</B
		      > Int</TD
		    ><TD CLASS = "rdoc"
		    > A fixed length that is not subtracted from the total time.</TD
		    ></TR
		  ><TR
		  ><TD CLASS = "decl"
		    ><A NAME = "v%3AFlex"
		      ></A
		      ><B
		      >Flex</B
		      > Double</TD
		    ><TD CLASS = "rdoc"
		    > A flexible length. Resuming length is distributed to all 
   flexible lengths proportionally to its value.</TD
		    ></TR
		  ><TR
		  ><TD CLASS = "decl"
		    ><A NAME = "v%3ARel"
		      ></A
		      ><B
		      >Rel</B
		      > (Ratio Int)</TD
		    ><TD CLASS = "rdoc"
		    > A length relative to the total length.</TD
		    ></TR
		  ><TR
		  ><TD CLASS = "decl"
		    ><A NAME = "v%3ARel_"
		      ></A
		      ><B
		      >Rel_</B
		      > (Ratio Int)</TD
		    ><TD CLASS = "rdoc"
		    > A relative length that is not subtracted from the total time.</TD
		    ></TR
		  ></TABLE
		></TD
	      ></TR
	    ><TR
	    ><TD CLASS = "section4"
	      >Instances</TD
	      ></TR
	    ><TR
	    ><TD CLASS = "body"
	      ><TABLE CLASS = "vanilla" CELLSPACING = "1" CELLPADDING = "0"
		><TR
		  ><TD CLASS = "decl"
		    ><A HREF = "Sound.Hommage.Sound.html#t%3ASound"
		      >Sound</A
		      > [(<A HREF = "Sound.Hommage.Envelope.html#t%3AEnv"
		      >Env</A
		      >, <A HREF = "Sound.Hommage.Envelope.html#t%3AEnvLength"
		      >EnvLength</A
		      >)]</TD
		    ></TR
		  ></TABLE
		></TD
	      ></TR
	    ></TABLE
	  ></TD
	></TR
      ><TR
      ><TD CLASS = "s15"
	></TD
	></TR
      ><TR
      ><TD CLASS = "section1"
	><A NAME = "3"
	  > ADSR</A
	  ></TD
	></TR
      ><TR
      ><TD CLASS = "s15"
	></TD
	></TR
      ><TR
      ><TD CLASS = "decl"
	><SPAN CLASS = "keyword"
	  >type</SPAN
	  > <A NAME = "t%3AADSR"
	  ></A
	  ><B
	  >ADSR</B
	  > = (Int, Int, Double, Int)</TD
	></TR
      ><TR
      ><TD CLASS = "doc"
	><P
	  > The four components of <TT
	    ><A HREF = "Sound.Hommage.Envelope.html#t%3AADSR"
	      >ADSR</A
	      ></TT
	    > are:</P
	  ><UL
	  ><LI
	    > Attack (time to reach value 1.0, starting from 0.0)</LI
	    ><LI
	    > Decay (time to reach sustain level)</LI
	    ><LI
	    > Sustain (level to hold until note is released, should be a value between 0.0 and 1.0)</LI
	    ><LI
	    > Release (time to reach value 0.0 after note is released)</LI
	    ></UL
	  ><P
	  > time is measured in sample points, 44100 is one second.</P
	  ></TD
	></TR
      ><TR
      ><TD CLASS = "s15"
	></TD
	></TR
      ><TR
      ><TD CLASS = "decl"
	><SPAN CLASS = "keyword"
	  >data</SPAN
	  > <A NAME = "t%3AEnvShape"
	  ></A
	  ><B
	  >EnvShape</B
	  > </TD
	></TR
      ><TR
      ><TD CLASS = "body"
	><TABLE CLASS = "vanilla" CELLSPACING = "0" CELLPADDING = "0"
	  ><TR
	    ><TD CLASS = "ndoc"
	      > A linear or a cosinus-like shape</TD
	      ></TR
	    ><TR
	    ><TD CLASS = "section4"
	      >Constructors</TD
	      ></TR
	    ><TR
	    ><TD CLASS = "body"
	      ><TABLE CLASS = "vanilla" CELLSPACING = "1" CELLPADDING = "0"
		><TR
		  ><TD CLASS = "decl"
		    ><A NAME = "v%3ALinear"
		      ></A
		      ><B
		      >Linear</B
		      ></TD
		    ><TD CLASS = "rdoc"
		    ></TD
		    ></TR
		  ><TR
		  ><TD CLASS = "decl"
		    ><A NAME = "v%3ACosLike"
		      ></A
		      ><B
		      >CosLike</B
		      ></TD
		    ><TD CLASS = "rdoc"
		    ></TD
		    ></TR
		  ></TABLE
		></TD
	      ></TR
	    ><TR
	    ><TD CLASS = "section4"
	      >Instances</TD
	      ></TR
	    ><TR
	    ><TD CLASS = "body"
	      ><TABLE CLASS = "vanilla" CELLSPACING = "1" CELLPADDING = "0"
		><TR
		  ><TD CLASS = "decl"
		    >Eq <A HREF = "Sound.Hommage.Envelope.html#t%3AEnvShape"
		      >EnvShape</A
		      ></TD
		    ></TR
		  ><TR
		  ><TD CLASS = "decl"
		    >Read <A HREF = "Sound.Hommage.Envelope.html#t%3AEnvShape"
		      >EnvShape</A
		      ></TD
		    ></TR
		  ><TR
		  ><TD CLASS = "decl"
		    >Show <A HREF = "Sound.Hommage.Envelope.html#t%3AEnvShape"
		      >EnvShape</A
		      ></TD
		    ></TR
		  ></TABLE
		></TD
	      ></TR
	    ></TABLE
	  ></TD
	></TR
      ><TR
      ><TD CLASS = "s15"
	></TD
	></TR
      ><TR
      ><TD CLASS = "decl"
	><SPAN CLASS = "keyword"
	  >data</SPAN
	  > <A NAME = "t%3AEnvMode"
	  ></A
	  ><B
	  >EnvMode</B
	  > </TD
	></TR
      ><TR
      ><TD CLASS = "body"
	><TABLE CLASS = "vanilla" CELLSPACING = "0" CELLPADDING = "0"
	  ><TR
	    ><TD CLASS = "section4"
	      >Constructors</TD
	      ></TR
	    ><TR
	    ><TD CLASS = "body"
	      ><TABLE CLASS = "vanilla" CELLSPACING = "1" CELLPADDING = "0"
		><TR
		  ><TD CLASS = "decl"
		    ><A NAME = "v%3AHoldS"
		      ></A
		      ><B
		      >HoldS</B
		      ></TD
		    ><TD CLASS = "rdoc"
		    > Sustain value is kept until duration is over, Release part is appended.</TD
		    ></TR
		  ><TR
		  ><TD CLASS = "decl"
		    ><A NAME = "v%3AFitS"
		      ></A
		      ><B
		      >FitS</B
		      ></TD
		    ><TD CLASS = "rdoc"
		    > Envelope has given duration by fitting only duration of constant Sustain level.</TD
		    ></TR
		  ><TR
		  ><TD CLASS = "decl"
		    ><A NAME = "v%3AFitADR"
		      ></A
		      ><B
		      >FitADR</B
		      ></TD
		    ><TD CLASS = "rdoc"
		    > Attack, Decay and Released are together stretched to given duration.</TD
		    ></TR
		  ></TABLE
		></TD
	      ></TR
	    ><TR
	    ><TD CLASS = "section4"
	      >Instances</TD
	      ></TR
	    ><TR
	    ><TD CLASS = "body"
	      ><TABLE CLASS = "vanilla" CELLSPACING = "1" CELLPADDING = "0"
		><TR
		  ><TD CLASS = "decl"
		    >Eq <A HREF = "Sound.Hommage.Envelope.html#t%3AEnvMode"
		      >EnvMode</A
		      ></TD
		    ></TR
		  ><TR
		  ><TD CLASS = "decl"
		    >Read <A HREF = "Sound.Hommage.Envelope.html#t%3AEnvMode"
		      >EnvMode</A
		      ></TD
		    ></TR
		  ><TR
		  ><TD CLASS = "decl"
		    >Show <A HREF = "Sound.Hommage.Envelope.html#t%3AEnvMode"
		      >EnvMode</A
		      ></TD
		    ></TR
		  ></TABLE
		></TD
	      ></TR
	    ></TABLE
	  ></TD
	></TR
      ><TR
      ><TD CLASS = "s15"
	></TD
	></TR
      ><TR
      ><TD CLASS = "decl"
	><A NAME = "v%3AplayADSR"
	  ></A
	  ><B
	  >playADSR</B
	  > :: <A HREF = "Sound.Hommage.Envelope.html#t%3AEnvMode"
	  >EnvMode</A
	  > -&gt; <A HREF = "Sound.Hommage.Envelope.html#t%3AEnvShape"
	  >EnvShape</A
	  > -&gt; <A HREF = "Sound.Hommage.Envelope.html#t%3AADSR"
	  >ADSR</A
	  > -&gt; Int -&gt; [Double]</TD
	></TR
      ><TR
      ><TD CLASS = "doc"
	> Playing an ADSR</TD
	></TR
      ><TR
      ><TD CLASS = "s15"
	></TD
	></TR
      ><TR
      ><TD CLASS = "doc"
	><P
	  > Here is the code of <TT
	    ><A HREF = "Sound.Hommage.Envelope.html#v%3AplayADSR"
	      >playADSR</A
	      ></TT
	    > to show the use of <TT
	    ><A HREF = "Sound.Hommage.Envelope.html#t%3AEnv"
	      >Env</A
	      ></TT
	    >, <TT
	    ><A HREF = "Sound.Hommage.Envelope.html#v%3A%3C%3F%3E"
	      >&lt;?&gt;</A
	      ></TT
	    > and <TT
	    ><A HREF = "Sound.Hommage.Envelope.html#t%3AEnvLength"
	      >EnvLength</A
	      ></TT
	    >:</P
	  ><PRE
	  > playADSR :: EnvMode -&gt; EnvShape -&gt; ADSR -&gt; Int -&gt; [Double]
 playADSR mode shape (a,d,s,r) = case mode of
  FitADR -&gt; runEnv
            [ Interpolate shape (0.0,1.0) &lt;?&gt; Flex (fromIntegral a)
            , Interpolate shape (1.0, s) &lt;?&gt; Flex (fromIntegral d)
            , Interpolate shape (s, 0.0) &lt;?&gt; Flex (fromIntegral r)
            ]
  FitS   -&gt; runEnv
            [ Interpolate shape (0.0,1.0) &lt;?&gt; Abs a
            , Interpolate shape (1.0, s) &lt;?&gt; Abs d
            , Constant s &lt;?&gt; Flex 1.0
            , Interpolate shape (s, 0.0) &lt;?&gt; Abs r
            ]
  HoldS  -&gt; runEnv
            [ Interpolate shape (0.0,1.0) &lt;?&gt; Abs a
            , Interpolate shape (1.0, s) &lt;?&gt; Abs d
            , Constant s &lt;?&gt; Flex 1.0
            , Interpolate shape (s, 0.0) &lt;?&gt; Abs_ r
            ]</PRE
	  ></TD
	></TR
      ><TR
      ><TD CLASS = "s15"
	></TD
	></TR
      ><TR
      ><TD CLASS = "section1"
	><A NAME = "4"
	  > Interpolate</A
	  ></TD
	></TR
      ><TR
      ><TD CLASS = "s15"
	></TD
	></TR
      ><TR
      ><TD CLASS = "decl"
	><SPAN CLASS = "keyword"
	  >data</SPAN
	  > <A NAME = "t%3AInterpolate"
	  ></A
	  ><B
	  >Interpolate</B
	  > </TD
	></TR
      ><TR
      ><TD CLASS = "body"
	><TABLE CLASS = "vanilla" CELLSPACING = "0" CELLPADDING = "0"
	  ><TR
	    ><TD CLASS = "section4"
	      >Constructors</TD
	      ></TR
	    ><TR
	    ><TD CLASS = "body"
	      ><TABLE CLASS = "vanilla" CELLSPACING = "1" CELLPADDING = "0"
		><TR
		  ><TD CLASS = "decl"
		    ><A NAME = "v%3AInterpolate"
		      ></A
		      ><B
		      >Interpolate</B
		      > <A HREF = "Sound.Hommage.Envelope.html#t%3AEnvShape"
		      >EnvShape</A
		      > (Double, Double)</TD
		    ><TD CLASS = "rdoc"
		    ></TD
		    ></TR
		  ></TABLE
		></TD
	      ></TR
	    ><TR
	    ><TD CLASS = "section4"
	      >Instances</TD
	      ></TR
	    ><TR
	    ><TD CLASS = "body"
	      ><TABLE CLASS = "vanilla" CELLSPACING = "1" CELLPADDING = "0"
		><TR
		  ><TD CLASS = "decl"
		    ><A HREF = "Sound.Hommage.Envelope.html#t%3AIsEnv"
		      >IsEnv</A
		      > <A HREF = "Sound.Hommage.Envelope.html#t%3AInterpolate"
		      >Interpolate</A
		      ></TD
		    ></TR
		  ><TR
		  ><TD CLASS = "decl"
		    ><A HREF = "Sound.Hommage.Sound.html#t%3ASound"
		      >Sound</A
		      > <A HREF = "Sound.Hommage.Envelope.html#t%3AInterpolate"
		      >Interpolate</A
		      ></TD
		    ></TR
		  ></TABLE
		></TD
	      ></TR
	    ></TABLE
	  ></TD
	></TR
      ><TR
      ><TD CLASS = "s15"
	></TD
	></TR
      ><TR
      ><TD CLASS = "decl"
	><SPAN CLASS = "keyword"
	  >data</SPAN
	  > <A NAME = "t%3AConstant"
	  ></A
	  ><B
	  >Constant</B
	  > </TD
	></TR
      ><TR
      ><TD CLASS = "body"
	><TABLE CLASS = "vanilla" CELLSPACING = "0" CELLPADDING = "0"
	  ><TR
	    ><TD CLASS = "section4"
	      >Constructors</TD
	      ></TR
	    ><TR
	    ><TD CLASS = "body"
	      ><TABLE CLASS = "vanilla" CELLSPACING = "1" CELLPADDING = "0"
		><TR
		  ><TD CLASS = "decl"
		    ><A NAME = "v%3AConstant"
		      ></A
		      ><B
		      >Constant</B
		      > Double</TD
		    ><TD CLASS = "rdoc"
		    ></TD
		    ></TR
		  ></TABLE
		></TD
	      ></TR
	    ><TR
	    ><TD CLASS = "section4"
	      >Instances</TD
	      ></TR
	    ><TR
	    ><TD CLASS = "body"
	      ><TABLE CLASS = "vanilla" CELLSPACING = "1" CELLPADDING = "0"
		><TR
		  ><TD CLASS = "decl"
		    ><A HREF = "Sound.Hommage.Envelope.html#t%3AIsEnv"
		      >IsEnv</A
		      > <A HREF = "Sound.Hommage.Envelope.html#t%3AConstant"
		      >Constant</A
		      ></TD
		    ></TR
		  ></TABLE
		></TD
	      ></TR
	    ></TABLE
	  ></TD
	></TR
      ><TR
      ><TD CLASS = "s15"
	></TD
	></TR
      ><TR
      ><TD CLASS = "decl"
	><A NAME = "v%3Ainterpolate"
	  ></A
	  ><B
	  >interpolate</B
	  > :: (Fractional a) =&gt; (a, a) -&gt; Int -&gt; [a]</TD
	></TR
      ><TR
      ><TD CLASS = "doc"
	> produces a line with given length that starts with fst value and ends with snd value</TD
	></TR
      ><TR
      ><TD CLASS = "s15"
	></TD
	></TR
      ><TR
      ><TD CLASS = "decl"
	><A NAME = "v%3Ainterpolate_cos"
	  ></A
	  ><B
	  >interpolate_cos</B
	  > :: (Floating a) =&gt; (a, a) -&gt; Int -&gt; [a]</TD
	></TR
      ><TR
      ><TD CLASS = "doc"
	> produces a curve with given length that starts with fst value and ends with snd value. 
   this curve has the shape of a half cosinus curve (values for 0 to PI).</TD
	></TR
      ><TR
      ><TD CLASS = "s15"
	></TD
	></TR
      ><TR
      ><TD CLASS = "botbar"
	>Produced by <A HREF = "http://www.haskell.org/haddock/"
	  >Haddock</A
	  > version HADDOCK_VERSION</TD
	></TR
      ></TABLE
    ></BODY
  ></HTML
>