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 -> MaxDelayTime
partikkelMax_grains :: D
}
instance Default PartikkelSpec where
def :: PartikkelSpec
def = 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 :: MaxDelayTime
partikkelMax_grains = MaxDelayTime
1000
}
data RndGrainySpec = RndGrainySpec
{ RndGrainySpec -> Sig
rndGrainyPitch :: Sig
, RndGrainySpec -> Sig
rndGrainyPos :: Sig
, RndGrainySpec -> Sig
rndGrainyDur :: Sig
}
instance Default RndGrainySpec where
def :: RndGrainySpec
def = 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
-> MaxDelayTime
-> 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
-> MaxDelayTime
-> 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 -> MaxDelayTime
partikkelMax_grains PartikkelSpec
spec)
iorig :: MaxDelayTime
iorig = MaxDelayTime
1 MaxDelayTime -> MaxDelayTime -> MaxDelayTime
forall a. Fractional a => a -> a -> a
/ (Tab -> MaxDelayTime
ftlen([Tab] -> Tab
forall a. HasCallStack => [a] -> a
head [Tab]
ifiltab)MaxDelayTime -> MaxDelayTime -> MaxDelayTime
forall a. Fractional a => a -> a -> a
/MaxDelayTime
getSampleRate)
kwavfreq :: Sig
kwavfreq = MaxDelayTime -> Sig
sig MaxDelayTime
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. HasCallStack => [a] -> [a]
cycle [Tab]
ifiltab
Sig
apnter1 : Sig
apnter2 : Sig
apnter3 : Sig
apnter4 : [Sig]
_ = [Sig] -> [Sig]
forall a. HasCallStack => [a] -> [a]
cycle [Sig]
apnter
Sig
keys1 : Sig
keys2 : Sig
keys3 : Sig
keys4 : [Sig]
_ = [Sig] -> [Sig]
forall a. HasCallStack => [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 a. a -> SE a
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
/ MaxDelayTime -> Sig
sig (String -> MaxDelayTime
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
/ MaxDelayTime -> Sig
sig (String -> MaxDelayTime
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 a. a -> SE a
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 :: MaxDelayTime
ifildur = Str -> MaxDelayTime
filelen (Str -> MaxDelayTime) -> Str -> MaxDelayTime
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
/ MaxDelayTime -> Sig
sig MaxDelayTime
ifildur)
data GranuleMode = GranuleForward | GranuleBackward | GranuleRandom
fromGranuleMode :: GranuleMode -> D
fromGranuleMode :: GranuleMode -> MaxDelayTime
fromGranuleMode GranuleMode
x = case GranuleMode
x of
GranuleMode
GranuleForward -> MaxDelayTime
1
GranuleMode
GranuleBackward -> -MaxDelayTime
1
GranuleMode
GranuleRandom -> MaxDelayTime
0
data GranuleSpec = GranuleSpec
{ GranuleSpec -> Sig
granuleGap :: Sig
, GranuleSpec -> MaxDelayTime
granuleVoice :: D
, GranuleSpec -> MaxDelayTime
granuleRatio :: D
, GranuleSpec -> GranuleMode
granuleMode :: GranuleMode
, GranuleSpec -> MaxDelayTime
granuleSkip_os :: D
, GranuleSpec -> MaxDelayTime
granuleGap_os :: D
, GranuleSpec -> MaxDelayTime
granuleSize_os :: D
, GranuleSpec -> MaxDelayTime
granuleSeed :: D
, GranuleSpec -> MaxDelayTime
granuleAtt :: D
, GranuleSpec -> MaxDelayTime
granuleDec :: D
}
instance Default GranuleMode where
def :: GranuleMode
def = GranuleMode
GranuleForward
instance Default GranuleSpec where
def :: GranuleSpec
def = GranuleSpec
{ granuleGap :: Sig
granuleGap = Sig
0
, granuleVoice :: MaxDelayTime
granuleVoice = MaxDelayTime
64
, granuleRatio :: MaxDelayTime
granuleRatio = MaxDelayTime
1
, granuleMode :: GranuleMode
granuleMode = GranuleMode
forall a. Default a => a
def
, granuleSkip_os :: MaxDelayTime
granuleSkip_os = MaxDelayTime
0.5
, granuleGap_os :: MaxDelayTime
granuleGap_os = MaxDelayTime
0.5
, granuleSize_os :: MaxDelayTime
granuleSize_os = MaxDelayTime
0.5
, granuleSeed :: MaxDelayTime
granuleSeed = MaxDelayTime
0.5
, granuleAtt :: MaxDelayTime
granuleAtt = MaxDelayTime
0.3
, granuleDec :: MaxDelayTime
granuleDec = MaxDelayTime
0.3
}
toPercent :: D -> D
toPercent :: MaxDelayTime -> MaxDelayTime
toPercent = (MaxDelayTime
100 MaxDelayTime -> MaxDelayTime -> MaxDelayTime
forall a. Num a => a -> a -> a
* )
granule :: GranuleSpec -> [ConstPitchSig] -> GrainSize -> Tab -> Sig
granule :: GranuleSpec -> [MaxDelayTime] -> Sig -> Tab -> Sig
granule GranuleSpec
spec [MaxDelayTime]
chord Sig
kgsize Tab
ifn = MaxDelayTime -> GranuleSpec -> [MaxDelayTime] -> Sig -> Tab -> Sig
granuleWithLength MaxDelayTime
len GranuleSpec
spec [MaxDelayTime]
chord Sig
kgsize Tab
ifn
where len :: MaxDelayTime
len = Tab -> MaxDelayTime
nsamp Tab
ifn MaxDelayTime -> MaxDelayTime -> MaxDelayTime
forall a. Fractional a => a -> a -> a
/ MaxDelayTime
getSampleRate
granuleSnd :: GranuleSpec -> [ConstPitchSig] -> GrainSize -> String -> Sig2
granuleSnd :: GranuleSpec -> [MaxDelayTime] -> Sig -> String -> Sig2
granuleSnd GranuleSpec
spec [MaxDelayTime]
chord Sig
kgsize String
file =
( MaxDelayTime -> GranuleSpec -> [MaxDelayTime] -> Sig -> Tab -> Sig
granuleWithLength MaxDelayTime
len GranuleSpec
spec [MaxDelayTime]
chord Sig
kgsize (String -> Double -> WavChn -> Tab
wavs String
file Double
0 WavChn
WavLeft)
, MaxDelayTime -> GranuleSpec -> [MaxDelayTime] -> Sig -> Tab -> Sig
granuleWithLength MaxDelayTime
len GranuleSpec
spec [MaxDelayTime]
chord Sig
kgsize (String -> Double -> WavChn -> Tab
wavs String
file Double
0 WavChn
WavRight))
where len :: MaxDelayTime
len = Str -> MaxDelayTime
filelen (Str -> MaxDelayTime) -> Str -> MaxDelayTime
forall a b. (a -> b) -> a -> b
$ String -> Str
text String
file
granuleSnd1 :: GranuleSpec -> [ConstPitchSig] -> GrainSize -> String -> Sig
granuleSnd1 :: GranuleSpec -> [MaxDelayTime] -> Sig -> String -> Sig
granuleSnd1 GranuleSpec
spec [MaxDelayTime]
chord Sig
kgsize String
file = MaxDelayTime -> GranuleSpec -> [MaxDelayTime] -> Sig -> Tab -> Sig
granuleWithLength MaxDelayTime
len GranuleSpec
spec [MaxDelayTime]
chord Sig
kgsize (String -> Double -> WavChn -> Tab
wavs String
file Double
0 WavChn
WavLeft)
where len :: MaxDelayTime
len = Str -> MaxDelayTime
filelen (Str -> MaxDelayTime) -> Str -> MaxDelayTime
forall a b. (a -> b) -> a -> b
$ String -> Str
text String
file
granuleWithLength :: D -> GranuleSpec -> [ConstPitchSig] -> GrainSize -> Tab -> Sig
granuleWithLength :: MaxDelayTime -> GranuleSpec -> [MaxDelayTime] -> Sig -> Tab -> Sig
granuleWithLength MaxDelayTime
len GranuleSpec
spec [MaxDelayTime]
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 :: MaxDelayTime
ivoice = GranuleSpec -> MaxDelayTime
granuleVoice GranuleSpec
spec
iratio :: MaxDelayTime
iratio = GranuleSpec -> MaxDelayTime
granuleRatio GranuleSpec
spec
imode :: MaxDelayTime
imode = GranuleMode -> MaxDelayTime
fromGranuleMode (GranuleMode -> MaxDelayTime) -> GranuleMode -> MaxDelayTime
forall a b. (a -> b) -> a -> b
$ GranuleSpec -> GranuleMode
granuleMode GranuleSpec
spec
ithd :: MaxDelayTime
ithd = MaxDelayTime
0
ipshift :: MaxDelayTime
ipshift = Int -> MaxDelayTime
int (Int -> MaxDelayTime) -> Int -> MaxDelayTime
forall a b. (a -> b) -> a -> b
$ Int -> Int -> Int
forall a. Ord a => a -> a -> a
min ([MaxDelayTime] -> Int
forall a. [a] -> Int
forall (t :: * -> *) a. Foldable t => t a -> Int
length ([MaxDelayTime] -> Int) -> [MaxDelayTime] -> Int
forall a b. (a -> b) -> a -> b
$ [MaxDelayTime]
chord) Int
4
igskip :: MaxDelayTime
igskip = MaxDelayTime
0
igskip_os :: MaxDelayTime
igskip_os = MaxDelayTime -> MaxDelayTime
toPercent (MaxDelayTime -> MaxDelayTime) -> MaxDelayTime -> MaxDelayTime
forall a b. (a -> b) -> a -> b
$ GranuleSpec -> MaxDelayTime
granuleSkip_os GranuleSpec
spec
ilength :: MaxDelayTime
ilength = MaxDelayTime
len
igap_os :: MaxDelayTime
igap_os = MaxDelayTime -> MaxDelayTime
toPercent (MaxDelayTime -> MaxDelayTime) -> MaxDelayTime -> MaxDelayTime
forall a b. (a -> b) -> a -> b
$ GranuleSpec -> MaxDelayTime
granuleGap_os GranuleSpec
spec
igsize_os :: MaxDelayTime
igsize_os = MaxDelayTime -> MaxDelayTime
toPercent (MaxDelayTime -> MaxDelayTime) -> MaxDelayTime -> MaxDelayTime
forall a b. (a -> b) -> a -> b
$ GranuleSpec -> MaxDelayTime
granuleSize_os GranuleSpec
spec
iatt :: MaxDelayTime
iatt = MaxDelayTime -> MaxDelayTime
toPercent (MaxDelayTime -> MaxDelayTime) -> MaxDelayTime -> MaxDelayTime
forall a b. (a -> b) -> a -> b
$ GranuleSpec -> MaxDelayTime
granuleAtt GranuleSpec
spec
idec :: MaxDelayTime
idec = MaxDelayTime -> MaxDelayTime
toPercent (MaxDelayTime -> MaxDelayTime) -> MaxDelayTime -> MaxDelayTime
forall a b. (a -> b) -> a -> b
$ GranuleSpec -> MaxDelayTime
granuleDec GranuleSpec
spec
iseed :: MaxDelayTime
iseed = GranuleSpec -> MaxDelayTime
granuleSeed GranuleSpec
spec
MaxDelayTime
ipitch1 : MaxDelayTime
ipitch2 : MaxDelayTime
ipitch3 : MaxDelayTime
ipitch4 : [MaxDelayTime]
_ = [MaxDelayTime]
chord [MaxDelayTime] -> [MaxDelayTime] -> [MaxDelayTime]
forall a. [a] -> [a] -> [a]
++ [MaxDelayTime
1, MaxDelayTime
1, MaxDelayTime
1, MaxDelayTime
1]
res :: Sig
res = Sig
-> MaxDelayTime
-> MaxDelayTime
-> MaxDelayTime
-> MaxDelayTime
-> Tab
-> MaxDelayTime
-> MaxDelayTime
-> MaxDelayTime
-> MaxDelayTime
-> Sig
-> MaxDelayTime
-> Sig
-> MaxDelayTime
-> MaxDelayTime
-> MaxDelayTime
-> Sig
csdGranule Sig
kamp MaxDelayTime
ivoice MaxDelayTime
iratio MaxDelayTime
imode MaxDelayTime
ithd Tab
ifn MaxDelayTime
ipshift MaxDelayTime
igskip
MaxDelayTime
igskip_os MaxDelayTime
ilength Sig
kgap MaxDelayTime
igap_os Sig
kgsize MaxDelayTime
igsize_os MaxDelayTime
iatt MaxDelayTime
idec Sig -> [MaxDelayTime] -> Sig
forall a. Tuple a => a -> [MaxDelayTime] -> a
`withDs` [MaxDelayTime
iseed, MaxDelayTime
ipitch1, MaxDelayTime
ipitch2, MaxDelayTime
ipitch3, MaxDelayTime
ipitch4]
data SyncgrainSpec = SyncgrainSpec
{ SyncgrainSpec -> Tab
syncgrainWin :: Tab
, SyncgrainSpec -> MaxDelayTime
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
{ 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 :: MaxDelayTime
syncgrainOverlap = MaxDelayTime
25
}
instance Default RndSyncgrainSpec where
def :: RndSyncgrainSpec
def = 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 = MaxDelayTime -> Sig
sig (MaxDelayTime -> Sig) -> MaxDelayTime -> Sig
forall a b. (a -> b) -> a -> b
$ (SyncgrainSpec -> MaxDelayTime
syncgrainOverlap SyncgrainSpec
spec) MaxDelayTime -> MaxDelayTime -> MaxDelayTime
forall a. Fractional a => a -> a -> a
/ MaxDelayTime
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 -> MaxDelayTime -> 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 -> MaxDelayTime
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 = MaxDelayTime -> Sig
sig (MaxDelayTime -> Sig) -> MaxDelayTime -> Sig
forall a b. (a -> b) -> a -> b
$ (SyncgrainSpec -> MaxDelayTime
syncgrainOverlap SyncgrainSpec
spec) MaxDelayTime -> MaxDelayTime -> MaxDelayTime
forall a. Fractional a => a -> a -> a
/ MaxDelayTime
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 -> MaxDelayTime -> 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 -> MaxDelayTime
syncgrainOverlap SyncgrainSpec
spec)
Sig -> SE Sig
forall a. a -> SE a
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 a. a -> SE a
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 -> MaxDelayTime
sndwarpWinSize :: D
, SndwarpSpec -> MaxDelayTime
sndwarpRandw :: D
, SndwarpSpec -> MaxDelayTime
sndwarpOvelrap :: D
, SndwarpSpec -> Tab
sndwarpWin :: Tab
}
instance Default SndwarpSpec where
def :: SndwarpSpec
def = SndwarpSpec
{ sndwarpWinSize :: MaxDelayTime
sndwarpWinSize = MaxDelayTime
0.1
, sndwarpRandw :: MaxDelayTime
sndwarpRandw = MaxDelayTime
0.3
, sndwarpOvelrap :: MaxDelayTime
sndwarpOvelrap = MaxDelayTime
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
-> MaxDelayTime
-> MaxDelayTime
-> MaxDelayTime
-> MaxDelayTime
-> Tab
-> MaxDelayTime
-> Sig
csdSndwarp Sig
1 Sig
kspeed Sig
xresample Tab
ftab MaxDelayTime
0
(MaxDelayTime
getSampleRate MaxDelayTime -> MaxDelayTime -> MaxDelayTime
forall a. Num a => a -> a -> a
* SndwarpSpec -> MaxDelayTime
sndwarpWinSize SndwarpSpec
spec) (MaxDelayTime
getSampleRate MaxDelayTime -> MaxDelayTime -> MaxDelayTime
forall a. Num a => a -> a -> a
* SndwarpSpec -> MaxDelayTime
sndwarpRandw SndwarpSpec
spec)
(SndwarpSpec -> MaxDelayTime
sndwarpOvelrap SndwarpSpec
spec) (SndwarpSpec -> Tab
sndwarpWin SndwarpSpec
spec) MaxDelayTime
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
-> MaxDelayTime
-> MaxDelayTime
-> MaxDelayTime
-> MaxDelayTime
-> Tab
-> MaxDelayTime
-> Sig2
csdSndwarpst Sig
1 Sig
xspeed Sig
xresample Tab
ftab MaxDelayTime
0
(MaxDelayTime
getSampleRate MaxDelayTime -> MaxDelayTime -> MaxDelayTime
forall a. Num a => a -> a -> a
* SndwarpSpec -> MaxDelayTime
sndwarpWinSize SndwarpSpec
spec) (MaxDelayTime
getSampleRate MaxDelayTime -> MaxDelayTime -> MaxDelayTime
forall a. Num a => a -> a -> a
* SndwarpSpec -> MaxDelayTime
sndwarpRandw SndwarpSpec
spec)
(SndwarpSpec -> MaxDelayTime
sndwarpOvelrap SndwarpSpec
spec) (SndwarpSpec -> Tab
sndwarpWin SndwarpSpec
spec) MaxDelayTime
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
-> MaxDelayTime
-> MaxDelayTime
-> MaxDelayTime
-> MaxDelayTime
-> Tab
-> MaxDelayTime
-> Sig
csdSndwarp Sig
1 Sig
xptr Sig
xresample Tab
ftab MaxDelayTime
0
(MaxDelayTime
getSampleRate MaxDelayTime -> MaxDelayTime -> MaxDelayTime
forall a. Num a => a -> a -> a
* SndwarpSpec -> MaxDelayTime
sndwarpWinSize SndwarpSpec
spec) (MaxDelayTime
getSampleRate MaxDelayTime -> MaxDelayTime -> MaxDelayTime
forall a. Num a => a -> a -> a
* SndwarpSpec -> MaxDelayTime
sndwarpRandw SndwarpSpec
spec)
(SndwarpSpec -> MaxDelayTime
sndwarpOvelrap SndwarpSpec
spec) (SndwarpSpec -> Tab
sndwarpWin SndwarpSpec
spec) MaxDelayTime
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
-> MaxDelayTime
-> MaxDelayTime
-> MaxDelayTime
-> MaxDelayTime
-> Tab
-> MaxDelayTime
-> Sig2
csdSndwarpst Sig
1 Sig
xptr Sig
xresample Tab
ftab MaxDelayTime
0
(MaxDelayTime
getSampleRate MaxDelayTime -> MaxDelayTime -> MaxDelayTime
forall a. Num a => a -> a -> a
* SndwarpSpec -> MaxDelayTime
sndwarpWinSize SndwarpSpec
spec) (MaxDelayTime
getSampleRate MaxDelayTime -> MaxDelayTime -> MaxDelayTime
forall a. Num a => a -> a -> a
* SndwarpSpec -> MaxDelayTime
sndwarpRandw SndwarpSpec
spec)
(SndwarpSpec -> MaxDelayTime
sndwarpOvelrap SndwarpSpec
spec) (SndwarpSpec -> Tab
sndwarpWin SndwarpSpec
spec) MaxDelayTime
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
{ 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 = MaxDelayTime -> Sig
go (Tab -> MaxDelayTime
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 :: MaxDelayTime -> Sig
go MaxDelayTime
tabLen = do
Sig
-> Sig
-> Sig
-> Sig
-> Sig
-> Sig
-> Sig
-> Sig
-> MaxDelayTime
-> Tab
-> Tab
-> MaxDelayTime
-> 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) MaxDelayTime
100 Tab
giLive Tab
giSigRise MaxDelayTime
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 = (MaxDelayTime -> Sig
sig (MaxDelayTime -> Sig) -> MaxDelayTime -> Sig
forall a b. (a -> b) -> a -> b
$ MaxDelayTime
getSampleRate MaxDelayTime -> MaxDelayTime -> MaxDelayTime
forall a. Fractional a => a -> a -> a
/ MaxDelayTime
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 :: MaxDelayTime
-> Sig -> Sig -> Sig -> Fof2Spec -> Sig -> Sig -> Sig -> SE Sig
fofDelay MaxDelayTime
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)
-> MaxDelayTime -> Sig -> Sig -> Sig -> Sig -> SE Sig
tabDelay (Sig -> Tab -> Sig -> SE Sig
go Sig
rndFmod) MaxDelayTime
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 :: MaxDelayTime
tabLen = MaxDelayTime -> MaxDelayTime
tabSizeSecondsPower2 MaxDelayTime
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 a. a -> SE a
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
-> MaxDelayTime
-> Tab
-> Tab
-> MaxDelayTime
-> 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) MaxDelayTime
100 Tab
giLive Tab
giSigRise MaxDelayTime
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
*(MaxDelayTime -> Sig
sig (MaxDelayTime -> Sig) -> MaxDelayTime -> Sig
forall a b. (a -> b) -> a -> b
$ MaxDelayTime
getSampleRate MaxDelayTime -> MaxDelayTime -> MaxDelayTime
forall a. Fractional a => a -> a -> a
/ MaxDelayTime
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 :: MaxDelayTime
-> Sig -> Sig -> Sig -> Sig -> Sig -> Sig -> Sig -> SE Sig
grainyDelay MaxDelayTime
maxDel Sig
delTime Sig
kfeed Sig
kbalance Sig
grainRate Sig
grainSize Sig
pitch Sig
asig = (Tab -> Sig -> SE Sig)
-> MaxDelayTime -> Sig -> Sig -> Sig -> Sig -> SE Sig
tabDelay Tab -> Sig -> SE Sig
forall {m :: * -> *}. Monad m => Tab -> Sig -> m Sig
go MaxDelayTime
maxDel Sig
delTime Sig
kfeed Sig
kbalance Sig
asig
where go :: Tab -> Sig -> m Sig
go Tab
tab Sig
ptr = Sig -> m Sig
forall a. a -> m a
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 :: MaxDelayTime
-> Sig
-> Sig
-> Sig
-> RndGrainySpec
-> Sig
-> Sig
-> Sig
-> Sig
-> SE Sig
rndGrainyDelay MaxDelayTime
maxDel Sig
delTime Sig
kfeed Sig
kbalance RndGrainySpec
spec Sig
grainRate Sig
grainSize Sig
pitch Sig
asig = (Tab -> Sig -> SE Sig)
-> MaxDelayTime -> Sig -> Sig -> Sig -> Sig -> SE Sig
tabDelay Tab -> Sig -> SE Sig
go MaxDelayTime
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 :: MaxDelayTime
-> Sig -> Sig -> Sig -> SndwarpSpec -> Sig -> Sig -> SE Sig
sndwarpDelay MaxDelayTime
maxDel Sig
delTime Sig
kfeed Sig
kbalance SndwarpSpec
spec Sig
pitch Sig
asig = (Tab -> Sig -> SE Sig)
-> MaxDelayTime -> Sig -> Sig -> Sig -> Sig -> SE Sig
tabDelay Tab -> Sig -> SE Sig
forall {m :: * -> *}. Monad m => Tab -> Sig -> m Sig
go MaxDelayTime
maxDel Sig
delTime Sig
kfeed Sig
kbalance Sig
asig
where go :: Tab -> Sig -> m Sig
go Tab
tab Sig
ptr = Sig -> m Sig
forall a. a -> m a
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 :: MaxDelayTime
-> Sig
-> Sig
-> Sig
-> SyncgrainSpec
-> Sig
-> Sig
-> Sig
-> Sig
-> SE Sig
syncgrainDelay MaxDelayTime
maxDel Sig
delTime Sig
kfeed Sig
kbalance SyncgrainSpec
spec Sig
grainSize Sig
tempo Sig
pitch Sig
asig = (Tab -> Sig -> SE Sig)
-> MaxDelayTime -> Sig -> Sig -> Sig -> Sig -> SE Sig
tabDelay Tab -> Sig -> SE Sig
forall {m :: * -> *} {p}. Monad m => Tab -> p -> m Sig
go MaxDelayTime
maxDel Sig
delTime Sig
kfeed Sig
kbalance Sig
asig
where go :: Tab -> p -> m Sig
go Tab
tab p
_ = Sig -> m Sig
forall a. a -> m a
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 :: MaxDelayTime
-> Sig
-> Sig
-> Sig
-> RndSyncgrainSpec
-> SyncgrainSpec
-> Sig
-> Sig
-> Sig
-> Sig
-> SE Sig
rndSyncgrainDelay MaxDelayTime
maxDel Sig
delTime Sig
kfeed Sig
kbalance RndSyncgrainSpec
rndSpec SyncgrainSpec
spec Sig
grainSize Sig
tempo Sig
pitch Sig
asig = (Tab -> Sig -> SE Sig)
-> MaxDelayTime -> Sig -> Sig -> Sig -> Sig -> SE Sig
tabDelay Tab -> Sig -> SE Sig
forall {p}. Tab -> p -> SE Sig
go MaxDelayTime
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 :: MaxDelayTime
-> Sig
-> Sig
-> Sig
-> PartikkelSpec
-> Sig
-> Sig
-> Sig
-> Sig
-> SE Sig
partikkelDelay MaxDelayTime
maxDel Sig
delTime Sig
kfeed Sig
kbalance PartikkelSpec
spec Sig
grainRate Sig
grainSize Sig
pitch Sig
asig = (Tab -> Sig -> SE Sig)
-> MaxDelayTime -> Sig -> Sig -> Sig -> Sig -> SE Sig
tabDelay Tab -> Sig -> SE Sig
forall {m :: * -> *}. Monad m => Tab -> Sig -> m Sig
go MaxDelayTime
maxDel Sig
delTime Sig
kfeed Sig
kbalance Sig
asig
where go :: Tab -> Sig -> m Sig
go Tab
tab Sig
ptr = Sig -> m Sig
forall a. a -> m a
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 :: MaxDelayTime
fxMaxLength = MaxDelayTime
1
fxDelTime :: DelayTime
fxDelTime :: Sig
fxDelTime = Sig
0.05
type GrainDelay a = MaxDelayTime -> DelayTime -> Feedback -> Balance -> a
toGrainFx :: GrainDelay a -> a
toGrainFx :: forall a. GrainDelay a -> a
toGrainFx GrainDelay a
f = GrainDelay a
f MaxDelayTime
fxMaxLength Sig
fxDelTime Sig
fxFeed Sig
fxBalance
grainyFx :: GrainRate -> GrainSize -> PitchSig -> Sig -> SE Sig
grainyFx :: Sig -> Sig -> Sig -> Sig -> SE Sig
grainyFx = (MaxDelayTime
-> Sig -> Sig -> Sig -> Sig -> Sig -> Sig -> Sig -> SE Sig)
-> Sig -> Sig -> Sig -> Sig -> SE Sig
forall a. GrainDelay a -> a
toGrainFx MaxDelayTime
-> 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 = (MaxDelayTime
-> Sig
-> Sig
-> Sig
-> RndGrainySpec
-> Sig
-> Sig
-> Sig
-> Sig
-> SE Sig)
-> RndGrainySpec -> Sig -> Sig -> Sig -> Sig -> SE Sig
forall a. GrainDelay a -> a
toGrainFx MaxDelayTime
-> Sig
-> Sig
-> Sig
-> RndGrainySpec
-> Sig
-> Sig
-> Sig
-> Sig
-> SE Sig
rndGrainyDelay
sndwarpFx :: SndwarpSpec -> PitchSig -> Sig -> SE Sig
sndwarpFx :: SndwarpSpec -> Sig -> Sig -> SE Sig
sndwarpFx = (MaxDelayTime
-> Sig -> Sig -> Sig -> SndwarpSpec -> Sig -> Sig -> SE Sig)
-> SndwarpSpec -> Sig -> Sig -> SE Sig
forall a. GrainDelay a -> a
toGrainFx MaxDelayTime
-> 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 = (MaxDelayTime
-> Sig
-> Sig
-> Sig
-> SyncgrainSpec
-> Sig
-> Sig
-> Sig
-> Sig
-> SE Sig)
-> SyncgrainSpec -> Sig -> Sig -> Sig -> Sig -> SE Sig
forall a. GrainDelay a -> a
toGrainFx MaxDelayTime
-> 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 = (MaxDelayTime
-> 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 MaxDelayTime
-> 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 = (MaxDelayTime
-> Sig
-> Sig
-> Sig
-> PartikkelSpec
-> Sig
-> Sig
-> Sig
-> Sig
-> SE Sig)
-> PartikkelSpec -> Sig -> Sig -> Sig -> Sig -> SE Sig
forall a. GrainDelay a -> a
toGrainFx MaxDelayTime
-> 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 = (MaxDelayTime
-> Sig -> Sig -> Sig -> Fof2Spec -> Sig -> Sig -> Sig -> SE Sig)
-> Fof2Spec -> Sig -> Sig -> Sig -> SE Sig
forall a. GrainDelay a -> a
toGrainFx MaxDelayTime
-> 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 :: 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
-> MaxDelayTime
-> 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 MaxDelayTime
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 a b. GE (a -> b) -> GE a -> GE b
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 a b. GE (a -> b) -> GE a -> GE b
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 a b. GE (a -> b) -> GE a -> GE b
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 a b. GE (a -> b) -> GE a -> GE b
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 a b. GE (a -> b) -> GE a -> GE b
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 a b. GE (a -> b) -> GE a -> GE b
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 a b. GE (a -> b) -> GE a -> GE b
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 a b. GE (a -> b) -> GE a -> GE b
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 a b. GE (a -> b) -> GE a -> GE b
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 a b. GE (a -> b) -> GE a -> GE b
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 a b. GE (a -> b) -> GE a -> GE b
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 a b. GE (a -> b) -> GE a -> GE b
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 a b. GE (a -> b) -> GE a -> GE b
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 a b. GE (a -> b) -> GE a -> GE b
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 a b. GE (a -> b) -> GE a -> GE b
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 a b. GE (a -> b) -> GE a -> GE b
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 a b. GE (a -> b) -> GE a -> GE b
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 a b. GE (a -> b) -> GE a -> GE b
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 a b. GE (a -> b) -> GE a -> GE b
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 a b. GE (a -> b) -> GE a -> GE b
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 a b. GE (a -> b) -> GE a -> GE b
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 a b. GE (a -> b) -> GE a -> GE b
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 a b. GE (a -> b) -> GE a -> GE b
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 a b. GE (a -> b) -> GE a -> GE b
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 a b. GE (a -> b) -> GE a -> GE b
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 a b. GE (a -> b) -> GE a -> GE b
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 a b. GE (a -> b) -> GE a -> GE b
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 a b. GE (a -> b) -> GE a -> GE b
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 a b. GE (a -> b) -> GE a -> GE b
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 a b. GE (a -> b) -> GE a -> GE b
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 a b. GE (a -> b) -> GE a -> GE b
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 a b. GE (a -> b) -> GE a -> GE b
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 a b. GE (a -> b) -> GE a -> GE b
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 a b. GE (a -> b) -> GE a -> GE b
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 a b. GE (a -> b) -> GE a -> GE b
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 a b. GE (a -> b) -> GE a -> GE b
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 a b. GE (a -> b) -> GE a -> GE b
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 a b. GE (a -> b) -> GE a -> GE b
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 a b. GE (a -> b) -> GE a -> GE b
forall (f :: * -> *) a b. Applicative f => f (a -> b) -> f a -> f b
<*> MaxDelayTime -> GE E
unD MaxDelayTime
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 =
Name -> Specs -> [E] -> MultiOut [E]
mopcs Name
"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 -> MaxDelayTime -> Sig
csdSyncgrain Sig
b1 Sig
b2 Sig
b3 Sig
b4 Sig
b5 Tab
b6 Tab
b7 MaxDelayTime
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 a b. GE (a -> b) -> GE a -> GE b
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 a b. GE (a -> b) -> GE a -> GE b
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 a b. GE (a -> b) -> GE a -> GE b
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 a b. GE (a -> b) -> GE a -> GE b
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 a b. GE (a -> b) -> GE a -> GE b
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 a b. GE (a -> b) -> GE a -> GE b
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 a b. GE (a -> b) -> GE a -> GE b
forall (f :: * -> *) a b. Applicative f => f (a -> b) -> f a -> f b
<*> MaxDelayTime -> GE E
unD MaxDelayTime
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 = Name -> Spec1 -> [E] -> E
opcs Name
"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
-> MaxDelayTime
-> MaxDelayTime
-> MaxDelayTime
-> MaxDelayTime
-> Tab
-> MaxDelayTime
-> MaxDelayTime
-> MaxDelayTime
-> MaxDelayTime
-> Sig
-> MaxDelayTime
-> Sig
-> MaxDelayTime
-> MaxDelayTime
-> MaxDelayTime
-> Sig
csdGranule = Sig
-> MaxDelayTime
-> MaxDelayTime
-> MaxDelayTime
-> MaxDelayTime
-> Tab
-> MaxDelayTime
-> MaxDelayTime
-> MaxDelayTime
-> MaxDelayTime
-> Sig
-> MaxDelayTime
-> Sig
-> MaxDelayTime
-> MaxDelayTime
-> MaxDelayTime
-> Sig
C.granule
csdSndwarp :: Sig -> Sig -> Sig -> Tab -> D -> D -> D -> D -> Tab -> D -> Sig
csdSndwarp :: Sig
-> Sig
-> Sig
-> Tab
-> MaxDelayTime
-> MaxDelayTime
-> MaxDelayTime
-> MaxDelayTime
-> Tab
-> MaxDelayTime
-> Sig
csdSndwarp = Sig
-> Sig
-> Sig
-> Tab
-> MaxDelayTime
-> MaxDelayTime
-> MaxDelayTime
-> MaxDelayTime
-> Tab
-> MaxDelayTime
-> Sig
forall a.
Tuple a =>
Sig
-> Sig
-> Sig
-> Tab
-> MaxDelayTime
-> MaxDelayTime
-> MaxDelayTime
-> MaxDelayTime
-> Tab
-> MaxDelayTime
-> a
C.sndwarp
csdSndwarpst :: Sig -> Sig -> Sig -> Tab -> D -> D -> D -> D -> Tab -> D -> Sig2
csdSndwarpst :: Sig
-> Sig
-> Sig
-> Tab
-> MaxDelayTime
-> MaxDelayTime
-> MaxDelayTime
-> MaxDelayTime
-> Tab
-> MaxDelayTime
-> Sig2
csdSndwarpst = Sig
-> Sig
-> Sig
-> Tab
-> MaxDelayTime
-> MaxDelayTime
-> MaxDelayTime
-> MaxDelayTime
-> Tab
-> MaxDelayTime
-> Sig2
forall a.
Tuple a =>
Sig
-> Sig
-> Sig
-> Tab
-> MaxDelayTime
-> MaxDelayTime
-> MaxDelayTime
-> MaxDelayTime
-> Tab
-> MaxDelayTime
-> 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
-> MaxDelayTime
-> Tab
-> Tab
-> MaxDelayTime
-> Sig
-> Sig
-> Sig
csdFof2 = Sig
-> Sig
-> Sig
-> Sig
-> Sig
-> Sig
-> Sig
-> Sig
-> MaxDelayTime
-> Tab
-> Tab
-> MaxDelayTime
-> Sig
-> Sig
-> Sig
C.fof2