packages feed

synthesizer-inference-0.2: src/Synthesizer/Inference/Monad/SignalSeq/Noise.hs

{-# LANGUAGE NoImplicitPrelude #-}
{-# LANGUAGE MultiParamTypeClasses #-}
{-# LANGUAGE FlexibleInstances #-}
{- |
Copyright   :  (c) Henning Thielemann 2006
License     :  GPL

Maintainer  :  synthesizer@henning-thielemann.de
Stability   :  provisional
Portability :  requires multi-parameter type classes

-}
module Synthesizer.Inference.Monad.SignalSeq.Noise
  (white,
   whiteGen,
   randomPeeks) where


import qualified Synthesizer.Inference.Monad.Signal     as SigI

import qualified Synthesizer.Inference.Monad.Signal.Noise as NoiseI
import Synthesizer.Inference.Monad.Signal.Noise (white, whiteGen)

import qualified Algebra.OccasionallyScalar as OccScalar
import qualified Algebra.Field              as Field

import System.Random (Random)

import UniqueLogicNP.Monad(liftP)
-- import NumericPrelude
import PreludeBase as P



randomPeeks :: (Field.C a, Random a, Ord a,
                Field.C q, OccScalar.C a q) =>
      SigI.Process a q a
           {- ^ momentary densities (frequency),
                @p@ means that there is about one peak
                in the time range of @1\/p@. -}
   -> SigI.Process a q Bool
           {- ^ Every occurence of 'True' represents a peak. -}
randomPeeks = liftP NoiseI.randomPeeks