-
Notifications
You must be signed in to change notification settings - Fork 8
/
scales.tidal
38 lines (36 loc) · 1.47 KB
/
scales.tidal
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
let remPos num den = if x<0 then x+den else x where x = rem num den
scaleElt scale n = fromIntegral . (scale !!) $ fromIntegral $ remPos n (fromIntegral $ length scale)
scaleOctave scale n = (12 *) . fromIntegral . floor . ((fromIntegral n) /) $ fromIntegral $ length scale
sc s n = scaleOctave s n + scaleElt s n
ionian = [0,2,4,5,7,9,11]
aeolian = [0,2,3,5,7,8,10]
locrian = [0,1,3,5,6,8,10]
phryg = [0,1,3,5,7,8,10]
lydian = [0,2,4,6,7,9,11]
enig = [0,1,3,5,6,8,10,11]
minor = [0,3,7]
major = [0,4,7]
nine = [0,4,7,10,14]
ninesus4 = [0,5,7,10,14]
add9 = [0,4,7,14]
madd9 = [0,3,7,14]
maj9 = [0,4,7,11,14]
m9 = [0,3,7,10,14]
sus2 = [0,2,7]
sus4 = [0,5,7]
seven = [0,4,7,10]
m7 = [0,3,7,10]
eleven = [0,4,7,10,14,17]
m11 = [0,3,7,10,14,17]
thirteen = [0,4,7,10,14,21]
m13 = [0,3,7,10,14,21]
runUpOneOctave = run $ length ionian
runUpTwoOctaves = run $ 2 * length ionian
runUpThreeOctaves = run $ 3 * length ionian
runUpAndDown = append runUpTwoOctaves $ (+1) <$> rev runUpTwoOctaves
scramble p = within (0.25, 0.5) (0.25 <~) $ within (0.5,1) (1.25 ~>) $ within (0, 0.5) (0.5 ~>) $ within (0.25, 0.75) (0.75 <~) $ p
mel' scale runSize f cycles p = note (preplace(1,cycles) p (f $ sc scale <$> run runSize))
melOld scale runSize p = note (preplace(1,1) p (sc scale <$> run runSize))
mel scale runSize p = mel' scale runSize (scramble) 4 p
bps (160/120)
d1 $ sound "k*8? cp"