pachet commited on
Commit
135ad48
·
1 Parent(s): c2f178d

update files and added ortools optimisation

Browse files
hexachords.py CHANGED
@@ -26,8 +26,13 @@ class Hexachord:
26
  "6-Z44A [0,1,2,5,6,9] Schoenberg hexachord",
27
  "6-Z46A [0,1,2,4,6,9] Scale of harmonics",
28
  "6-Z47B [0,2,3,4,7,9] Blues scale"]
29
- _base_sequence = None
30
- _realizations = []
 
 
 
 
 
31
 
32
  def generate_chord_sequence_from_midi_pitches(self, list_of_mp, intrvl="P5"):
33
  return self.generate_base_sequence([note.Note(mp).nameWithOctave for mp in list_of_mp], intrvl=intrvl)
 
26
  "6-Z44A [0,1,2,5,6,9] Schoenberg hexachord",
27
  "6-Z46A [0,1,2,4,6,9] Scale of harmonics",
28
  "6-Z47B [0,2,3,4,7,9] Blues scale"]
29
+
30
+ def __init__(self, note_names=["C3", "Eb3", "E3", "F#3", "G3", "Bb3"]):
31
+ # note_names = ["C3", "Eb3", "E3", "F#3", "G3", "Bb3"]
32
+ _base_sequence = None
33
+ _realizations = []
34
+ notes = [note.Note(n) for n in note_names]
35
+ self.generate_base_sequence(notes, intrvl="P5")
36
 
37
  def generate_chord_sequence_from_midi_pitches(self, list_of_mp, intrvl="P5"):
38
  return self.generate_base_sequence([note.Note(mp).nameWithOctave for mp in list_of_mp], intrvl=intrvl)
