packages feed

synthesizer-dimensional 0.5 → 0.5.1

raw patch · 27 files changed

+197/−129 lines, 27 filesdep +explicit-exceptiondep −binarydep −process

Dependencies added: explicit-exception

Dependencies removed: binary, process

Files

src/Synthesizer/Dimensional/Amplitude/Analysis.hs view
@@ -53,7 +53,7 @@ import qualified Algebra.Additive            as Additive  -import NumericPrelude.Base (Ord, Bool, (<=), ($), (.), uncurry, error, )+import NumericPrelude.Base (Ord, Bool, (<=), ($), uncurry, ) -- import NumericPrelude.Numeric import qualified Prelude as P 
src/Synthesizer/Dimensional/Amplitude/Displacement.hs view
@@ -34,11 +34,8 @@ import qualified Algebra.Transcendental as Trans import qualified Algebra.Module         as Module import qualified Algebra.Field          as Field-import qualified Algebra.Absolute           as Absolute+import qualified Algebra.Absolute       as Absolute import qualified Algebra.Ring           as Ring-import qualified Algebra.Additive       as Additive--import Algebra.Module ((*>))  import qualified Data.List as List 
+ src/Synthesizer/Dimensional/Causal/Analysis.hs view
@@ -0,0 +1,56 @@+{- |+Copyright   :  (c) Henning Thielemann 2011+License     :  GPL++Maintainer  :  synthesizer@henning-thielemann.de+Stability   :  provisional+Portability :  requires multi-parameter type classes+-}+module Synthesizer.Dimensional.Causal.Analysis (+   deltaSigmaModulationPositive,+   ) where++import qualified Synthesizer.Causal.Analysis as Ana+import qualified Synthesizer.Causal.Filter.NonRecursive as FiltNR++import qualified Synthesizer.Dimensional.Process as Proc+import qualified Synthesizer.Dimensional.Sample as Sample+import qualified Synthesizer.Dimensional.Amplitude as Amp++import qualified Synthesizer.Dimensional.Causal.Process as CausalD++import qualified Number.DimensionTerm        as DN+import qualified Algebra.DimensionTerm       as Dim+import Number.DimensionTerm ((&*&), )++import qualified Algebra.Field          as Field+import qualified Algebra.RealRing       as RealRing++import Control.Arrow (second, (<<<), )++import NumericPrelude.Base+-- import NumericPrelude.Numeric+import Prelude ()+++type DNS v y yv = Sample.Dimensional v y yv++++deltaSigmaModulationPositive ::+   (RealRing.C a, Field.C a, Dim.C u, Dim.C v) =>+   Proc.T s u a (CausalD.T s (DNS (Dim.Mul u v) a a, DNS v a a) (DNS v a a))+deltaSigmaModulationPositive =+   flip fmap Proc.getSampleRate $ \rate ->+      CausalD.consFlip $ \ (Amp.Numeric thresholdAmp, Amp.Numeric inputAmp) ->+         let targetAmp =+                DN.rewriteDimension+                   (Dim.identityLeft .+                    Dim.applyLeftMul Dim.cancelLeft .+                    Dim.associateLeft) $+                rate &*& thresholdAmp+             ampRatio = DN.divToScalar inputAmp targetAmp+         in  (Amp.Numeric targetAmp,+              Ana.deltaSigmaModulationPositive+              <<<+              second (FiltNR.amplify ampRatio))
src/Synthesizer/Dimensional/Causal/ControlledProcess.hs view
@@ -53,7 +53,6 @@ module Synthesizer.Dimensional.Causal.ControlledProcess where  import qualified Synthesizer.Dimensional.Sample as Sample-import Synthesizer.Dimensional.Sample (Amplitude, Displacement, ) import Synthesizer.Dimensional.Causal.Process ((<<<), )  import qualified Synthesizer.Dimensional.Process as Proc@@ -76,9 +75,6 @@ -- import Number.DimensionTerm ((*&), ) -- ((&*&), (&/&))  import qualified Algebra.RealField      as RealField--- import qualified Algebra.Field          as Field--- import qualified Algebra.Ring           as Ring-import qualified Algebra.Additive       as Additive  import Data.Tuple.HT (swap, ) import Control.Applicative (liftA2, )
src/Synthesizer/Dimensional/Causal/Filter.hs view
@@ -128,7 +128,7 @@ import qualified Number.DimensionTerm        as DN import qualified Algebra.DimensionTerm       as Dim -import Number.DimensionTerm ((&*&), (&/&))+import Number.DimensionTerm ((&*&), )  import qualified Number.NonNegative     as NonNeg @@ -733,7 +733,5 @@    flip fmap Proc.getSampleRate $ \rate ->       CausalD.consFlip $ \ (Amp.Numeric amp) ->          (Amp.Numeric $-          DN.rewriteDimension-              (Dim.commute . Dim.applyRightMul Dim.invertRecip) $-          amp &/& rate,+          DN.unrecip rate &*& amp,           Integrate.causal)
src/Synthesizer/Dimensional/Causal/Oscillator.hs view
@@ -58,10 +58,8 @@  import qualified Number.DimensionTerm        as DN import qualified Algebra.DimensionTerm       as Dim--- import Number.DimensionTerm ((&*&))  import qualified Algebra.RealField          as RealField-import qualified Algebra.Ring               as Ring  import NumericPrelude.Numeric import NumericPrelude.Base as P
src/Synthesizer/Dimensional/Causal/Oscillator/Core.hs view
@@ -31,7 +31,7 @@ -- import qualified Algebra.Ring               as Ring  -- import NumericPrelude.Numeric-import NumericPrelude.Base as P+-- import NumericPrelude.Base as P   type Frequency u t = Amp.Numeric (DN.T (Dim.Recip u) t)
src/Synthesizer/Dimensional/ChunkySize/Signal.hs view
@@ -11,7 +11,6 @@    store, length,    ) where --- import qualified Synthesizer.Dimensional.Process as Proc import qualified Synthesizer.Dimensional.Rate as Rate import qualified Synthesizer.Dimensional.Amplitude as Amp import qualified Synthesizer.Dimensional.Signal.Private as SigA@@ -21,19 +20,6 @@ import qualified Synthesizer.ChunkySize.Signal as SigC  import qualified Synthesizer.State.Signal as Sig---- import qualified Number.DimensionTerm        as DN--- import qualified Algebra.DimensionTerm       as Dim---- import qualified Number.NonNegative     as NonNeg---- import qualified Algebra.RealRing      as RealRing--- import qualified Algebra.Field          as Field----- import NumericPrelude.Numeric hiding (negate)--- import NumericPrelude.Base as P-import Prelude hiding (splitAt, take, drop, length, )   type Signal s amp sig =
src/Synthesizer/Dimensional/Cyclic/Analysis.hs view
@@ -1,5 +1,6 @@+{-# LANGUAGE FlexibleContexts #-} {- |-Copyright   :  (c) Henning Thielemann 2008-2009+Copyright   :  (c) Henning Thielemann 2008-2011 License     :  GPL  Maintainer  :  synthesizer@henning-thielemann.de@@ -10,11 +11,10 @@     toFrequencySpectrum, fromFrequencySpectrum,   ) where +import qualified Synthesizer.Generic.Fourier as FourierG+import qualified Synthesizer.Generic.Signal as SigG import qualified Synthesizer.Generic.Cut as CutG -import qualified Synthesizer.State.Analysis as Ana-import qualified Synthesizer.State.Signal   as Sig- import qualified Synthesizer.Dimensional.Rate                 as Rate import qualified Synthesizer.Dimensional.Amplitude            as Amp import qualified Synthesizer.Dimensional.Signal.Private       as SigA@@ -31,9 +31,9 @@ import qualified Algebra.Field               as Field  -import NumericPrelude.Base ((.), )-import NumericPrelude.Numeric ((+), negate, (/), fromIntegral, pi, )-import Prelude (Int, )+import NumericPrelude.Base ((.), ($), )+import NumericPrelude.Numeric (fromIntegral, )+import Prelude ()   {- * Positions -}@@ -58,20 +58,19 @@ Fourier analysis -} {-# INLINE toFrequencySpectrum #-}-toFrequencySpectrum :: (Trans.C q, Dim.C u, Dim.C v) =>-   SigA.T (Rate.Dimensional u q) (Amp.Dimensional v q) (SigC.T (Sig.T (Complex.T q))) ->-   SigA.T (Rate.Dimensional (Dim.Recip u) q) (Amp.Dimensional (Dim.Mul u v) q) (SigC.T (Sig.T (Complex.T q)))+toFrequencySpectrum ::+   (Trans.C q, Dim.C u, Dim.C v,+    SigG.Transform sig (Complex.T q)) =>+   SigA.T (Rate.Dimensional u q) (Amp.Dimensional v q) (SigC.T (sig (Complex.T q))) ->+   SigA.T (Rate.Dimensional (Dim.Recip u) q) (Amp.Dimensional (Dim.Mul u v) q) (SigC.T (sig (Complex.T q))) toFrequencySpectrum x =    let len = DN.rewriteDimension Dim.doubleRecip (period x)        amp = SigA.actualAmplitude x-       ss  = SigC.toPeriod (SigA.body x)-       n   = Sig.length ss-       z = Complex.cis (negate (pi+pi) / fromIntegral n)        newAmp = DN.unrecip (SigA.actualSampleRate x) &*& amp    in  SigA.Cons           (Rate.Actual len)           (Amp.Numeric newAmp)-          (SigC.Cons (Sig.take n (Ana.chirpTransform z ss)))+          (SigC.Cons $ FourierG.transformBackward $ SigC.toPeriod $ SigA.body x) {- toFrequencySpectrum $ SigP.Cons (DN.frequency (4::Prelude.Double)) (SigA.Cons (DN.voltage (1::Prelude.Double)) (SigC.Cons [1, 0 Number.Complex.+: (1::Prelude.Double), -1, 0 Number.Complex.+: (-1)])) toFrequencySpectrum $ SigP.Cons (DN.frequency (4::Prelude.Double)) (SigA.Cons (DN.voltage (1::Prelude.Double)) (SigC.Cons [0 Number.Complex.+: (1::Prelude.Double), -1, 0 Number.Complex.+: (-1), 1]))@@ -83,20 +82,20 @@ Fourier synthesis -} {-# INLINE fromFrequencySpectrum #-}-fromFrequencySpectrum :: (Trans.C q, Dim.C u, Dim.C v) =>-   SigA.T (Rate.Dimensional (Dim.Recip u) q) (Amp.Dimensional (Dim.Mul u v) q) (SigC.T (Sig.T (Complex.T q))) ->-   SigA.T (Rate.Dimensional u q) (Amp.Dimensional v q) (SigC.T (Sig.T (Complex.T q)))+fromFrequencySpectrum ::+   (Trans.C q, Dim.C u, Dim.C v,+    SigG.Transform sig (Complex.T q)) =>+   SigA.T (Rate.Dimensional (Dim.Recip u) q) (Amp.Dimensional (Dim.Mul u v) q) (SigC.T (sig (Complex.T q))) ->+   SigA.T (Rate.Dimensional u q) (Amp.Dimensional v q) (SigC.T (sig (Complex.T q))) fromFrequencySpectrum x =    let len = period x        amp = SigA.actualAmplitude x-       ss  = SigC.toPeriod (SigA.body x)-       n   = Sig.length ss-       z = Complex.cis ((pi+pi) / fromIntegral n)        newAmp =           DN.rewriteDimension-             (Dim.identityLeft . Dim.applyLeftMul Dim.cancelLeft . Dim.associateLeft)+             (Dim.identityLeft .+              Dim.applyLeftMul Dim.cancelLeft . Dim.associateLeft)              (DN.unrecip (SigA.actualSampleRate x) &*& amp)    in  SigA.Cons           (Rate.Actual len)           (Amp.Numeric newAmp)-          (SigC.Cons (Sig.take n (Ana.chirpTransform z ss)))+          (SigC.Cons $ FourierG.transformForward $ SigC.toPeriod $ SigA.body x)
src/Synthesizer/Dimensional/Cyclic/Signal.hs view
@@ -1,5 +1,5 @@ {- |-Copyright   :  (c) Henning Thielemann 2008-2009+Copyright   :  (c) Henning Thielemann 2008-2011 License     :  GPL  Maintainer  :  synthesizer@henning-thielemann.de@@ -16,12 +16,9 @@  -- import qualified Synthesizer.Format as Format --- import qualified Synthesizer.Generic.Cut as CutG+import qualified Synthesizer.Generic.Cyclic as Cyclic import qualified Synthesizer.Generic.Signal as SigG-import qualified Synthesizer.State.Signal as Sig---- import qualified Number.DimensionTerm        as DN--- import qualified Algebra.DimensionTerm       as Dim+-- import qualified Synthesizer.State.Signal as Sig  {- import qualified Algebra.Module         as Module@@ -30,8 +27,6 @@ -} import qualified Algebra.Additive       as Additive --- import Number.DimensionTerm ((&/&))- import Data.Monoid (Monoid, )  @@ -82,12 +77,10 @@ -} {-# INLINE fromSignal #-} fromSignal ::-   (Additive.C yv, SigG.Transform sig yv) =>+   (Additive.C yv, SigG.Write sig yv) =>    Int -> sig yv -> T (sig yv) fromSignal n  =-   fromPeriod .-   Sig.foldL SigG.mix SigG.empty {- Sig.sum -} .-   SigG.sliceVertical n+   fromPeriod . Cyclic.fromSignal SigG.defaultLazySize n  {- | Convert a cyclic signal to a straight signal containing a loop.
src/Synthesizer/Dimensional/Map.hs view
@@ -5,7 +5,6 @@ module Synthesizer.Dimensional.Map where  import qualified Synthesizer.Dimensional.Sample as Sample-import Synthesizer.Dimensional.Sample (Amplitude, Displacement, )  import qualified Synthesizer.Dimensional.Arrow as ArrowD @@ -13,7 +12,6 @@ import qualified Synthesizer.Dimensional.Amplitude.Flat as Flat import qualified Synthesizer.Dimensional.Amplitude as Amp -import qualified Control.Arrow as Arrow import Control.Arrow (Arrow, ) import Control.Category (Category, ) 
src/Synthesizer/Dimensional/Map/Displacement.hs view
@@ -2,24 +2,27 @@    mix, mixVolume,    fanoutAndMixMulti, fanoutAndMixMultiVolume,    raise, distort,+   mapLinear, mapExponential, mapLinearDimension,    ) where +import qualified Synthesizer.Dimensional.Amplitude.Flat as Flat import qualified Synthesizer.Dimensional.Amplitude as Amp import qualified Synthesizer.Dimensional.Sample as Sample  import qualified Synthesizer.Dimensional.Arrow as ArrowD -import qualified Control.Arrow as Arrow-import Control.Arrow (Arrow, arr, (^<<), (&&&), )+import Control.Arrow (Arrow, arr, (<<<), (^<<), (&&&), )  import qualified Number.DimensionTerm        as DN import qualified Algebra.DimensionTerm       as Dim+import Number.DimensionTerm ((&*&)) +import qualified Algebra.Transcendental as Trans import qualified Algebra.Module         as Module import qualified Algebra.RealField      as RealField import qualified Algebra.Field          as Field import qualified Algebra.Absolute       as Absolute--- import qualified Algebra.Ring           as Ring+import qualified Algebra.Ring           as Ring -- import qualified Algebra.Additive       as Additive  -- import Algebra.Module ((*>))@@ -156,6 +159,63 @@           (toAmplitudeScalar ampCtrl))  ++{- |+Map a control curve without amplitude unit+by a linear (affine) function with a unit.+This is a combination of 'raise' and 'amplify'.++It is not quite correct in the sense,+that it does not produce low-level sample values in the range (-1,1).+Instead it generates values around 1.+-}+{-# INLINE mapLinear #-}+mapLinear ::+   (Flat.C y flat, Ring.C y, Dim.C u, Arrow arrow) =>+   y ->+   DN.T u y ->+   ArrowD.T arrow (Sample.T flat y) (DNS u y y)+mapLinear depth center =+   ArrowD.Cons (\Amp.Flat ->+      (arr (\x -> one+x*depth), Amp.Numeric center))+   <<<+   ArrowD.canonicalizeFlat++{-# INLINE mapExponential #-}+mapExponential ::+   (Flat.C y flat, Trans.C y, Dim.C u, Arrow arrow) =>+   y ->+   DN.T u q ->+   ArrowD.T arrow (Sample.T flat y) (DNS u q y)+mapExponential depth center =+   {-+   X86 processors only have (logBase 2) and (2**).+   Thus on those machines computing with respect to base 2+   can be more efficient and more precise.+   -}+   let logDepth = log depth+   in  ArrowD.Cons (\Amp.Flat ->+          (arr (exp . (logDepth*)), Amp.Numeric center))+   <<<+   ArrowD.canonicalizeFlat++{-# INLINE mapLinearDimension #-}+mapLinearDimension ::+   (Field.C y, Absolute.C y, Dim.C u, Dim.C v, Arrow arrow) =>+      DN.T v y              {- ^ range: one is mapped to @center + range * ampX@ -}+   -> DN.T (Dim.Mul v u) y  {- ^ center: zero is mapped to @center@ -}+   -> ArrowD.T arrow (DNS u y y) (DNS (Dim.Mul v u) y y)+mapLinearDimension range center =+   ArrowD.Cons $ \(Amp.Numeric ampIn) ->+      let absRange  = DN.abs range &*& ampIn+          absCenter = DN.abs center+          ampOut = absRange + absCenter+          rng = DN.divToScalar absRange  ampOut+          cnt = DN.divToScalar absCenter ampOut+      in  (arr (\y -> cnt + rng*y), Amp.Numeric ampOut)+++-- auxiliary functions  {-# INLINE toAmplitudeScalar #-} toAmplitudeScalar ::
src/Synthesizer/Dimensional/Rate/Cut.hs view
@@ -29,7 +29,7 @@ import Data.Monoid (Monoid, mappend, mconcat, )  -import NumericPrelude.Numeric hiding (negate)+-- import NumericPrelude.Numeric hiding (negate) -- import NumericPrelude.Base as P import Prelude hiding (splitAt, take, drop, concat, ) 
src/Synthesizer/Dimensional/Rate/Oscillator.hs view
@@ -42,7 +42,6 @@  import qualified Synthesizer.Dimensional.Causal.Process as CausalD import qualified Synthesizer.Dimensional.Causal.Oscillator.Core as OsciCore-import qualified Synthesizer.Dimensional.Causal.Oscillator as OsciC import qualified Synthesizer.Dimensional.Map as MapD  import qualified Synthesizer.Dimensional.Sample as Sample
src/Synthesizer/Dimensional/RateAmplitude/Control.hs view
@@ -29,24 +29,16 @@ import Synthesizer.Dimensional.Signal.Private           (toAmplitudeScalar, ) --- import qualified Synthesizer.Dimensional.Amplitude as Amp--- import qualified Synthesizer.Dimensional.Rate as Rate- import qualified Synthesizer.State.Signal as Sig  import qualified Number.DimensionTerm        as DN import qualified Algebra.DimensionTerm       as Dim --- import Number.DimensionTerm ((&*&))---- import qualified Algebra.Module             as Module import qualified Algebra.Transcendental     as Trans import qualified Algebra.RealField          as RealField import qualified Algebra.Field              as Field import qualified Algebra.RealRing           as RealRing--- import qualified Algebra.Ring               as Ring import qualified Algebra.Absolute           as Absolute-import qualified Algebra.Additive           as Additive  import NumericPrelude.Numeric import NumericPrelude.Base
src/Synthesizer/Dimensional/RateAmplitude/Cut.hs view
@@ -61,7 +61,7 @@  import qualified Data.List as List -import NumericPrelude.Base ((.), ($), Ord, (<=), map, return, error, )+import NumericPrelude.Base ((.), ($), Ord, (<=), map, return, ) -- import NumericPrelude.Numeric import Prelude (RealFrac, ) 
src/Synthesizer/Dimensional/RateAmplitude/Demonstration.hs view
@@ -59,12 +59,12 @@ import qualified Algebra.Transcendental as Trans import qualified Algebra.Module         as Module import qualified Algebra.RealField      as RealField-import qualified Algebra.Field          as Field import qualified Algebra.Ring           as Ring  import System.Time (getClockTime, diffClockTimes, tdSec, tdPicosec, ) import System.IO (hFlush, stdout, )-import System.Exit (ExitCode)+import System.Exit (ExitCode(ExitFailure), exitWith, )+import qualified Control.Monad.Exception.Synchronous as Exc  import System.Random (Random, randomRs, mkStdGen, ) @@ -115,20 +115,27 @@       $: exponential       $: sineLow +{-# INLINE pingSaw #-}+pingSaw ::+   (RealField.C q, Trans.C q, Module.C q q, Random q, Storable q) =>+   Proc.T s Dim.Time q (SigA.R s Dim.Voltage q q)+pingSaw =+   Filt.envelope+      $: exponential+      $: saw  + {-# INLINE sawWave #-} sawWave :: (RealField.C a) => Wave.T a a sawWave = Wave.triangleAsymmetric (-0.9) -{- {-# INLINE saw #-} saw ::    (RealField.C q, Trans.C q, Module.C q q, Random q, Storable q) =>    Proc.T s Dim.Time q (SigA.R s Dim.Voltage q q) saw =    Osci.static (DN.voltage 1 &*~ sawWave) zero (DN.frequency 440)--}  {-# INLINE sawVibrato #-} sawVibrato ::@@ -600,29 +607,31 @@ -}  -measureTime :: String -> IO ExitCode -> IO ()+measureTime :: String -> IO a -> IO a measureTime name act =    do putStr (name++": ")       hFlush stdout       timeA <- getClockTime-      act+      res <- act       timeB <- getClockTime       let td = diffClockTimes timeB timeA       print (fromIntegral (tdSec td) +              fromInteger (tdPicosec td) * 1e-12 :: Double)+      return res  renderToAIFF :: (Ring.C a) =>    (DN.Frequency a -> String -> t -> IO ExitCode) ->    String ->    t ->-   IO ()+   Exc.ExceptionalT Int IO () renderToAIFF render name sound =+   Exc.fromExitCodeT $    measureTime name $    render (DN.frequency 44100) (name++".aiff") sound   main :: IO ()-main =+main = Exc.resolveT (exitWith . ExitFailure) $    do {-       Play.timeVoltageMonoDoubleR (DN.frequency 44100) bubbles@@ -646,7 +655,7 @@        mapM_          (\(name, filt@(Filter _filtResonance _filtDirect filtCausal)) ->-              let render :: String -> (forall s. Proc.T s Dim.Time Double (SigA.R s Dim.Voltage Double Double)) -> IO ()+              let render :: String -> (forall s. Proc.T s Dim.Time Double (SigA.R s Dim.Voltage Double Double)) -> Exc.ExceptionalT Int IO ()                   render ext sound =                      let subName = name ++ "-" ++ ext                      in  renderToAIFF@@ -751,6 +760,7 @@          ("sine-mix",    Sound (Cut.take (DN.time 1) $: sineMix)) :          ("exponential", Sound (Cut.take (DN.time 1) $: DN.voltage 1 &*^ exponential)) :          ("ping",        Sound (Cut.take (DN.time 1) $: ping)) :+         ("ping-saw",    Sound (Cut.take (DN.time 1) $: pingSaw)) :  --         ("saw",         Sound (Cut.take (DN.time 2) $: saw)) :          ("saw-vibrato", Sound (Cut.take (DN.time 2) $: sawVibrato)) :
src/Synthesizer/Dimensional/RateAmplitude/File.hs view
@@ -26,16 +26,12 @@  import qualified Synthesizer.Storable.Signal as SigSt --- import qualified Synthesizer.Dimensional.Straight.Signal as SigS import qualified Synthesizer.State.Signal as Sig  import qualified Algebra.ToInteger      as ToInteger--- import qualified Algebra.Transcendental as Trans import qualified Algebra.Module         as Module import qualified Algebra.RealField      as RealField import qualified Algebra.Field          as Field-import qualified Algebra.RealRing       as RealRing--- import qualified Algebra.Ring           as Ring  import qualified Algebra.DimensionTerm as Dim import qualified Number.DimensionTerm  as DN
src/Synthesizer/Dimensional/RateAmplitude/Instrument.hs view
@@ -24,8 +24,7 @@  import Synthesizer.Dimensional.Signal (($-), ($&), (&*^), (&*>^), ) import Synthesizer.Dimensional.RateAmplitude.Piece ((-|#), ( #|-), (|#), ( #|), )-import Synthesizer.Dimensional.Wave-          ((&*~), mapLinear, mapExponential, )+import Synthesizer.Dimensional.Wave ((&*~), )  import Synthesizer.Dimensional.Process (($:), ($::), ($^), (.^), ($#), ) import qualified Synthesizer.Dimensional.Amplitude.Displacement as DispA@@ -55,7 +54,6 @@ import qualified Algebra.Transcendental as Trans import qualified Algebra.Module         as Module import qualified Algebra.RealField      as RealField-import qualified Algebra.Field          as Field import qualified Algebra.Ring           as Ring  import System.Random (Random, randoms, randomRs, mkStdGen, )
src/Synthesizer/Dimensional/RateAmplitude/Noise.hs view
@@ -31,7 +31,6 @@  import qualified Algebra.Algebraic          as Algebraic import qualified Algebra.Field              as Field-import qualified Algebra.Ring               as Ring  import System.Random (Random, RandomGen, mkStdGen) 
src/Synthesizer/Dimensional/RateAmplitude/Piece.hs view
@@ -8,7 +8,6 @@  import qualified Synthesizer.Generic.Piece as Piece import qualified Synthesizer.Generic.Signal as SigG-import qualified Synthesizer.Generic.Cut as CutG import qualified Synthesizer.State.Control as Ctrl  import qualified Synthesizer.Piecewise as Piecewise
src/Synthesizer/Dimensional/RateAmplitude/Play.hs view
@@ -32,12 +32,9 @@ import qualified Number.DimensionTerm  as DN  import qualified Algebra.ToInteger      as ToInteger--- import qualified Algebra.Transcendental as Trans import qualified Algebra.Module         as Module import qualified Algebra.RealField      as RealField import qualified Algebra.Field          as Field-import qualified Algebra.RealRing       as RealRing--- import qualified Algebra.Ring           as Ring  import System.Exit(ExitCode) 
src/Synthesizer/Dimensional/RateAmplitude/Rain.hs view
@@ -29,7 +29,7 @@ import qualified Synthesizer.Dimensional.Signal as SigA  import qualified Synthesizer.Dimensional.RateAmplitude.File as File-import qualified Synthesizer.Dimensional.RateAmplitude.Play as Play+-- import qualified Synthesizer.Dimensional.RateAmplitude.Play as Play  import Synthesizer.Dimensional.Signal ((&*^), (&*>^), ) import Synthesizer.Dimensional.Process (($:), ($::), ($^), (.:), (.^), )@@ -67,12 +67,7 @@  import qualified Number.NonNegative     as NonNeg -import qualified Algebra.Transcendental as Trans--- import qualified Algebra.Module         as Module-import qualified Algebra.RealField      as RealField-import qualified Algebra.Field          as Field import qualified Algebra.Ring           as Ring-import qualified Algebra.Additive       as Additive  import qualified Data.EventList.Relative.TimeBody as EventList 
src/Synthesizer/Dimensional/RateAmplitude/Traumzauberbaum.hs view
@@ -44,16 +44,6 @@  import Number.DimensionTerm ((*&)) --- import qualified Number.NonNegative     as NonNeg---- import qualified Algebra.Transcendental as Trans--- import qualified Algebra.Module         as Module--- import qualified Algebra.RealField      as RealField-import qualified Algebra.Field          as Field-import qualified Algebra.Ring           as Ring---- import System.Random (Random, randomRs, mkStdGen)- import NumericPrelude.Base import NumericPrelude.Numeric 
src/Synthesizer/Dimensional/Signal.hs view
@@ -5,6 +5,7 @@ module Synthesizer.Dimensional.Signal (    T, R,    asTypeOfAmplitude,+   render, apply,    cache, bindCached, share,    store, restore,    ($-),  ($&),
src/Synthesizer/Dimensional/Signal/Private.hs view
@@ -9,6 +9,7 @@ import qualified Synthesizer.Dimensional.Rate as Rate  import qualified Synthesizer.Dimensional.Process as Proc+import Synthesizer.Dimensional.Process (($#), )  import qualified Synthesizer.Generic.Filter.NonRecursive as FiltG import qualified Synthesizer.Generic.Signal as SigG@@ -135,6 +136,15 @@    T (Rate.Dimensional u t) amp sig render rate signal =    Proc.run rate (embedSampleRate Proc.$: signal)++{-# INLINE apply #-}+apply :: (Dim.C u) =>+   (forall s. Proc.T s u t (T (Rate.Phantom s) amp0 sig0 -> T (Rate.Phantom s) amp1 sig1)) ->+   T (Rate.Dimensional u t) amp0 sig0 -> T (Rate.Dimensional u t) amp1 sig1+apply p x =+   render+      (actualSampleRate x)+      (p $# Cons Rate.Phantom (amplitude x) (body x))   {-# INLINE processBody #-}
synthesizer-dimensional.cabal view
@@ -1,5 +1,5 @@ Name:           synthesizer-dimensional-Version:        0.5+Version:        0.5.1 License:        GPL License-File:   LICENSE Author:         Henning Thielemann <haskell@henning-thielemann.de>@@ -28,7 +28,7 @@   Source-Repository this-  Tag:         0.5+  Tag:         0.5.1   Type:        darcs   Location:    http://code.haskell.org/synthesizer/dimensional/ @@ -43,18 +43,13 @@     event-list >=0.1 && <0.2,     non-negative >=0.1 && <0.2,     numeric-prelude >=0.2 && <0.3,-    utility-ht >=0.0.5 && <0.1,     storable-record >=0.0.1 && <0.1,     sox >=0.2 && <0.3,     storablevector >=0.2.3 && <0.3,-    binary >=0.1 && <1,-    bytestring >= 0.9 && <0.10--  Build-Depends:-    base >= 4 && <5,+    bytestring >= 0.9 && <0.10,     random >=1.0 && <2.0,-    old-time >=1.0 && <2,-    process >=1.0 && <1.1+    utility-ht >=0.0.5 && <0.1,+    base >= 4 && <5    GHC-Options:    -Wall   Hs-source-dirs: src@@ -76,6 +71,7 @@     Synthesizer.Dimensional.Amplitude.Control     Synthesizer.Dimensional.Amplitude.Displacement     Synthesizer.Dimensional.Amplitude.Filter+    Synthesizer.Dimensional.Causal.Analysis     Synthesizer.Dimensional.Causal.ControlledProcess     Synthesizer.Dimensional.Causal.Displacement     Synthesizer.Dimensional.Causal.Filter@@ -106,7 +102,7 @@     Synthesizer.Dimensional.Wave.Controlled  --  Other-Modules:--- we need this in synthesizer-alsa for implementation of low-level functions+-- we need this in synthesizer-alsa and noisegenerator for implementation of low-level functions     Synthesizer.Dimensional.Signal.Private --    Synthesizer.Dimensional.Utility @@ -121,8 +117,13 @@   Main-Is: Synthesizer/Dimensional/RateAmplitude/Rain.hs  Executable demonstration-  If !flag(buildExamples)+  If flag(buildExamples)+    Build-Depends:+      explicit-exception >=0.1.6 && <0.2,+      old-time >=1.0 && <2+  Else     Buildable: False+   GHC-Options: -Wall -fexcess-precision   If flag(optimizeAdvanced)     GHC-Options: -O2 -fvia-C -optc-O2