Web   ·   Wiki   ·   Activities   ·   Blog   ·   Lists   ·   Chat   ·   Meeting   ·   Bugs   ·   Git   ·   Translate   ·   Archive   ·   People   ·   Donate
summaryrefslogtreecommitdiffstats
path: root/Generation/GenerationConstants.py
blob: 8be5de23895a8592af1bed5dc621f43525036701 (plain)
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
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
import random

class GenerationConstants:

    TWO_ROOT_TWELVE = pow( 2, 1./12 )
    MAX_NOTES_PER_BAR = 12

    PHRASE_LENGTH = 4
    PHRASE_COMPLEXITY = .5

    TABLE_ONSET_VALUES = [ 3, 4, 6, 8, 12, 18, 24, 36, 48 ]

    # scaling constants
    MAJOR = 0
    HARMONIC_MINOR = 1
    NATURAL_MINOR = 2
    PHRYGIEN = 3
    DORIEN = 4
    LYDIEN = 5
    MYXOLYDIEN = 6
                               
    SCALES = { MAJOR : [ -12, -10, -8, -7, -5, -3, -1, 0, 2, 4, 5, 7, 9, 11, 12 ],    
                        HARMONIC_MINOR : [ -12, -10, -9, -7, -5, -4, -1, 0, 2, 3, 5, 7, 8, 11, 12 ],
                        NATURAL_MINOR : [ -12, -10, -9, -7, -5, -4, -2, 0, 2, 3, 5, 7, 8, 10, 12 ],
                        PHRYGIEN : [ -12, -11, -9, -7, -5, -4, -2, 0, 1, 3, 5, 7, 8, 10, 12 ], 
                        DORIEN : [ -12, -10, -9, -7, -5, -3, -2, 0, 2, 3, 5, 7, 9, 10, 12 ], 
                        LYDIEN : [ -12, -10, -8, -6, -5, -3, -1, 0, 2, 4, 6, 7, 9, 11, 12 ], 
                        MYXOLYDIEN : [ -12, -10, -8, -7, -5, -3, -2, 0, 2, 4, 5, 7, 9, 10, 12 ]}


    # Default parameters for algorithmic generation

    RYTHM_DENSITY_BANK = [.4, 1., .92, .8, .22]
    RYTHM_REGU_BANK = [.75, .8, .85, .66, .5]
    PITCH_REGU_BANK = [.5, .8, .5, 0, .9]
    PITCH_STEP_BANK = [.5, .7, .15, .8, .15] 
    DURATION_BANK = [.8, .8, .8, .87, 1]
    SILENCE_BANK = [.2, .5, .4, .45, .12]
    PATTERN_BANK = [0, 3, 1, 2, 1]
    SCALE_BANK = [MAJOR, NATURAL_MINOR, LYDIEN, HARMONIC_MINOR, MYXOLYDIEN]

    chooseDefault = random.randint(0,4)
    DEFAULT_DENSITY = RYTHM_DENSITY_BANK[chooseDefault]
    DEFAULT_RYTHM_REGULARITY = RYTHM_REGU_BANK[chooseDefault]
    DEFAULT_PITCH_REGULARITY = PITCH_REGU_BANK[chooseDefault]
    DEFAULT_STEP = PITCH_STEP_BANK[chooseDefault]
    DEFAULT_DURATION = DURATION_BANK[chooseDefault]
    DEFAULT_SILENCE = SILENCE_BANK[chooseDefault]
    DEFAULT_PATTERN = PATTERN_BANK[chooseDefault]
    DEFAULT_SCALE = SCALE_BANK[chooseDefault]

    DEFAULT_RYTHM_METHOD = 0
    DEFAULT_PITCH_METHOD = 0
    DEFAULT_PAN = 0.5

    DEFAULT_PITCH_VARIATION = 0  # 0 = 'melodic' 1 = 'harmonic' 
    DEFAULT_RYTHM_VARIATION = 0  # 0 = 'Cellule' 1 = 'Xnoise'

    DEFAULT_TONIQUE = 36

    I = [ 0, 2, 4, 7, 9, 11, 14 ]
    II = [ 1, 3, 5, 8, 10, 12 ]
    III = [ 2, 4, 6, 9, 11, 13 ]
    IV = [ 0, 3, 5, 7, 10, 12, 14 ]
    V = [ 1, 4, 6, 8, 11, 13 ]
    VI = [ 0, 2, 5, 7, 9, 12, 14 ]
    VII = [ 1, 3, 6, 8, 10, 13 ]

    CHORDS_TABLE = [ I, V, I, II, V, I, VI, II, V, I, IV, VI, II, V, I, V, VI ]