legacy/MSmovement5-1.svg ADDED
legacy/base.musicxml ADDED
@@ -0,0 +1,547 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ <?xml version="1.0" encoding="UTF-8"?>
2
+ <!DOCTYPE score-partwise PUBLIC "-//Recordare//DTD MusicXML 4.0 Partwise//EN" "http://www.musicxml.org/dtds/partwise.dtd">
3
+ <score-partwise version="4.0">
4
+ <identification>
5
+ <encoding>
6
+ <software>MuseScore 4.5.1</software>
7
+ <encoding-date>2025-04-05</encoding-date>
8
+ <supports element="accidental" type="yes"/>
9
+ <supports element="beam" type="yes"/>
10
+ <supports element="print" attribute="new-page" type="yes" value="yes"/>
11
+ <supports element="print" attribute="new-system" type="yes" value="yes"/>
12
+ <supports element="stem" type="yes"/>
13
+ </encoding>
14
+ </identification>
15
+ <defaults>
16
+ <scaling>
17
+ <millimeters>6.99911</millimeters>
18
+ <tenths>40</tenths>
19
+ </scaling>
20
+ <page-layout>
21
+ <page-height>1696.94</page-height>
22
+ <page-width>1200.48</page-width>
23
+ <page-margins type="even">
24
+ <left-margin>85.7252</left-margin>
25
+ <right-margin>85.7252</right-margin>
26
+ <top-margin>85.7252</top-margin>
27
+ <bottom-margin>85.7252</bottom-margin>
28
+ </page-margins>
29
+ <page-margins type="odd">
30
+ <left-margin>85.7252</left-margin>
31
+ <right-margin>85.7252</right-margin>
32
+ <top-margin>85.7252</top-margin>
33
+ <bottom-margin>85.7252</bottom-margin>
34
+ </page-margins>
35
+ </page-layout>
36
+ <appearance>
37
+ <line-width type="light barline">1.8</line-width>
38
+ <line-width type="heavy barline">5.5</line-width>
39
+ <line-width type="beam">5</line-width>
40
+ <line-width type="bracket">4.5</line-width>
41
+ <line-width type="dashes">1</line-width>
42
+ <line-width type="enclosure">1</line-width>
43
+ <line-width type="ending">1.1</line-width>
44
+ <line-width type="extend">1</line-width>
45
+ <line-width type="leger">1.6</line-width>
46
+ <line-width type="pedal">1.1</line-width>
47
+ <line-width type="octave shift">1.1</line-width>
48
+ <line-width type="slur middle">2.1</line-width>
49
+ <line-width type="slur tip">0.5</line-width>
50
+ <line-width type="staff">1.1</line-width>
51
+ <line-width type="stem">1</line-width>
52
+ <line-width type="tie middle">2.1</line-width>
53
+ <line-width type="tie tip">0.5</line-width>
54
+ <line-width type="tuplet bracket">1</line-width>
55
+ <line-width type="wedge">1.2</line-width>
56
+ <note-size type="cue">70</note-size>
57
+ <note-size type="grace">70</note-size>
58
+ <note-size type="grace-cue">49</note-size>
59
+ </appearance>
60
+ <music-font font-family="Leland"/>
61
+ <word-font font-family="Edwin" font-size="10"/>
62
+ <lyric-font font-family="Edwin" font-size="10"/>
63
+ </defaults>
64
+ <part-list>
65
+ <score-part id="P1">
66
+ <part-name>Piano</part-name>
67
+ <part-abbreviation>Pno.</part-abbreviation>
68
+ <score-instrument id="P1-I1">
69
+ <instrument-name>Piano</instrument-name>
70
+ <instrument-sound>keyboard.piano</instrument-sound>
71
+ </score-instrument>
72
+ <midi-device id="P1-I1" port="1"></midi-device>
73
+ <midi-instrument id="P1-I1">
74
+ <midi-channel>1</midi-channel>
75
+ <midi-program>1</midi-program>
76
+ <volume>78.7402</volume>
77
+ <pan>0</pan>
78
+ </midi-instrument>
79
+ </score-part>
80
+ </part-list>
81
+ <part id="P1">
82
+ <measure number="1" width="219.57">
83
+ <print>
84
+ <system-layout>
85
+ <system-margins>
86
+ <left-margin>50</left-margin>
87
+ <right-margin>0</right-margin>
88
+ </system-margins>
89
+ <top-system-distance>70.48</top-system-distance>
90
+ </system-layout>
91
+ <staff-layout number="2">
92
+ <staff-distance>65</staff-distance>
93
+ </staff-layout>
94
+ </print>
95
+ <attributes>
96
+ <divisions>1</divisions>
97
+ <key>
98
+ <fifths>0</fifths>
99
+ </key>
100
+ <time>
101
+ <beats>4</beats>
102
+ <beat-type>4</beat-type>
103
+ </time>
104
+ <staves>2</staves>
105
+ <clef number="1">
106
+ <sign>G</sign>
107
+ <line>2</line>
108
+ </clef>
109
+ <clef number="2">
110
+ <sign>F</sign>
111
+ <line>4</line>
112
+ </clef>
113
+ </attributes>
114
+ <direction placement="above" system="only-top">
115
+ <direction-type>
116
+ <metronome parentheses="no" default-x="-37.68" default-y="5.81" relative-y="20">
117
+ <beat-unit>quarter</beat-unit>
118
+ <per-minute>120</per-minute>
119
+ </metronome>
120
+ </direction-type>
121
+ <staff>1</staff>
122
+ <sound tempo="120"/>
123
+ </direction>
124
+ <note default-x="82.01" default-y="-25" dynamics="100">
125
+ <pitch>
126
+ <step>A</step>
127
+ <octave>4</octave>
128
+ </pitch>
129
+ <duration>4</duration>
130
+ <voice>1</voice>
131
+ <type>whole</type>
132
+ <staff>1</staff>
133
+ </note>
134
+ <note default-x="82.01" default-y="-5" dynamics="100">
135
+ <chord/>
136
+ <pitch>
137
+ <step>E</step>
138
+ <octave>5</octave>
139
+ </pitch>
140
+ <duration>4</duration>
141
+ <voice>1</voice>
142
+ <type>whole</type>
143
+ <staff>1</staff>
144
+ </note>
145
+ <note default-x="82.01" default-y="15" dynamics="100">
146
+ <chord/>
147
+ <pitch>
148
+ <step>B</step>
149
+ <octave>5</octave>
150
+ </pitch>
151
+ <duration>4</duration>
152
+ <voice>1</voice>
153
+ <type>whole</type>
154
+ <staff>1</staff>
155
+ </note>
156
+ <backup>
157
+ <duration>4</duration>
158
+ </backup>
159
+ <note default-x="82.01" default-y="-130" dynamics="100">
160
+ <pitch>
161
+ <step>C</step>
162
+ <octave>3</octave>
163
+ </pitch>
164
+ <duration>4</duration>
165
+ <voice>5</voice>
166
+ <type>whole</type>
167
+ <staff>2</staff>
168
+ </note>
169
+ <note default-x="82.01" default-y="-110" dynamics="100">
170
+ <chord/>
171
+ <pitch>
172
+ <step>G</step>
173
+ <octave>3</octave>
174
+ </pitch>
175
+ <duration>4</duration>
176
+ <voice>5</voice>
177
+ <type>whole</type>
178
+ <staff>2</staff>
179
+ </note>
180
+ <note default-x="82.01" default-y="-90" dynamics="100">
181
+ <chord/>
182
+ <pitch>
183
+ <step>D</step>
184
+ <octave>4</octave>
185
+ </pitch>
186
+ <duration>4</duration>
187
+ <voice>5</voice>
188
+ <type>whole</type>
189
+ <staff>2</staff>
190
+ </note>
191
+ </measure>
192
+ <measure number="2" width="150.05">
193
+ <attributes>
194
+ <clef number="2">
195
+ <sign>G</sign>
196
+ <line>2</line>
197
+ </clef>
198
+ </attributes>
199
+ <note default-x="12.5" default-y="40" dynamics="100">
200
+ <pitch>
201
+ <step>G</step>
202
+ <octave>6</octave>
203
+ </pitch>
204
+ <duration>4</duration>
205
+ <voice>1</voice>
206
+ <type>whole</type>
207
+ <staff>1</staff>
208
+ </note>
209
+ <backup>
210
+ <duration>4</duration>
211
+ </backup>
212
+ <note default-x="12.5" default-y="-185" dynamics="100">
213
+ <pitch>
214
+ <step>D</step>
215
+ <octave>3</octave>
216
+ </pitch>
217
+ <duration>4</duration>
218
+ <voice>5</voice>
219
+ <type>whole</type>
220
+ <staff>2</staff>
221
+ </note>
222
+ <note default-x="12.5" default-y="-165" dynamics="100">
223
+ <chord/>
224
+ <pitch>
225
+ <step>A</step>
226
+ <octave>3</octave>
227
+ </pitch>
228
+ <duration>4</duration>
229
+ <voice>5</voice>
230
+ <type>whole</type>
231
+ <staff>2</staff>
232
+ </note>
233
+ <note default-x="12.5" default-y="-145" dynamics="100">
234
+ <chord/>
235
+ <pitch>
236
+ <step>E</step>
237
+ <octave>4</octave>
238
+ </pitch>
239
+ <duration>4</duration>
240
+ <voice>5</voice>
241
+ <type>whole</type>
242
+ <staff>2</staff>
243
+ </note>
244
+ <note default-x="12.5" default-y="-125" dynamics="100">
245
+ <chord/>
246
+ <pitch>
247
+ <step>B</step>
248
+ <octave>4</octave>
249
+ </pitch>
250
+ <duration>4</duration>
251
+ <voice>5</voice>
252
+ <type>whole</type>
253
+ <staff>2</staff>
254
+ </note>
255
+ <note default-x="12.5" default-y="-85" dynamics="100">
256
+ <chord/>
257
+ <pitch>
258
+ <step>C</step>
259
+ <octave>6</octave>
260
+ </pitch>
261
+ <duration>4</duration>
262
+ <voice>5</voice>
263
+ <type>whole</type>
264
+ <staff>2</staff>
265
+ </note>
266
+ </measure>
267
+ <measure number="3" width="150.05">
268
+ <note default-x="12.5" default-y="45" dynamics="100">
269
+ <pitch>
270
+ <step>A</step>
271
+ <octave>6</octave>
272
+ </pitch>
273
+ <duration>4</duration>
274
+ <voice>1</voice>
275
+ <type>whole</type>
276
+ <staff>1</staff>
277
+ </note>
278
+ <backup>
279
+ <duration>4</duration>
280
+ </backup>
281
+ <note default-x="12.5" default-y="-180" dynamics="100">
282
+ <pitch>
283
+ <step>E</step>
284
+ <octave>3</octave>
285
+ </pitch>
286
+ <duration>4</duration>
287
+ <voice>5</voice>
288
+ <type>whole</type>
289
+ <staff>2</staff>
290
+ </note>
291
+ <note default-x="12.5" default-y="-160" dynamics="100">
292
+ <chord/>
293
+ <pitch>
294
+ <step>B</step>
295
+ <octave>3</octave>
296
+ </pitch>
297
+ <duration>4</duration>
298
+ <voice>5</voice>
299
+ <type>whole</type>
300
+ <staff>2</staff>
301
+ </note>
302
+ <note default-x="12.5" default-y="-120" dynamics="100">
303
+ <chord/>
304
+ <pitch>
305
+ <step>C</step>
306
+ <octave>5</octave>
307
+ </pitch>
308
+ <duration>4</duration>
309
+ <voice>5</voice>
310
+ <type>whole</type>
311
+ <staff>2</staff>
312
+ </note>
313
+ <note default-x="12.5" default-y="-100" dynamics="100">
314
+ <chord/>
315
+ <pitch>
316
+ <step>G</step>
317
+ <octave>5</octave>
318
+ </pitch>
319
+ <duration>4</duration>
320
+ <voice>5</voice>
321
+ <type>whole</type>
322
+ <staff>2</staff>
323
+ </note>
324
+ <note default-x="12.5" default-y="-80" dynamics="100">
325
+ <chord/>
326
+ <pitch>
327
+ <step>D</step>
328
+ <octave>6</octave>
329
+ </pitch>
330
+ <duration>4</duration>
331
+ <voice>5</voice>
332
+ <type>whole</type>
333
+ <staff>2</staff>
334
+ </note>
335
+ </measure>
336
+ <measure number="4" width="150.05">
337
+ <note default-x="12.5" default-y="55" dynamics="100">
338
+ <pitch>
339
+ <step>C</step>
340
+ <octave>7</octave>
341
+ </pitch>
342
+ <duration>4</duration>
343
+ <voice>1</voice>
344
+ <type>whole</type>
345
+ <staff>1</staff>
346
+ </note>
347
+ <backup>
348
+ <duration>4</duration>
349
+ </backup>
350
+ <note default-x="12.5" default-y="-170" dynamics="100">
351
+ <pitch>
352
+ <step>G</step>
353
+ <octave>3</octave>
354
+ </pitch>
355
+ <duration>4</duration>
356
+ <voice>5</voice>
357
+ <type>whole</type>
358
+ <staff>2</staff>
359
+ </note>
360
+ <note default-x="12.5" default-y="-150" dynamics="100">
361
+ <chord/>
362
+ <pitch>
363
+ <step>D</step>
364
+ <octave>4</octave>
365
+ </pitch>
366
+ <duration>4</duration>
367
+ <voice>5</voice>
368
+ <type>whole</type>
369
+ <staff>2</staff>
370
+ </note>
371
+ <note default-x="12.5" default-y="-130" dynamics="100">
372
+ <chord/>
373
+ <pitch>
374
+ <step>A</step>
375
+ <octave>4</octave>
376
+ </pitch>
377
+ <duration>4</duration>
378
+ <voice>5</voice>
379
+ <type>whole</type>
380
+ <staff>2</staff>
381
+ </note>
382
+ <note default-x="12.5" default-y="-110" dynamics="100">
383
+ <chord/>
384
+ <pitch>
385
+ <step>E</step>
386
+ <octave>5</octave>
387
+ </pitch>
388
+ <duration>4</duration>
389
+ <voice>5</voice>
390
+ <type>whole</type>
391
+ <staff>2</staff>
392
+ </note>
393
+ <note default-x="12.5" default-y="-90" dynamics="100">
394
+ <chord/>
395
+ <pitch>
396
+ <step>B</step>
397
+ <octave>5</octave>
398
+ </pitch>
399
+ <duration>4</duration>
400
+ <voice>5</voice>
401
+ <type>whole</type>
402
+ <staff>2</staff>
403
+ </note>
404
+ </measure>
405
+ <measure number="5" width="150.05">
406
+ <note default-x="12.5" default-y="20" dynamics="100">
407
+ <pitch>
408
+ <step>C</step>
409
+ <octave>6</octave>
410
+ </pitch>
411
+ <duration>4</duration>
412
+ <voice>1</voice>
413
+ <type>whole</type>
414
+ <staff>1</staff>
415
+ </note>
416
+ <note default-x="12.5" default-y="40" dynamics="100">
417
+ <chord/>
418
+ <pitch>
419
+ <step>G</step>
420
+ <octave>6</octave>
421
+ </pitch>
422
+ <duration>4</duration>
423
+ <voice>1</voice>
424
+ <type>whole</type>
425
+ <staff>1</staff>
426
+ </note>
427
+ <note default-x="12.5" default-y="60" dynamics="100">
428
+ <chord/>
429
+ <pitch>
430
+ <step>D</step>
431
+ <octave>7</octave>
432
+ </pitch>
433
+ <duration>4</duration>
434
+ <voice>1</voice>
435
+ <type>whole</type>
436
+ <staff>1</staff>
437
+ </note>
438
+ <backup>
439
+ <duration>4</duration>
440
+ </backup>
441
+ <note default-x="12.5" default-y="-165" dynamics="100">
442
+ <pitch>
443
+ <step>A</step>
444
+ <octave>3</octave>
445
+ </pitch>
446
+ <duration>4</duration>
447
+ <voice>5</voice>
448
+ <type>whole</type>
449
+ <staff>2</staff>
450
+ </note>
451
+ <note default-x="12.5" default-y="-145" dynamics="100">
452
+ <chord/>
453
+ <pitch>
454
+ <step>E</step>
455
+ <octave>4</octave>
456
+ </pitch>
457
+ <duration>4</duration>
458
+ <voice>5</voice>
459
+ <type>whole</type>
460
+ <staff>2</staff>
461
+ </note>
462
+ <note default-x="12.5" default-y="-125" dynamics="100">
463
+ <chord/>
464
+ <pitch>
465
+ <step>B</step>
466
+ <octave>4</octave>
467
+ </pitch>
468
+ <duration>4</duration>
469
+ <voice>5</voice>
470
+ <type>whole</type>
471
+ <staff>2</staff>
472
+ </note>
473
+ </measure>
474
+ <measure number="6" width="159.25">
475
+ <note default-x="12.5" default-y="45" dynamics="100">
476
+ <pitch>
477
+ <step>A</step>
478
+ <octave>6</octave>
479
+ </pitch>
480
+ <duration>4</duration>
481
+ <voice>1</voice>
482
+ <type>whole</type>
483
+ <staff>1</staff>
484
+ </note>
485
+ <note default-x="12.5" default-y="65" dynamics="100">
486
+ <chord/>
487
+ <pitch>
488
+ <step>E</step>
489
+ <octave>7</octave>
490
+ </pitch>
491
+ <duration>4</duration>
492
+ <voice>1</voice>
493
+ <type>whole</type>
494
+ <staff>1</staff>
495
+ </note>
496
+ <backup>
497
+ <duration>4</duration>
498
+ </backup>
499
+ <note default-x="12.5" default-y="-160" dynamics="100">
500
+ <pitch>
501
+ <step>B</step>
502
+ <octave>3</octave>
503
+ </pitch>
504
+ <duration>4</duration>
505
+ <voice>5</voice>
506
+ <type>whole</type>
507
+ <staff>2</staff>
508
+ </note>
509
+ <note default-x="12.5" default-y="-120" dynamics="100">
510
+ <chord/>
511
+ <pitch>
512
+ <step>C</step>
513
+ <octave>5</octave>
514
+ </pitch>
515
+ <duration>4</duration>
516
+ <voice>5</voice>
517
+ <type>whole</type>
518
+ <staff>2</staff>
519
+ </note>
520
+ <note default-x="12.5" default-y="-100" dynamics="100">
521
+ <chord/>
522
+ <pitch>
523
+ <step>G</step>
524
+ <octave>5</octave>
525
+ </pitch>
526
+ <duration>4</duration>
527
+ <voice>5</voice>
528
+ <type>whole</type>
529
+ <staff>2</staff>
530
+ </note>
531
+ <note default-x="12.5" default-y="-80" dynamics="100">
532
+ <chord/>
533
+ <pitch>
534
+ <step>D</step>
535
+ <octave>6</octave>
536
+ </pitch>
537
+ <duration>4</duration>
538
+ <voice>5</voice>
539
+ <type>whole</type>
540
+ <staff>2</staff>
541
+ </note>
542
+ <barline location="right">
543
+ <bar-style>light-heavy</bar-style>
544
+ </barline>
545
+ </measure>
546
+ </part>
547
+ </score-partwise>
legacy/hexachords.musicxml ADDED
@@ -0,0 +1,269 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ <?xml version="1.0" ?>
2
+ <score-partwise version="3.1">
3
+ <part-list>
4
+ <score-part id="P1">
5
+ <part-name>Piano</part-name>
6
+ </score-part>
7
+ </part-list>
8
+ <part id="P1">
9
+ <measure number="1">
10
+ <attributes>
11
+ <divisions>4</divisions>
12
+ <staves>2</staves>
13
+ <time>
14
+ <beats>4</beats>
15
+ <beat-type>4</beat-type>
16
+ </time>
17
+ <clef>
18
+ <number>1</number>
19
+ <sign>G</sign>
20
+ <line>2</line>
21
+ </clef>
22
+ <clef>
23
+ <number>2</number>
24
+ <sign>F</sign>
25
+ <line>4</line>
26
+ </clef>
27
+ </attributes>
28
+ <note>
29
+ <pitch>
30
+ <step>C</step>
31
+ <octave>4</octave>
32
+ </pitch>
33
+ <duration>4</duration>
34
+ <voice>1</voice>
35
+ <type>whole</type>
36
+ <staff>1</staff>
37
+ </note>
38
+ <note>
39
+ <chord/>
40
+ <pitch>
41
+ <step>E</step>
42
+ <octave>4</octave>
43
+ </pitch>
44
+ <duration>4</duration>
45
+ <voice>2</voice>
46
+ <type>whole</type>
47
+ <staff>1</staff>
48
+ </note>
49
+ <note>
50
+ <chord/>
51
+ <pitch>
52
+ <step>G</step>
53
+ <octave>4</octave>
54
+ </pitch>
55
+ <duration>4</duration>
56
+ <voice>3</voice>
57
+ <type>whole</type>
58
+ <staff>1</staff>
59
+ </note>
60
+ <note>
61
+ <pitch>
62
+ <step>B</step>
63
+ <octave>4</octave>
64
+ </pitch>
65
+ <duration>4</duration>
66
+ <voice>4</voice>
67
+ <type>whole</type>
68
+ <staff>2</staff>
69
+ </note>
70
+ <note>
71
+ <chord/>
72
+ <pitch>
73
+ <step>D</step>
74
+ <octave>5</octave>
75
+ </pitch>
76
+ <duration>4</duration>
77
+ <voice>5</voice>
78
+ <type>whole</type>
79
+ <staff>2</staff>
80
+ </note>
81
+ <note>
82
+ <chord/>
83
+ <pitch>
84
+ <step>F</step>
85
+ <octave>5</octave>
86
+ </pitch>
87
+ <duration>4</duration>
88
+ <voice>6</voice>
89
+ <type>whole</type>
90
+ <staff>2</staff>
91
+ </note>
92
+ </measure>
93
+ <measure number="2">
94
+ <note>
95
+ <pitch>
96
+ <step>C</step>
97
+ <octave>4</octave>
98
+ </pitch>
99
+ <duration>4</duration>
100
+ <voice>1</voice>
101
+ <type>whole</type>
102
+ <staff>1</staff>
103
+ <tie type="start"/>
104
+ <notations>
105
+ <tied type="start"/>
106
+ </notations>
107
+ </note>
108
+ <note>
109
+ <chord/>
110
+ <pitch>
111
+ <step>E</step>
112
+ <octave>4</octave>
113
+ </pitch>
114
+ <duration>4</duration>
115
+ <voice>2</voice>
116
+ <type>whole</type>
117
+ <staff>1</staff>
118
+ </note>
119
+ <note>
120
+ <chord/>
121
+ <pitch>
122
+ <step>G</step>
123
+ <octave>4</octave>
124
+ </pitch>
125
+ <duration>4</duration>
126
+ <voice>3</voice>
127
+ <type>whole</type>
128
+ <staff>1</staff>
129
+ </note>
130
+ <note>
131
+ <pitch>
132
+ <step>A</step>
133
+ <octave>4</octave>
134
+ </pitch>
135
+ <duration>4</duration>
136
+ <voice>4</voice>
137
+ <type>whole</type>
138
+ <staff>2</staff>
139
+ </note>
140
+ <note>
141
+ <chord/>
142
+ <pitch>
143
+ <step>D</step>
144
+ <octave>5</octave>
145
+ </pitch>
146
+ <duration>4</duration>
147
+ <voice>5</voice>
148
+ <type>whole</type>
149
+ <staff>2</staff>
150
+ </note>
151
+ <note>
152
+ <chord/>
153
+ <pitch>
154
+ <step>F</step>
155
+ <octave>5</octave>
156
+ </pitch>
157
+ <duration>4</duration>
158
+ <voice>6</voice>
159
+ <type>whole</type>
160
+ <staff>2</staff>
161
+ </note>
162
+ </measure>
163
+ <measure number="3">
164
+ <note>
165
+ <pitch>
166
+ <step>C</step>
167
+ <octave>4</octave>
168
+ </pitch>
169
+ <duration>4</duration>
170
+ <voice>1</voice>
171
+ <type>whole</type>
172
+ <staff>1</staff>
173
+ <tie type="start"/>
174
+ <notations>
175
+ <tied type="start"/>
176
+ </notations>
177
+ </note>
178
+ <note>
179
+ <chord/>
180
+ <pitch>
181
+ <step>E</step>
182
+ <alter>-1</alter>
183
+ <octave>4</octave>
184
+ </pitch>
185
+ <duration>4</duration>
186
+ <voice>2</voice>
187
+ <type>whole</type>
188
+ <staff>1</staff>
189
+ </note>
190
+ <note>
191
+ <chord/>
192
+ <pitch>
193
+ <step>G</step>
194
+ <octave>4</octave>
195
+ </pitch>
196
+ <duration>4</duration>
197
+ <voice>3</voice>
198
+ <type>whole</type>
199
+ <staff>1</staff>
200
+ </note>
201
+ <note>
202
+ <pitch>
203
+ <step>A</step>
204
+ <octave>4</octave>
205
+ </pitch>
206
+ <duration>4</duration>
207
+ <voice>4</voice>
208
+ <type>whole</type>
209
+ <staff>2</staff>
210
+ <tie type="start"/>
211
+ <notations>
212
+ <tied type="start"/>
213
+ </notations>
214
+ </note>
215
+ <note>
216
+ <chord/>
217
+ <pitch>
218
+ <step>D</step>
219
+ <octave>5</octave>
220
+ </pitch>
221
+ <duration>4</duration>
222
+ <voice>5</voice>
223
+ <type>whole</type>
224
+ <staff>2</staff>
225
+ </note>
226
+ <note>
227
+ <chord/>
228
+ <pitch>
229
+ <step>F</step>
230
+ <octave>5</octave>
231
+ </pitch>
232
+ <duration>4</duration>
233
+ <voice>6</voice>
234
+ <type>whole</type>
235
+ <staff>2</staff>
236
+ </note>
237
+ </measure>
238
+ <measure number="4">
239
+ <note>
240
+ <pitch>
241
+ <step>C</step>
242
+ <octave>4</octave>
243
+ </pitch>
244
+ <duration>4</duration>
245
+ <voice>1</voice>
246
+ <type>whole</type>
247
+ <staff>1</staff>
248
+ <tie type="stop"/>
249
+ <notations>
250
+ <tied type="stop"/>
251
+ </notations>
252
+ </note>
253
+ <note>
254
+ <pitch>
255
+ <step>A</step>
256
+ <octave>4</octave>
257
+ </pitch>
258
+ <duration>4</duration>
259
+ <voice>4</voice>
260
+ <type>whole</type>
261
+ <staff>2</staff>
262
+ <tie type="stop"/>
263
+ <notations>
264
+ <tied type="stop"/>
265
+ </notations>
266
+ </note>
267
+ </measure>
268
+ </part>
269
+ </score-partwise>
legacy/movement0.musicxml ADDED
@@ -0,0 +1,418 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ <?xml version="1.0" encoding="UTF-8"?>
2
+ <!DOCTYPE score-partwise PUBLIC "-//Recordare//DTD MusicXML 4.0 Partwise//EN" "http://www.musicxml.org/dtds/partwise.dtd">
3
+ <score-partwise version="4.0">
4
+ <identification>
5
+ <encoding>
6
+ <software>MuseScore 4.5.1</software>
7
+ <encoding-date>2025-04-05</encoding-date>
8
+ <supports element="accidental" type="yes"/>
9
+ <supports element="beam" type="yes"/>
10
+ <supports element="print" attribute="new-page" type="yes" value="yes"/>
11
+ <supports element="print" attribute="new-system" type="yes" value="yes"/>
12
+ <supports element="stem" type="yes"/>
13
+ </encoding>
14
+ </identification>
15
+ <defaults>
16
+ <scaling>
17
+ <millimeters>6.99911</millimeters>
18
+ <tenths>40</tenths>
19
+ </scaling>
20
+ <page-layout>
21
+ <page-height>1696.94</page-height>
22
+ <page-width>1200.48</page-width>
23
+ <page-margins type="even">
24
+ <left-margin>85.7252</left-margin>
25
+ <right-margin>85.7252</right-margin>
26
+ <top-margin>85.7252</top-margin>
27
+ <bottom-margin>85.7252</bottom-margin>
28
+ </page-margins>
29
+ <page-margins type="odd">
30
+ <left-margin>85.7252</left-margin>
31
+ <right-margin>85.7252</right-margin>
32
+ <top-margin>85.7252</top-margin>
33
+ <bottom-margin>85.7252</bottom-margin>
34
+ </page-margins>
35
+ </page-layout>
36
+ <appearance>
37
+ <line-width type="light barline">1.8</line-width>
38
+ <line-width type="heavy barline">5.5</line-width>
39
+ <line-width type="beam">5</line-width>
40
+ <line-width type="bracket">4.5</line-width>
41
+ <line-width type="dashes">1</line-width>
42
+ <line-width type="enclosure">1</line-width>
43
+ <line-width type="ending">1.1</line-width>
44
+ <line-width type="extend">1</line-width>
45
+ <line-width type="leger">1.6</line-width>
46
+ <line-width type="pedal">1.1</line-width>
47
+ <line-width type="octave shift">1.1</line-width>
48
+ <line-width type="slur middle">2.1</line-width>
49
+ <line-width type="slur tip">0.5</line-width>
50
+ <line-width type="staff">1.1</line-width>
51
+ <line-width type="stem">1</line-width>
52
+ <line-width type="tie middle">2.1</line-width>
53
+ <line-width type="tie tip">0.5</line-width>
54
+ <line-width type="tuplet bracket">1</line-width>
55
+ <line-width type="wedge">1.2</line-width>
56
+ <note-size type="cue">70</note-size>
57
+ <note-size type="grace">70</note-size>
58
+ <note-size type="grace-cue">49</note-size>
59
+ </appearance>
60
+ <music-font font-family="Leland"/>
61
+ <word-font font-family="Edwin" font-size="10"/>
62
+ <lyric-font font-family="Edwin" font-size="10"/>
63
+ </defaults>
64
+ <part-list>
65
+ <score-part id="P1">
66
+ <part-name>Piano</part-name>
67
+ <part-abbreviation>Pno.</part-abbreviation>
68
+ <score-instrument id="P1-I1">
69
+ <instrument-name>Piano</instrument-name>
70
+ <instrument-sound>keyboard.piano</instrument-sound>
71
+ </score-instrument>
72
+ <midi-device id="P1-I1" port="1"></midi-device>
73
+ <midi-instrument id="P1-I1">
74
+ <midi-channel>1</midi-channel>
75
+ <midi-program>1</midi-program>
76
+ <volume>78.7402</volume>
77
+ <pan>0</pan>
78
+ </midi-instrument>
79
+ </score-part>
80
+ </part-list>
81
+ <part id="P1">
82
+ <measure number="1" width="364.98">
83
+ <print>
84
+ <system-layout>
85
+ <system-margins>
86
+ <left-margin>50</left-margin>
87
+ <right-margin>0</right-margin>
88
+ </system-margins>
89
+ <top-system-distance>70</top-system-distance>
90
+ </system-layout>
91
+ <staff-layout number="2">
92
+ <staff-distance>65</staff-distance>
93
+ </staff-layout>
94
+ </print>
95
+ <attributes>
96
+ <divisions>1</divisions>
97
+ <key>
98
+ <fifths>0</fifths>
99
+ </key>
100
+ <time>
101
+ <beats>4</beats>
102
+ <beat-type>4</beat-type>
103
+ </time>
104
+ <staves>2</staves>
105
+ <clef number="1">
106
+ <sign>G</sign>
107
+ <line>2</line>
108
+ </clef>
109
+ <clef number="2">
110
+ <sign>F</sign>
111
+ <line>4</line>
112
+ </clef>
113
+ </attributes>
114
+ <direction placement="above" system="only-top">
115
+ <direction-type>
116
+ <metronome parentheses="no" default-x="-37.68" relative-y="20">
117
+ <beat-unit>quarter</beat-unit>
118
+ <per-minute>120</per-minute>
119
+ </metronome>
120
+ </direction-type>
121
+ <staff>1</staff>
122
+ <sound tempo="120"/>
123
+ </direction>
124
+ <note default-x="82.01" default-y="-25" dynamics="100">
125
+ <pitch>
126
+ <step>A</step>
127
+ <octave>4</octave>
128
+ </pitch>
129
+ <duration>4</duration>
130
+ <voice>1</voice>
131
+ <type>whole</type>
132
+ <staff>1</staff>
133
+ </note>
134
+ <backup>
135
+ <duration>4</duration>
136
+ </backup>
137
+ <note default-x="82.01" default-y="-110" dynamics="100">
138
+ <pitch>
139
+ <step>G</step>
140
+ <octave>3</octave>
141
+ </pitch>
142
+ <duration>4</duration>
143
+ <tie type="start"/>
144
+ <voice>5</voice>
145
+ <type>whole</type>
146
+ <staff>2</staff>
147
+ <notations>
148
+ <tied type="start"/>
149
+ </notations>
150
+ </note>
151
+ <note default-x="82.01" default-y="-100" dynamics="100">
152
+ <chord/>
153
+ <pitch>
154
+ <step>B</step>
155
+ <octave>3</octave>
156
+ </pitch>
157
+ <duration>4</duration>
158
+ <tie type="start"/>
159
+ <voice>5</voice>
160
+ <type>whole</type>
161
+ <staff>2</staff>
162
+ <notations>
163
+ <tied type="start"/>
164
+ </notations>
165
+ </note>
166
+ <note default-x="82.01" default-y="-90" dynamics="100">
167
+ <chord/>
168
+ <pitch>
169
+ <step>D</step>
170
+ <octave>4</octave>
171
+ </pitch>
172
+ <duration>4</duration>
173
+ <tie type="start"/>
174
+ <voice>5</voice>
175
+ <type>whole</type>
176
+ <staff>2</staff>
177
+ <notations>
178
+ <tied type="start"/>
179
+ </notations>
180
+ </note>
181
+ <backup>
182
+ <duration>4</duration>
183
+ </backup>
184
+ <note default-x="82.01" default-y="-130" dynamics="100">
185
+ <pitch>
186
+ <step>C</step>
187
+ <octave>3</octave>
188
+ </pitch>
189
+ <duration>4</duration>
190
+ <tie type="start"/>
191
+ <voice>6</voice>
192
+ <type>whole</type>
193
+ <staff>2</staff>
194
+ <notations>
195
+ <tied type="start"/>
196
+ </notations>
197
+ </note>
198
+ <note default-x="82.01" default-y="-120" dynamics="100">
199
+ <chord/>
200
+ <pitch>
201
+ <step>E</step>
202
+ <octave>3</octave>
203
+ </pitch>
204
+ <duration>4</duration>
205
+ <tie type="start"/>
206
+ <voice>6</voice>
207
+ <type>whole</type>
208
+ <staff>2</staff>
209
+ <notations>
210
+ <tied type="start"/>
211
+ </notations>
212
+ </note>
213
+ </measure>
214
+ <measure number="2" width="295.47">
215
+ <note default-x="140.34" default-y="0">
216
+ <rest measure="yes"/>
217
+ <duration>4</duration>
218
+ <voice>1</voice>
219
+ <staff>1</staff>
220
+ </note>
221
+ <backup>
222
+ <duration>4</duration>
223
+ </backup>
224
+ <note default-x="12.5" default-y="-60" dynamics="100">
225
+ <pitch>
226
+ <step>A</step>
227
+ <octave>3</octave>
228
+ </pitch>
229
+ <duration>4</duration>
230
+ <tie type="start"/>
231
+ <voice>2</voice>
232
+ <type>whole</type>
233
+ <staff>1</staff>
234
+ <notations>
235
+ <tied type="start"/>
236
+ </notations>
237
+ </note>
238
+ <backup>
239
+ <duration>4</duration>
240
+ </backup>
241
+ <note default-x="12.5" default-y="-110" dynamics="100">
242
+ <pitch>
243
+ <step>G</step>
244
+ <octave>3</octave>
245
+ </pitch>
246
+ <duration>4</duration>
247
+ <tie type="stop"/>
248
+ <voice>5</voice>
249
+ <type>whole</type>
250
+ <staff>2</staff>
251
+ <notations>
252
+ <tied type="stop"/>
253
+ </notations>
254
+ </note>
255
+ <note default-x="12.5" default-y="-100" dynamics="100">
256
+ <chord/>
257
+ <pitch>
258
+ <step>B</step>
259
+ <octave>3</octave>
260
+ </pitch>
261
+ <duration>4</duration>
262
+ <tie type="stop"/>
263
+ <voice>5</voice>
264
+ <type>whole</type>
265
+ <staff>2</staff>
266
+ <notations>
267
+ <tied type="stop"/>
268
+ </notations>
269
+ </note>
270
+ <note default-x="12.5" default-y="-90" dynamics="100">
271
+ <chord/>
272
+ <pitch>
273
+ <step>D</step>
274
+ <octave>4</octave>
275
+ </pitch>
276
+ <duration>4</duration>
277
+ <tie type="stop"/>
278
+ <voice>5</voice>
279
+ <type>whole</type>
280
+ <staff>2</staff>
281
+ <notations>
282
+ <tied type="stop"/>
283
+ </notations>
284
+ </note>
285
+ <backup>
286
+ <duration>4</duration>
287
+ </backup>
288
+ <note default-x="12.5" default-y="-130" dynamics="100">
289
+ <pitch>
290
+ <step>C</step>
291
+ <octave>3</octave>
292
+ </pitch>
293
+ <duration>4</duration>
294
+ <tie type="stop"/>
295
+ <tie type="start"/>
296
+ <voice>6</voice>
297
+ <type>whole</type>
298
+ <staff>2</staff>
299
+ <notations>
300
+ <tied type="stop"/>
301
+ <tied type="start"/>
302
+ </notations>
303
+ </note>
304
+ <note default-x="12.5" default-y="-120" dynamics="100">
305
+ <chord/>
306
+ <pitch>
307
+ <step>E</step>
308
+ <octave>3</octave>
309
+ </pitch>
310
+ <duration>4</duration>
311
+ <tie type="stop"/>
312
+ <tie type="start"/>
313
+ <voice>6</voice>
314
+ <type>whole</type>
315
+ <staff>2</staff>
316
+ <notations>
317
+ <tied type="stop"/>
318
+ <tied type="start"/>
319
+ </notations>
320
+ </note>
321
+ </measure>
322
+ <measure number="3" width="318.59">
323
+ <note default-x="26.42" default-y="-55" dynamics="100">
324
+ <pitch>
325
+ <step>B</step>
326
+ <octave>3</octave>
327
+ </pitch>
328
+ <duration>4</duration>
329
+ <voice>1</voice>
330
+ <type>whole</type>
331
+ <staff>1</staff>
332
+ </note>
333
+ <backup>
334
+ <duration>4</duration>
335
+ </backup>
336
+ <note default-x="40.34" default-y="-60" dynamics="100">
337
+ <pitch>
338
+ <step>A</step>
339
+ <octave>3</octave>
340
+ </pitch>
341
+ <duration>4</duration>
342
+ <tie type="stop"/>
343
+ <voice>2</voice>
344
+ <type>whole</type>
345
+ <staff>1</staff>
346
+ <notations>
347
+ <tied type="stop"/>
348
+ </notations>
349
+ </note>
350
+ <backup>
351
+ <duration>4</duration>
352
+ </backup>
353
+ <note default-x="147.3" default-y="-85">
354
+ <rest measure="yes"/>
355
+ <duration>4</duration>
356
+ <voice>5</voice>
357
+ <staff>2</staff>
358
+ </note>
359
+ <backup>
360
+ <duration>4</duration>
361
+ </backup>
362
+ <note default-x="26.42" default-y="-130" dynamics="100">
363
+ <pitch>
364
+ <step>C</step>
365
+ <octave>3</octave>
366
+ </pitch>
367
+ <duration>4</duration>
368
+ <tie type="stop"/>
369
+ <voice>6</voice>
370
+ <type>whole</type>
371
+ <staff>2</staff>
372
+ <notations>
373
+ <tied type="stop"/>
374
+ </notations>
375
+ </note>
376
+ <note default-x="12.5" default-y="-125" dynamics="100">
377
+ <chord/>
378
+ <pitch>
379
+ <step>D</step>
380
+ <octave>3</octave>
381
+ </pitch>
382
+ <duration>4</duration>
383
+ <voice>6</voice>
384
+ <type>whole</type>
385
+ <staff>2</staff>
386
+ </note>
387
+ <note default-x="26.42" default-y="-120" dynamics="100">
388
+ <chord/>
389
+ <pitch>
390
+ <step>E</step>
391
+ <octave>3</octave>
392
+ </pitch>
393
+ <duration>4</duration>
394
+ <tie type="stop"/>
395
+ <voice>6</voice>
396
+ <type>whole</type>
397
+ <staff>2</staff>
398
+ <notations>
399
+ <tied type="stop"/>
400
+ </notations>
401
+ </note>
402
+ <note default-x="26.42" default-y="-110" dynamics="100">
403
+ <chord/>
404
+ <pitch>
405
+ <step>G</step>
406
+ <octave>3</octave>
407
+ </pitch>
408
+ <duration>4</duration>
409
+ <voice>6</voice>
410
+ <type>whole</type>
411
+ <staff>2</staff>
412
+ </note>
413
+ <barline location="right">
414
+ <bar-style>light-heavy</bar-style>
415
+ </barline>
416
+ </measure>
417
+ </part>
418
+ </score-partwise>
legacy/movement5-1.svg ADDED
legacy/my_score.musicxml ADDED
@@ -0,0 +1,90 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ <?xml version="1.0" encoding="utf-8"?>
2
+ <!DOCTYPE score-partwise PUBLIC "-//Recordare//DTD MusicXML 4.0 Partwise//EN" "http://www.musicxml.org/dtds/partwise.dtd">
3
+ <score-partwise version="4.0">
4
+ <movement-title>Music21 Fragment</movement-title>
5
+ <identification>
6
+ <creator type="composer">Music21</creator>
7
+ <encoding>
8
+ <encoding-date>2025-04-03</encoding-date>
9
+ <software>music21 v.9.5.0</software>
10
+ </encoding>
11
+ </identification>
12
+ <defaults>
13
+ <scaling>
14
+ <millimeters>7</millimeters>
15
+ <tenths>40</tenths>
16
+ </scaling>
17
+ </defaults>
18
+ <part-list>
19
+ <score-part id="Pb91c0eea18eddbb8783b0f5f4693f0f3">
20
+ <part-name />
21
+ </score-part>
22
+ </part-list>
23
+ <!--=========================== Part 1 ===========================-->
24
+ <part id="Pb91c0eea18eddbb8783b0f5f4693f0f3">
25
+ <!--========================= Measure 1 ==========================-->
26
+ <measure implicit="no" number="1">
27
+ <attributes>
28
+ <divisions>10080</divisions>
29
+ <time>
30
+ <beats>4</beats>
31
+ <beat-type>4</beat-type>
32
+ </time>
33
+ <clef>
34
+ <sign>G</sign>
35
+ <line>2</line>
36
+ </clef>
37
+ </attributes>
38
+ <note>
39
+ <pitch>
40
+ <step>C</step>
41
+ <octave>4</octave>
42
+ </pitch>
43
+ <duration>20160</duration>
44
+ <tie type="start" />
45
+ <voice>0</voice>
46
+ <type>half</type>
47
+ <notations>
48
+ <tied type="start" />
49
+ </notations>
50
+ </note>
51
+ <note>
52
+ <pitch>
53
+ <step>C</step>
54
+ <octave>4</octave>
55
+ </pitch>
56
+ <duration>20160</duration>
57
+ <tie type="stop" />
58
+ <voice>0</voice>
59
+ <type>half</type>
60
+ <notations>
61
+ <tied type="stop" />
62
+ </notations>
63
+ </note>
64
+ <backup>
65
+ <duration>40320</duration>
66
+ </backup>
67
+ <note>
68
+ <pitch>
69
+ <step>E</step>
70
+ <octave>4</octave>
71
+ </pitch>
72
+ <duration>20160</duration>
73
+ <voice>1</voice>
74
+ <type>half</type>
75
+ </note>
76
+ <note>
77
+ <pitch>
78
+ <step>G</step>
79
+ <octave>4</octave>
80
+ </pitch>
81
+ <duration>20160</duration>
82
+ <voice>1</voice>
83
+ <type>half</type>
84
+ </note>
85
+ <barline location="right">
86
+ <bar-style>light-heavy</bar-style>
87
+ </barline>
88
+ </measure>
89
+ </part>
90
+ </score-partwise>
legacy/output.musicxml ADDED
@@ -0,0 +1,91 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ <?xml version="1.0" encoding="utf-8"?>
2
+ <!DOCTYPE score-partwise PUBLIC "-//Recordare//DTD MusicXML 4.0 Partwise//EN" "http://www.musicxml.org/dtds/partwise.dtd">
3
+ <score-partwise version="4.0">
4
+ <movement-title>Music21 Fragment</movement-title>
5
+ <identification>
6
+ <creator type="composer">Music21</creator>
7
+ <encoding>
8
+ <encoding-date>2025-04-04</encoding-date>
9
+ <software>music21 v.9.5.0</software>
10
+ </encoding>
11
+ </identification>
12
+ <defaults>
13
+ <scaling>
14
+ <millimeters>7</millimeters>
15
+ <tenths>40</tenths>
16
+ </scaling>
17
+ </defaults>
18
+ <part-list>
19
+ <score-part id="P9109d888699184df7b4e0f9f0aa1c255">
20
+ <part-name />
21
+ </score-part>
22
+ </part-list>
23
+ <!--=========================== Part 1 ===========================-->
24
+ <part id="P9109d888699184df7b4e0f9f0aa1c255">
25
+ <!--========================= Measure 1 ==========================-->
26
+ <measure implicit="no" number="1">
27
+ <attributes>
28
+ <divisions>10080</divisions>
29
+ <time>
30
+ <beats>4</beats>
31
+ <beat-type>4</beat-type>
32
+ </time>
33
+ <clef>
34
+ <sign>G</sign>
35
+ <line>2</line>
36
+ </clef>
37
+ </attributes>
38
+ <note dynamics="71.11">
39
+ <pitch>
40
+ <step>C</step>
41
+ <octave>4</octave>
42
+ </pitch>
43
+ <duration>40320</duration>
44
+ <voice>1</voice>
45
+ <type>whole</type>
46
+ </note>
47
+ <backup>
48
+ <duration>40320</duration>
49
+ </backup>
50
+ <note dynamics="71.11">
51
+ <pitch>
52
+ <step>E</step>
53
+ <octave>4</octave>
54
+ </pitch>
55
+ <duration>40320</duration>
56
+ <tie type="start" />
57
+ <voice>2</voice>
58
+ <type>whole</type>
59
+ <notations>
60
+ <tied type="start" />
61
+ </notations>
62
+ </note>
63
+ </measure>
64
+ <!--========================= Measure 2 ==========================-->
65
+ <measure implicit="no" number="2">
66
+ <note dynamics="71.11">
67
+ <pitch>
68
+ <step>D</step>
69
+ <octave>4</octave>
70
+ </pitch>
71
+ <duration>40320</duration>
72
+ <type>whole</type>
73
+ </note>
74
+ <note dynamics="71.11">
75
+ <pitch>
76
+ <step>E</step>
77
+ <octave>4</octave>
78
+ </pitch>
79
+ <duration>40320</duration>
80
+ <tie type="stop" />
81
+ <type>whole</type>
82
+ <notations>
83
+ <tied type="stop" />
84
+ </notations>
85
+ </note>
86
+ <barline location="right">
87
+ <bar-style>light-heavy</bar-style>
88
+ </barline>
89
+ </measure>
90
+ </part>
91
+ </score-partwise>
legacy/output.svg ADDED
legacy/output2.svg ADDED
legacy/simple_movement.musicxml ADDED
@@ -0,0 +1,273 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ <?xml version="1.0" encoding="UTF-8"?>
2
+ <!DOCTYPE score-partwise PUBLIC "-//Recordare//DTD MusicXML 4.0 Partwise//EN" "http://www.musicxml.org/dtds/partwise.dtd">
3
+ <score-partwise version="4.0">
4
+ <identification>
5
+ <encoding>
6
+ <software>MuseScore 4.5.1</software>
7
+ <encoding-date>2025-04-05</encoding-date>
8
+ <supports element="accidental" type="yes"/>
9
+ <supports element="beam" type="yes"/>
10
+ <supports element="print" attribute="new-page" type="yes" value="yes"/>
11
+ <supports element="print" attribute="new-system" type="yes" value="yes"/>
12
+ <supports element="stem" type="yes"/>
13
+ </encoding>
14
+ </identification>
15
+ <defaults>
16
+ <scaling>
17
+ <millimeters>6.99911</millimeters>
18
+ <tenths>40</tenths>
19
+ </scaling>
20
+ <page-layout>
21
+ <page-height>1696.94</page-height>
22
+ <page-width>1200.48</page-width>
23
+ <page-margins type="even">
24
+ <left-margin>85.7252</left-margin>
25
+ <right-margin>85.7252</right-margin>
26
+ <top-margin>85.7252</top-margin>
27
+ <bottom-margin>85.7252</bottom-margin>
28
+ </page-margins>
29
+ <page-margins type="odd">
30
+ <left-margin>85.7252</left-margin>
31
+ <right-margin>85.7252</right-margin>
32
+ <top-margin>85.7252</top-margin>
33
+ <bottom-margin>85.7252</bottom-margin>
34
+ </page-margins>
35
+ </page-layout>
36
+ <appearance>
37
+ <line-width type="light barline">1.8</line-width>
38
+ <line-width type="heavy barline">5.5</line-width>
39
+ <line-width type="beam">5</line-width>
40
+ <line-width type="bracket">4.5</line-width>
41
+ <line-width type="dashes">1</line-width>
42
+ <line-width type="enclosure">1</line-width>
43
+ <line-width type="ending">1.1</line-width>
44
+ <line-width type="extend">1</line-width>
45
+ <line-width type="leger">1.6</line-width>
46
+ <line-width type="pedal">1.1</line-width>
47
+ <line-width type="octave shift">1.1</line-width>
48
+ <line-width type="slur middle">2.1</line-width>
49
+ <line-width type="slur tip">0.5</line-width>
50
+ <line-width type="staff">1.1</line-width>
51
+ <line-width type="stem">1</line-width>
52
+ <line-width type="tie middle">2.1</line-width>
53
+ <line-width type="tie tip">0.5</line-width>
54
+ <line-width type="tuplet bracket">1</line-width>
55
+ <line-width type="wedge">1.2</line-width>
56
+ <note-size type="cue">70</note-size>
57
+ <note-size type="grace">70</note-size>
58
+ <note-size type="grace-cue">49</note-size>
59
+ </appearance>
60
+ <music-font font-family="Leland"/>
61
+ <word-font font-family="Edwin" font-size="10"/>
62
+ <lyric-font font-family="Edwin" font-size="10"/>
63
+ </defaults>
64
+ <part-list>
65
+ <score-part id="P1">
66
+ <part-name>Piano</part-name>
67
+ <part-abbreviation>Pno.</part-abbreviation>
68
+ <score-instrument id="P1-I1">
69
+ <instrument-name>Piano</instrument-name>
70
+ <instrument-sound>keyboard.piano</instrument-sound>
71
+ </score-instrument>
72
+ <midi-device id="P1-I1" port="1"></midi-device>
73
+ <midi-instrument id="P1-I1">
74
+ <midi-channel>1</midi-channel>
75
+ <midi-program>1</midi-program>
76
+ <volume>78.7402</volume>
77
+ <pan>0</pan>
78
+ </midi-instrument>
79
+ </score-part>
80
+ </part-list>
81
+ <part id="P1">
82
+ <measure number="1" width="426.59">
83
+ <print>
84
+ <system-layout>
85
+ <system-margins>
86
+ <left-margin>50</left-margin>
87
+ <right-margin>0</right-margin>
88
+ </system-margins>
89
+ <top-system-distance>70</top-system-distance>
90
+ </system-layout>
91
+ <staff-layout number="2">
92
+ <staff-distance>65</staff-distance>
93
+ </staff-layout>
94
+ </print>
95
+ <attributes>
96
+ <divisions>1</divisions>
97
+ <key>
98
+ <fifths>0</fifths>
99
+ </key>
100
+ <time>
101
+ <beats>4</beats>
102
+ <beat-type>4</beat-type>
103
+ </time>
104
+ <staves>2</staves>
105
+ <clef number="1">
106
+ <sign>F</sign>
107
+ <line>4</line>
108
+ </clef>
109
+ <clef number="2">
110
+ <sign>F</sign>
111
+ <line>4</line>
112
+ </clef>
113
+ </attributes>
114
+ <direction placement="above" system="only-top">
115
+ <direction-type>
116
+ <metronome parentheses="no" default-x="-37.68" default-y="15.78" relative-y="20">
117
+ <beat-unit>quarter</beat-unit>
118
+ <per-minute>120</per-minute>
119
+ </metronome>
120
+ </direction-type>
121
+ <staff>1</staff>
122
+ <sound tempo="120"/>
123
+ </direction>
124
+ <note default-x="82.01" default-y="15" dynamics="100">
125
+ <pitch>
126
+ <step>D</step>
127
+ <octave>4</octave>
128
+ </pitch>
129
+ <duration>4</duration>
130
+ <tie type="start"/>
131
+ <voice>1</voice>
132
+ <type>whole</type>
133
+ <staff>1</staff>
134
+ <notations>
135
+ <tied type="start"/>
136
+ </notations>
137
+ </note>
138
+ <backup>
139
+ <duration>4</duration>
140
+ </backup>
141
+ <note default-x="82.98" default-y="-30">
142
+ <rest/>
143
+ <duration>2</duration>
144
+ <voice>2</voice>
145
+ <type>half</type>
146
+ <staff>1</staff>
147
+ </note>
148
+ <note default-x="253.88" default-y="0" dynamics="100">
149
+ <pitch>
150
+ <step>A</step>
151
+ <octave>3</octave>
152
+ </pitch>
153
+ <duration>2</duration>
154
+ <tie type="start"/>
155
+ <voice>2</voice>
156
+ <type>half</type>
157
+ <stem>down</stem>
158
+ <staff>1</staff>
159
+ <notations>
160
+ <tied type="start"/>
161
+ </notations>
162
+ </note>
163
+ <backup>
164
+ <duration>4</duration>
165
+ </backup>
166
+ <note default-x="82.98" default-y="-100" dynamics="100">
167
+ <pitch>
168
+ <step>B</step>
169
+ <octave>3</octave>
170
+ </pitch>
171
+ <duration>2</duration>
172
+ <voice>5</voice>
173
+ <type>half</type>
174
+ <stem>up</stem>
175
+ <staff>2</staff>
176
+ </note>
177
+ <note default-x="253.88" default-y="-115">
178
+ <rest/>
179
+ <duration>2</duration>
180
+ <voice>5</voice>
181
+ <type>half</type>
182
+ <staff>2</staff>
183
+ </note>
184
+ <backup>
185
+ <duration>4</duration>
186
+ </backup>
187
+ <note default-x="82.01" default-y="-130" dynamics="100">
188
+ <pitch>
189
+ <step>C</step>
190
+ <octave>3</octave>
191
+ </pitch>
192
+ <duration>4</duration>
193
+ <voice>6</voice>
194
+ <type>whole</type>
195
+ <staff>2</staff>
196
+ </note>
197
+ </measure>
198
+ <measure number="2" width="271.62">
199
+ <note default-x="12.5" default-y="15" dynamics="100">
200
+ <pitch>
201
+ <step>D</step>
202
+ <octave>4</octave>
203
+ </pitch>
204
+ <duration>4</duration>
205
+ <tie type="stop"/>
206
+ <voice>1</voice>
207
+ <type>whole</type>
208
+ <staff>1</staff>
209
+ <notations>
210
+ <tied type="stop"/>
211
+ </notations>
212
+ </note>
213
+ <backup>
214
+ <duration>4</duration>
215
+ </backup>
216
+ <note default-x="12.5" default-y="0" dynamics="100">
217
+ <pitch>
218
+ <step>A</step>
219
+ <octave>3</octave>
220
+ </pitch>
221
+ <duration>4</duration>
222
+ <tie type="stop"/>
223
+ <voice>2</voice>
224
+ <type>whole</type>
225
+ <staff>1</staff>
226
+ <notations>
227
+ <tied type="stop"/>
228
+ </notations>
229
+ </note>
230
+ <backup>
231
+ <duration>4</duration>
232
+ </backup>
233
+ <note default-x="12.5" default-y="-120" dynamics="100">
234
+ <pitch>
235
+ <step>E</step>
236
+ <octave>3</octave>
237
+ </pitch>
238
+ <duration>4</duration>
239
+ <voice>5</voice>
240
+ <type>whole</type>
241
+ <staff>2</staff>
242
+ </note>
243
+ </measure>
244
+ <measure number="3" width="280.82">
245
+ <note default-x="12.5" default-y="5" dynamics="100">
246
+ <pitch>
247
+ <step>B</step>
248
+ <octave>3</octave>
249
+ </pitch>
250
+ <duration>4</duration>
251
+ <voice>1</voice>
252
+ <type>whole</type>
253
+ <staff>1</staff>
254
+ </note>
255
+ <backup>
256
+ <duration>4</duration>
257
+ </backup>
258
+ <note default-x="12.5" default-y="-125" dynamics="100">
259
+ <pitch>
260
+ <step>D</step>
261
+ <octave>3</octave>
262
+ </pitch>
263
+ <duration>4</duration>
264
+ <voice>5</voice>
265
+ <type>whole</type>
266
+ <staff>2</staff>
267
+ </note>
268
+ <barline location="right">
269
+ <bar-style>light-heavy</bar-style>
270
+ </barline>
271
+ </measure>
272
+ </part>
273
+ </score-partwise>
legacy/simple_movement.svg ADDED
legacy/two_voice_example.musicxml ADDED
@@ -0,0 +1,277 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ <?xml version="1.0" encoding="utf-8"?>
2
+ <!DOCTYPE score-partwise PUBLIC "-//Recordare//DTD MusicXML 4.0 Partwise//EN" "http://www.musicxml.org/dtds/partwise.dtd">
3
+ <score-partwise version="4.0">
4
+ <movement-title>Music21 Fragment</movement-title>
5
+ <identification>
6
+ <creator type="composer">Music21</creator>
7
+ <encoding>
8
+ <encoding-date>2025-04-05</encoding-date>
9
+ <software>music21 v.9.5.0</software>
10
+ </encoding>
11
+ </identification>
12
+ <defaults>
13
+ <scaling>
14
+ <millimeters>7</millimeters>
15
+ <tenths>40</tenths>
16
+ </scaling>
17
+ </defaults>
18
+ <part-list>
19
+ <part-group number="1" type="start">
20
+ <group-symbol>brace</group-symbol>
21
+ <group-barline>yes</group-barline>
22
+ </part-group>
23
+ <score-part id="P79915ea1a06ccd5543a73ffb615ee69d">
24
+ <part-name />
25
+ </score-part>
26
+ <score-part id="Pe87589cea6e07790027d75cce9322b37">
27
+ <part-name />
28
+ </score-part>
29
+ <part-group number="1" type="stop" />
30
+ </part-list>
31
+ <!--=========================== Part 1 ===========================-->
32
+ <part id="P79915ea1a06ccd5543a73ffb615ee69d">
33
+ <!--========================= Measure 1 ==========================-->
34
+ <measure implicit="no" number="1">
35
+ <attributes>
36
+ <divisions>10080</divisions>
37
+ <key>
38
+ <fifths>0</fifths>
39
+ </key>
40
+ <time>
41
+ <beats>4</beats>
42
+ <beat-type>4</beat-type>
43
+ </time>
44
+ <clef>
45
+ <sign>G</sign>
46
+ <line>2</line>
47
+ </clef>
48
+ </attributes>
49
+ <note>
50
+ <pitch>
51
+ <step>C</step>
52
+ <octave>4</octave>
53
+ </pitch>
54
+ <duration>40320</duration>
55
+ <tie type="start" />
56
+ <type>whole</type>
57
+ <notations>
58
+ <tied type="start" />
59
+ </notations>
60
+ </note>
61
+ <note>
62
+ <pitch>
63
+ <step>E</step>
64
+ <octave>4</octave>
65
+ </pitch>
66
+ <duration>40320</duration>
67
+ <tie type="start" />
68
+ <type>whole</type>
69
+ <notations>
70
+ <tied type="start" />
71
+ </notations>
72
+ </note>
73
+ <note>
74
+ <pitch>
75
+ <step>G</step>
76
+ <octave>4</octave>
77
+ </pitch>
78
+ <duration>40320</duration>
79
+ <tie type="start" />
80
+ <type>whole</type>
81
+ <notations>
82
+ <tied type="start" />
83
+ </notations>
84
+ </note>
85
+ </measure>
86
+ <!--========================= Measure 2 ==========================-->
87
+ <measure implicit="no" number="2">
88
+ <note>
89
+ <pitch>
90
+ <step>C</step>
91
+ <octave>4</octave>
92
+ </pitch>
93
+ <duration>40320</duration>
94
+ <tie type="stop" />
95
+ <type>whole</type>
96
+ <notations>
97
+ <tied type="stop" />
98
+ </notations>
99
+ </note>
100
+ <note>
101
+ <pitch>
102
+ <step>E</step>
103
+ <octave>4</octave>
104
+ </pitch>
105
+ <duration>40320</duration>
106
+ <tie type="stop" />
107
+ <type>whole</type>
108
+ <notations>
109
+ <tied type="stop" />
110
+ </notations>
111
+ </note>
112
+ <note>
113
+ <pitch>
114
+ <step>G</step>
115
+ <octave>4</octave>
116
+ </pitch>
117
+ <duration>40320</duration>
118
+ <tie type="stop" />
119
+ <type>whole</type>
120
+ <notations>
121
+ <tied type="stop" />
122
+ </notations>
123
+ </note>
124
+ </measure>
125
+ <!--========================= Measure 3 ==========================-->
126
+ <measure implicit="no" number="3">
127
+ <note>
128
+ <pitch>
129
+ <step>C</step>
130
+ <octave>4</octave>
131
+ </pitch>
132
+ <duration>40320</duration>
133
+ <type>whole</type>
134
+ </note>
135
+ <note>
136
+ <pitch>
137
+ <step>E</step>
138
+ <alter>-1</alter>
139
+ <octave>4</octave>
140
+ </pitch>
141
+ <duration>40320</duration>
142
+ <type>whole</type>
143
+ <accidental>flat</accidental>
144
+ </note>
145
+ <note>
146
+ <pitch>
147
+ <step>G</step>
148
+ <octave>4</octave>
149
+ </pitch>
150
+ <duration>40320</duration>
151
+ <type>whole</type>
152
+ </note>
153
+ </measure>
154
+ </part>
155
+ <!--=========================== Part 2 ===========================-->
156
+ <part id="Pe87589cea6e07790027d75cce9322b37">
157
+ <!--========================= Measure 1 ==========================-->
158
+ <measure implicit="no" number="1">
159
+ <attributes>
160
+ <divisions>10080</divisions>
161
+ <key>
162
+ <fifths>0</fifths>
163
+ </key>
164
+ <time>
165
+ <beats>4</beats>
166
+ <beat-type>4</beat-type>
167
+ </time>
168
+ <clef>
169
+ <sign>F</sign>
170
+ <line>4</line>
171
+ </clef>
172
+ </attributes>
173
+ <note>
174
+ <pitch>
175
+ <step>B</step>
176
+ <octave>4</octave>
177
+ </pitch>
178
+ <duration>40320</duration>
179
+ <type>whole</type>
180
+ </note>
181
+ <note>
182
+ <pitch>
183
+ <step>D</step>
184
+ <octave>5</octave>
185
+ </pitch>
186
+ <duration>40320</duration>
187
+ <tie type="start" />
188
+ <type>whole</type>
189
+ <notations>
190
+ <tied type="start" />
191
+ </notations>
192
+ </note>
193
+ <note>
194
+ <pitch>
195
+ <step>F</step>
196
+ <octave>5</octave>
197
+ </pitch>
198
+ <duration>40320</duration>
199
+ <tie type="start" />
200
+ <type>whole</type>
201
+ <notations>
202
+ <tied type="start" />
203
+ </notations>
204
+ </note>
205
+ </measure>
206
+ <!--========================= Measure 2 ==========================-->
207
+ <measure implicit="no" number="2">
208
+ <note>
209
+ <pitch>
210
+ <step>A</step>
211
+ <octave>4</octave>
212
+ </pitch>
213
+ <duration>40320</duration>
214
+ <tie type="start" />
215
+ <type>whole</type>
216
+ <notations>
217
+ <tied type="start" />
218
+ </notations>
219
+ </note>
220
+ <note>
221
+ <pitch>
222
+ <step>D</step>
223
+ <octave>5</octave>
224
+ </pitch>
225
+ <duration>40320</duration>
226
+ <tie type="stop" />
227
+ <type>whole</type>
228
+ <notations>
229
+ <tied type="stop" />
230
+ </notations>
231
+ </note>
232
+ <note>
233
+ <pitch>
234
+ <step>F</step>
235
+ <octave>5</octave>
236
+ </pitch>
237
+ <duration>40320</duration>
238
+ <tie type="stop" />
239
+ <type>whole</type>
240
+ <notations>
241
+ <tied type="stop" />
242
+ </notations>
243
+ </note>
244
+ </measure>
245
+ <!--========================= Measure 3 ==========================-->
246
+ <measure implicit="no" number="3">
247
+ <note>
248
+ <pitch>
249
+ <step>A</step>
250
+ <octave>4</octave>
251
+ </pitch>
252
+ <duration>40320</duration>
253
+ <tie type="stop" />
254
+ <type>whole</type>
255
+ <notations>
256
+ <tied type="stop" />
257
+ </notations>
258
+ </note>
259
+ <note>
260
+ <pitch>
261
+ <step>D</step>
262
+ <octave>5</octave>
263
+ </pitch>
264
+ <duration>40320</duration>
265
+ <type>whole</type>
266
+ </note>
267
+ <note>
268
+ <pitch>
269
+ <step>F</step>
270
+ <octave>5</octave>
271
+ </pitch>
272
+ <duration>40320</duration>
273
+ <type>whole</type>
274
+ </note>
275
+ </measure>
276
+ </part>
277
+ </score-partwise>
movements.py CHANGED
@@ -1,11 +1,10 @@
1
- import os
2
  import random
