{-# LANGUAGE NoImplicitPrelude #-}
module Synthesizer.Plain.Noise where
import qualified Synthesizer.Plain.Signal as Sig
import qualified Algebra.RealRing as RealRing
import qualified Algebra.Ring as Ring
import System.Random (Random, RandomGen, randomRs, mkStdGen, )
import Data.List.HT (sliceVertical, )
import NumericPrelude.Numeric
import NumericPrelude.Base
white :: (Ring.C y, Random y) =>
Sig.T y
white :: forall y. (C y, Random y) => T y
white = forall y g. (C y, Random y, RandomGen g) => g -> T y
whiteGen (Int -> StdGen
mkStdGen Int
12354)
whiteGen :: (Ring.C y, Random y, RandomGen g) =>
g -> Sig.T y
whiteGen :: forall y g. (C y, Random y, RandomGen g) => g -> T y
whiteGen = forall a g. (Random a, RandomGen g) => (a, a) -> g -> [a]
randomRs (-y
1,y
1)
whiteQuadraticBSplineGen :: (Ring.C y, Random y, RandomGen g) =>
g -> Sig.T y
whiteQuadraticBSplineGen :: forall y g. (C y, Random y, RandomGen g) => g -> T y
whiteQuadraticBSplineGen =
forall a b. (a -> b) -> [a] -> [b]
map forall a. C a => [a] -> a
sum forall b c a. (b -> c) -> (a -> b) -> a -> c
. forall a. Int -> [a] -> [[a]]
sliceVertical Int
3 forall b c a. (b -> c) -> (a -> b) -> a -> c
. forall a g. (Random a, RandomGen g) => (a, a) -> g -> [a]
randomRs (-y
1,y
1)
randomPeeks :: (RealRing.C y, Random y) =>
Sig.T y
-> Sig.T Bool
randomPeeks :: forall y. (C y, Random y) => T y -> T Bool
randomPeeks =
forall y g. (C y, Random y, RandomGen g) => g -> T y -> T Bool
randomPeeksGen (Int -> StdGen
mkStdGen Int
876)
randomPeeksGen :: (RealRing.C y, Random y, RandomGen g) =>
g
-> Sig.T y
-> Sig.T Bool
randomPeeksGen :: forall y g. (C y, Random y, RandomGen g) => g -> T y -> T Bool
randomPeeksGen =
forall a b c. (a -> b -> c) -> [a] -> [b] -> [c]
zipWith forall a. Ord a => a -> a -> Bool
(<) forall b c a. (b -> c) -> (a -> b) -> a -> c
. forall a g. (Random a, RandomGen g) => (a, a) -> g -> [a]
randomRs (y
0,y
1)