module Csound.Air.Granular(
GrainRate, GrainSize, Pointer, ConstPitchSig,
RndGrainySpec(..),
grainy, grainy1, rndGrainy, rndGrainy1,
ptrGrainy, rndPtrGrainy,
ptrGrainySnd, ptrGrainySnd1,
SndwarpSpec(..),
sndwarp, sndwarpst, sndwarpSnd, sndwarpSnd1,
ptrSndwarp, ptrSndwarpst, ptrSndwarpSnd, ptrSndwarpSnd1,
SyncgrainSpec(..), RndSyncgrainSpec(..),
syncgrain, syncgrainSnd, syncgrainSnd1,
rndSyncgrain, rndSyncgrainSnd, rndSyncgrainSnd1,
GranuleSpec(..), GranuleMode(..),
granule, granuleSnd, granuleSnd1,
PartikkelSpec(..),
partikkel,
Fof2Spec(..),
fof2, fof2Snd, fof2Snd1,
grainyDelay, rndGrainyDelay, sndwarpDelay,
syncgrainDelay, rndSyncgrainDelay, partikkelDelay, fofDelay,
grainyFx, rndGrainyFx, sndwarpFx,
syncgrainFx, rndSyncgrainFx, partikkelFx, fofFx,
csdSndwarp, csdSndwarpst, csdSyncgrain, csdGranule, csdPartikkel
) where
import Data.Default
import Csound.Dynamic hiding (int, when1, whens)
import Csound.Typed
import Csound.Typed.Opcode hiding(partikkel, granule, grain, syncgrain, sndwarp, sndwarpst, fof2, tab, pitch, tempo)
import qualified Csound.Typed.Opcode as C(granule, sndwarp, sndwarpst, fof2)
import Csound.Air.Wav(PitchSig, TempoSig, lengthSnd)
import Csound.Air.Fx(tabDelay, MaxDelayTime, DelayTime, Feedback, Balance)
import Csound.Tab
type GrainRate = Sig
type GrainSize = Sig
type Pointer = Sig
type ConstPitchSig = D
data PartikkelSpec = PartikkelSpec
{ PartikkelSpec -> Sig
partikkelDistribution :: Sig
, PartikkelSpec -> Tab
partikkelDisttab :: Tab
, PartikkelSpec -> Sig
partikkelSync :: Sig
, PartikkelSpec -> Sig
partikkelEnv2amt :: Sig
, PartikkelSpec -> Tab
partikkelEnv2tab :: Tab
, PartikkelSpec -> Tab
partikkelEnv_attack :: Tab
, PartikkelSpec -> Tab
partikkelEnv_decay :: Tab
, PartikkelSpec -> Sig
partikkelSustain_amount :: Sig
, PartikkelSpec -> Sig
partikkelA_d_ratio :: Sig
, PartikkelSpec -> Sig
partikkelAmp :: Sig
, PartikkelSpec -> Tab
partikkelGainmasks :: Tab
, PartikkelSpec -> Sig
partikkelSweepshape :: Sig
, PartikkelSpec -> Tab
partikkelWavfreqstarttab :: Tab
, PartikkelSpec -> Tab
partikkelWavfreqendtab :: Tab
, PartikkelSpec -> Sig
partikkelWavfm :: Sig
, PartikkelSpec -> Tab
partikkelFmamptab :: Tab
, PartikkelSpec -> Tab
partikkelFmenv :: Tab
, PartikkelSpec -> Tab
partikkelCosine :: Tab
, PartikkelSpec -> Sig
partikkelNumpartials :: Sig
, PartikkelSpec -> Sig
partikkelChroma :: Sig
, PartikkelSpec -> Tab
partikkelChannelmasks :: Tab
, PartikkelSpec -> Sig
partikkelRandommask :: Sig
, PartikkelSpec -> Tab
partikkelWaveamptab :: Tab
, PartikkelSpec -> [Sig]
partikkelWavekeys :: [Sig]
, PartikkelSpec -> D
partikkelMax_grains :: D
}
instance Default PartikkelSpec where
def :: PartikkelSpec
def = PartikkelSpec :: Sig
-> Tab
-> Sig
-> Sig
-> Tab
-> Tab
-> Tab
-> Sig
-> Sig
-> Sig
-> Tab
-> Sig
-> Tab
-> Tab
-> Sig
-> Tab
-> Tab
-> Tab
-> Sig
-> Sig
-> Tab
-> Sig
-> Tab
-> [Sig]
-> D
-> PartikkelSpec
PartikkelSpec
{ partikkelDistribution :: Sig
partikkelDistribution = Sig
1
, partikkelDisttab :: Tab
partikkelDisttab = Int -> Tab -> Tab
setSize Int
32768 (Tab -> Tab) -> Tab -> Tab
forall a b. (a -> b) -> a -> b
$ [Double] -> Tab
lins [Double
0, Double
1, Double
1]
, partikkelSync :: Sig
partikkelSync = Sig
0
, partikkelEnv2amt :: Sig
partikkelEnv2amt = Sig
1
, partikkelEnv2tab :: Tab
partikkelEnv2tab = Int -> Tab -> Tab
setSize Int
4096 (Tab -> Tab) -> Tab -> Tab
forall a b. (a -> b) -> a -> b
$ Tab
winSync
, partikkelEnv_attack :: Tab
partikkelEnv_attack = Tab
noTab
, partikkelEnv_decay :: Tab
partikkelEnv_decay = Tab
noTab
, partikkelSustain_amount :: Sig
partikkelSustain_amount = Sig
0
, partikkelA_d_ratio :: Sig
partikkelA_d_ratio = Sig
0
, partikkelAmp :: Sig
partikkelAmp = Sig
1
, partikkelGainmasks :: Tab
partikkelGainmasks = Tab
noTab
, partikkelSweepshape :: Sig
partikkelSweepshape = Sig
0
, partikkelWavfreqstarttab :: Tab
partikkelWavfreqstarttab = Tab
noTab
, partikkelWavfreqendtab :: Tab
partikkelWavfreqendtab = Tab
noTab
, partikkelWavfm :: Sig
partikkelWavfm = Sig
0
, partikkelFmamptab :: Tab
partikkelFmamptab = Tab
noTab
, partikkelFmenv :: Tab
partikkelFmenv = Tab
noTab
, partikkelCosine :: Tab
partikkelCosine = Int -> Tab -> Tab
setSize Int
8193 (Tab -> Tab) -> Tab -> Tab
forall a b. (a -> b) -> a -> b
$ [(Double, Double, Double)] -> Tab
sines3 [(Double
1, Double
1, Double
90)]
, partikkelNumpartials :: Sig
partikkelNumpartials = Sig
1
, partikkelChroma :: Sig
partikkelChroma = Sig
1
, partikkelChannelmasks :: Tab
partikkelChannelmasks = Tab
noTab
, partikkelRandommask :: Sig
partikkelRandommask = Sig
0
, partikkelWaveamptab :: Tab
partikkelWaveamptab = Tab
noTab
, partikkelWavekeys :: [Sig]
partikkelWavekeys = [Sig
1]
, partikkelMax_grains :: D
partikkelMax_grains = D
1000
}
data RndGrainySpec = RndGrainySpec
{ RndGrainySpec -> Sig
rndGrainyPitch :: Sig
, RndGrainySpec -> Sig
rndGrainyPos :: Sig
, RndGrainySpec -> Sig
rndGrainyDur :: Sig
}
instance Default RndGrainySpec where
def :: RndGrainySpec
def = RndGrainySpec :: Sig -> Sig -> Sig -> RndGrainySpec
RndGrainySpec
{ rndGrainyPitch :: Sig
rndGrainyPitch = Sig
0.25
, rndGrainyPos :: Sig
rndGrainyPos = Sig
0.1
, rndGrainyDur :: Sig
rndGrainyDur = Sig
0.2
}
partikkel :: PartikkelSpec -> GrainRate -> GrainSize -> PitchSig -> [Tab] -> [Pointer] -> Sig
partikkel :: PartikkelSpec -> Sig -> Sig -> Sig -> [Tab] -> [Sig] -> Sig
partikkel PartikkelSpec
spec Sig
kgrainrate Sig
kgrainsize Sig
kpitch [Tab]
ifiltab [Sig]
apnter = Sig -> Sig -> Sig
forall a. SigSpace a => Sig -> a -> a
mul Sig
0.2 Sig
res
where
res :: Sig
res = Sig
-> Sig
-> Tab
-> Sig
-> Sig
-> Tab
-> Tab
-> Tab
-> Sig
-> Sig
-> Sig
-> Sig
-> Tab
-> Sig
-> Sig
-> Tab
-> Tab
-> Sig
-> Tab
-> Tab
-> Tab
-> Sig
-> Sig
-> Sig
-> Tab
-> Sig
-> Tab
-> Tab
-> Tab
-> Tab
-> Tab
-> Sig
-> Sig
-> Sig
-> Sig
-> Sig
-> Sig
-> Sig
-> Sig
-> D
-> Sig
forall a.
Tuple a =>
Sig
-> Sig
-> Tab
-> Sig
-> Sig
-> Tab
-> Tab
-> Tab
-> Sig
-> Sig
-> Sig
-> Sig
-> Tab
-> Sig
-> Sig
-> Tab
-> Tab
-> Sig
-> Tab
-> Tab
-> Tab
-> Sig
-> Sig
-> Sig
-> Tab
-> Sig
-> Tab
-> Tab
-> Tab
-> Tab
-> Tab
-> Sig
-> Sig
-> Sig
-> Sig
-> Sig
-> Sig
-> Sig
-> Sig
-> D
-> a
csdPartikkel
Sig
kgrainrate (PartikkelSpec -> Sig
partikkelDistribution PartikkelSpec
spec) (PartikkelSpec -> Tab
partikkelDisttab PartikkelSpec
spec) (PartikkelSpec -> Sig
partikkelSync PartikkelSpec
spec)
(PartikkelSpec -> Sig
partikkelEnv2amt PartikkelSpec
spec) (PartikkelSpec -> Tab
partikkelEnv2tab PartikkelSpec
spec) (PartikkelSpec -> Tab
partikkelEnv_attack PartikkelSpec
spec) (PartikkelSpec -> Tab
partikkelEnv_decay PartikkelSpec
spec)
(PartikkelSpec -> Sig
partikkelSustain_amount PartikkelSpec
spec) (PartikkelSpec -> Sig
partikkelA_d_ratio PartikkelSpec
spec) (Sig
kgrainsize Sig -> Sig -> Sig
forall a. Num a => a -> a -> a
* Sig
1000) (PartikkelSpec -> Sig
partikkelAmp PartikkelSpec
spec)
(PartikkelSpec -> Tab
partikkelGainmasks PartikkelSpec
spec) Sig
kwavfreq (PartikkelSpec -> Sig
partikkelSweepshape PartikkelSpec
spec) (PartikkelSpec -> Tab
partikkelWavfreqstarttab PartikkelSpec
spec)
(PartikkelSpec -> Tab
partikkelWavfreqendtab PartikkelSpec
spec) (PartikkelSpec -> Sig
partikkelWavfm PartikkelSpec
spec) (PartikkelSpec -> Tab
partikkelFmamptab PartikkelSpec
spec) (PartikkelSpec -> Tab
partikkelFmenv PartikkelSpec
spec)
(PartikkelSpec -> Tab
partikkelCosine PartikkelSpec
spec) Sig
kgrainrate (PartikkelSpec -> Sig
partikkelNumpartials PartikkelSpec
spec) (PartikkelSpec -> Sig
partikkelChroma PartikkelSpec
spec)
(PartikkelSpec -> Tab
partikkelChannelmasks PartikkelSpec
spec) (PartikkelSpec -> Sig
partikkelRandommask PartikkelSpec
spec)
Tab
filtab1 Tab
filtab2 Tab
filtab3 Tab
filtab4
(PartikkelSpec -> Tab
partikkelWaveamptab PartikkelSpec
spec)
Sig
apnter1 Sig
apnter2 Sig
apnter3 Sig
apnter4
Sig
keys1 Sig
keys2 Sig
keys3 Sig
keys4
(PartikkelSpec -> D
partikkelMax_grains PartikkelSpec
spec)
iorig :: D
iorig = D
1 D -> D -> D
forall a. Fractional a => a -> a -> a
/ (Tab -> D
ftlen([Tab] -> Tab
forall a. [a] -> a
head [Tab]
ifiltab)D -> D -> D
forall a. Fractional a => a -> a -> a
/D
getSampleRate)
kwavfreq :: Sig
kwavfreq = D -> Sig
sig D
iorig Sig -> Sig -> Sig
forall a. Num a => a -> a -> a
* Sig
kpitch
Tab
filtab1 : Tab
filtab2 : Tab
filtab3 : Tab
filtab4 : [Tab]
_ = [Tab] -> [Tab]
forall a. [a] -> [a]
cycle [Tab]
ifiltab
Sig
apnter1 : Sig
apnter2 : Sig
apnter3 : Sig
apnter4 : [Sig]
_ = [Sig] -> [Sig]
forall a. [a] -> [a]
cycle [Sig]
apnter
Sig
keys1 : Sig
keys2 : Sig
keys3 : Sig
keys4 : [Sig]
_ = [Sig] -> [Sig]
forall a. [a] -> [a]
cycle (PartikkelSpec -> [Sig]
partikkelWavekeys PartikkelSpec
spec)
grainy1 :: GrainRate -> GrainSize -> TempoSig -> PitchSig -> String -> Sig
grainy1 :: Sig -> Sig -> Sig -> Sig -> String -> Sig
grainy1 = Int -> Sig -> Sig -> Sig -> Sig -> String -> Sig
grainyChn Int
1
grainy :: GrainRate -> GrainSize -> TempoSig -> PitchSig -> String -> Sig2
grainy :: Sig -> Sig -> Sig -> Sig -> String -> Sig2
grainy Sig
kgrainrate Sig
kgrainsize Sig
kspeed Sig
kfreqFactor String
file = (Int -> Sig
f Int
1, Int -> Sig
f Int
2)
where f :: Int -> Sig
f Int
n = Int -> Sig -> Sig -> Sig -> Sig -> String -> Sig
grainyChn Int
n Sig
kgrainrate Sig
kgrainsize Sig
kspeed Sig
kfreqFactor String
file
grainyChn :: Int -> GrainRate -> GrainSize -> TempoSig -> PitchSig -> String -> Sig
grainyChn :: Int -> Sig -> Sig -> Sig -> Sig -> String -> Sig
grainyChn Int
n Sig
kgrainrate Sig
kgrainsize Sig
kspeed Sig
kpitch String
file =
Sig -> Sig -> Sig -> Tab -> Sig -> Sig
ptrGrainy Sig
kgrainrate Sig
kgrainsize Sig
kpitch (Int -> String -> Tab
grainyTab Int
n String
file) (Sig -> String -> Sig
grainyPtr Sig
kspeed String
file)
rndGrainy1 :: RndGrainySpec -> GrainRate -> GrainSize -> TempoSig -> PitchSig -> String -> SE Sig
rndGrainy1 :: RndGrainySpec -> Sig -> Sig -> Sig -> Sig -> String -> SE Sig
rndGrainy1 = Int
-> RndGrainySpec -> Sig -> Sig -> Sig -> Sig -> String -> SE Sig
rndGrainyChn Int
1
rndGrainy :: RndGrainySpec -> GrainRate -> GrainSize -> TempoSig -> PitchSig -> String -> SE Sig2
rndGrainy :: RndGrainySpec -> Sig -> Sig -> Sig -> Sig -> String -> SE Sig2
rndGrainy RndGrainySpec
spec Sig
kgrainrate Sig
kgrainsize Sig
kspeed Sig
kfreqFactor String
file = do
Sig
asig1 <- Int -> SE Sig
f Int
1140
Sig
asig2 <- Int -> SE Sig
f Int
2
Sig2 -> SE Sig2
forall (m :: * -> *) a. Monad m => a -> m a
return (Sig
asig1, Sig
asig2)
where f :: Int -> SE Sig
f Int
n = Int
-> RndGrainySpec -> Sig -> Sig -> Sig -> Sig -> String -> SE Sig
rndGrainyChn Int
n RndGrainySpec
spec Sig
kgrainrate Sig
kgrainsize Sig
kspeed Sig
kfreqFactor String
file
rndGrainyChn :: Int -> RndGrainySpec -> GrainRate -> GrainSize -> TempoSig -> PitchSig -> String -> SE Sig
rndGrainyChn :: Int
-> RndGrainySpec -> Sig -> Sig -> Sig -> Sig -> String -> SE Sig
rndGrainyChn Int
n RndGrainySpec
spec Sig
kgrainrate Sig
kgrainsize Sig
kspeed Sig
kpitch String
file =
RndGrainySpec -> Sig -> Sig -> Sig -> Tab -> Sig -> SE Sig
rndPtrGrainy RndGrainySpec
spec Sig
kgrainrate Sig
kgrainsize Sig
kpitch (Int -> String -> Tab
grainyTab Int
n String
file) (Sig -> String -> Sig
grainyPtr Sig
kspeed String
file)
ptrGrainy :: GrainRate -> GrainSize -> PitchSig -> Tab -> Pointer -> Sig
ptrGrainy :: Sig -> Sig -> Sig -> Tab -> Sig -> Sig
ptrGrainy Sig
kgrainrate Sig
kgrainsize Sig
kcent Tab
ifiltab Sig
apnter =
PartikkelSpec -> Sig -> Sig -> Sig -> [Tab] -> [Sig] -> Sig
partikkel PartikkelSpec
forall a. Default a => a
def Sig
kgrainrate Sig
kgrainsize Sig
kcent [Tab
ifiltab] [Sig
apnter]
ptrGrainySnd :: GrainRate -> GrainSize -> PitchSig -> String -> Pointer -> Sig2
ptrGrainySnd :: Sig -> Sig -> Sig -> String -> Sig -> Sig2
ptrGrainySnd Sig
kgrainrate Sig
kgrainsize Sig
kcent String
file Sig
apnter = (Tab -> Sig
f (String -> Double -> WavChn -> Tab
wavs String
file Double
0 WavChn
WavLeft), Tab -> Sig
f (String -> Double -> WavChn -> Tab
wavs String
file Double
0 WavChn
WavRight))
where f :: Tab -> Sig
f Tab
tab = PartikkelSpec -> Sig -> Sig -> Sig -> [Tab] -> [Sig] -> Sig
partikkel PartikkelSpec
forall a. Default a => a
def Sig
kgrainrate Sig
kgrainsize Sig
kcent [Tab
tab] [Sig
apnter Sig -> Sig -> Sig
forall a. Fractional a => a -> a -> a
/ D -> Sig
sig (String -> D
lengthSnd String
file)]
ptrGrainySnd1 :: GrainRate -> GrainSize -> PitchSig -> String -> Pointer -> Sig
ptrGrainySnd1 :: Sig -> Sig -> Sig -> String -> Sig -> Sig
ptrGrainySnd1 Sig
kgrainrate Sig
kgrainsize Sig
kcent String
file Sig
apnter = Tab -> Sig
f (String -> Double -> WavChn -> Tab
wavs String
file Double
0 WavChn
WavLeft)
where f :: Tab -> Sig
f Tab
tab = PartikkelSpec -> Sig -> Sig -> Sig -> [Tab] -> [Sig] -> Sig
partikkel PartikkelSpec
forall a. Default a => a
def Sig
kgrainrate Sig
kgrainsize Sig
kcent [Tab
tab] [Sig
apnter Sig -> Sig -> Sig
forall a. Fractional a => a -> a -> a
/ D -> Sig
sig (String -> D
lengthSnd String
file)]
rndPtrGrainy :: RndGrainySpec -> GrainRate -> GrainSize -> PitchSig -> Tab -> Pointer -> SE Sig
rndPtrGrainy :: RndGrainySpec -> Sig -> Sig -> Sig -> Tab -> Sig -> SE Sig
rndPtrGrainy RndGrainySpec
rndSpec Sig
kgrainrate Sig
kgrainsize Sig
kpitch Tab
ifiltab Sig
apnter = do
Sig
kpitchRandVal <- Sig -> SE Sig
rand (RndGrainySpec -> Sig
rndGrainyPitch RndGrainySpec
rndSpec)
Sig
arndpos <- Sig -> SE Sig
forall a. SigOrD a => a -> SE a
linrand (RndGrainySpec -> Sig
rndGrainyPos RndGrainySpec
rndSpec)
Sig
krndsize <- Sig -> SE Sig
rand (RndGrainySpec -> Sig
rndGrainyDur RndGrainySpec
rndSpec)
Sig -> SE Sig
forall (m :: * -> *) a. Monad m => a -> m a
return (Sig -> SE Sig) -> Sig -> SE Sig
forall a b. (a -> b) -> a -> b
$ Sig -> Sig -> Sig -> Tab -> Sig -> Sig
ptrGrainy Sig
kgrainrate (Sig
kgrainsize Sig -> Sig -> Sig
forall a. Num a => a -> a -> a
+ Sig
krndsize) (Sig
kpitch Sig -> Sig -> Sig
forall a. Num a => a -> a -> a
+ Sig
kpitchRandVal) Tab
ifiltab (Sig
apnter Sig -> Sig -> Sig
forall a. Num a => a -> a -> a
+ Sig
arndpos)
grainyTab :: Int -> String -> Tab
grainyTab :: Int -> String -> Tab
grainyTab Int
n String
file = String -> Double -> WavChn -> Tab
wavs String
file Double
0 (if Int
n Int -> Int -> Bool
forall a. Eq a => a -> a -> Bool
== Int
1 then WavChn
WavLeft else WavChn
WavRight)
grainyPtr :: Sig -> String -> Sig
grainyPtr :: Sig -> String -> Sig
grainyPtr Sig
kspeed String
file = Sig
apnter
where
ifildur :: D
ifildur = Str -> D
filelen (Str -> D) -> Str -> D
forall a b. (a -> b) -> a -> b
$ String -> Str
text String
file
apnter :: Sig
apnter = Sig -> Sig
phasor (Sig
kspeed Sig -> Sig -> Sig
forall a. Fractional a => a -> a -> a
/ D -> Sig
sig D
ifildur)
data GranuleMode = GranuleForward | GranuleBackward | GranuleRandom
fromGranuleMode :: GranuleMode -> D
fromGranuleMode :: GranuleMode -> D
fromGranuleMode GranuleMode
x = case GranuleMode
x of
GranuleMode
GranuleForward -> D
1
GranuleMode
GranuleBackward -> -D
1
GranuleMode
GranuleRandom -> D
0
data GranuleSpec = GranuleSpec
{ GranuleSpec -> Sig
granuleGap :: Sig
, GranuleSpec -> D
granuleVoice :: D
, GranuleSpec -> D
granuleRatio :: D
, GranuleSpec -> GranuleMode
granuleMode :: GranuleMode
, GranuleSpec -> D
granuleSkip_os :: D
, GranuleSpec -> D
granuleGap_os :: D
, GranuleSpec -> D
granuleSize_os :: D
, GranuleSpec -> D
granuleSeed :: D
, GranuleSpec -> D
granuleAtt :: D
, GranuleSpec -> D
granuleDec :: D
}
instance Default GranuleMode where
def :: GranuleMode
def = GranuleMode
GranuleForward
instance Default GranuleSpec where
def :: GranuleSpec
def = GranuleSpec :: Sig
-> D
-> D
-> GranuleMode
-> D
-> D
-> D
-> D
-> D
-> D
-> GranuleSpec
GranuleSpec
{ granuleGap :: Sig
granuleGap = Sig
0
, granuleVoice :: D
granuleVoice = D
64
, granuleRatio :: D
granuleRatio = D
1
, granuleMode :: GranuleMode
granuleMode = GranuleMode
forall a. Default a => a
def
, granuleSkip_os :: D
granuleSkip_os = D
0.5
, granuleGap_os :: D
granuleGap_os = D
0.5
, granuleSize_os :: D
granuleSize_os = D
0.5
, granuleSeed :: D
granuleSeed = D
0.5
, granuleAtt :: D
granuleAtt = D
0.3
, granuleDec :: D
granuleDec = D
0.3
}
toPercent :: D -> D
toPercent :: D -> D
toPercent = (D
100 D -> D -> D
forall a. Num a => a -> a -> a
* )
granule :: GranuleSpec -> [ConstPitchSig] -> GrainSize -> Tab -> Sig
granule :: GranuleSpec -> [D] -> Sig -> Tab -> Sig
granule GranuleSpec
spec [D]
chord Sig
kgsize Tab
ifn = D -> GranuleSpec -> [D] -> Sig -> Tab -> Sig
granuleWithLength D
len GranuleSpec
spec [D]
chord Sig
kgsize Tab
ifn
where len :: D
len = Tab -> D
nsamp Tab
ifn D -> D -> D
forall a. Fractional a => a -> a -> a
/ D
getSampleRate
granuleSnd :: GranuleSpec -> [ConstPitchSig] -> GrainSize -> String -> Sig2
granuleSnd :: GranuleSpec -> [D] -> Sig -> String -> Sig2
granuleSnd GranuleSpec
spec [D]
chord Sig
kgsize String
file =
( D -> GranuleSpec -> [D] -> Sig -> Tab -> Sig
granuleWithLength D
len GranuleSpec
spec [D]
chord Sig
kgsize (String -> Double -> WavChn -> Tab
wavs String
file Double
0 WavChn
WavLeft)
, D -> GranuleSpec -> [D] -> Sig -> Tab -> Sig
granuleWithLength D
len GranuleSpec
spec [D]
chord Sig
kgsize (String -> Double -> WavChn -> Tab
wavs String
file Double
0 WavChn
WavRight))
where len :: D
len = Str -> D
filelen (Str -> D) -> Str -> D
forall a b. (a -> b) -> a -> b
$ String -> Str
text String
file
granuleSnd1 :: GranuleSpec -> [ConstPitchSig] -> GrainSize -> String -> Sig
granuleSnd1 :: GranuleSpec -> [D] -> Sig -> String -> Sig
granuleSnd1 GranuleSpec
spec [D]
chord Sig
kgsize String
file = D -> GranuleSpec -> [D] -> Sig -> Tab -> Sig
granuleWithLength D
len GranuleSpec
spec [D]
chord Sig
kgsize (String -> Double -> WavChn -> Tab
wavs String
file Double
0 WavChn
WavLeft)
where len :: D
len = Str -> D
filelen (Str -> D) -> Str -> D
forall a b. (a -> b) -> a -> b
$ String -> Str
text String
file
granuleWithLength :: D -> GranuleSpec -> [ConstPitchSig] -> GrainSize -> Tab -> Sig
granuleWithLength :: D -> GranuleSpec -> [D] -> Sig -> Tab -> Sig
granuleWithLength D
len GranuleSpec
spec [D]
chord Sig
kgsize Tab
ifn = Sig -> Sig -> Sig
forall a. SigSpace a => Sig -> a -> a
mul Sig
0.2 Sig
res
where
kgap :: Sig
kgap = GranuleSpec -> Sig
granuleGap GranuleSpec
spec
kamp :: Sig
kamp = Sig
1
ivoice :: D
ivoice = GranuleSpec -> D
granuleVoice GranuleSpec
spec
iratio :: D
iratio = GranuleSpec -> D
granuleRatio GranuleSpec
spec
imode :: D
imode = GranuleMode -> D
fromGranuleMode (GranuleMode -> D) -> GranuleMode -> D
forall a b. (a -> b) -> a -> b
$ GranuleSpec -> GranuleMode
granuleMode GranuleSpec
spec
ithd :: D
ithd = D
0
ipshift :: D
ipshift = Int -> D
int (Int -> D) -> Int -> D
forall a b. (a -> b) -> a -> b
$ Int -> Int -> Int
forall a. Ord a => a -> a -> a
min ([D] -> Int
forall (t :: * -> *) a. Foldable t => t a -> Int
length ([D] -> Int) -> [D] -> Int
forall a b. (a -> b) -> a -> b
$ [D]
chord) Int
4
igskip :: D
igskip = D
0
igskip_os :: D
igskip_os = D -> D
toPercent (D -> D) -> D -> D
forall a b. (a -> b) -> a -> b
$ GranuleSpec -> D
granuleSkip_os GranuleSpec
spec
ilength :: D
ilength = D
len
igap_os :: D
igap_os = D -> D
toPercent (D -> D) -> D -> D
forall a b. (a -> b) -> a -> b
$ GranuleSpec -> D
granuleGap_os GranuleSpec
spec
igsize_os :: D
igsize_os = D -> D
toPercent (D -> D) -> D -> D
forall a b. (a -> b) -> a -> b
$ GranuleSpec -> D
granuleSize_os GranuleSpec
spec
iatt :: D
iatt = D -> D
toPercent (D -> D) -> D -> D
forall a b. (a -> b) -> a -> b
$ GranuleSpec -> D
granuleAtt GranuleSpec
spec
idec :: D
idec = D -> D
toPercent (D -> D) -> D -> D
forall a b. (a -> b) -> a -> b
$ GranuleSpec -> D
granuleDec GranuleSpec
spec
iseed :: D
iseed = GranuleSpec -> D
granuleSeed GranuleSpec
spec
D
ipitch1 : D
ipitch2 : D
ipitch3 : D
ipitch4 : [D]
_ = [D]
chord [D] -> [D] -> [D]
forall a. [a] -> [a] -> [a]
++ [D
1, D
1, D
1, D
1]
res :: Sig
res = Sig
-> D
-> D
-> D
-> D
-> Tab
-> D
-> D
-> D
-> D
-> Sig
-> D
-> Sig
-> D
-> D
-> D
-> Sig
csdGranule Sig
kamp D
ivoice D
iratio D
imode D
ithd Tab
ifn D
ipshift D
igskip
D
igskip_os D
ilength Sig
kgap D
igap_os Sig
kgsize D
igsize_os D
iatt D
idec Sig -> [D] -> Sig
forall a. Tuple a => a -> [D] -> a
`withDs` [D
iseed, D
ipitch1, D
ipitch2, D
ipitch3, D
ipitch4]
data SyncgrainSpec = SyncgrainSpec
{ SyncgrainSpec -> Tab
syncgrainWin :: Tab
, SyncgrainSpec -> D
syncgrainOverlap :: D
}
data RndSyncgrainSpec = RndSyncgrainSpec
{ RndSyncgrainSpec -> Sig
rndSyncTimescale :: Sig
, RndSyncgrainSpec -> Sig
rndSyncgrainPitch :: Sig
, RndSyncgrainSpec -> Sig
rndSyncgrainGrainDur :: Sig
}
instance Default SyncgrainSpec where
def :: SyncgrainSpec
def = SyncgrainSpec :: Tab -> D -> SyncgrainSpec
SyncgrainSpec
{ syncgrainWin :: Tab
syncgrainWin = Int -> Tab -> Tab
setSize Int
16384 (Tab -> Tab) -> Tab -> Tab
forall a b. (a -> b) -> a -> b
$ [(Double, Double, Double)] -> Tab
sines3 [(Double
0.5, Double
1, Double
0)]
, syncgrainOverlap :: D
syncgrainOverlap = D
25
}
instance Default RndSyncgrainSpec where
def :: RndSyncgrainSpec
def = RndSyncgrainSpec :: Sig -> Sig -> Sig -> RndSyncgrainSpec
RndSyncgrainSpec
{ rndSyncTimescale :: Sig
rndSyncTimescale = Sig
0.5
, rndSyncgrainPitch :: Sig
rndSyncgrainPitch = Sig
0.51
, rndSyncgrainGrainDur :: Sig
rndSyncgrainGrainDur = Sig
0.2
}
syncgrain :: SyncgrainSpec -> GrainSize -> TempoSig -> PitchSig -> Tab -> Sig
syncgrain :: SyncgrainSpec -> Sig -> Sig -> Sig -> Tab -> Sig
syncgrain SyncgrainSpec
spec Sig
kgrdur Sig
ktimescale Sig
kpitch Tab
ftab = Sig -> Sig -> Sig
forall a. SigSpace a => Sig -> a -> a
mul Sig
0.2 Sig
res
where
kgroverlap :: Sig
kgroverlap = D -> Sig
sig (D -> Sig) -> D -> Sig
forall a b. (a -> b) -> a -> b
$ (SyncgrainSpec -> D
syncgrainOverlap SyncgrainSpec
spec) D -> D -> D
forall a. Fractional a => a -> a -> a
/ D
2
ko1 :: Sig
ko1 = Sig -> Sig
forall a. SigOrD a => a -> a
int' (Sig
kgroverlap Sig -> Sig -> Sig
forall a. Num a => a -> a -> a
+ Sig
0.15)
kfr :: Sig
kfr = Sig
ko1 Sig -> Sig -> Sig
forall a. Fractional a => a -> a -> a
/ Sig
kgrdur
kps :: Sig
kps = Sig
1 Sig -> Sig -> Sig
forall a. Fractional a => a -> a -> a
/ Sig
ko1
res :: Sig
res = Sig -> Sig -> Sig -> Sig -> Sig -> Tab -> Tab -> D -> Sig
csdSyncgrain Sig
1 Sig
kfr Sig
kpitch Sig
kgrdur (Sig
kps Sig -> Sig -> Sig
forall a. Num a => a -> a -> a
* Sig
ktimescale) Tab
ftab (SyncgrainSpec -> Tab
syncgrainWin SyncgrainSpec
spec) (SyncgrainSpec -> D
syncgrainOverlap SyncgrainSpec
spec)
rndSyncgrain :: RndSyncgrainSpec -> SyncgrainSpec -> GrainSize -> TempoSig -> PitchSig -> Tab -> SE Sig
rndSyncgrain :: RndSyncgrainSpec
-> SyncgrainSpec -> Sig -> Sig -> Sig -> Tab -> SE Sig
rndSyncgrain RndSyncgrainSpec
rndSpec SyncgrainSpec
spec Sig
kgrdur Sig
ktimescale Sig
kpitch Tab
ftab = do
Sig
rndSyncGrainDur <- Sig -> SE Sig
forall a. SigOrD a => a -> SE a
rnd (RndSyncgrainSpec -> Sig
rndSyncgrainGrainDur RndSyncgrainSpec
rndSpec)
Sig
rndSyncGrainPitch <- Sig -> SE Sig
forall a. SigOrD a => a -> SE a
birnd (RndSyncgrainSpec -> Sig
rndSyncgrainPitch RndSyncgrainSpec
rndSpec)
Sig
rndSyncGrainTimescale <- Sig -> SE Sig
forall a. SigOrD a => a -> SE a
birnd (RndSyncgrainSpec -> Sig
rndSyncTimescale RndSyncgrainSpec
rndSpec)
let kgroverlap :: Sig
kgroverlap = D -> Sig
sig (D -> Sig) -> D -> Sig
forall a b. (a -> b) -> a -> b
$ (SyncgrainSpec -> D
syncgrainOverlap SyncgrainSpec
spec) D -> D -> D
forall a. Fractional a => a -> a -> a
/ D
2
ko1 :: Sig
ko1 = Sig -> Sig
forall a. SigOrD a => a -> a
int' (Sig
kgroverlap Sig -> Sig -> Sig
forall a. Num a => a -> a -> a
+ Sig
0.15)
kgr :: Sig
kgr = Sig
kgrdur Sig -> Sig -> Sig
forall a. Num a => a -> a -> a
+ Sig
rndSyncGrainDur
kfr :: Sig
kfr = Sig
ko1 Sig -> Sig -> Sig
forall a. Fractional a => a -> a -> a
/ Sig
kgr
kps :: Sig
kps = Sig
1 Sig -> Sig -> Sig
forall a. Fractional a => a -> a -> a
/ Sig
ko1
res :: Sig
res = Sig -> Sig -> Sig -> Sig -> Sig -> Tab -> Tab -> D -> Sig
csdSyncgrain Sig
1 Sig
kfr (Sig
kpitch Sig -> Sig -> Sig
forall a. Num a => a -> a -> a
+ Sig
rndSyncGrainPitch) Sig
kgr (Sig
kps Sig -> Sig -> Sig
forall a. Num a => a -> a -> a
* Sig
ktimescale Sig -> Sig -> Sig
forall a. Num a => a -> a -> a
+ Sig
rndSyncGrainTimescale) Tab
ftab (SyncgrainSpec -> Tab
syncgrainWin SyncgrainSpec
spec) (SyncgrainSpec -> D
syncgrainOverlap SyncgrainSpec
spec)
Sig -> SE Sig
forall (m :: * -> *) a. Monad m => a -> m a
return Sig
res
syncgrainSnd :: SyncgrainSpec -> GrainSize -> TempoSig -> PitchSig -> String -> Sig2
syncgrainSnd :: SyncgrainSpec -> Sig -> Sig -> Sig -> String -> Sig2
syncgrainSnd SyncgrainSpec
spec Sig
kgrdur Sig
ktimescale Sig
kpitch String
file =
(Tab -> Sig
f (Tab -> Sig) -> Tab -> Sig
forall a b. (a -> b) -> a -> b
$ String -> Double -> WavChn -> Tab
wavs String
file Double
0 WavChn
WavLeft, Tab -> Sig
f (Tab -> Sig) -> Tab -> Sig
forall a b. (a -> b) -> a -> b
$ String -> Double -> WavChn -> Tab
wavs String
file Double
0 WavChn
WavRight)
where f :: Tab -> Sig
f = SyncgrainSpec -> Sig -> Sig -> Sig -> Tab -> Sig
syncgrain SyncgrainSpec
spec Sig
kgrdur Sig
ktimescale Sig
kpitch
syncgrainSnd1 :: SyncgrainSpec -> GrainSize -> TempoSig -> PitchSig -> String -> Sig
syncgrainSnd1 :: SyncgrainSpec -> Sig -> Sig -> Sig -> String -> Sig
syncgrainSnd1 SyncgrainSpec
spec Sig
kgrdur Sig
ktimescale Sig
kpitch String
file = Tab -> Sig
f (Tab -> Sig) -> Tab -> Sig
forall a b. (a -> b) -> a -> b
$ String -> Double -> WavChn -> Tab
wavs String
file Double
0 WavChn
WavLeft
where f :: Tab -> Sig
f = SyncgrainSpec -> Sig -> Sig -> Sig -> Tab -> Sig
syncgrain SyncgrainSpec
spec Sig
kgrdur Sig
ktimescale Sig
kpitch
rndSyncgrainSnd :: RndSyncgrainSpec -> SyncgrainSpec -> GrainSize -> TempoSig -> PitchSig -> String -> SE Sig2
rndSyncgrainSnd :: RndSyncgrainSpec
-> SyncgrainSpec -> Sig -> Sig -> Sig -> String -> SE Sig2
rndSyncgrainSnd RndSyncgrainSpec
rndSpec SyncgrainSpec
spec Sig
kgrdur Sig
ktimescale Sig
kpitch String
file = do
Sig
aleft <- Tab -> SE Sig
f (Tab -> SE Sig) -> Tab -> SE Sig
forall a b. (a -> b) -> a -> b
$ String -> Double -> WavChn -> Tab
wavs String
file Double
0 WavChn
WavLeft
Sig
aright <- Tab -> SE Sig
f (Tab -> SE Sig) -> Tab -> SE Sig
forall a b. (a -> b) -> a -> b
$ String -> Double -> WavChn -> Tab
wavs String
file Double
0 WavChn
WavRight
Sig2 -> SE Sig2
forall (m :: * -> *) a. Monad m => a -> m a
return (Sig
aleft, Sig
aright)
where f :: Tab -> SE Sig
f = RndSyncgrainSpec
-> SyncgrainSpec -> Sig -> Sig -> Sig -> Tab -> SE Sig
rndSyncgrain RndSyncgrainSpec
rndSpec SyncgrainSpec
spec Sig
kgrdur Sig
ktimescale Sig
kpitch
rndSyncgrainSnd1 :: RndSyncgrainSpec -> SyncgrainSpec -> GrainSize -> TempoSig -> PitchSig -> String -> SE Sig
rndSyncgrainSnd1 :: RndSyncgrainSpec
-> SyncgrainSpec -> Sig -> Sig -> Sig -> String -> SE Sig
rndSyncgrainSnd1 RndSyncgrainSpec
rndSpec SyncgrainSpec
spec Sig
kgrdur Sig
ktimescale Sig
kpitch String
file = Tab -> SE Sig
f (Tab -> SE Sig) -> Tab -> SE Sig
forall a b. (a -> b) -> a -> b
$ String -> Double -> WavChn -> Tab
wavs String
file Double
0 WavChn
WavLeft
where f :: Tab -> SE Sig
f = RndSyncgrainSpec
-> SyncgrainSpec -> Sig -> Sig -> Sig -> Tab -> SE Sig
rndSyncgrain RndSyncgrainSpec
rndSpec SyncgrainSpec
spec Sig
kgrdur Sig
ktimescale Sig
kpitch
data SndwarpSpec = SndwarpSpec
{ SndwarpSpec -> D
sndwarpWinSize :: D
, SndwarpSpec -> D
sndwarpRandw :: D
, SndwarpSpec -> D
sndwarpOvelrap :: D
, SndwarpSpec -> Tab
sndwarpWin :: Tab
}
instance Default SndwarpSpec where
def :: SndwarpSpec
def = SndwarpSpec :: D -> D -> D -> Tab -> SndwarpSpec
SndwarpSpec
{ sndwarpWinSize :: D
sndwarpWinSize = D
0.1
, sndwarpRandw :: D
sndwarpRandw = D
0.3
, sndwarpOvelrap :: D
sndwarpOvelrap = D
50
, sndwarpWin :: Tab
sndwarpWin = Int -> Tab -> Tab
setSize Int
16384 (Tab -> Tab) -> Tab -> Tab
forall a b. (a -> b) -> a -> b
$ [(Double, Double, Double)] -> Tab
sines3 [(Double
0.5, Double
1, Double
0)]
}
sndwarp :: SndwarpSpec -> TempoSig -> PitchSig -> Tab -> Sig
sndwarp :: SndwarpSpec -> Sig -> Sig -> Tab -> Sig
sndwarp SndwarpSpec
spec Sig
kspeed Sig
xresample Tab
ftab = Sig -> Sig -> Sig
forall a. SigSpace a => Sig -> a -> a
mul Sig
0.2 (Sig -> Sig) -> Sig -> Sig
forall a b. (a -> b) -> a -> b
$ Sig -> Sig -> Sig -> Tab -> D -> D -> D -> D -> Tab -> D -> Sig
csdSndwarp Sig
1 Sig
kspeed Sig
xresample Tab
ftab D
0
(D
getSampleRate D -> D -> D
forall a. Num a => a -> a -> a
* SndwarpSpec -> D
sndwarpWinSize SndwarpSpec
spec) (D
getSampleRate D -> D -> D
forall a. Num a => a -> a -> a
* SndwarpSpec -> D
sndwarpRandw SndwarpSpec
spec)
(SndwarpSpec -> D
sndwarpOvelrap SndwarpSpec
spec) (SndwarpSpec -> Tab
sndwarpWin SndwarpSpec
spec) D
0
sndwarpst :: SndwarpSpec -> TempoSig -> PitchSig -> Tab -> Sig2
sndwarpst :: SndwarpSpec -> Sig -> Sig -> Tab -> Sig2
sndwarpst SndwarpSpec
spec Sig
xspeed Sig
xresample Tab
ftab = Sig -> Sig2 -> Sig2
forall a. SigSpace a => Sig -> a -> a
mul Sig
0.2 (Sig2 -> Sig2) -> Sig2 -> Sig2
forall a b. (a -> b) -> a -> b
$ Sig -> Sig -> Sig -> Tab -> D -> D -> D -> D -> Tab -> D -> Sig2
csdSndwarpst Sig
1 Sig
xspeed Sig
xresample Tab
ftab D
0
(D
getSampleRate D -> D -> D
forall a. Num a => a -> a -> a
* SndwarpSpec -> D
sndwarpWinSize SndwarpSpec
spec) (D
getSampleRate D -> D -> D
forall a. Num a => a -> a -> a
* SndwarpSpec -> D
sndwarpRandw SndwarpSpec
spec)
(SndwarpSpec -> D
sndwarpOvelrap SndwarpSpec
spec) (SndwarpSpec -> Tab
sndwarpWin SndwarpSpec
spec) D
0
sndwarpSnd :: SndwarpSpec -> TempoSig -> PitchSig -> String -> Sig2
sndwarpSnd :: SndwarpSpec -> Sig -> Sig -> String -> Sig2
sndwarpSnd SndwarpSpec
spec Sig
kspeed Sig
xresample String
file = SndwarpSpec -> Sig -> Sig -> Tab -> Sig2
sndwarpst SndwarpSpec
spec Sig
kspeed Sig
xresample (String -> Double -> WavChn -> Tab
wavs String
file Double
0 WavChn
WavAll)
sndwarpSnd1 :: SndwarpSpec -> TempoSig -> PitchSig -> String -> Sig
sndwarpSnd1 :: SndwarpSpec -> Sig -> Sig -> String -> Sig
sndwarpSnd1 SndwarpSpec
spec Sig
kspeed Sig
xresample String
file = SndwarpSpec -> Sig -> Sig -> Tab -> Sig
sndwarp SndwarpSpec
spec Sig
kspeed Sig
xresample (String -> Double -> WavChn -> Tab
wavs String
file Double
0 WavChn
WavLeft)
ptrSndwarp :: SndwarpSpec -> PitchSig -> Tab -> Pointer -> Sig
ptrSndwarp :: SndwarpSpec -> Sig -> Tab -> Sig -> Sig
ptrSndwarp SndwarpSpec
spec Sig
xresample Tab
ftab Sig
xptr = Sig -> Sig -> Sig
forall a. SigSpace a => Sig -> a -> a
mul Sig
0.2 (Sig -> Sig) -> Sig -> Sig
forall a b. (a -> b) -> a -> b
$ Sig -> Sig -> Sig -> Tab -> D -> D -> D -> D -> Tab -> D -> Sig
csdSndwarp Sig
1 Sig
xptr Sig
xresample Tab
ftab D
0
(D
getSampleRate D -> D -> D
forall a. Num a => a -> a -> a
* SndwarpSpec -> D
sndwarpWinSize SndwarpSpec
spec) (D
getSampleRate D -> D -> D
forall a. Num a => a -> a -> a
* SndwarpSpec -> D
sndwarpRandw SndwarpSpec
spec)
(SndwarpSpec -> D
sndwarpOvelrap SndwarpSpec
spec) (SndwarpSpec -> Tab
sndwarpWin SndwarpSpec
spec) D
1
ptrSndwarpst :: SndwarpSpec -> PitchSig -> Tab -> Pointer -> Sig2
ptrSndwarpst :: SndwarpSpec -> Sig -> Tab -> Sig -> Sig2
ptrSndwarpst SndwarpSpec
spec Sig
xresample Tab
ftab Sig
xptr = Sig -> Sig -> Sig -> Tab -> D -> D -> D -> D -> Tab -> D -> Sig2
csdSndwarpst Sig
1 Sig
xptr Sig
xresample Tab
ftab D
0
(D
getSampleRate D -> D -> D
forall a. Num a => a -> a -> a
* SndwarpSpec -> D
sndwarpWinSize SndwarpSpec
spec) (D
getSampleRate D -> D -> D
forall a. Num a => a -> a -> a
* SndwarpSpec -> D
sndwarpRandw SndwarpSpec
spec)
(SndwarpSpec -> D
sndwarpOvelrap SndwarpSpec
spec) (SndwarpSpec -> Tab
sndwarpWin SndwarpSpec
spec) D
1
ptrSndwarpSnd :: SndwarpSpec -> PitchSig -> String -> Pointer -> Sig2
ptrSndwarpSnd :: SndwarpSpec -> Sig -> String -> Sig -> Sig2
ptrSndwarpSnd SndwarpSpec
spec Sig
xresample String
file Sig
xptr = SndwarpSpec -> Sig -> Tab -> Sig -> Sig2
ptrSndwarpst SndwarpSpec
spec Sig
xresample (String -> Double -> WavChn -> Tab
wavs String
file Double
0 WavChn
WavAll) Sig
xptr
ptrSndwarpSnd1 :: SndwarpSpec -> PitchSig -> String -> Pointer -> Sig
ptrSndwarpSnd1 :: SndwarpSpec -> Sig -> String -> Sig -> Sig
ptrSndwarpSnd1 SndwarpSpec
spec Sig
xresample String
file Sig
xptr = SndwarpSpec -> Sig -> Tab -> Sig -> Sig
ptrSndwarp SndwarpSpec
spec Sig
xresample (String -> Double -> WavChn -> Tab
wavs String
file Double
0 WavChn
WavLeft) Sig
xptr
data Fof2Spec = Fof2Spec
{ Fof2Spec -> Sig
fof2TimeMod :: Sig
, Fof2Spec -> Sig
fof2PitchMod :: Sig
, Fof2Spec -> Sig
fof2Oct :: Sig
, Fof2Spec -> Sig
fof2Band :: Sig
, Fof2Spec -> Sig
fof2Rise :: Sig
, Fof2Spec -> Sig
fof2Decay :: Sig
, Fof2Spec -> Sig
fof2Gliss :: Sig
, Fof2Spec -> Tab
fof2Win :: Tab
}
instance Default Fof2Spec where
def :: Fof2Spec
def = Fof2Spec :: Sig -> Sig -> Sig -> Sig -> Sig -> Sig -> Sig -> Tab -> Fof2Spec
Fof2Spec
{ fof2TimeMod :: Sig
fof2TimeMod = Sig
0.2
, fof2PitchMod :: Sig
fof2PitchMod = Sig
0
, fof2Oct :: Sig
fof2Oct = Sig
0
, fof2Band :: Sig
fof2Band = Sig
0
, fof2Rise :: Sig
fof2Rise = Sig
0.5
, fof2Decay :: Sig
fof2Decay = Sig
0.5
, fof2Gliss :: Sig
fof2Gliss = Sig
0
, fof2Win :: Tab
fof2Win = Int -> Tab -> Tab
setSize Int
8192 (Tab -> Tab) -> Tab -> Tab
forall a b. (a -> b) -> a -> b
$ [(Double, Double, Double, Double)] -> Tab
sines4 [(Double
0.5, Double
1, Double
270, Double
1)]
}
fof2Snd :: Fof2Spec -> GrainRate -> GrainSize -> TempoSig -> String -> Sig2
fof2Snd :: Fof2Spec -> Sig -> Sig -> Sig -> String -> Sig2
fof2Snd Fof2Spec
spec Sig
kgrainrate Sig
kgrainsize Sig
kspeed String
file = (Int -> Sig
f Int
1, Int -> Sig
f Int
2)
where f :: Int -> Sig
f Int
n = Int -> Fof2Spec -> Sig -> Sig -> Sig -> String -> Sig
fof2Chn Int
n Fof2Spec
spec Sig
kgrainrate Sig
kgrainsize Sig
kspeed String
file
fof2Snd1 :: Fof2Spec -> GrainRate -> GrainSize -> TempoSig -> String -> Sig
fof2Snd1 :: Fof2Spec -> Sig -> Sig -> Sig -> String -> Sig
fof2Snd1 Fof2Spec
spec Sig
kgrainrate Sig
kgrainsize Sig
kspeed String
file = Int -> Sig
f Int
1
where f :: Int -> Sig
f Int
n = Int -> Fof2Spec -> Sig -> Sig -> Sig -> String -> Sig
fof2Chn Int
n Fof2Spec
spec Sig
kgrainrate Sig
kgrainsize Sig
kspeed String
file
fof2Chn :: Int -> Fof2Spec -> GrainRate -> GrainSize -> TempoSig -> String -> Sig
fof2Chn :: Int -> Fof2Spec -> Sig -> Sig -> Sig -> String -> Sig
fof2Chn Int
n Fof2Spec
spec Sig
kgrainrate Sig
kgrainsize Sig
kspeed String
file =
Fof2Spec -> Sig -> Sig -> Tab -> Sig -> Sig
fof2 Fof2Spec
spec Sig
kgrainrate Sig
kgrainsize (Int -> String -> Tab
grainyTab Int
n String
file) (Sig -> String -> Sig
grainyPtr Sig
kspeed String
file)
fof2 :: Fof2Spec -> GrainRate -> GrainSize -> Tab -> Pointer -> Sig
fof2 :: Fof2Spec -> Sig -> Sig -> Tab -> Sig -> Sig
fof2 Fof2Spec
spec Sig
grainRate Sig
grainSize Tab
buf Sig
kphs = D -> Sig
go (Tab -> D
ftlen Tab
buf)
where
kfund :: Sig
kfund = Sig
grainRate
kris :: Sig
kris = Fof2Spec -> Sig
fof2Rise Fof2Spec
spec
kdec :: Sig
kdec = Fof2Spec -> Sig
fof2Decay Fof2Spec
spec
kband :: Sig
kband = Fof2Spec -> Sig
fof2Band Fof2Spec
spec
koct :: Sig
koct = Fof2Spec -> Sig
fof2Oct Fof2Spec
spec
kgliss :: Sig
kgliss = Fof2Spec -> Sig
fof2Gliss Fof2Spec
spec
go :: D -> Sig
go D
tabLen = do
Sig
-> Sig
-> Sig
-> Sig
-> Sig
-> Sig
-> Sig
-> Sig
-> D
-> Tab
-> Tab
-> D
-> Sig
-> Sig
-> Sig
csdFof2 (Sig -> Sig
forall a. SigOrD a => a -> a
ampdbfs (-Sig
8)) Sig
kfund Sig
kform Sig
koct Sig
kband (Sig
kris Sig -> Sig -> Sig
forall a. Num a => a -> a -> a
* Sig
kdur)
Sig
kdur (Sig
kdec Sig -> Sig -> Sig
forall a. Num a => a -> a -> a
* Sig
kdur) D
100 Tab
giLive Tab
giSigRise D
86400 Sig
kphs Sig
kgliss
where
kdur :: Sig
kdur = Sig
grainSize Sig -> Sig -> Sig
forall a. Fractional a => a -> a -> a
/ Sig
kfund
kform :: Sig
kform = (D -> Sig
sig (D -> Sig) -> D -> Sig
forall a b. (a -> b) -> a -> b
$ D
getSampleRate D -> D -> D
forall a. Fractional a => a -> a -> a
/ D
tabLen)
giSigRise :: Tab
giSigRise = Fof2Spec -> Tab
fof2Win Fof2Spec
spec
giLive :: Tab
giLive = Tab
buf
fofDelay :: MaxDelayTime -> DelayTime -> Feedback -> Balance -> Fof2Spec -> GrainRate -> GrainSize -> Sig -> SE Sig
fofDelay :: D -> Sig -> Sig -> Sig -> Fof2Spec -> Sig -> Sig -> Sig -> SE Sig
fofDelay D
maxLength Sig
delTim Sig
kfeed Sig
kbalance Fof2Spec
spec Sig
grainRate Sig
grainSize Sig
asig = do
Sig
rndTmod <- Sig -> Sig -> SE Sig
forall a. SigOrD a => a -> a -> SE a
rnd31 Sig
kTmod Sig
1
Sig
rndFmod <- Sig -> Sig -> SE Sig
forall a. SigOrD a => a -> a -> SE a
rnd31 Sig
kFmod Sig
1
(Tab -> Sig -> SE Sig) -> D -> Sig -> Sig -> Sig -> Sig -> SE Sig
tabDelay (Sig -> Tab -> Sig -> SE Sig
go Sig
rndFmod) D
maxLength (Sig
delTim Sig -> Sig -> Sig
forall a. Num a => a -> a -> a
+ Sig
rndTmod) Sig
kfeed Sig
kbalance Sig
asig
where
kTmod :: Sig
kTmod = Fof2Spec -> Sig
fof2TimeMod Fof2Spec
spec
kFmod :: Sig
kFmod = Fof2Spec -> Sig
fof2PitchMod Fof2Spec
spec
kfund :: Sig
kfund = Sig
grainRate
kris :: Sig
kris = Fof2Spec -> Sig
fof2Rise Fof2Spec
spec
kdec :: Sig
kdec = Fof2Spec -> Sig
fof2Decay Fof2Spec
spec
kband :: Sig
kband = Fof2Spec -> Sig
fof2Band Fof2Spec
spec
koct :: Sig
koct = Fof2Spec -> Sig
fof2Oct Fof2Spec
spec
kgliss :: Sig
kgliss = Fof2Spec -> Sig
fof2Gliss Fof2Spec
spec
tabLen :: D
tabLen = D -> D
tabSizeSecondsPower2 D
maxLength
go :: Sig -> Tab -> Sig -> SE Sig
go :: Sig -> Tab -> Sig -> SE Sig
go Sig
kFmodSig Tab
buf Sig
kphs = do
Sig -> SE Sig
forall (m :: * -> *) a. Monad m => a -> m a
return (Sig -> SE Sig) -> Sig -> SE Sig
forall a b. (a -> b) -> a -> b
$ Sig
-> Sig
-> Sig
-> Sig
-> Sig
-> Sig
-> Sig
-> Sig
-> D
-> Tab
-> Tab
-> D
-> Sig
-> Sig
-> Sig
csdFof2 (Sig -> Sig
forall a. SigOrD a => a -> a
ampdbfs (-Sig
8)) Sig
kfund Sig
kform Sig
koct Sig
kband (Sig
kris Sig -> Sig -> Sig
forall a. Num a => a -> a -> a
* Sig
kdur)
Sig
kdur (Sig
kdec Sig -> Sig -> Sig
forall a. Num a => a -> a -> a
* Sig
kdur) D
100 Tab
giLive Tab
giSigRise D
86400 Sig
kphs Sig
kgliss
where
kdur :: Sig
kdur = Sig
grainSize Sig -> Sig -> Sig
forall a. Fractional a => a -> a -> a
/ Sig
kfund
kform :: Sig
kform = (Sig
1Sig -> Sig -> Sig
forall a. Num a => a -> a -> a
+Sig
kFmodSig)Sig -> Sig -> Sig
forall a. Num a => a -> a -> a
*(D -> Sig
sig (D -> Sig) -> D -> Sig
forall a b. (a -> b) -> a -> b
$ D
getSampleRate D -> D -> D
forall a. Fractional a => a -> a -> a
/ D
tabLen)
giSigRise :: Tab
giSigRise = Fof2Spec -> Tab
fof2Win Fof2Spec
spec
giLive :: Tab
giLive = Tab
buf
grainyDelay :: MaxDelayTime -> DelayTime -> Feedback -> Balance -> GrainRate -> GrainSize -> PitchSig -> Sig -> SE Sig
grainyDelay :: D -> Sig -> Sig -> Sig -> Sig -> Sig -> Sig -> Sig -> SE Sig
grainyDelay D
maxDel Sig
delTime Sig
kfeed Sig
kbalance Sig
grainRate Sig
grainSize Sig
pitch Sig
asig = (Tab -> Sig -> SE Sig) -> D -> Sig -> Sig -> Sig -> Sig -> SE Sig
tabDelay Tab -> Sig -> SE Sig
forall (m :: * -> *). Monad m => Tab -> Sig -> m Sig
go D
maxDel Sig
delTime Sig
kfeed Sig
kbalance Sig
asig
where go :: Tab -> Sig -> m Sig
go Tab
tab Sig
ptr = Sig -> m Sig
forall (m :: * -> *) a. Monad m => a -> m a
return (Sig -> m Sig) -> Sig -> m Sig
forall a b. (a -> b) -> a -> b
$ Sig -> Sig -> Sig -> Tab -> Sig -> Sig
ptrGrainy Sig
grainRate Sig
grainSize Sig
pitch Tab
tab Sig
ptr
rndGrainyDelay :: MaxDelayTime -> DelayTime -> Feedback -> Balance -> RndGrainySpec -> GrainRate -> GrainSize -> PitchSig -> Sig -> SE Sig
rndGrainyDelay :: D
-> Sig
-> Sig
-> Sig
-> RndGrainySpec
-> Sig
-> Sig
-> Sig
-> Sig
-> SE Sig
rndGrainyDelay D
maxDel Sig
delTime Sig
kfeed Sig
kbalance RndGrainySpec
spec Sig
grainRate Sig
grainSize Sig
pitch Sig
asig = (Tab -> Sig -> SE Sig) -> D -> Sig -> Sig -> Sig -> Sig -> SE Sig
tabDelay Tab -> Sig -> SE Sig
go D
maxDel Sig
delTime Sig
kfeed Sig
kbalance Sig
asig
where go :: Tab -> Sig -> SE Sig
go = RndGrainySpec -> Sig -> Sig -> Sig -> Tab -> Sig -> SE Sig
rndPtrGrainy RndGrainySpec
spec Sig
grainRate Sig
grainSize Sig
pitch
sndwarpDelay :: MaxDelayTime -> DelayTime -> Feedback -> Balance -> SndwarpSpec -> PitchSig -> Sig -> SE Sig
sndwarpDelay :: D -> Sig -> Sig -> Sig -> SndwarpSpec -> Sig -> Sig -> SE Sig
sndwarpDelay D
maxDel Sig
delTime Sig
kfeed Sig
kbalance SndwarpSpec
spec Sig
pitch Sig
asig = (Tab -> Sig -> SE Sig) -> D -> Sig -> Sig -> Sig -> Sig -> SE Sig
tabDelay Tab -> Sig -> SE Sig
forall (m :: * -> *). Monad m => Tab -> Sig -> m Sig
go D
maxDel Sig
delTime Sig
kfeed Sig
kbalance Sig
asig
where go :: Tab -> Sig -> m Sig
go Tab
tab Sig
ptr = Sig -> m Sig
forall (m :: * -> *) a. Monad m => a -> m a
return (Sig -> m Sig) -> Sig -> m Sig
forall a b. (a -> b) -> a -> b
$ SndwarpSpec -> Sig -> Tab -> Sig -> Sig
ptrSndwarp SndwarpSpec
spec Sig
pitch Tab
tab (Tab -> Sig -> Sig
sec2rel Tab
tab Sig
ptr)
syncgrainDelay :: MaxDelayTime -> DelayTime -> Feedback -> Balance -> SyncgrainSpec -> GrainSize -> TempoSig -> PitchSig -> Sig -> SE Sig
syncgrainDelay :: D
-> Sig
-> Sig
-> Sig
-> SyncgrainSpec
-> Sig
-> Sig
-> Sig
-> Sig
-> SE Sig
syncgrainDelay D
maxDel Sig
delTime Sig
kfeed Sig
kbalance SyncgrainSpec
spec Sig
grainSize Sig
tempo Sig
pitch Sig
asig = (Tab -> Sig -> SE Sig) -> D -> Sig -> Sig -> Sig -> Sig -> SE Sig
tabDelay Tab -> Sig -> SE Sig
forall (m :: * -> *) p. Monad m => Tab -> p -> m Sig
go D
maxDel Sig
delTime Sig
kfeed Sig
kbalance Sig
asig
where go :: Tab -> p -> m Sig
go Tab
tab p
_ = Sig -> m Sig
forall (m :: * -> *) a. Monad m => a -> m a
return (Sig -> m Sig) -> Sig -> m Sig
forall a b. (a -> b) -> a -> b
$ SyncgrainSpec -> Sig -> Sig -> Sig -> Tab -> Sig
syncgrain SyncgrainSpec
spec Sig
grainSize Sig
tempo Sig
pitch Tab
tab
rndSyncgrainDelay :: MaxDelayTime -> DelayTime -> Feedback -> Balance -> RndSyncgrainSpec -> SyncgrainSpec -> GrainSize -> TempoSig -> PitchSig -> Sig -> SE Sig
rndSyncgrainDelay :: D
-> Sig
-> Sig
-> Sig
-> RndSyncgrainSpec
-> SyncgrainSpec
-> Sig
-> Sig
-> Sig
-> Sig
-> SE Sig
rndSyncgrainDelay D
maxDel Sig
delTime Sig
kfeed Sig
kbalance RndSyncgrainSpec
rndSpec SyncgrainSpec
spec Sig
grainSize Sig
tempo Sig
pitch Sig
asig = (Tab -> Sig -> SE Sig) -> D -> Sig -> Sig -> Sig -> Sig -> SE Sig
tabDelay Tab -> Sig -> SE Sig
forall p. Tab -> p -> SE Sig
go D
maxDel Sig
delTime Sig
kfeed Sig
kbalance Sig
asig
where go :: Tab -> p -> SE Sig
go Tab
tab p
_ = RndSyncgrainSpec
-> SyncgrainSpec -> Sig -> Sig -> Sig -> Tab -> SE Sig
rndSyncgrain RndSyncgrainSpec
rndSpec SyncgrainSpec
spec Sig
grainSize Sig
tempo Sig
pitch Tab
tab
partikkelDelay :: MaxDelayTime -> DelayTime -> Feedback -> Balance -> PartikkelSpec -> GrainRate -> GrainSize -> PitchSig -> Sig -> SE Sig
partikkelDelay :: D
-> Sig
-> Sig
-> Sig
-> PartikkelSpec
-> Sig
-> Sig
-> Sig
-> Sig
-> SE Sig
partikkelDelay D
maxDel Sig
delTime Sig
kfeed Sig
kbalance PartikkelSpec
spec Sig
grainRate Sig
grainSize Sig
pitch Sig
asig = (Tab -> Sig -> SE Sig) -> D -> Sig -> Sig -> Sig -> Sig -> SE Sig
tabDelay Tab -> Sig -> SE Sig
forall (m :: * -> *). Monad m => Tab -> Sig -> m Sig
go D
maxDel Sig
delTime Sig
kfeed Sig
kbalance Sig
asig
where go :: Tab -> Sig -> m Sig
go Tab
tab Sig
ptr = Sig -> m Sig
forall (m :: * -> *) a. Monad m => a -> m a
return (Sig -> m Sig) -> Sig -> m Sig
forall a b. (a -> b) -> a -> b
$ PartikkelSpec -> Sig -> Sig -> Sig -> [Tab] -> [Sig] -> Sig
partikkel PartikkelSpec
spec Sig
grainRate Sig
grainSize Sig
pitch [Tab
tab] [Sig
ptr]
fxFeed :: Feedback
fxFeed :: Sig
fxFeed = Sig
0
fxBalance :: Balance
fxBalance :: Sig
fxBalance = Sig
1
fxMaxLength :: MaxDelayTime
fxMaxLength :: D
fxMaxLength = D
1
fxDelTime :: DelayTime
fxDelTime :: Sig
fxDelTime = Sig
0.05
type GrainDelay a = MaxDelayTime -> DelayTime -> Feedback -> Balance -> a
toGrainFx :: GrainDelay a -> a
toGrainFx :: GrainDelay a -> a
toGrainFx GrainDelay a
f = GrainDelay a
f D
fxMaxLength Sig
fxDelTime Sig
fxFeed Sig
fxBalance
grainyFx :: GrainRate -> GrainSize -> PitchSig -> Sig -> SE Sig
grainyFx :: Sig -> Sig -> Sig -> Sig -> SE Sig
grainyFx = (D -> Sig -> Sig -> Sig -> Sig -> Sig -> Sig -> Sig -> SE Sig)
-> Sig -> Sig -> Sig -> Sig -> SE Sig
forall a. GrainDelay a -> a
toGrainFx D -> Sig -> Sig -> Sig -> Sig -> Sig -> Sig -> Sig -> SE Sig
grainyDelay
rndGrainyFx :: RndGrainySpec -> GrainRate -> GrainSize -> PitchSig -> Sig -> SE Sig
rndGrainyFx :: RndGrainySpec -> Sig -> Sig -> Sig -> Sig -> SE Sig
rndGrainyFx = (D
-> Sig
-> Sig
-> Sig
-> RndGrainySpec
-> Sig
-> Sig
-> Sig
-> Sig
-> SE Sig)
-> RndGrainySpec -> Sig -> Sig -> Sig -> Sig -> SE Sig
forall a. GrainDelay a -> a
toGrainFx D
-> Sig
-> Sig
-> Sig
-> RndGrainySpec
-> Sig
-> Sig
-> Sig
-> Sig
-> SE Sig
rndGrainyDelay
sndwarpFx :: SndwarpSpec -> PitchSig -> Sig -> SE Sig
sndwarpFx :: SndwarpSpec -> Sig -> Sig -> SE Sig
sndwarpFx = (D -> Sig -> Sig -> Sig -> SndwarpSpec -> Sig -> Sig -> SE Sig)
-> SndwarpSpec -> Sig -> Sig -> SE Sig
forall a. GrainDelay a -> a
toGrainFx D -> Sig -> Sig -> Sig -> SndwarpSpec -> Sig -> Sig -> SE Sig
sndwarpDelay
syncgrainFx :: SyncgrainSpec -> GrainSize -> TempoSig -> PitchSig -> Sig -> SE Sig
syncgrainFx :: SyncgrainSpec -> Sig -> Sig -> Sig -> Sig -> SE Sig
syncgrainFx = (D
-> Sig
-> Sig
-> Sig
-> SyncgrainSpec
-> Sig
-> Sig
-> Sig
-> Sig
-> SE Sig)
-> SyncgrainSpec -> Sig -> Sig -> Sig -> Sig -> SE Sig
forall a. GrainDelay a -> a
toGrainFx D
-> Sig
-> Sig
-> Sig
-> SyncgrainSpec
-> Sig
-> Sig
-> Sig
-> Sig
-> SE Sig
syncgrainDelay
rndSyncgrainFx :: RndSyncgrainSpec -> SyncgrainSpec -> GrainSize -> TempoSig -> PitchSig -> Sig -> SE Sig
rndSyncgrainFx :: RndSyncgrainSpec
-> SyncgrainSpec -> Sig -> Sig -> Sig -> Sig -> SE Sig
rndSyncgrainFx = (D
-> Sig
-> Sig
-> Sig
-> RndSyncgrainSpec
-> SyncgrainSpec
-> Sig
-> Sig
-> Sig
-> Sig
-> SE Sig)
-> RndSyncgrainSpec
-> SyncgrainSpec
-> Sig
-> Sig
-> Sig
-> Sig
-> SE Sig
forall a. GrainDelay a -> a
toGrainFx D
-> Sig
-> Sig
-> Sig
-> RndSyncgrainSpec
-> SyncgrainSpec
-> Sig
-> Sig
-> Sig
-> Sig
-> SE Sig
rndSyncgrainDelay
partikkelFx :: PartikkelSpec -> GrainRate -> GrainSize -> PitchSig -> Sig -> SE Sig
partikkelFx :: PartikkelSpec -> Sig -> Sig -> Sig -> Sig -> SE Sig
partikkelFx = (D
-> Sig
-> Sig
-> Sig
-> PartikkelSpec
-> Sig
-> Sig
-> Sig
-> Sig
-> SE Sig)
-> PartikkelSpec -> Sig -> Sig -> Sig -> Sig -> SE Sig
forall a. GrainDelay a -> a
toGrainFx D
-> Sig
-> Sig
-> Sig
-> PartikkelSpec
-> Sig
-> Sig
-> Sig
-> Sig
-> SE Sig
partikkelDelay
fofFx :: Fof2Spec -> GrainRate -> GrainSize -> Sig -> SE Sig
fofFx :: Fof2Spec -> Sig -> Sig -> Sig -> SE Sig
fofFx = (D -> Sig -> Sig -> Sig -> Fof2Spec -> Sig -> Sig -> Sig -> SE Sig)
-> Fof2Spec -> Sig -> Sig -> Sig -> SE Sig
forall a. GrainDelay a -> a
toGrainFx D -> Sig -> Sig -> Sig -> Fof2Spec -> Sig -> Sig -> Sig -> SE Sig
fofDelay
csdPartikkel :: Tuple a => Sig -> Sig -> Tab -> Sig -> Sig -> Tab -> Tab -> Tab -> Sig -> Sig -> Sig -> Sig -> Tab -> Sig -> Sig -> Tab-> Tab -> Sig -> Tab -> Tab -> Tab -> Sig -> Sig -> Sig -> Tab -> Sig -> Tab -> Tab -> Tab -> Tab -> Tab -> Sig -> Sig -> Sig -> Sig -> Sig -> Sig -> Sig -> Sig -> D -> a
csdPartikkel :: Sig
-> Sig
-> Tab
-> Sig
-> Sig
-> Tab
-> Tab
-> Tab
-> Sig
-> Sig
-> Sig
-> Sig
-> Tab
-> Sig
-> Sig
-> Tab
-> Tab
-> Sig
-> Tab
-> Tab
-> Tab
-> Sig
-> Sig
-> Sig
-> Tab
-> Sig
-> Tab
-> Tab
-> Tab
-> Tab
-> Tab
-> Sig
-> Sig
-> Sig
-> Sig
-> Sig
-> Sig
-> Sig
-> Sig
-> D
-> a
csdPartikkel Sig
b1 Sig
b2 Tab
b3 Sig
b4 Sig
b5 Tab
b6 Tab
b7 Tab
b8 Sig
b9 Sig
b10 Sig
b11 Sig
b12 Tab
b13 Sig
b14 Sig
b15 Tab
b16 Tab
b17 Sig
b18 Tab
b19 Tab
b20 Tab
b21 Sig
b22 Sig
b23 Sig
b24 Tab
b25 Sig
b26 Tab
b27 Tab
b28 Tab
b29 Tab
b30 Tab
b31 Sig
b32 Sig
b33 Sig
b34 Sig
b35 Sig
b36 Sig
b37 Sig
b38 Sig
b39 D
b40 = GE (MultiOut [E]) -> a
forall a. Tuple a => GE (MultiOut [E]) -> a
pureTuple (GE (MultiOut [E]) -> a) -> GE (MultiOut [E]) -> a
forall a b. (a -> b) -> a -> b
$ E
-> E
-> E
-> E
-> E
-> E
-> E
-> E
-> E
-> E
-> E
-> E
-> E
-> E
-> E
-> E
-> E
-> E
-> E
-> E
-> E
-> E
-> E
-> E
-> E
-> E
-> E
-> E
-> E
-> E
-> E
-> E
-> E
-> E
-> E
-> E
-> E
-> E
-> E
-> E
-> MultiOut [E]
f (E
-> E
-> E
-> E
-> E
-> E
-> E
-> E
-> E
-> E
-> E
-> E
-> E
-> E
-> E
-> E
-> E
-> E
-> E
-> E
-> E
-> E
-> E
-> E
-> E
-> E
-> E
-> E
-> E
-> E
-> E
-> E
-> E
-> E
-> E
-> E
-> E
-> E
-> E
-> E
-> MultiOut [E])
-> GE E
-> GE
(E
-> E
-> E
-> E
-> E
-> E
-> E
-> E
-> E
-> E
-> E
-> E
-> E
-> E
-> E
-> E
-> E
-> E
-> E
-> E
-> E
-> E
-> E
-> E
-> E
-> E
-> E
-> E
-> E
-> E
-> E
-> E
-> E
-> E
-> E
-> E
-> E
-> E
-> E
-> MultiOut [E])
forall (f :: * -> *) a b. Functor f => (a -> b) -> f a -> f b
<$> Sig -> GE E
unSig Sig
b1 GE
(E
-> E
-> E
-> E
-> E
-> E
-> E
-> E
-> E
-> E
-> E
-> E
-> E
-> E
-> E
-> E
-> E
-> E
-> E
-> E
-> E
-> E
-> E
-> E
-> E
-> E
-> E
-> E
-> E
-> E
-> E
-> E
-> E
-> E
-> E
-> E
-> E
-> E
-> E
-> MultiOut [E])
-> GE E
-> GE
(E
-> E
-> E
-> E
-> E
-> E
-> E
-> E
-> E
-> E
-> E
-> E
-> E
-> E
-> E
-> E
-> E
-> E
-> E
-> E
-> E
-> E
-> E
-> E
-> E
-> E
-> E
-> E
-> E
-> E
-> E
-> E
-> E
-> E
-> E
-> E
-> E
-> E
-> MultiOut [E])
forall (f :: * -> *) a b. Applicative f => f (a -> b) -> f a -> f b
<*> Sig -> GE E
unSig Sig
b2 GE
(E
-> E
-> E
-> E
-> E
-> E
-> E
-> E
-> E
-> E
-> E
-> E
-> E
-> E
-> E
-> E
-> E
-> E
-> E
-> E
-> E
-> E
-> E
-> E
-> E
-> E
-> E
-> E
-> E
-> E
-> E
-> E
-> E
-> E
-> E
-> E
-> E
-> E
-> MultiOut [E])
-> GE E
-> GE
(E
-> E
-> E
-> E
-> E
-> E
-> E
-> E
-> E
-> E
-> E
-> E
-> E
-> E
-> E
-> E
-> E
-> E
-> E
-> E
-> E
-> E
-> E
-> E
-> E
-> E
-> E
-> E
-> E
-> E
-> E
-> E
-> E
-> E
-> E
-> E
-> E
-> MultiOut [E])
forall (f :: * -> *) a b. Applicative f => f (a -> b) -> f a -> f b
<*> Tab -> GE E
unTab Tab
b3 GE
(E
-> E
-> E
-> E
-> E
-> E
-> E
-> E
-> E
-> E
-> E
-> E
-> E
-> E
-> E
-> E
-> E
-> E
-> E
-> E
-> E
-> E
-> E
-> E
-> E
-> E
-> E
-> E
-> E
-> E
-> E
-> E
-> E
-> E
-> E
-> E
-> E
-> MultiOut [E])
-> GE E
-> GE
(E
-> E
-> E
-> E
-> E
-> E
-> E
-> E
-> E
-> E
-> E
-> E
-> E
-> E
-> E
-> E
-> E
-> E
-> E
-> E
-> E
-> E
-> E
-> E
-> E
-> E
-> E
-> E
-> E
-> E
-> E
-> E
-> E
-> E
-> E
-> E
-> MultiOut [E])
forall (f :: * -> *) a b. Applicative f => f (a -> b) -> f a -> f b
<*> Sig -> GE E
unSig Sig
b4 GE
(E
-> E
-> E
-> E
-> E
-> E
-> E
-> E
-> E
-> E
-> E
-> E
-> E
-> E
-> E
-> E
-> E
-> E
-> E
-> E
-> E
-> E
-> E
-> E
-> E
-> E
-> E
-> E
-> E
-> E
-> E
-> E
-> E
-> E
-> E
-> E
-> MultiOut [E])
-> GE E
-> GE
(E
-> E
-> E
-> E
-> E
-> E
-> E
-> E
-> E
-> E
-> E
-> E
-> E
-> E
-> E
-> E
-> E
-> E
-> E
-> E
-> E
-> E
-> E
-> E
-> E
-> E
-> E
-> E
-> E
-> E
-> E
-> E
-> E
-> E
-> E
-> MultiOut [E])
forall (f :: * -> *) a b. Applicative f => f (a -> b) -> f a -> f b
<*> Sig -> GE E
unSig Sig
b5 GE
(E
-> E
-> E
-> E
-> E
-> E
-> E
-> E
-> E
-> E
-> E
-> E
-> E
-> E
-> E
-> E
-> E
-> E
-> E
-> E
-> E
-> E
-> E
-> E
-> E
-> E
-> E
-> E
-> E
-> E
-> E
-> E
-> E
-> E
-> E
-> MultiOut [E])
-> GE E
-> GE
(E
-> E
-> E
-> E
-> E
-> E
-> E
-> E
-> E
-> E
-> E
-> E
-> E
-> E
-> E
-> E
-> E
-> E
-> E
-> E
-> E
-> E
-> E
-> E
-> E
-> E
-> E
-> E
-> E
-> E
-> E
-> E
-> E
-> E
-> MultiOut [E])
forall (f :: * -> *) a b. Applicative f => f (a -> b) -> f a -> f b
<*> Tab -> GE E
unTab Tab
b6 GE
(E
-> E
-> E
-> E
-> E
-> E
-> E
-> E
-> E
-> E
-> E
-> E
-> E
-> E
-> E
-> E
-> E
-> E
-> E
-> E
-> E
-> E
-> E
-> E
-> E
-> E
-> E
-> E
-> E
-> E
-> E
-> E
-> E
-> E
-> MultiOut [E])
-> GE E
-> GE
(E
-> E
-> E
-> E
-> E
-> E
-> E
-> E
-> E
-> E
-> E
-> E
-> E
-> E
-> E
-> E
-> E
-> E
-> E
-> E
-> E
-> E
-> E
-> E
-> E
-> E
-> E
-> E
-> E
-> E
-> E
-> E
-> E
-> MultiOut [E])
forall (f :: * -> *) a b. Applicative f => f (a -> b) -> f a -> f b
<*> Tab -> GE E
unTab Tab
b7 GE
(E
-> E
-> E
-> E
-> E
-> E
-> E
-> E
-> E
-> E
-> E
-> E
-> E
-> E
-> E
-> E
-> E
-> E
-> E
-> E
-> E
-> E
-> E
-> E
-> E
-> E
-> E
-> E
-> E
-> E
-> E
-> E
-> E
-> MultiOut [E])
-> GE E
-> GE
(E
-> E
-> E
-> E
-> E
-> E
-> E
-> E
-> E
-> E
-> E
-> E
-> E
-> E
-> E
-> E
-> E
-> E
-> E
-> E
-> E
-> E
-> E
-> E
-> E
-> E
-> E
-> E
-> E
-> E
-> E
-> E
-> MultiOut [E])
forall (f :: * -> *) a b. Applicative f => f (a -> b) -> f a -> f b
<*> Tab -> GE E
unTab Tab
b8 GE
(E
-> E
-> E
-> E
-> E
-> E
-> E
-> E
-> E
-> E
-> E
-> E
-> E
-> E
-> E
-> E
-> E
-> E
-> E
-> E
-> E
-> E
-> E
-> E
-> E
-> E
-> E
-> E
-> E
-> E
-> E
-> E
-> MultiOut [E])
-> GE E
-> GE
(E
-> E
-> E
-> E
-> E
-> E
-> E
-> E
-> E
-> E
-> E
-> E
-> E
-> E
-> E
-> E
-> E
-> E
-> E
-> E
-> E
-> E
-> E
-> E
-> E
-> E
-> E
-> E
-> E
-> E
-> E
-> MultiOut [E])
forall (f :: * -> *) a b. Applicative f => f (a -> b) -> f a -> f b
<*> Sig -> GE E
unSig Sig
b9 GE
(E
-> E
-> E
-> E
-> E
-> E
-> E
-> E
-> E
-> E
-> E
-> E
-> E
-> E
-> E
-> E
-> E
-> E
-> E
-> E
-> E
-> E
-> E
-> E
-> E
-> E
-> E
-> E
-> E
-> E
-> E
-> MultiOut [E])
-> GE E
-> GE
(E
-> E
-> E
-> E
-> E
-> E
-> E
-> E
-> E
-> E
-> E
-> E
-> E
-> E
-> E
-> E
-> E
-> E
-> E
-> E
-> E
-> E
-> E
-> E
-> E
-> E
-> E
-> E
-> E
-> E
-> MultiOut [E])
forall (f :: * -> *) a b. Applicative f => f (a -> b) -> f a -> f b
<*> Sig -> GE E
unSig Sig
b10 GE
(E
-> E
-> E
-> E
-> E
-> E
-> E
-> E
-> E
-> E
-> E
-> E
-> E
-> E
-> E
-> E
-> E
-> E
-> E
-> E
-> E
-> E
-> E
-> E
-> E
-> E
-> E
-> E
-> E
-> E
-> MultiOut [E])
-> GE E
-> GE
(E
-> E
-> E
-> E
-> E
-> E
-> E
-> E
-> E
-> E
-> E
-> E
-> E
-> E
-> E
-> E
-> E
-> E
-> E
-> E
-> E
-> E
-> E
-> E
-> E
-> E
-> E
-> E
-> E
-> MultiOut [E])
forall (f :: * -> *) a b. Applicative f => f (a -> b) -> f a -> f b
<*> Sig -> GE E
unSig Sig
b11 GE
(E
-> E
-> E
-> E
-> E
-> E
-> E
-> E
-> E
-> E
-> E
-> E
-> E
-> E
-> E
-> E
-> E
-> E
-> E
-> E
-> E
-> E
-> E
-> E
-> E
-> E
-> E
-> E
-> E
-> MultiOut [E])
-> GE E
-> GE
(E
-> E
-> E
-> E
-> E
-> E
-> E
-> E
-> E
-> E
-> E
-> E
-> E
-> E
-> E
-> E
-> E
-> E
-> E
-> E
-> E
-> E
-> E
-> E
-> E
-> E
-> E
-> E
-> MultiOut [E])
forall (f :: * -> *) a b. Applicative f => f (a -> b) -> f a -> f b
<*> Sig -> GE E
unSig Sig
b12 GE
(E
-> E
-> E
-> E
-> E
-> E
-> E
-> E
-> E
-> E
-> E
-> E
-> E
-> E
-> E
-> E
-> E
-> E
-> E
-> E
-> E
-> E
-> E
-> E
-> E
-> E
-> E
-> E
-> MultiOut [E])
-> GE E
-> GE
(E
-> E
-> E
-> E
-> E
-> E
-> E
-> E
-> E
-> E
-> E
-> E
-> E
-> E
-> E
-> E
-> E
-> E
-> E
-> E
-> E
-> E
-> E
-> E
-> E
-> E
-> E
-> MultiOut [E])
forall (f :: * -> *) a b. Applicative f => f (a -> b) -> f a -> f b
<*> Tab -> GE E
unTab Tab
b13 GE
(E
-> E
-> E
-> E
-> E
-> E
-> E
-> E
-> E
-> E
-> E
-> E
-> E
-> E
-> E
-> E
-> E
-> E
-> E
-> E
-> E
-> E
-> E
-> E
-> E
-> E
-> E
-> MultiOut [E])
-> GE E
-> GE
(E
-> E
-> E
-> E
-> E
-> E
-> E
-> E
-> E
-> E
-> E
-> E
-> E
-> E
-> E
-> E
-> E
-> E
-> E
-> E
-> E
-> E
-> E
-> E
-> E
-> E
-> MultiOut [E])
forall (f :: * -> *) a b. Applicative f => f (a -> b) -> f a -> f b
<*> Sig -> GE E
unSig Sig
b14 GE
(E
-> E
-> E
-> E
-> E
-> E
-> E
-> E
-> E
-> E
-> E
-> E
-> E
-> E
-> E
-> E
-> E
-> E
-> E
-> E
-> E
-> E
-> E
-> E
-> E
-> E
-> MultiOut [E])
-> GE E
-> GE
(E
-> E
-> E
-> E
-> E
-> E
-> E
-> E
-> E
-> E
-> E
-> E
-> E
-> E
-> E
-> E
-> E
-> E
-> E
-> E
-> E
-> E
-> E
-> E
-> E
-> MultiOut [E])
forall (f :: * -> *) a b. Applicative f => f (a -> b) -> f a -> f b
<*> Sig -> GE E
unSig Sig
b15 GE
(E
-> E
-> E
-> E
-> E
-> E
-> E
-> E
-> E
-> E
-> E
-> E
-> E
-> E
-> E
-> E
-> E
-> E
-> E
-> E
-> E
-> E
-> E
-> E
-> E
-> MultiOut [E])
-> GE E
-> GE
(E
-> E
-> E
-> E
-> E
-> E
-> E
-> E
-> E
-> E
-> E
-> E
-> E
-> E
-> E
-> E
-> E
-> E
-> E
-> E
-> E
-> E
-> E
-> E
-> MultiOut [E])
forall (f :: * -> *) a b. Applicative f => f (a -> b) -> f a -> f b
<*> Tab -> GE E
unTab Tab
b16 GE
(E
-> E
-> E
-> E
-> E
-> E
-> E
-> E
-> E
-> E
-> E
-> E
-> E
-> E
-> E
-> E
-> E
-> E
-> E
-> E
-> E
-> E
-> E
-> E
-> MultiOut [E])
-> GE E
-> GE
(E
-> E
-> E
-> E
-> E
-> E
-> E
-> E
-> E
-> E
-> E
-> E
-> E
-> E
-> E
-> E
-> E
-> E
-> E
-> E
-> E
-> E
-> E
-> MultiOut [E])
forall (f :: * -> *) a b. Applicative f => f (a -> b) -> f a -> f b
<*> Tab -> GE E
unTab Tab
b17 GE
(E
-> E
-> E
-> E
-> E
-> E
-> E
-> E
-> E
-> E
-> E
-> E
-> E
-> E
-> E
-> E
-> E
-> E
-> E
-> E
-> E
-> E
-> E
-> MultiOut [E])
-> GE E
-> GE
(E
-> E
-> E
-> E
-> E
-> E
-> E
-> E
-> E
-> E
-> E
-> E
-> E
-> E
-> E
-> E
-> E
-> E
-> E
-> E
-> E
-> E
-> MultiOut [E])
forall (f :: * -> *) a b. Applicative f => f (a -> b) -> f a -> f b
<*> Sig -> GE E
unSig Sig
b18 GE
(E
-> E
-> E
-> E
-> E
-> E
-> E
-> E
-> E
-> E
-> E
-> E
-> E
-> E
-> E
-> E
-> E
-> E
-> E
-> E
-> E
-> E
-> MultiOut [E])
-> GE E
-> GE
(E
-> E
-> E
-> E
-> E
-> E
-> E
-> E
-> E
-> E
-> E
-> E
-> E
-> E
-> E
-> E
-> E
-> E
-> E
-> E
-> E
-> MultiOut [E])
forall (f :: * -> *) a b. Applicative f => f (a -> b) -> f a -> f b
<*> Tab -> GE E
unTab Tab
b19 GE
(E
-> E
-> E
-> E
-> E
-> E
-> E
-> E
-> E
-> E
-> E
-> E
-> E
-> E
-> E
-> E
-> E
-> E
-> E
-> E
-> E
-> MultiOut [E])
-> GE E
-> GE
(E
-> E
-> E
-> E
-> E
-> E
-> E
-> E
-> E
-> E
-> E
-> E
-> E
-> E
-> E
-> E
-> E
-> E
-> E
-> E
-> MultiOut [E])
forall (f :: * -> *) a b. Applicative f => f (a -> b) -> f a -> f b
<*> Tab -> GE E
unTab Tab
b20 GE
(E
-> E
-> E
-> E
-> E
-> E
-> E
-> E
-> E
-> E
-> E
-> E
-> E
-> E
-> E
-> E
-> E
-> E
-> E
-> E
-> MultiOut [E])
-> GE E
-> GE
(E
-> E
-> E
-> E
-> E
-> E
-> E
-> E
-> E
-> E
-> E
-> E
-> E
-> E
-> E
-> E
-> E
-> E
-> E
-> MultiOut [E])
forall (f :: * -> *) a b. Applicative f => f (a -> b) -> f a -> f b
<*> Tab -> GE E
unTab Tab
b21 GE
(E
-> E
-> E
-> E
-> E
-> E
-> E
-> E
-> E
-> E
-> E
-> E
-> E
-> E
-> E
-> E
-> E
-> E
-> E
-> MultiOut [E])
-> GE E
-> GE
(E
-> E
-> E
-> E
-> E
-> E
-> E
-> E
-> E
-> E
-> E
-> E
-> E
-> E
-> E
-> E
-> E
-> E
-> MultiOut [E])
forall (f :: * -> *) a b. Applicative f => f (a -> b) -> f a -> f b
<*> Sig -> GE E
unSig Sig
b22 GE
(E
-> E
-> E
-> E
-> E
-> E
-> E
-> E
-> E
-> E
-> E
-> E
-> E
-> E
-> E
-> E
-> E
-> E
-> MultiOut [E])
-> GE E
-> GE
(E
-> E
-> E
-> E
-> E
-> E
-> E
-> E
-> E
-> E
-> E
-> E
-> E
-> E
-> E
-> E
-> E
-> MultiOut [E])
forall (f :: * -> *) a b. Applicative f => f (a -> b) -> f a -> f b
<*> Sig -> GE E
unSig Sig
b23 GE
(E
-> E
-> E
-> E
-> E
-> E
-> E
-> E
-> E
-> E
-> E
-> E
-> E
-> E
-> E
-> E
-> E
-> MultiOut [E])
-> GE E
-> GE
(E
-> E
-> E
-> E
-> E
-> E
-> E
-> E
-> E
-> E
-> E
-> E
-> E
-> E
-> E
-> E
-> MultiOut [E])
forall (f :: * -> *) a b. Applicative f => f (a -> b) -> f a -> f b
<*> Sig -> GE E
unSig Sig
b24 GE
(E
-> E
-> E
-> E
-> E
-> E
-> E
-> E
-> E
-> E
-> E
-> E
-> E
-> E
-> E
-> E
-> MultiOut [E])
-> GE E
-> GE
(E
-> E
-> E
-> E
-> E
-> E
-> E
-> E
-> E
-> E
-> E
-> E
-> E
-> E
-> E
-> MultiOut [E])
forall (f :: * -> *) a b. Applicative f => f (a -> b) -> f a -> f b
<*> Tab -> GE E
unTab Tab
b25 GE
(E
-> E
-> E
-> E
-> E
-> E
-> E
-> E
-> E
-> E
-> E
-> E
-> E
-> E
-> E
-> MultiOut [E])
-> GE E
-> GE
(E
-> E
-> E
-> E
-> E
-> E
-> E
-> E
-> E
-> E
-> E
-> E
-> E
-> E
-> MultiOut [E])
forall (f :: * -> *) a b. Applicative f => f (a -> b) -> f a -> f b
<*> Sig -> GE E
unSig Sig
b26 GE
(E
-> E
-> E
-> E
-> E
-> E
-> E
-> E
-> E
-> E
-> E
-> E
-> E
-> E
-> MultiOut [E])
-> GE E
-> GE
(E
-> E
-> E
-> E
-> E
-> E
-> E
-> E
-> E
-> E
-> E
-> E
-> E
-> MultiOut [E])
forall (f :: * -> *) a b. Applicative f => f (a -> b) -> f a -> f b
<*> Tab -> GE E
unTab Tab
b27 GE
(E
-> E
-> E
-> E
-> E
-> E
-> E
-> E
-> E
-> E
-> E
-> E
-> E
-> MultiOut [E])
-> GE E
-> GE
(E
-> E
-> E
-> E
-> E
-> E
-> E
-> E
-> E
-> E
-> E
-> E
-> MultiOut [E])
forall (f :: * -> *) a b. Applicative f => f (a -> b) -> f a -> f b
<*> Tab -> GE E
unTab Tab
b28 GE
(E
-> E
-> E
-> E
-> E
-> E
-> E
-> E
-> E
-> E
-> E
-> E
-> MultiOut [E])
-> GE E
-> GE
(E
-> E -> E -> E -> E -> E -> E -> E -> E -> E -> E -> MultiOut [E])
forall (f :: * -> *) a b. Applicative f => f (a -> b) -> f a -> f b
<*> Tab -> GE E
unTab Tab
b29 GE
(E
-> E -> E -> E -> E -> E -> E -> E -> E -> E -> E -> MultiOut [E])
-> GE E
-> GE
(E -> E -> E -> E -> E -> E -> E -> E -> E -> E -> MultiOut [E])
forall (f :: * -> *) a b. Applicative f => f (a -> b) -> f a -> f b
<*> Tab -> GE E
unTab Tab
b30 GE (E -> E -> E -> E -> E -> E -> E -> E -> E -> E -> MultiOut [E])
-> GE E
-> GE (E -> E -> E -> E -> E -> E -> E -> E -> E -> MultiOut [E])
forall (f :: * -> *) a b. Applicative f => f (a -> b) -> f a -> f b
<*> Tab -> GE E
unTab Tab
b31 GE (E -> E -> E -> E -> E -> E -> E -> E -> E -> MultiOut [E])
-> GE E
-> GE (E -> E -> E -> E -> E -> E -> E -> E -> MultiOut [E])
forall (f :: * -> *) a b. Applicative f => f (a -> b) -> f a -> f b
<*> Sig -> GE E
unSig Sig
b32 GE (E -> E -> E -> E -> E -> E -> E -> E -> MultiOut [E])
-> GE E -> GE (E -> E -> E -> E -> E -> E -> E -> MultiOut [E])
forall (f :: * -> *) a b. Applicative f => f (a -> b) -> f a -> f b
<*> Sig -> GE E
unSig Sig
b33 GE (E -> E -> E -> E -> E -> E -> E -> MultiOut [E])
-> GE E -> GE (E -> E -> E -> E -> E -> E -> MultiOut [E])
forall (f :: * -> *) a b. Applicative f => f (a -> b) -> f a -> f b
<*> Sig -> GE E
unSig Sig
b34 GE (E -> E -> E -> E -> E -> E -> MultiOut [E])
-> GE E -> GE (E -> E -> E -> E -> E -> MultiOut [E])
forall (f :: * -> *) a b. Applicative f => f (a -> b) -> f a -> f b
<*> Sig -> GE E
unSig Sig
b35 GE (E -> E -> E -> E -> E -> MultiOut [E])
-> GE E -> GE (E -> E -> E -> E -> MultiOut [E])
forall (f :: * -> *) a b. Applicative f => f (a -> b) -> f a -> f b
<*> Sig -> GE E
unSig Sig
b36 GE (E -> E -> E -> E -> MultiOut [E])
-> GE E -> GE (E -> E -> E -> MultiOut [E])
forall (f :: * -> *) a b. Applicative f => f (a -> b) -> f a -> f b
<*> Sig -> GE E
unSig Sig
b37 GE (E -> E -> E -> MultiOut [E])
-> GE E -> GE (E -> E -> MultiOut [E])
forall (f :: * -> *) a b. Applicative f => f (a -> b) -> f a -> f b
<*> Sig -> GE E
unSig Sig
b38 GE (E -> E -> MultiOut [E]) -> GE E -> GE (E -> MultiOut [E])
forall (f :: * -> *) a b. Applicative f => f (a -> b) -> f a -> f b
<*> Sig -> GE E
unSig Sig
b39 GE (E -> MultiOut [E]) -> GE E -> GE (MultiOut [E])
forall (f :: * -> *) a b. Applicative f => f (a -> b) -> f a -> f b
<*> D -> GE E
unD D
b40
where
f :: E
-> E
-> E
-> E
-> E
-> E
-> E
-> E
-> E
-> E
-> E
-> E
-> E
-> E
-> E
-> E
-> E
-> E
-> E
-> E
-> E
-> E
-> E
-> E
-> E
-> E
-> E
-> E
-> E
-> E
-> E
-> E
-> E
-> E
-> E
-> E
-> E
-> E
-> E
-> E
-> MultiOut [E]
f E
a1 E
a2 E
a3 E
a4 E
a5 E
a6 E
a7 E
a8 E
a9 E
a10 E
a11 E
a12 E
a13 E
a14 E
a15 E
a16 E
a17 E
a18 E
a19 E
a20 E
a21 E
a22 E
a23 E
a24 E
a25 E
a26 E
a27 E
a28 E
a29 E
a30 E
a31 E
a32 E
a33 E
a34 E
a35 E
a36 E
a37 E
a38 E
a39 E
a40 =
String -> Specs -> [E] -> MultiOut [E]
mopcs String
"partikkel" ([Rate
Ar,Rate
Ar,Rate
Ar,Rate
Ar,Rate
Ar,Rate
Ar,Rate
Ar,Rate
Ar],[Rate
Ar,Rate
Kr,Rate
Ir,Rate
Ar,Rate
Kr,Rate
Ir,Rate
Ir,Rate
Ir,Rate
Kr,Rate
Kr,Rate
Kr,Rate
Kr,Rate
Ir,Rate
Kr,Rate
Kr,Rate
Ir,Rate
Ir,Rate
Ar,Rate
Ir,Rate
Kr,Rate
Ir,Rate
Kr,Rate
Kr,Rate
Kr,Rate
Ir,Rate
Kr,Rate
Kr,Rate
Kr,Rate
Kr,Rate
Kr,Rate
Ir,Rate
Ar,Rate
Ar,Rate
Ar,Rate
Ar,Rate
Kr,Rate
Kr,Rate
Kr,Rate
Kr,Rate
Ir,Rate
Ir]) [E
a1,E
a2,E
a3,E
a4,E
a5,E
a6,E
a7,E
a8,E
a9,E
a10,E
a11,E
a12,E
a13,E
a14,E
a15,E
a16,E
a17,E
a18,E
a19,E
a20,E
a21,E
a22,E
a23,E
a24,E
a25,E
a26,E
a27,E
a28,E
a29,E
a30,E
a31,E
a32,E
a33,E
a34,E
a35,E
a36,E
a37,E
a38,E
a39,E
a40]
csdSyncgrain :: Sig -> Sig -> Sig -> Sig -> Sig -> Tab -> Tab -> D -> Sig
csdSyncgrain :: Sig -> Sig -> Sig -> Sig -> Sig -> Tab -> Tab -> D -> Sig
csdSyncgrain Sig
b1 Sig
b2 Sig
b3 Sig
b4 Sig
b5 Tab
b6 Tab
b7 D
b8 = GE E -> Sig
Sig (GE E -> Sig) -> GE E -> Sig
forall a b. (a -> b) -> a -> b
$ E -> E -> E -> E -> E -> E -> E -> E -> E
f (E -> E -> E -> E -> E -> E -> E -> E -> E)
-> GE E -> GE (E -> E -> E -> E -> E -> E -> E -> E)
forall (f :: * -> *) a b. Functor f => (a -> b) -> f a -> f b
<$> Sig -> GE E
unSig Sig
b1 GE (E -> E -> E -> E -> E -> E -> E -> E)
-> GE E -> GE (E -> E -> E -> E -> E -> E -> E)
forall (f :: * -> *) a b. Applicative f => f (a -> b) -> f a -> f b
<*> Sig -> GE E
unSig Sig
b2 GE (E -> E -> E -> E -> E -> E -> E)
-> GE E -> GE (E -> E -> E -> E -> E -> E)
forall (f :: * -> *) a b. Applicative f => f (a -> b) -> f a -> f b
<*> Sig -> GE E
unSig Sig
b3 GE (E -> E -> E -> E -> E -> E)
-> GE E -> GE (E -> E -> E -> E -> E)
forall (f :: * -> *) a b. Applicative f => f (a -> b) -> f a -> f b
<*> Sig -> GE E
unSig Sig
b4 GE (E -> E -> E -> E -> E) -> GE E -> GE (E -> E -> E -> E)
forall (f :: * -> *) a b. Applicative f => f (a -> b) -> f a -> f b
<*> Sig -> GE E
unSig Sig
b5 GE (E -> E -> E -> E) -> GE E -> GE (E -> E -> E)
forall (f :: * -> *) a b. Applicative f => f (a -> b) -> f a -> f b
<*> Tab -> GE E
unTab Tab
b6 GE (E -> E -> E) -> GE E -> GE (E -> E)
forall (f :: * -> *) a b. Applicative f => f (a -> b) -> f a -> f b
<*> Tab -> GE E
unTab Tab
b7 GE (E -> E) -> GE E -> GE E
forall (f :: * -> *) a b. Applicative f => f (a -> b) -> f a -> f b
<*> D -> GE E
unD D
b8
where f :: E -> E -> E -> E -> E -> E -> E -> E -> E
f E
a1 E
a2 E
a3 E
a4 E
a5 E
a6 E
a7 E
a8 = String -> Spec1 -> [E] -> E
opcs String
"syncgrain" [(Rate
Ar, [Rate
Kr,Rate
Kr,Rate
Kr,Rate
Kr,Rate
Kr,Rate
Ir,Rate
Ir,Rate
Ir])] [E
a1, E
a2, E
a3, E
a4, E
a5, E
a6, E
a7, E
a8]
csdGranule :: Sig -> D -> D -> D -> D -> Tab -> D -> D -> D -> D -> Sig -> D -> Sig -> D -> D -> D -> Sig
csdGranule :: Sig
-> D
-> D
-> D
-> D
-> Tab
-> D
-> D
-> D
-> D
-> Sig
-> D
-> Sig
-> D
-> D
-> D
-> Sig
csdGranule = Sig
-> D
-> D
-> D
-> D
-> Tab
-> D
-> D
-> D
-> D
-> Sig
-> D
-> Sig
-> D
-> D
-> D
-> Sig
C.granule
csdSndwarp :: Sig -> Sig -> Sig -> Tab -> D -> D -> D -> D -> Tab -> D -> Sig
csdSndwarp :: Sig -> Sig -> Sig -> Tab -> D -> D -> D -> D -> Tab -> D -> Sig
csdSndwarp = Sig -> Sig -> Sig -> Tab -> D -> D -> D -> D -> Tab -> D -> Sig
forall a.
Tuple a =>
Sig -> Sig -> Sig -> Tab -> D -> D -> D -> D -> Tab -> D -> a
C.sndwarp
csdSndwarpst :: Sig -> Sig -> Sig -> Tab -> D -> D -> D -> D -> Tab -> D -> Sig2
csdSndwarpst :: Sig -> Sig -> Sig -> Tab -> D -> D -> D -> D -> Tab -> D -> Sig2
csdSndwarpst = Sig -> Sig -> Sig -> Tab -> D -> D -> D -> D -> Tab -> D -> Sig2
forall a.
Tuple a =>
Sig -> Sig -> Sig -> Tab -> D -> D -> D -> D -> Tab -> D -> a
C.sndwarpst
csdFof2 :: Sig -> Sig -> Sig -> Sig -> Sig -> Sig -> Sig -> Sig -> D -> Tab -> Tab -> D -> Sig -> Sig -> Sig
csdFof2 :: Sig
-> Sig
-> Sig
-> Sig
-> Sig
-> Sig
-> Sig
-> Sig
-> D
-> Tab
-> Tab
-> D
-> Sig
-> Sig
-> Sig
csdFof2 = Sig
-> Sig
-> Sig
-> Sig
-> Sig
-> Sig
-> Sig
-> Sig
-> D
-> Tab
-> Tab
-> D
-> Sig
-> Sig
-> Sig
C.fof2