3
 
4
  from mido import MidiFile, Message, MidiTrack
5
  from music21 import note, stream, interval, meter, chord
6
- from ortools.sat.python import cp_model
7
 
8
  from hexachords import Hexachord
 
9
  from smallmuse.temporals import NoteList, TemporalNote
10
 
11
 
@@ -21,24 +20,44 @@ class Movement:
21
  mvts_templates.append(chords)
22
  return mvts_templates
23
 
24
- if __name__ == '__main__':
25
- hexa = Hexachord()
26
- note_names = ["C3", "Eb3", "E3", "F#3", "G3", "Bb3"]
27
- notes = [note.Note(n) for n in note_names]
28
- cs1 = hexa.generate_base_sequence(notes, intrvl="P4")
29
- print (cs1)
30
- move = Movement(hexa)
31
- mvmts= move.generate_movements(1)
32
- movement = random.choice(mvmts)
33
- # make a temporallist
34
- nl = NoteList()
35
- for i_chord, chord in enumerate(movement):
36
- for note in chord:
37
- nl.add_note(TemporalNote(note.pitch.midi, i_chord * 4, 4))
38
- nl.join_notes()
39
- # nl.show()
40
- nl.apply_rules()
41
- print('after rules')
42
- nl.save_midi('output.mid')
43
- nl.show()
 
 
 
 
 
 
 
 
 
 
44
 
 
 
 
 
 
 
 
 
 
 
 
 
