module Csound.Catalog.Wave.Amsterdam(
tibetan
) where
import Csound.Base
tibetan :: Int -> Sig -> Sig -> Sig
tibetan :: Int -> Sig -> Sig -> Sig
tibetan Int
n Sig
off Sig
cps = Int -> Sig -> (Sig -> Sig) -> Sig -> Sig
chorusPitch Int
n (Sig
2 Sig -> Sig -> Sig
forall a. Num a => a -> a -> a
* Sig
off Sig -> Sig -> Sig
forall a. Num a => a -> a -> a
* Int -> Sig
forall a b. (Integral a, Num b) => a -> b
fromIntegral Int
n) (Tab -> Sig -> Sig
oscBy Tab
wave) Sig
cps
where wave :: Tab
wave = BoolD -> Tab -> Tab -> Tab
forall a bool. (IfB a, bool ~ BooleanOf a) => bool -> a -> a -> a
ifB ((Sig -> D
ir Sig
cps) D -> D -> BooleanOf D
forall a. OrdB a => a -> a -> BooleanOf a
`lessThan` D
230) (Int -> Tab
waveBy Int
5) (BoolD -> Tab -> Tab -> Tab
forall a bool. (IfB a, bool ~ BooleanOf a) => bool -> a -> a -> a
ifB ((Sig -> D
ir Sig
cps) D -> D -> BooleanOf D
forall a. OrdB a => a -> a -> BooleanOf a
`lessThan` D
350) (Int -> Tab
waveBy Int
3) (Int -> Tab
waveBy Int
1))
waveBy :: Int -> Tab
waveBy Int
x = [PartialStrength] -> Tab
sines ([PartialStrength] -> Tab) -> [PartialStrength] -> Tab
forall a b. (a -> b) -> a -> b
$ [PartialStrength
0.3, PartialStrength
0, PartialStrength
0, PartialStrength
0] [PartialStrength] -> [PartialStrength] -> [PartialStrength]
forall a. [a] -> [a] -> [a]
++ Int -> PartialStrength -> [PartialStrength]
forall a. Int -> a -> [a]
replicate Int
x PartialStrength
0.1