module Csound.Catalog.Wave.TrappedInConvert (
ivory, blue, black, blackMarimba
) where
import Csound.Base
ivory :: D -> D -> Sig -> D -> Sig -> Sig
ivory :: D -> D -> Sig -> D -> Sig -> Sig
ivory D
xdur D
glisDur Sig
vibRate D
cpsCoeff Sig
cps = [Sig] -> Sig
forall a. Fractional a => [a] -> a
mean
[ Sig -> Sig -> D -> D -> D -> Tab -> Sig
alg ([D] -> Sig
linseg [D
0, D
xdur, D
5]) (D -> D -> D -> D -> D -> Sig
lincone D
0 D
0.7 D
1 D
0.3 D
0) D
0 D
0 D
1 Tab
sine
, Sig -> Sig -> D -> D -> D -> Tab -> Sig
alg (D -> D -> D -> D -> D -> Sig
lincone D
0 D
0.6 D
6 D
0.4 D
0) (D -> D -> D -> D -> D -> Sig
lincone D
0 D
0.9 D
1 D
0.1 D
0) D
0.009 D
0.2 D
0.9 ([PartialStrength] -> Tab
sines [PartialStrength
10, PartialStrength
9 .. PartialStrength
1])
, Sig -> Sig -> D -> D -> D -> Tab -> Sig
alg (D -> D -> D -> D -> D -> Sig
lincone D
9 D
0.7 D
1 D
0.3 D
1) (D -> D -> Sig
linenXdur D
0.5 D
0.333) D
0.007 D
0.3 D
1.2 ([PartialStrength] -> Tab
sines [PartialStrength
10, PartialStrength
0, PartialStrength
9, PartialStrength
0, PartialStrength
8, PartialStrength
0, PartialStrength
7, PartialStrength
0, PartialStrength
6, PartialStrength
0, PartialStrength
5])
, Sig -> Sig -> D -> D -> D -> Tab -> Sig
alg (D -> D -> D -> D -> D -> Sig
expcone D
1 D
0.4 D
3 D
0.6 D
0.02)
(D -> D -> D -> D -> D -> Sig
expcone D
0.0001 D
0.8 D
1 D
0.2 D
0.0001) D
0.005 D
0.5 D
0.97 ([PartialStrength] -> Tab
sines [PartialStrength
10, PartialStrength
10, PartialStrength
9, PartialStrength
0, PartialStrength
0, PartialStrength
0, PartialStrength
3, PartialStrength
2, PartialStrength
0, PartialStrength
0, PartialStrength
1])
, Sig -> Sig -> D -> D -> D -> Tab -> Sig
alg (D -> D -> D -> D -> D -> Sig
expcone D
1 D
0.4 D
3 D
0.6 D
0.02)
([D] -> Sig
expdur [D
0.001, D
0.5, D
1, D
0.1, D
0.6, D
0.2, D
0.97, D
0.2, D
0.001])
D
0.003 D
0.8 D
0.99 ([PartialStrength] -> Tab
sines [PartialStrength
10, PartialStrength
0, PartialStrength
0, PartialStrength
0, PartialStrength
5, PartialStrength
0, PartialStrength
0, PartialStrength
0, PartialStrength
0, PartialStrength
0, PartialStrength
3])
, Sig -> Sig -> D -> D -> D -> Tab -> Sig
alg (D -> D -> D -> D -> D -> Sig
expcone D
4 D
0.91 D
1 D
0.09 D
1)
([D] -> Sig
expdur [D
0.001, D
0.6, D
1, D
0.2, D
0.8, D
0.1, D
0.98, D
0.1, D
0.001])
D
0.001 D
1.3 D
1.4 ([PartialStrength] -> Tab
sines [PartialStrength
10, PartialStrength
0, PartialStrength
0, PartialStrength
0, PartialStrength
0, PartialStrength
3, PartialStrength
1])
]
where
alg :: Sig -> Sig -> D -> D -> D -> Tab -> Sig
alg :: Sig -> Sig -> D -> D -> D -> Tab -> Sig
alg Sig
vibrEnv Sig
ampEnv D
cpsBias D
phsBias D
vibrCoeff Tab
wave =
Sig
ampEnv Sig -> Sig -> Sig
forall a. Num a => a -> a -> a
* (Tab -> Sig -> Sig
oscBy Tab
wave ((Sig
cps Sig -> Sig -> Sig
forall a. Num a => a -> a -> a
+ D -> Sig
sig D
cpsBias Sig -> Sig -> Sig
forall a. Num a => a -> a -> a
+ Sig
kvibr) Sig -> Sig -> Sig
forall a. Num a => a -> a -> a
* Sig
glis) Sig -> D -> Sig
forall a. Tuple a => a -> D -> a
`withD` D
phsBias)
where glis :: Sig
glis = [D] -> Sig
expseg [D
1, D
glisDur, D
1, D
xdur D -> D -> D
forall a. Num a => a -> a -> a
- D
glisDur, D
cpsCoeff]
kvibr :: Sig
kvibr = Sig
vibrEnv Sig -> Sig -> Sig
forall a. Num a => a -> a -> a
* Sig -> Sig
osc (Sig
vibRate Sig -> Sig -> Sig
forall a. Num a => a -> a -> a
* D -> Sig
sig D
vibrCoeff)
cone :: D -> D -> D -> D -> D -> [D]
cone D
a D
x1 D
b D
x2 D
c = [D
a, D
x1 D -> D -> D
forall a. Num a => a -> a -> a
* D
xdur, D
b, D
x2 D -> D -> D
forall a. Num a => a -> a -> a
* D
xdur, D
c]
lincone :: D -> D -> D -> D -> D -> Sig
lincone D
a D
x1 D
b D
x2 D
c = [D] -> Sig
linseg ([D] -> Sig) -> [D] -> Sig
forall a b. (a -> b) -> a -> b
$ D -> D -> D -> D -> D -> [D]
cone D
a D
x1 D
b D
x2 D
c
expcone :: D -> D -> D -> D -> D -> Sig
expcone D
a D
x1 D
b D
x2 D
c = [D] -> Sig
expseg ([D] -> Sig) -> [D] -> Sig
forall a b. (a -> b) -> a -> b
$ D -> D -> D -> D -> D -> [D]
cone D
a D
x1 D
b D
x2 D
c
linenXdur :: D -> D -> Sig
linenXdur D
a D
b = Sig -> D -> D -> D -> Sig
linen Sig
1 (D
a D -> D -> D
forall a. Num a => a -> a -> a
* D
xdur) D
xdur (D
b D -> D -> D
forall a. Num a => a -> a -> a
* D
xdur)
blue :: D -> D -> D -> Sig -> Sig -> SE Sig
blue :: D -> D -> D -> Sig -> Sig -> SE Sig
blue D
xdur D
harmNum D
sweepRate Sig
lfoCps Sig
cps = (Sig -> Sig) -> SE Sig -> SE Sig
forall a b. (a -> b) -> SE a -> SE b
forall (f :: * -> *) a b. Functor f => (a -> b) -> f a -> f b
fmap Sig -> Sig
aout SE Sig
k1
where
k1 :: SE Sig
k1 = Sig -> Sig -> SE Sig
randi Sig
1 Sig
50
k2 :: Sig
k2 = D -> [D] -> Sig
lindurBy D
xdur [D
0, D
0.5, D
1, D
0.5, D
0]
k3 :: Sig
k3 = D -> [D] -> Sig
lindurBy D
xdur [D
0.005, D
0.71, D
0.015, D
0.29, D
0.01]
k4 :: Sig
k4 = Sig
k2 Sig -> Sig -> Sig
forall a. Num a => a -> a -> a
* (Sig -> Sig
kr (Sig -> Sig) -> Sig -> Sig
forall a b. (a -> b) -> a -> b
$ Sig -> Sig
osc Sig
lfoCps Sig -> D -> Sig
forall a. Tuple a => a -> D -> a
`withD` D
0.2)
k5 :: Sig
k5 = Sig
k4 Sig -> Sig -> Sig
forall a. Num a => a -> a -> a
+ Sig
2
ksweep :: Sig
ksweep = D -> [D] -> Sig
lindurBy D
xdur [D
harmNum, D
sweepRate, D
1, D
1 D -> D -> D
forall a. Num a => a -> a -> a
- D
sweepRate, D
1]
kenv :: Sig
kenv = D -> [D] -> Sig
expdurBy D
xdur [D
0.001, D
0.01, D
1, D
0.99, D
0.001]
aout :: Sig -> Sig
aout Sig
k = Sig -> Sig -> Sig -> Sig -> Sig -> Tab -> Sig
gbuzz Sig
kenv (Sig
cps Sig -> Sig -> Sig
forall a. Num a => a -> a -> a
+ Sig
k3) Sig
k5 Sig
ksweep Sig
k ([(PartialStrength, PartialStrength, PartialStrength)] -> Tab
sines3 [(PartialStrength
1, PartialStrength
1, PartialStrength
90)])
black :: D -> D -> D -> Sig -> Sig -> SE Sig
black :: D -> D -> D -> Sig -> Sig -> SE Sig
black D
xdur D
filterSweepStart D
filterSweepEnd Sig
bandWidth Sig
cps =
(Sig -> Sig) -> SE Sig -> SE Sig
forall a b. (a -> b) -> SE a -> SE b
forall (f :: * -> *) a b. Functor f => (a -> b) -> f a -> f b
fmap Sig -> Sig
aout (SE Sig -> SE Sig) -> SE Sig -> SE Sig
forall a b. (a -> b) -> a -> b
$ Sig -> SE Sig
rand Sig
1
where
k1 :: Sig
k1 = D -> [D] -> Sig
expdurBy D
xdur [D
filterSweepStart, D
1, D
filterSweepEnd]
a1 :: Sig -> Sig
a1 Sig
anoise = Sig -> Sig -> Sig -> Sig
reson Sig
anoise Sig
k1 (Sig
k1 Sig -> Sig -> Sig
forall a. Fractional a => a -> a -> a
/ Sig
bandWidth) Sig -> D -> Sig
forall a. Tuple a => a -> D -> a
`withD` D
1
k3 :: Sig
k3 = D -> [D] -> Sig
expdurBy D
xdur [D
0.001, D
0.001, D
1, D
0.999, D
0.001]
a2 :: Sig
a2 = Sig
k3 Sig -> Sig -> Sig
forall a. Num a => a -> a -> a
* Sig -> Sig
osc (Sig
cps Sig -> Sig -> Sig
forall a. Num a => a -> a -> a
+ Sig
0.6 Sig -> Sig -> Sig
forall a. Num a => a -> a -> a
* (Sig -> Sig
osc Sig
11.3 Sig -> D -> Sig
forall a. Tuple a => a -> D -> a
`withD` D
0.1))
aout :: Sig -> Sig
aout Sig
anoise = [Sig] -> Sig
forall a. Fractional a => [a] -> a
mean [Sig -> Sig
a1 Sig
anoise, Sig
a2]
blackMarimba :: Sig -> SE Sig
blackMarimba :: Sig -> SE Sig
blackMarimba = D -> D -> D -> Sig -> Sig -> SE Sig
black D
3 D
100 D
500 Sig
50