1
  import random
2
 
3
  from mido import MidiFile, Message, MidiTrack
4
  from music21 import note, stream, interval, meter, chord
 
5
 
6
  from hexachords import Hexachord
7
+ from optimize import optimize
8
  from smallmuse.temporals import NoteList, TemporalNote
9
 
10
 
 
20
  mvts_templates.append(chords)
21
  return mvts_templates
22
 
23
+ def essai_general_rules(self):
24
+ move = Movement(hexa)
25
+ mvmts= move.generate_movements(1)
26
+ movement = random.choice(mvmts)
27
+ # make a temporallist
28
+ nl = NoteList()
29
+ for i_chord, chord in enumerate(movement):
30
+ for note in chord:
31
+ nl.add_note(TemporalNote(note.pitch.midi, i_chord * 4, 4))
32
+ nl.join_notes()
33
+ # nl.show()
34
+ nl.apply_rules()
35
+ print('after rules')
36
+ nl.save_midi('output.mid')
37
+ nl.show()
38
+
39
+ def sculpt_method(self, nb, nb_beats):
40
+ base = self.hexachord._base_sequence
41
+ first_chord =self.hexachord.generate_3_chords_realizations(base)[2][0]
42
+ second_chord =self.hexachord.generate_3_chords_realizations(base)[2][2]
43
+ nl = NoteList()
44
+ for note in first_chord:
45
+ for i in range((int)(nb_beats / 2)):
46
+ nl.add_note(TemporalNote(note.pitch.midi, i, 1))
47
+ for note in second_chord:
48
+ for i in range((int)(nb_beats / 2), nb_beats):
49
+ nl.add_note(TemporalNote(note.pitch.midi, i, 1))
50
+ nl.apply_sculpt_rules(nb)
51
+ nl.join_notes()
52
+ return nl
53
 
