csound-catalog-0.7.4: src/Csound/Catalog/Wave/Flavio.hs
module Csound.Catalog.Wave.Flavio(
amFlavio, fmFlavio, simpleSust, simpleFading
) where
import Csound.Base
icero, icasi :: D
icero = 0.000001
icasi = 0.0001
-- epiano-s
-- irel1 = 16
amFlavio :: D -> Sig -> Sig
amFlavio irel1' cps = aout
where
irel1 = 16
iamf = 1
irel2 = irel1 * 0.7
kamp = expsegr [icero, 0.05, 1, 1, 0.7, irel1', icasi, irel2, icero] irel2 icero
aam = kamp * osc (iamf * cps)
aout = aam * osc cps
-- irel1 = 6, ifm = (2, 7),
fmFlavio :: D -> Sig -> Sig -> Sig
fmFlavio irel1 ifm cps = aout
where
irel2 = irel1 * 0.5
idec = 1
iatt = 0.01
(iidx1, iidx2, iidx3, iidx4, iidx5) = (4, 4, 4, 4, 3)
kamp = expsegr [icero, iatt, 1, idec, 0.7, irel1, icasi, irel2, icero] irel2 icero
kidx = linsegr [iidx1, iatt, iidx2, idec, iidx3, irel1, iidx4, irel2, iidx5] irel2 iidx5
afrq = kidx * osc (ifm * cps)
aout = kamp * osc (cps * (1 + afrq))
simpleSust, simpleFading :: D -> (D, D) -> SE Sig2
simpleSust = genSimple 0.25 0.1
simpleFading = genSimple icasi icero
genSimple :: D -> D -> D -> (D, D) -> SE Sig2
genSimple isust1 isust2 irel (amp, dcps) = do
aleft <- fmap pureGen $ random 1 (11 * sig amp)
aright <- fmap pureGen $ random 1 (10.5 * sig amp)
return (aleft, aright)
where
cps = sig dcps
pureGen ichr = aout
where
irel1 = irel * (0.5 + amp)
idec = 1
irel2 = 0.75 * irel1
-- kamp = expsegr [1, idec, 0.7, irel1, icasi, irel2, icero] irel2 icero
kamp = expsegr [1, idec, 0.7, irel1, isust1, irel2, isust2] irel2 icero
kcf = 2 * sig amp * linsegr [3000, irel1 + 1, 500] irel2 500
a3 = kamp * (osc (cps - ichr) + osc (cps - ichr))* 0.5
aout = blp kcf a3