#    CHORDS_TABLE = [I, V, I, V, I, V, I, V, I, V, I, V, I, V ]
    # pitch patterns constants
 #   PITCH_PATTERNS = [ 'Drunk', 'DroneAndJump', 'Repeter', 'Loopseg' ]

    # Parameters for probability scaling function
    REPETITION_SCALE_MIN_MAPPING = 0
    REPETITION_SCALE_MAX_MAPPING = 25
    REPETITION_SCALE_STEPS = 25
    DENSITY_SCALE_MIN_MAPPING = 0
    DENSITY_SCALE_MAX_MAPPING = 38
    DENSITY_SCALE_STEPS = 38
    ARTICULATION_SCALE_MIN_MAPPING = .6
    ARTICULATION_SCALE_MAX_MAPPING = 1
    ARTICULATION_SCALE_STEPS = 30

    # Rythmic durations, in ticks, and how many to complete figure (celluleRythmSequence)
    DOUBLE_TICK_DUR = 3
    DOUBLE_HOW_MANY = 2
    HALF_TRIPLET_TICK_DUR = 4
    HALF_TRIPLET_HOW_MANY = 3
    HOLE_TRIPLET_TICK_DUR = 8
    HOLE_TRIPLET_HOW_MANY = 3

    # Random generators default values (xnoiseRythmSequence)
    RANDOM_BETA_PARAM = 0.004
    RANDOM_EXPO_PARAM = 5
    RANDOM_GAUSS_PARAM1 = 0.5
    RANDOM_GAUSS_PARAM2 = 0.1
    RANDOM_WEIBULL_PARAM1 = 0.5

    RANDOM_WEIBULL_PARAM2 = 2.5

    # Onsets probability tables (drumRythmSequence)

    PUNCH_ACCENTS = [ [],
                      [ 0 ],
                      [ 0, 1 ],
                      [ 0, 2, 1 ],
                      [ 0, 2, 3, 1 ],
                      [ 0, 3, 2, 4, 1],
                      [ 0, 3, 2, 5, 1, 4 ],
                      [ 0, 2, 4, 6, 5, 3, 1 ],
                      [ 0, 4, 2, 6, 3, 7, 5, 1 ],
                      [ 0, 4, 6, 2, 8, 5, 3, 7, 1],
                      [ 0, 6, 4, 8, 2, 5, 7, 3, 9, 1],
                      [ 0, 4, 6, 10, 8, 2, 5, 7, 9, 3, 1],
                      [0, 6, 4, 2, 8, 10, 7, 5, 3, 9, 11, 1] ]

 
    LOW_ACCENTS = [ [],
                    [ 0 ],
                    [ 0, 1 ],
                    [ 0, 2, 1 ],
                    [ 0, 2, 3, 1 ],
                    [ 0, 3, 2, 4, 1 ],
                    [ 0, 3, 2, 5, 1, 4 ],
                    [ 0, 2, 4, 6, 5, 3, 1 ],
                    [ 0, 4, 2, 6, 3, 7, 5, 1 ],
                    [ 0, 4, 6, 2, 8, 5, 3, 7, 1 ],
                    [ 0, 6, 4, 8, 2, 5, 7, 3, 9, 1 ],
                    [ 0, 4, 6, 10, 8, 2, 5, 7, 9, 3, 1 ],
                    [0, 6, 4, 2, 8, 10, 7, 5, 3, 9, 11, 1 ] ]
                                          
    MID_ACCENTS = [   [],
        [ 0, 1 ],
        [ 0, 2, 3, 1 ],
        [ 0, 2, 4, 3, 1, 5 ],    
        [ 0, 4, 6, 2, 7, 1, 3, 5 ],
        [ 0, 6, 4, 8, 2, 1, 5, 3, 9, 7 ],
        [ 0, 6, 11, 5, 3, 9, 10, 2, 8, 7, 1, 4 ],
        [ 0, 4, 8, 12, 10, 13, 11, 9, 3, 2, 6, 5, 7, 1 ],
        [ 0, 8, 4, 12, 6, 14, 2, 10, 7, 15, 1, 9, 3, 11, 5, 13 ],
        [ 0, 8, 16, 4, 12, 14, 6, 2, 10, 7, 15, 1, 9, 3, 17, 11, 5, 13],
        [ 0, 10, 8, 4, 16, 12, 6, 14, 18, 2, 7, 9, 15, 3, 1, 19, 5, 11, 13, 17],
        [ 0, 8, 10, 16, 4, 20, 6, 12, 18, 14, 2, 9, 7, 3, 15, 21, 19, 1, 5, 11, 17, 13],
        [ 0, 10, 8, 4, 16, 6, 20, 22, 18, 12, 2, 14, 7, 9, 15, 3, 19, 1, 21, 5, 23, 17, 11, 13]  ]

    HIGH_ACCENTS = [   [],
        [ 1, 0 ],
        [ 1, 3, 2, 0 ],
        [ 5, 1, 3, 4, 2, 0 ],    
        [ 5, 3, 1, 7, 2, 6, 4, 0 ],
        [ 7, 9, 3, 5, 1, 2, 8, 4, 6, 0 ],
        [ 4, 1, 7, 5, 3, 9, 10, 2, 8, 11, 6, 0 ],
        [ 1, 7, 8, 5, 10, 13, 11, 9, 3, 2, 6, 12, 4, 0 ],
        [ 13, 5, 11, 3, 9, 1, 15, 10, 7, 2, 14, 6, 12, 4, 8, 0 ],
        [ 13, 5, 11, 17, 3, 9, 1, 15, 7, 10, 2, 6, 14, 12, 4, 16, 8, 0 ],
        [ 17, 13, 11, 5, 19, 1, 3, 15, 9, 7, 2, 18, 14, 6, 12, 16, 4, 8, 10, 0 ],
        [ 13, 17, 11, 5, 1, 19, 21, 15, 3, 7, 9, 2, 14, 18, 12, 6, 20, 4, 16, 10, 8, 0 ],
        [ 13, 11, 17, 23, 5, 21, 1, 19, 3, 15, 9, 7, 14, 2, 12, 18, 22, 20, 6, 16, 4, 8, 10, 0 ]  ]

    DRUM_PUNCH_PROB = [[], [(0, 100)], [(0, 100), (12, 35)], [(0, 100), (24, 54), (12, 19)], [(0, 100), (24, 64), (36, 35), (12, 12)], [(0, 100), (36, 71), (24, 46), (48, 25), (12, 8)], [(0, 100), (36, 76), (24, 54), (60, 35), (12, 19), (48, 6)], [(0, 100), (24, 79), (48, 60), (72, 43), (60, 28), (36, 15), (12, 5)], [(0, 100), (48, 81), (24, 64), (72, 49), (36, 35), (84, 22), (60, 12), (12, 4)], [(0, 100), (48, 83), (72, 68), (24, 54), (96, 41), (60, 29), (36, 19), (84, 10), (12, 3)], [(0, 100), (72, 85), (48, 71), (96, 58), (24, 46), (60, 35), (84, 25), (36, 16), (108, 8), (12, 3)], [(0, 100), (48, 86), (72, 74), (120, 62), (96, 50), (24, 40), (60, 30), (84, 21), (108, 14), (36, 7), (12, 2)], [(0, 100), (72, 87), (48, 76), (24, 64), (96, 54), (120, 44), (84, 35), (60, 26), (36, 19), (108, 12), (132, 6), (12, 2)]]
    DRUM_LOW_PROB = [[], [(0, 100)], [(0, 100), (12, 35)], [(0, 100), (24, 54), (12, 19)], [(0, 100), (24, 64), (36, 35), (12, 12)], [(0, 100), (36, 71), (24, 46), (48, 25), (12, 8)], [(0, 100), (36, 76), (24, 54), (60, 35), (12, 19), (48, 6)], [(0, 100), (24, 79), (48, 60), (72, 43), (60, 28), (36, 15), (12, 5)], [(0, 100), (48, 81), (24, 64), (72, 49), (36, 35), (84, 22), (60, 12), (12, 4)], [(0, 100), (48, 83), (72, 68), (24, 54), (96, 41), (60, 29), (36, 19), (84, 10), (12, 3)], [(0, 100), (72, 85), (48, 71), (96, 58), (24, 46), (60, 35), (84, 25), (36, 16), (108, 8), (12, 3)], [(0, 100), (48, 86), (72, 74), (120, 62), (96, 50), (24, 40), (60, 30), (84, 21), (108, 14), (36, 7), (12, 2)], [(0, 100), (72, 87), (48, 76), (24, 64), (96, 54), (120, 44), (84, 35), (60, 26), (36, 19), (108, 12), (132, 6), (12, 2)]]
    DRUM_MID_PROB = [[], [(0, 100), (6, 35)], [(0, 100), (12, 64), (18, 35), (6, 12)], [(0, 100), (12, 76), (24, 54), (18, 35), (6, 19), (30, 6)], [(0, 100), (24, 81), (36, 64), (12, 49), (42, 35), (6, 22), (18, 12), (30, 4)], [(0, 100), (36, 85), (24, 71), (48, 58), (12, 46), (6, 35), (30, 25), (18, 16), (54, 8), (42, 3)], [(0, 100), (36, 87), (66, 76), (30, 64), (18, 54), (54, 44), (60, 35), (12, 26), (48, 19), (42, 12), (6, 6), (24, 2)], [(0, 100), (24, 89), (48, 79), (72, 69), (60, 60), (78, 51), (66, 43), (54, 35), (18, 28), (12, 21), (36, 15), (30, 9), (42, 5), (6, 1)], [(0, 100), (48, 90), (24, 81), (72, 73), (36, 64), (84, 57), (12, 49), (60, 42), (42, 35), (90, 28), (6, 22), (54, 17), (18, 12), (66, 8), (30, 4), (78, 1)], [(0, 100), (48, 91), (96, 83), (24, 76), (72, 68), (84, 61), (36, 54), (12, 47), (60, 41), (42, 35), (90, 29), (6, 24), (54, 19), (18, 14), (102, 10), (66, 6), (30, 3), (78, 1)], [(0, 100), (60, 92), (48, 85), (24, 78), (96, 71), (72, 64), (36, 58), (84, 52), (108, 46), (12, 40), (42, 35), (54, 30), (90, 25), (18, 20), (6, 16), (114, 12), (30, 8), (66, 5), (78, 3), (102, 1)], [(0, 100), (48, 93), (60, 86), (96, 80), (24, 74), (120, 67), (36, 62), (72, 56), (108, 50), (84, 45), (12, 40), (54, 35), (42, 30), (18, 26), (90, 21), (126, 17), (114, 14), (6, 10), (30, 7), (66, 5), (102, 2), (78, 0)], [(0, 100), (60, 93), (48, 87), (24, 81), (96, 76), (36, 70), (120, 64), (132, 59), (108, 54), (72, 49), (12, 44), (84, 39), (42, 35), (54, 31), (90, 26), (18, 22), (114, 19), (6, 15), (126, 12), (30, 9), (138, 6), (102, 4), (66, 2), (78, 0)]]
    DRUM_HIGH_PROB = [[], [(6, 100), (0, 35)], [(6, 100), (18, 64), (12, 35), (0, 12)], [(30, 100), (6, 76), (18, 54), (24, 35), (12, 19), (0, 6)], [(30, 100), (18, 81), (6, 64), (42, 49), (12, 35), (36, 22), (24, 12), (0, 4)], [(42, 100), (54, 85), (18, 71), (30, 58), (6, 46), (12, 35), (48, 25), (24, 16), (36, 8), (0, 3)], [(24, 100), (6, 87), (42, 76), (30, 64), (18, 54), (54, 44), (60, 35), (12, 26), (48, 19), (66, 12), (36, 6), (0, 2)], [(6, 100), (42, 89), (48, 79), (30, 69), (60, 60), (78, 51), (66, 43), (54, 35), (18, 28), (12, 21), (36, 15), (72, 9), (24, 5), (0, 1)], [(78, 100), (30, 90), (66, 81), (18, 73), (54, 64), (6, 57), (90, 49), (60, 42), (42, 35), (12, 28), (84, 22), (36, 17), (72, 12), (24, 8), (48, 4), (0, 1)], [(78, 100), (30, 91), (66, 83), (102, 76), (18, 68), (54, 61), (6, 54), (90, 47), (42, 41), (60, 35), (12, 29), (36, 24), (84, 19), (72, 14), (24, 10), (96, 6), (48, 3), (0, 1)], [(102, 100), (78, 92), (66, 85), (30, 78), (114, 71), (6, 64), (18, 58), (90, 52), (54, 46), (42, 40), (12, 35), (108, 30), (84, 25), (36, 20), (72, 16), (96, 12), (24, 8), (48, 5), (60, 3), (0, 1)], [(78, 100), (102, 93), (66, 86), (30, 80), (6, 74), (114, 67), (126, 62), (90, 56), (18, 50), (42, 45), (54, 40), (12, 35), (84, 30), (108, 26), (72, 21), (36, 17), (120, 14), (24, 10), (96, 7), (60, 5), (48, 2), (0, 0)], [(78, 100), (66, 93), (102, 87), (138, 81), (30, 76), (126, 70), (6, 64), (114, 59), (18, 54), (90, 49), (54, 44), (42, 39), (84, 35), (12, 31), (72, 26), (108, 22), (132, 19), (120, 15), (36, 12), (96, 9), (24, 6), (48, 4), (60, 2), (0, 0)]]

    # Gain boundaries
    GAIN_MAX_BOUNDARY = 1.
    GAIN_MID_MAX_BOUNDARY = .9
    GAIN_MID_MIN_BOUNDARY = .75
    GAIN_MIN_BOUNDARY = .65

    # pitch mapping for drum kit
    DRUMPITCH = {25: 24, 27: 26, 29: 28, 31: 30, 33: 32, 35: 34, 37: 36, 39: 38, 41: 40, 43: 42, 45: 44, 47: 46 }

    DRUM_COMPLEXITY1 = [ [ 24 ], [30] , [ 40 ], [ 46 ]  ]
    DRUM_COMPLEXITY2 = [ [ 24, 28 ], [ 30, 32 ], [ 36, 38, 40 ], [ 46, 48 ]  ]
    DRUM_COMPLEXITY3 = [ [ 24, 26, 28 ], [ 30, 32, 34 ], [ 38, 40 ], [ 42, 46, 48 ]  ] 
    DRUM_COMPLEXITY4 = [ [ 24, 26, 28 ], [ 30, 32, 34 ], [ 38, 40 ], [ 42, 44, 46, 48 ]  ] 
 
    TRANSPOSE = [0.5, 0.52973154717964765, 0.56123102415468651, 0.59460355750136051, 0.6299605249474366, 0.66741992708501718, 0.70710678118654757, 0.74915353843834076, 0.79370052598409979, 0.8408964152537145, 0.89089871814033927, 0.94387431268169353, 1.0, 1.0594630943592953, 1.122462048309373, 1.189207115002721, 1.2599210498948732, 1.3348398541700344, 1.4142135623730951, 1.4983070768766815, 1.5874010519681994, 1.681792830507429, 1.7817974362806785, 1.8877486253633868, 2.0]

    CELLULES_MARKERS = [ 8, 16, 21, 24 ]
    CELLULES = [ [ 3, 3, 3, 3 ], [ 3, 3, 6 ], [ 3, 6, 3 ], [ 6, 3, 3 ], [ 4, 4, 4 ], [ 4, 8 ], [ 8, 4 ], [ 6, 6 ], [ 12 ], [ 6, 12, 6 ], [ 8, 8, 8 ], [ 8, 16 ], [ 16, 8 ], [ 12, 12 ], [ 18, 6 ], 
                                [ 6, 18 ], [ 24 ], [ 12, 12, 12 ], [ 18, 18 ], [ 24, 12 ], [ 12, 24 ], [ 36 ], [ 12, 24, 12 ], [ 24, 24 ], [ 48 ] ]