54
+
55
+ if __name__ == '__main__':
56
+ # hexa = Hexachord(["C3", "Eb3", "E3", "F#3", "G3", "Bb3"])
57
+ hexa = Hexachord(["C3", "D3", "E3", "G3", "A3", "B3"])
58
+ # Movement(hexa).essai_general_rules()
59
+ # for i in range (10):
60
+ nl = Movement(hexa).sculpt_method(250, 16)
61
+ nl.save_midi(f'output_brut.mid')
62
+ nl2 = optimize(nl)
63
+ nl2.save_midi(f'output_corrected.mid')
optimize.py ADDED
@@ -0,0 +1,83 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ from ortools.sat.python import cp_model
2
+ import random
3
+
4
+ from smallmuse.temporals import NoteList, TemporalNote
5
+
6
+ # Parameters
7
+ QUANTIZATION = 8 # positions per bar
8
+ TICKS_PER_BEAT = 2
9
+ STEPS_PER_BAR = QUANTIZATION
10
+ MAX_TIME_STEP = 32
11
+ BAR_LIMIT = .5 # ±1 bar displacement allowed
12
+ DISSONANT_INTERVALS = {6, 13}
13
+
14
+ # Note class
15
+ # class Note:
16
+ # def __init__(self, pitch, start_time, duration):
17
+ # self.pitch = pitch
18
+ # self.start_time = start_time
19
+ # self.duration = duration
20
+
21
+ # Generate notes
22
+ random.seed(42)
23
+ # notes = []
24
+ # for i in range(NUM_NOTES):
25
+ # pitch = random.randint(48, 72)
26
+ # start_time = i * 0.5 # uniform spacing (beats)
27
+ # duration = 0.5
28
+ # notes.append(Note(pitch, start_time, duration))
29
+
30
+ def optimize(note_list):
31
+ # Model
32
+ notes = note_list.notes
33
+ NUM_NOTES = len(notes)
34
+ model = cp_model.CpModel()
35
+ original_steps = [int(note.start_time * TICKS_PER_BEAT) for note in notes]
36
+
37
+ starts = []
38
+ for i in range(NUM_NOTES):
39
+ lower = max(0, original_steps[i] - int(BAR_LIMIT * STEPS_PER_BAR))
40
+ upper = min(MAX_TIME_STEP - 1, original_steps[i] + int(BAR_LIMIT * STEPS_PER_BAR))
41
+ var = model.NewIntVar(lower, upper, f'start_{i}')
42
+ starts.append(var)
43
+
44
+ # Order constraint
45
+ for i in range(NUM_NOTES - 1):
46
+ model.Add(starts[i] <= starts[i + 1])
47
+
48
+ # Dissonance constraint
49
+ for i in range(NUM_NOTES):
50
+ for j in range(i + 1, NUM_NOTES):
51
+ interval = abs(notes[i].pitch - notes[j].pitch)
52
+ if interval in DISSONANT_INTERVALS:
53
+ model.Add(starts[i] != starts[j])
54
+
55
+ # Objective: minimize squared pitch difference
56
+ # interval_terms = [(notes[i + 1].pitch - notes[i].pitch) ** 2 for i in range(NUM_NOTES - 1)]
57
+ # model.Minimize(sum(interval_terms))
58
+
59
+ # Objective: minimize total displacement from original start times
60
+ displacements = []
61
+ for i in range(NUM_NOTES):
62
+ diff = model.NewIntVar(0, MAX_TIME_STEP, f'diff_{i}')
63
+ model.AddAbsEquality(diff, starts[i] - original_steps[i])
64
+ displacements.append(diff)
65
+
66
+ model.Minimize(sum(displacements))
67
+
68
+ # Solve
69
+ solver = cp_model.CpSolver()
70
+ status = solver.Solve(model)
71
+
72
+ # Output
73
+ result = NoteList()
74
+ if status in [cp_model.OPTIMAL, cp_model.FEASIBLE]:
75
+ for i in range(NUM_NOTES):
76
+ result.add_note(TemporalNote(notes[i].pitch, int(solver.Value(starts[i]) / 2), notes[i].duration()))
77
+ print(f"Note {i}: pitch={notes[i].pitch}, "
78
+ f"original={original_steps[i]}, "
79
+ f"quantized={solver.Value(starts[i])}")
80
+ else:
81
+ print("No solution found.")
82
+ result.join_notes()
83
+ return result
smallmuse/temporals.py CHANGED
@@ -3,9 +3,6 @@ import random
3
  from mido import MidiFile, MidiTrack, Message
