︙ | | | ︙ | |
9
10
11
12
13
14
15
16
17
18
19
20
21
22
|
import parse
def main():
key = "A"
bps = 80/60
print bps
tempo = 1/bps
composition = {
"a": { # Movement block 'a' for reuse throughout the piece
"melody": { # Instrument 'melody'
"csound_parameters": {
"instrument": 1,
},
|
>
|
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
|
import parse
def main():
key = "A"
bps = 80/60
print bps
tempo = 1/bps
max_duration = 1
composition = {
"a": { # Movement block 'a' for reuse throughout the piece
"melody": { # Instrument 'melody'
"csound_parameters": {
"instrument": 1,
},
|
︙ | | | ︙ | |
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
|
while 1:
found_substitution = False
for key,value in grammars.iteritems():
if score.find(key) != -1:
found_substitution = True
while score.find(key) != -1:
score = score.replace(key, random.choice(grammars[key]), 1)
if len(score.split()) > 20:
score = score.replace("u", "")
score = score.replace("e", "")
return score
if found_substitution is False:
break
return score
|
|
|
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
|
while 1:
found_substitution = False
for key,value in grammars.iteritems():
if score.find(key) != -1:
found_substitution = True
while score.find(key) != -1:
score = score.replace(key, random.choice(grammars[key]), 1)
if len(score.split()) > 200:
score = score.replace("u", "")
score = score.replace("e", "")
return score
if found_substitution is False:
break
return score
|
︙ | | | ︙ | |
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
|
"VII": 7,
"VIII": 8,
}
keyed_score = []
for i in range(len(score)):
if isinstance(score[i], parse.Note):
score[i].value = scale[scale_conversion[score[i].value]-1]
else:
chord = []
root_note_index = scale.index(key) + scale_conversion[score[i].value]
chord.append(scale[root_note_index])
if score[i].chord_type == "m": # Minor chords, flat the 3rd
chord.append(scale[(root_note_index+2) % 8])
else:
chord.append(scale[(root_note_index+3) % 8])
chord.append(scale[(root_note_index+5) % 8])
score[i].chord = chord
return score
def generate_csound_score(score):
csound_note_values = {
"C": "00",
"C#": "01",
|
|
>
>
|
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
|
"VII": 7,
"VIII": 8,
}
keyed_score = []
for i in range(len(score)):
if isinstance(score[i], parse.Note):
score[i].value = scale[scale_conversion[score[i].value]-1]
elif isinstance(score[i], parse.Chord):
chord = []
root_note_index = scale.index(key) + scale_conversion[score[i].value]
chord.append(scale[root_note_index])
if score[i].chord_type == "m": # Minor chords, flat the 3rd
chord.append(scale[(root_note_index+2) % 8])
else:
chord.append(scale[(root_note_index+3) % 8])
chord.append(scale[(root_note_index+5) % 8])
score[i].chord = chord
elif isinstance(score[i], parse.Rest):
pass
return score
def generate_csound_score(score):
csound_note_values = {
"C": "00",
"C#": "01",
|
︙ | | | ︙ | |
168
169
170
171
172
173
174
175
176
177
178
179
180
181
|
}
csound_score = []
for token in score:
if isinstance(token, parse.Chord): # Chords
for note in token.chord:
note = csound_note_values[note]
csound_score.append("i2 %(time)f %(duration)f 7000 %(octave)d.%(note)s %(octave)d.%(note)s 0 6" % {"time": token.time, "octave": random.choice([7,8]), "note": note, "duration": token.duration})
else: # Individual notes
note = csound_note_values[token.value]
csound_score.append("i2 %(time)f %(duration)f 7000 %(octave)d.%(note)s %(octave)d.%(note)s 0 6" % {"time": token.time, "octave": random.choice([8,9]), "note": note, "duration": token.duration})
return csound_score
if __name__ == "__main__": main()
|
|
|
171
172
173
174
175
176
177
178
179
180
181
182
183
184
|
}
csound_score = []
for token in score:
if isinstance(token, parse.Chord): # Chords
for note in token.chord:
note = csound_note_values[note]
csound_score.append("i2 %(time)f %(duration)f 7000 %(octave)d.%(note)s %(octave)d.%(note)s 0 6" % {"time": token.time, "octave": random.choice([7,8]), "note": note, "duration": token.duration})
elif isinstance(token, parse.Note): # Individual notes
note = csound_note_values[token.value]
csound_score.append("i2 %(time)f %(duration)f 7000 %(octave)d.%(note)s %(octave)d.%(note)s 0 6" % {"time": token.time, "octave": random.choice([8,9]), "note": note, "duration": token.duration})
return csound_score
if __name__ == "__main__": main()
|