4
 
5
  class TemporalNote:
6
- start_time = 0
7
- end_time = 0
8
- pitch = 60
9
 
10
  def __init__(self, pitch, start_time, duration):
11
  self.pitch = pitch
@@ -26,7 +23,9 @@ class TemporalNote:
26
 
27
 
28
  class NoteList:
29
- notes = []
 
 
30
 
31
  def add_note(self, tmp):
32
  self.notes.append(tmp)
@@ -65,11 +64,11 @@ class NoteList:
65
  return [n for n in self.notes if n.start_time == start]
66
 
67
  def get_notes_within(self, start, end):
68
- return [n for n in self.notes if n.start_time <= end and n.end_time >= start]
69
 
70
  def get_polyphony_at(self, time_point):
71
  # how many notes are played at that moment ?
72
- return len([note for note in self.notes if note.start_time < time_point and note.end_time > time_point])
73
 
74
  def apply_rules(self):
75
  for i in range(20):
@@ -80,35 +79,62 @@ class NoteList:
80
 
81
  def apply_rule_remove(self):
82
  a_note = random.choice(self.notes)
83
- notes_within = self.get_notes_within(a_note.start_time, a_note.end_time)
84
- maxp = 0
85
- for note in notes_within:
86
- maxp = max(maxp, self.get_polyphony_at(note.start_time))
87
- maxp = max(maxp, self.get_polyphony_at(note.end_time))
88
- # print(f"note {a_note} has polyphony {maxp}")
89
  if maxp > 2:
90
  self.remove_note(a_note)
91
 
92
- def apply_rule_split(self):
 
 
 
 
 
93
  a_note = random.choice(self.notes)
 
 
 
 
 
 
 
 
94
  notes_within = self.get_notes_within(a_note.start_time, a_note.end_time)
95
  maxp = 0
96
  for note in notes_within:
97
  maxp = max(maxp, self.get_polyphony_at(note.start_time))
98
  maxp = max(maxp, self.get_polyphony_at(note.end_time))
99
- # print(f"note {a_note} has polyphony {maxp}")
100
- if maxp > 2:
101
- self.remove_note(a_note)
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
102
 
103
  def save_midi(self, file_name):
104
  mid = MidiFile()
105
  track = MidiTrack()
106
  mid.tracks.append(track)
107
- click_per_beats = 480
108
  message_list = []
109
  for note in self.notes:
110
- message_list.append(Message('note_on', note=note.pitch, velocity=64, time=(int)(click_per_beats * note.start_time)))
111
- message_list.append(Message('note_off', note=note.pitch, velocity=0, time=(int)(click_per_beats * note.end_time)))
112
  message_list.sort(key= lambda msg: msg.time)
113
  last_event_time = 0
114
  for msg in message_list:
@@ -129,4 +155,5 @@ if __name__ == '__main__':
129
  nl.add_note(TemporalNote(67, 1, 3))
130
  nl.add_note(TemporalNote(68, 2, 3))
131
  # nl.show()
 
132
  nl.save_midi('nl_output.mid')
 
3
  from mido import MidiFile, MidiTrack, Message
4
 
5
  class TemporalNote:
 
 
 
6
 
7
  def __init__(self, pitch, start_time, duration):
8
  self.pitch = pitch
 
23
 
24
 
25
  class NoteList:
26
+
27
+ def __init__(self):
28
+ self.notes = []
29
 
30
  def add_note(self, tmp):
31
  self.notes.append(tmp)
 
64
  return [n for n in self.notes if n.start_time == start]
65
 
66
  def get_notes_within(self, start, end):
67
+ return [n for n in self.notes if n.start_time < end and n.end_time > start]
68
 
69
  def get_polyphony_at(self, time_point):
70
  # how many notes are played at that moment ?
71
+ return len([note for note in self.notes if note.start_time <= time_point and note.end_time > time_point])
72
 
73
  def apply_rules(self):
74
  for i in range(20):
 
79
 
80
  def apply_rule_remove(self):
81
  a_note = random.choice(self.notes)
82
+ maxp = self.get_max_poyphony(a_note)
 
 
 
 
 
83
  if maxp > 2:
84
  self.remove_note(a_note)
85
 
86
+ def apply_sculpt_rules(self, nb):
87
+ for i in range(nb):
88
+ if random.randint(1,100) > 50:
89
+ self.apply_rule_remove_sculpt()
90
+
91
+ def apply_rule_remove_sculpt(self):
92
  a_note = random.choice(self.notes)
93
+ maxp = self.get_max_poyphony(a_note)
94
+ if maxp > 3:
95
+ self.remove_note(a_note)
96
+ if maxp <= 3:
97
+ if random.randint(1, 100) > 70:
98
+ self.remove_note(a_note)
99
+
100
+ def get_max_poyphony(self, a_note):
101
  notes_within = self.get_notes_within(a_note.start_time, a_note.end_time)
102
  maxp = 0
103
  for note in notes_within:
104
  maxp = max(maxp, self.get_polyphony_at(note.start_time))
105
  maxp = max(maxp, self.get_polyphony_at(note.end_time))
106
+ return maxp
107
+
108
+ def apply_rule_split(self):
109
+ a_note = random.choice(self.notes)
110
+ if a_note.duration() > 3:
111
+ next_note = self.get_next_note_in_voice(a_note)
112
+ if next_note is None:
113
+ return
114
+ interm = self.get_intermediary_pitch(a_note, next_note)
115
+ if interm is not None:
116
+ # create 2 notes instead of one
117
+ old_dur = a_note.duration()
118
+ new_note = TemporalNote(interm, a_note.end_time, old_dur - 2)
119
+ self.add_note(new_note)
120
+
121
+ def get_next_note_in_voice(self, note):
122
+ candidates = self.get_notes_starting_at(note.end_time)
123
+ if len(candidates) == 0:
124
+ return None
125
+
126
+ def get_intermediary_pitch(self, a_note, next_note):
127
+ pass
128
 
129
  def save_midi(self, file_name):
130
  mid = MidiFile()
131
  track = MidiTrack()
132
  mid.tracks.append(track)
133
+ clicks_per_beat = 480
134
  message_list = []
135
  for note in self.notes:
136
+ message_list.append(Message('note_on', note=note.pitch, velocity=64, time=(int)(clicks_per_beat * note.start_time)))
137
+ message_list.append(Message('note_off', note=note.pitch, velocity=0, time=(int)(clicks_per_beat * note.end_time)))
138
  message_list.sort(key= lambda msg: msg.time)
139
  last_event_time = 0
140
  for msg in message_list:
 
155
  nl.add_note(TemporalNote(67, 1, 3))
156
  nl.add_note(TemporalNote(68, 2, 3))
157
  # nl.show()
158
+ nl2 = NoteList()
159
  nl.save_midi('nl_output.mid')