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
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
246
247
248
249
250
251
252
253
254
255
256
257
258
259
260
261
262
263
264
265
266
267
268
269
270
271
272
273
274
275
276
277
278
279
280
281
282
283
284
285
286
287
288
289
290
291
292
293
294
295
296
297
298
299
300
301
302
303
304
305
306
307
308
309
310
311
312
313
314
315
316
317
318
319
320
321
322
323
324
325
326
327
328
329
330
331
332
333
334
335
336
337
338
339
340
341
342
343
344
345
346
347
348
349
350
351
352
353
354
355
356
357
358
359
360
361
362
363
364
365
366
367
368
369
370
371
372
373
374
375
376
377
378
379
380
381
382
383
384
385
386
387
388
389
390
391
392
393
394
395
396
397
398
399
400
401
402
403
404
405
406
407
408
409
410
411
412
413
414
415
416
417
418
419
420
421
422
423
424
425
426
427
428
429
430
431
432
433
434
435
436
437
438
439
440
441
442
443
444
445
446
447
448
449
450
451
452
453
454
455
456
457
458
459
460
461
462
463
464
465
466
467
468
469
470
471
472
473
474
475
476
477
478
479
480
481
482
483
484
485
486
487
488
489
490
491
492
493
494
495
496
497
498
499
500
501
502
503
504
505
506
507
508
509
510
511
512
513
514
515
516
517
518
519
520
521
522
523
524
525
526
527
528
529
530
531
532
533
534
535
536
537
538
539
540
541
542
543
544
545
546
547
548
549
550
551
552
553
554
555
556
557
558
559
560
561
562
563
564
565
566
567
568
569
570
571
572
573
574
575
576
577
578
579
580
581
582
583
584
585
586
587
588
589
590
591
592
593
594
595
596
597
598
599
600
601
602
603
604
605
606
607
608
609
610
611
612
613
614
615
616
617
618
619
620
621
622
623
624
625
626
627
628
629
630
631
632
633
634
635
636
637
638
639
640
641
642
643
644
645
646
647
648
649
650
651
652
653
654
655
656
657
658
659
660
661
662
663
664
665
666
667
668
669
670
671
672
673
674
675
676
677
678
679
680
681
682
683
684
685
686
687
688
689
690
691
692
693
694
695
696
697
698
699
700
701
702
703
704
705
706
707
708
709
710
711
712
713
714
|
%global _empty_manifest_terminate_build 0
Name: python-EPMS
Version: 0.0.8
Release: 1
Summary: The Expressive Polyphonic MIDI Serializer is a tool to turn MIDI files into a model-friendly, expressive representation for ML projects.
License: MIT License
URL: https://github.com/petcomputacaoufrgs/EPMS
Source0: https://mirrors.aliyun.com/pypi/web/packages/e4/d4/87e60ea56813c82ce93cc1ca450bfec6ad5f4a8563fab1699fd79ca3d198/EPMS-0.0.8.tar.gz
BuildArch: noarch
%description
# EPMS: Expressive Polyphonic MIDI Serializer
## Introduction
The MIDI (Musical Instrument Digital Interface) protocol is extremely useful - and awesome - when we want to work with digital audio. One of its many utilities is in
Machine Learning, where it allows us to train data models to generate musical pieces.
However, the current literature lack a tool that transcribes MIDI data to a model-friendly structure while preserving
polyphony and the whole expressive dimension of music.
EPMS is being build to address that need. While simultaneously working on a
LSTM that predict and translates musical data between instruments, our [PET](https://www.inf.ufrgs.br/site/pet/) group from the [Institute of Informatics](https://inf.ufrgs.br) of the [Federal University of Rio Grande do Sul (UFRGS)](https://ufrgs.br) - Brazil, is maintaining and developing this repository.
With the advances of [MIDI 2.0](https://www.midi.org/midi-articles/details-about-midi-2-0-midi-ci-profiles-and-property-exchange) in mind, we're working on merging concepts from Music Information Retrieval (MIR) and Machine Learning (ML) to prepare the ground for future works that can popularize the feeling of making music.
## The Concept
The main idea behind the project is to represent a MIDI file in some format that is easy to manipulate and feed to a Machine Learning (ML) model, like a neural network.
Simply put, we transform the input file in a **Pandas DataFrame** where information is stored.
### Settings
There are currently 3 setting parameters for the serialization process:
1. **RESOLUTION** (int): the amount of *frames per beat* to be recorded.
2. **KEYBOARD_SIZE** (int): the amount on *notes* that we'll be tracked by the serializer.
3. **KEYBOARD_OFFSET** (int): the *MIDI value* of the first key in our keyboard
\
For example, we can set the serial parameters like
```python
SETTINGS = {
'RESOLUTION': 16,
'KEYBOARD_SIZE': 13,
'KEYBOARD_OFFSET': 60
}
```
that will be internally transformed into a serie.
| SETTING | VALUE|
|:-----------|---|
| RESOLUTION | 16|
| KEYBOARD_SIZE | 13 |
| KEYBOARD_OFFSET | 60 |
### Serialization
Each row in the serial DataFrame corresponds to a **frame** of the song
and each frame is formed in a set of different *blocks*:
* the **Instrument Block**, that stores information about instrument qualities
| NAME | INSTRUMENT | MIDI_PROGRAM | SOUND |
|:-------|:-------------|---------------:|:------------------|
* the **Metric Block**, that will be our time reference across the song
| MEASURE | BEAT | FRAME |
|:----------|:-------|---------|
* the **Environment Block**, that provides the musical context of one's model environment
| ORIGINAL_KS | TS | TEMPO |
|:--------------|------|---------|
* and the **Performance Block**, that is a *piano-roll*-like representation that specifies one column for every
key in our model's 'artificial piano'. In this block we focus on representing the main
expressive characteristics of human musical performances, such as *dynamics*, *syncopations* and *articulations*.
\
\
With the settings values as shown before,
the Performance Block would be:
| C4 | C#4 | D4 | E-4 | E4 | F4 | F#4 | G4 | G#4 | A4 | B-4 | B4 | C5 |
|:------|-------|-------|---------|-------|-------|-------|----|-----|----|-----|----|----|
\
\
Finally, our frames will contain MIDI data in the following columns:
| NAME | INSTRUMENT | MIDI_PROGRAM | SOUND | MEASURE | BEAT | FRAME | ORIGINAL_KS | TS | TEMPO | A0 | B-0 | B0 | C1 | C#1 | D1 | E-1 | E1 | F1 | F#1 | G1 | G#1 | A1 | B-1 | B1 | C2 | C#2 | D2 | E-2 | E2 | F2 | F#2 | G2 | G#2 | A2 | B-2 | B2 | C3 | C#3 | D3 | E-3 | E3 | F3 | F#3 | G3 | G#3 | A3 | B-3 | B3 | C4 | C#4 | D4 | E-4 | E4 | F4 | F#4 | G4 | G#4 | A4 | B-4 | B4 | C5 | C#5 | D5 | E-5 | E5 | F5 | F#5 | G5 | G#5 | A5 | B-5 | B5 | C6 | C#6 | D6 | E-6 | E6 | F6 | F#6 | G6 | G#6 | A6 | B-6 | B6 | C7 | C#7 | D7 | E-7 | E7 | F7 | F#7 | G7 | G#7 | A7 | B-7 | B7 | C8 |
|:-------|:-------------|---------------:|:------------------|----------:|-------:|--------:|:--------------|:-----|--------:|:------|:------|:------|:------|:------|:------|:------|:------|:------|:------|:------|:------|:------|:------|:------|:------|:------|:------|:------|:------|:------|:------|:------|:------|:------|:------|:------|:------|:------|:------|:------|:------|:------|:------|:------|:------|:------|:------|:------|:------|:------|:------|:------|:------|:------|:------|:------|:------|:----------------------------|:------|:------|:----------------------------|:----------------------------|:----------------------------|:------|:----------------------------|:----------------------------|:------|:------|:------|:----------------------------|:------|:------|:----------------------------|:----------------------------|:----------------------------|:------|:----------------------------|:----------------------------|:------|:------|:------|:------|:------|:------|:------|:------|:------|:------|:------|:------|:------|:------|:------|:------|:------|:------|:------|
### Serialization Diagram

## Performance Block (PB) Representation
As a group project decision, the values stored in the PB are formatted in a way that we can
easily turn one row (one frame) into a **Multi Hot Encoded Performance (MHEP) frame**, that can be
used as input vector for a model that uses Binary Cross Entropy Loss (BCE Loss) to get a rapidly convergent
*'what notes should I play?'* kind of learning. The main point of this decision is that this way we
treat the playing problem as a Classification Problem, that is easier to work on.
In that sense, the data inside the PB is represented in a way where different data types provide
different semantic meaning for a note's frame in the performance encoding:
> ### **Boolean**
>
> **False**: represent silence, the note is not being played in the frame.
> ### Float32
>
> *****value*****: represent that this note is playing in the frame with current scalar velocity *****value*****.
* ****
## Usage and Example
First of all, you must import the package and define the settings for the serializer.
```python
from EMS import serialization, deserialization
SETTINGS = {
'RESOLUTION': 16,
'KEYBOARD_SIZE': 88,
'KEYBOARD_OFFSET': 21
}
```
Then, to serialize:
```python
serial = serialization.file('test_midi_files/George Benson - Breezin.mid',
SETTINGS,
save_as='serial.pkl') ## optional
```
The following is the score for the first flute measure of George Bensons - Breezin:

The serial version of this measure can be seen below, it is a Pandas DataFrame with dimensions (64, 98):
| NAME | INSTRUMENT | MIDI_PROGRAM | SOUND | MEASURE | BEAT | FRAME | ORIGINAL_KS | TS | TEMPO | A0 | B-0 | B0 | C1 | C#1 | D1 | E-1 | E1 | F1 | F#1 | G1 | G#1 | A1 | B-1 | B1 | C2 | C#2 | D2 | E-2 | E2 | F2 | F#2 | G2 | G#2 | A2 | B-2 | B2 | C3 | C#3 | D3 | E-3 | E3 | F3 | F#3 | G3 | G#3 | A3 | B-3 | B3 | C4 | C#4 | D4 | E-4 | E4 | F4 | F#4 | G4 | G#4 | A4 | B-4 | B4 | C5 | C#5 | D5 | E-5 | E5 | F5 | F#5 | G5 | G#5 | A5 | B-5 | B5 | C6 | C#6 | D6 | E-6 | E6 | F6 | F#6 | G6 | G#6 | A6 | B-6 | B6 | C7 | C#7 | D7 | E-7 | E7 | F7 | F#7 | G7 | G#7 | A7 | B-7 | B7 | C8 |
|:-------|:-------------|---------------:|:------------------|----------:|-------:|--------:|:--------------|:-----|--------:|:------|:------|:------|:------|:------|:------|:------|:------|:------|:------|:------|:------|:------|:------|:------|:------|:------|:------|:------|:------|:------|:------|:------|:------|:------|:------|:------|:------|:------|:------|:------|:------|:------|:------|:------|:------|:------|:------|:------|:------|:------|:------|:------|:------|:------|:------|:------|:------|---------:|:------|:------|---------:|---------:|---------:|:------|---------:|---------:|:------|:------|:------|---------:|:------|:------|---------:|---------:|---------:|:------|---------:|---------:|:------|:------|:------|:------|:------|:------|:------|:------|:------|:------|:------|:------|:------|:------|:------|:------|:------|:------|:------|
| Winds | Flute | 73 | wind.flutes.flute | 1 | 1 | 1 | C | 4/4 | 82 | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | 0 | False | False | 0 | 0.385827 | 0 | False | 0 | 0 | False | False | False | 0 | False | False | 0 | 0 | 0 | False | 0 | 0 | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False |
| Winds | Flute | 73 | wind.flutes.flute | 1 | 1 | 2 | C | 4/4 | 82 | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | 0 | False | False | 0 | 0.385827 | 0 | False | 0 | 0 | False | False | False | 0 | False | False | 0 | 0 | 0 | False | 0 | 0 | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False |
| Winds | Flute | 73 | wind.flutes.flute | 1 | 1 | 3 | C | 4/4 | 82 | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | 0 | False | False | 0 | 0.385827 | 0 | False | 0 | 0 | False | False | False | 0 | False | False | 0 | 0 | 0 | False | 0 | 0 | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False |
| Winds | Flute | 73 | wind.flutes.flute | 1 | 1 | 4 | C | 4/4 | 82 | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | 0 | False | False | 0 | 0.385827 | 0 | False | 0 | 0 | False | False | False | 0 | False | False | 0 | 0 | 0 | False | 0 | 0 | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False |
| Winds | Flute | 73 | wind.flutes.flute | 1 | 1 | 5 | C | 4/4 | 82 | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | 0 | False | False | 0 | 0 | 0.385827 | False | 0 | 0 | False | False | False | 0 | False | False | 0 | 0 | 0 | False | 0 | 0 | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False |
| Winds | Flute | 73 | wind.flutes.flute | 1 | 1 | 6 | C | 4/4 | 82 | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | 0 | False | False | 0 | 0.503937 | 0.385827 | False | 0 | 0 | False | False | False | 0 | False | False | 0 | 0 | 0 | False | 0 | 0 | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False |
| Winds | Flute | 73 | wind.flutes.flute | 1 | 1 | 7 | C | 4/4 | 82 | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | 0 | False | False | 0 | 0.503937 | 0.385827 | False | 0 | 0 | False | False | False | 0 | False | False | 0 | 0 | 0 | False | 0 | 0 | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False |
| Winds | Flute | 73 | wind.flutes.flute | 1 | 1 | 8 | C | 4/4 | 82 | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | 0 | False | False | 0 | 0.503937 | 0.385827 | False | 0 | 0 | False | False | False | 0 | False | False | 0 | 0 | 0 | False | 0 | 0 | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False |
| Winds | Flute | 73 | wind.flutes.flute | 1 | 1 | 9 | C | 4/4 | 82 | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | 0.503937 | False | False | 0 | 0.503937 | 0 | False | 0 | 0 | False | False | False | 0 | False | False | 0 | 0 | 0 | False | 0 | 0 | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False |
| Winds | Flute | 73 | wind.flutes.flute | 1 | 1 | 10 | C | 4/4 | 82 | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | 0.503937 | False | False | 0 | 0 | 0 | False | 0 | 0 | False | False | False | 0 | False | False | 0 | 0 | 0 | False | 0 | 0 | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False |
| Winds | Flute | 73 | wind.flutes.flute | 1 | 1 | 11 | C | 4/4 | 82 | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | 0.503937 | False | False | 0 | 0 | 0 | False | 0 | 0 | False | False | False | 0 | False | False | 0 | 0.385827 | 0 | False | 0 | 0 | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False |
| Winds | Flute | 73 | wind.flutes.flute | 1 | 1 | 12 | C | 4/4 | 82 | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | 0.503937 | False | False | 0 | 0 | 0 | False | 0 | 0 | False | False | False | 0 | False | False | 0 | 0.385827 | 0 | False | 0 | 0 | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False |
| Winds | Flute | 73 | wind.flutes.flute | 1 | 1 | 13 | C | 4/4 | 82 | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | 0 | False | False | 0 | 0 | 0 | False | 0 | 0 | False | False | False | 0 | False | False | 0 | 0.385827 | 0.503937 | False | 0 | 0 | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False |
| Winds | Flute | 73 | wind.flutes.flute | 1 | 1 | 14 | C | 4/4 | 82 | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | 0 | False | False | 0 | 0 | 0 | False | 0 | 0 | False | False | False | 0 | False | False | 0 | 0.385827 | 0.503937 | False | 0 | 0 | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False |
| Winds | Flute | 73 | wind.flutes.flute | 1 | 1 | 15 | C | 4/4 | 82 | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | 0 | False | False | 0 | 0 | 0 | False | 0 | 0 | False | False | False | 0 | False | False | 0 | 0 | 0.503937 | False | 0 | 0 | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False |
| Winds | Flute | 73 | wind.flutes.flute | 1 | 1 | 16 | C | 4/4 | 82 | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | 0 | False | False | 0 | 0 | 0 | False | 0 | 0 | False | False | False | 0 | False | False | 0 | 0 | 0.503937 | False | 0 | 0 | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False |
| Winds | Flute | 73 | wind.flutes.flute | 1 | 2 | 1 | C | 4/4 | 82 | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | 0 | False | False | 0 | 0 | 0 | False | 0 | 0 | False | False | False | 0 | False | False | 0 | 0.385827 | 0 | False | 0 | 0 | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False |
| Winds | Flute | 73 | wind.flutes.flute | 1 | 2 | 2 | C | 4/4 | 82 | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | 0 | False | False | 0 | 0 | 0 | False | 0 | 0 | False | False | False | 0 | False | False | 0 | 0.385827 | 0 | False | 0 | 0 | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False |
| Winds | Flute | 73 | wind.flutes.flute | 1 | 2 | 3 | C | 4/4 | 82 | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | 0 | False | False | 0 | 0 | 0 | False | 0 | 0 | False | False | False | 0 | False | False | 0 | 0.385827 | 0 | False | 0 | 0 | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False |
| Winds | Flute | 73 | wind.flutes.flute | 1 | 2 | 4 | C | 4/4 | 82 | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | 0 | False | False | 0 | 0 | 0 | False | 0 | 0 | False | False | False | 0 | False | False | 0 | 0.385827 | 0 | False | 0 | 0 | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False |
| Winds | Flute | 73 | wind.flutes.flute | 1 | 2 | 5 | C | 4/4 | 82 | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | 0 | False | False | 0 | 0 | 0 | False | 0 | 0 | False | False | False | 0.503937 | False | False | 0 | 0 | 0 | False | 0 | 0 | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False |
| Winds | Flute | 73 | wind.flutes.flute | 1 | 2 | 6 | C | 4/4 | 82 | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | 0 | False | False | 0 | 0.503937 | 0 | False | 0 | 0 | False | False | False | 0.503937 | False | False | 0 | 0 | 0 | False | 0 | 0 | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False |
| Winds | Flute | 73 | wind.flutes.flute | 1 | 2 | 7 | C | 4/4 | 82 | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | 0 | False | False | 0 | 0.503937 | 0 | False | 0 | 0 | False | False | False | 0.503937 | False | False | 0 | 0 | 0 | False | 0 | 0 | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False |
| Winds | Flute | 73 | wind.flutes.flute | 1 | 2 | 8 | C | 4/4 | 82 | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | 0 | False | False | 0 | 0.503937 | 0 | False | 0 | 0 | False | False | False | 0.503937 | False | False | 0 | 0 | 0 | False | 0 | 0 | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False |
| Winds | Flute | 73 | wind.flutes.flute | 1 | 2 | 9 | C | 4/4 | 82 | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | 0 | False | False | 0 | 0.503937 | 0.503937 | False | 0 | 0 | False | False | False | 0 | False | False | 0 | 0 | 0 | False | 0 | 0 | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False |
| Winds | Flute | 73 | wind.flutes.flute | 1 | 2 | 10 | C | 4/4 | 82 | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | 0 | False | False | 0 | 0 | 0.503937 | False | 0 | 0 | False | False | False | 0 | False | False | 0 | 0 | 0 | False | 0 | 0 | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False |
| Winds | Flute | 73 | wind.flutes.flute | 1 | 2 | 11 | C | 4/4 | 82 | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | 0 | False | False | 0 | 0.503937 | 0.503937 | False | 0 | 0 | False | False | False | 0 | False | False | 0 | 0 | 0 | False | 0 | 0 | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False |
| Winds | Flute | 73 | wind.flutes.flute | 1 | 2 | 12 | C | 4/4 | 82 | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | 0 | False | False | 0 | 0.503937 | 0.503937 | False | 0 | 0 | False | False | False | 0 | False | False | 0 | 0 | 0 | False | 0 | 0 | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False |
| Winds | Flute | 73 | wind.flutes.flute | 1 | 2 | 13 | C | 4/4 | 82 | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | 0.503937 | False | False | 0 | 0.503937 | 0 | False | 0 | 0 | False | False | False | 0 | False | False | 0 | 0 | 0 | False | 0 | 0 | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False |
| Winds | Flute | 73 | wind.flutes.flute | 1 | 2 | 14 | C | 4/4 | 82 | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | 0.503937 | False | False | 0 | 0.503937 | 0 | False | 0 | 0 | False | False | False | 0 | False | False | 0 | 0 | 0 | False | 0 | 0 | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False |
| Winds | Flute | 73 | wind.flutes.flute | 1 | 2 | 15 | C | 4/4 | 82 | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | 0.503937 | False | False | 0 | 0 | 0 | False | 0 | 0 | False | False | False | 0 | False | False | 0 | 0 | 0 | False | 0 | 0 | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False |
| Winds | Flute | 73 | wind.flutes.flute | 1 | 2 | 16 | C | 4/4 | 82 | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | 0.503937 | False | False | 0 | 0 | 0 | False | 0 | 0 | False | False | False | 0 | False | False | 0 | 0 | 0 | False | 0 | 0 | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False |
| Winds | Flute | 73 | wind.flutes.flute | 1 | 3 | 1 | C | 4/4 | 82 | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | 0 | False | False | 0 | 0 | 0 | False | 0.629921 | 0 | False | False | False | 0 | False | False | 0 | 0 | 0 | False | 0 | 0 | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False |
| Winds | Flute | 73 | wind.flutes.flute | 1 | 3 | 2 | C | 4/4 | 82 | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | 0 | False | False | 0 | 0 | 0 | False | 0.629921 | 0 | False | False | False | 0 | False | False | 0 | 0 | 0 | False | 0 | 0 | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False |
| Winds | Flute | 73 | wind.flutes.flute | 1 | 3 | 3 | C | 4/4 | 82 | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | 0 | False | False | 0 | 0 | 0 | False | 0.629921 | 0 | False | False | False | 0 | False | False | 0 | 0 | 0 | False | 0 | 0 | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False |
| Winds | Flute | 73 | wind.flutes.flute | 1 | 3 | 4 | C | 4/4 | 82 | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | 0 | False | False | 0 | 0 | 0 | False | 0.629921 | 0 | False | False | False | 0 | False | False | 0 | 0 | 0 | False | 0 | 0 | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False |
| Winds | Flute | 73 | wind.flutes.flute | 1 | 3 | 5 | C | 4/4 | 82 | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | 0 | False | False | 0 | 0 | 0 | False | 0 | 0.629921 | False | False | False | 0 | False | False | 0 | 0 | 0 | False | 0 | 0 | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False |
| Winds | Flute | 73 | wind.flutes.flute | 1 | 3 | 6 | C | 4/4 | 82 | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | 0 | False | False | 0 | 0 | 0 | False | 0.629921 | 0.629921 | False | False | False | 0 | False | False | 0 | 0 | 0 | False | 0 | 0 | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False |
| Winds | Flute | 73 | wind.flutes.flute | 1 | 3 | 7 | C | 4/4 | 82 | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | 0 | False | False | 0 | 0 | 0 | False | 0.629921 | 0.629921 | False | False | False | 0 | False | False | 0 | 0 | 0 | False | 0 | 0 | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False |
| Winds | Flute | 73 | wind.flutes.flute | 1 | 3 | 8 | C | 4/4 | 82 | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | 0 | False | False | 0 | 0 | 0 | False | 0.629921 | 0.629921 | False | False | False | 0 | False | False | 0 | 0 | 0 | False | 0 | 0 | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False |
| Winds | Flute | 73 | wind.flutes.flute | 1 | 3 | 9 | C | 4/4 | 82 | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | 0 | False | False | 0.503937 | 0 | 0 | False | 0.629921 | 0 | False | False | False | 0 | False | False | 0 | 0 | 0 | False | 0 | 0 | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False |
| Winds | Flute | 73 | wind.flutes.flute | 1 | 3 | 10 | C | 4/4 | 82 | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | 0 | False | False | 0.503937 | 0 | 0 | False | 0 | 0 | False | False | False | 0 | False | False | 0 | 0 | 0 | False | 0 | 0 | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False |
| Winds | Flute | 73 | wind.flutes.flute | 1 | 3 | 11 | C | 4/4 | 82 | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | 0 | False | False | 0.503937 | 0 | 0 | False | 0 | 0 | False | False | False | 0 | False | False | 0 | 0 | 0 | False | 0.503937 | 0 | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False |
| Winds | Flute | 73 | wind.flutes.flute | 1 | 3 | 12 | C | 4/4 | 82 | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | 0 | False | False | 0.503937 | 0 | 0 | False | 0 | 0 | False | False | False | 0 | False | False | 0 | 0 | 0 | False | 0.503937 | 0 | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False |
| Winds | Flute | 73 | wind.flutes.flute | 1 | 3 | 13 | C | 4/4 | 82 | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | 0 | False | False | 0 | 0 | 0 | False | 0 | 0 | False | False | False | 0 | False | False | 0 | 0 | 0 | False | 0.503937 | 0.503937 | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False |
| Winds | Flute | 73 | wind.flutes.flute | 1 | 3 | 14 | C | 4/4 | 82 | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | 0 | False | False | 0 | 0 | 0 | False | 0 | 0 | False | False | False | 0 | False | False | 0 | 0 | 0 | False | 0.503937 | 0.503937 | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False |
| Winds | Flute | 73 | wind.flutes.flute | 1 | 3 | 15 | C | 4/4 | 82 | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | 0 | False | False | 0 | 0 | 0 | False | 0 | 0 | False | False | False | 0 | False | False | 0 | 0 | 0 | False | 0 | 0.503937 | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False |
| Winds | Flute | 73 | wind.flutes.flute | 1 | 3 | 16 | C | 4/4 | 82 | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | 0 | False | False | 0 | 0 | 0 | False | 0 | 0 | False | False | False | 0 | False | False | 0 | 0 | 0 | False | 0 | 0.503937 | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False |
| Winds | Flute | 73 | wind.flutes.flute | 1 | 4 | 1 | C | 4/4 | 82 | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | 0 | False | False | 0 | 0 | 0 | False | 0 | 0 | False | False | False | 0 | False | False | 0 | 0 | 0 | False | 0.503937 | 0 | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False |
| Winds | Flute | 73 | wind.flutes.flute | 1 | 4 | 2 | C | 4/4 | 82 | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | 0 | False | False | 0 | 0 | 0 | False | 0 | 0 | False | False | False | 0 | False | False | 0 | 0 | 0 | False | 0.503937 | 0 | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False |
| Winds | Flute | 73 | wind.flutes.flute | 1 | 4 | 3 | C | 4/4 | 82 | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | 0 | False | False | 0 | 0 | 0 | False | 0 | 0 | False | False | False | 0 | False | False | 0 | 0 | 0 | False | 0.503937 | 0 | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False |
| Winds | Flute | 73 | wind.flutes.flute | 1 | 4 | 4 | C | 4/4 | 82 | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | 0 | False | False | 0 | 0 | 0 | False | 0 | 0 | False | False | False | 0 | False | False | 0 | 0 | 0 | False | 0.503937 | 0 | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False |
| Winds | Flute | 73 | wind.flutes.flute | 1 | 4 | 5 | C | 4/4 | 82 | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | 0 | False | False | 0 | 0 | 0 | False | 0 | 0 | False | False | False | 0 | False | False | 0.503937 | 0 | 0 | False | 0 | 0 | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False |
| Winds | Flute | 73 | wind.flutes.flute | 1 | 4 | 6 | C | 4/4 | 82 | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | 0 | False | False | 0 | 0 | 0 | False | 0.503937 | 0 | False | False | False | 0 | False | False | 0.503937 | 0 | 0 | False | 0 | 0 | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False |
| Winds | Flute | 73 | wind.flutes.flute | 1 | 4 | 7 | C | 4/4 | 82 | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | 0 | False | False | 0 | 0 | 0 | False | 0.503937 | 0 | False | False | False | 0 | False | False | 0.503937 | 0 | 0 | False | 0 | 0 | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False |
| Winds | Flute | 73 | wind.flutes.flute | 1 | 4 | 8 | C | 4/4 | 82 | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | 0 | False | False | 0 | 0 | 0 | False | 0.503937 | 0 | False | False | False | 0 | False | False | 0.503937 | 0 | 0 | False | 0 | 0 | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False |
| Winds | Flute | 73 | wind.flutes.flute | 1 | 4 | 9 | C | 4/4 | 82 | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | 0 | False | False | 0 | 0 | 0 | False | 0.503937 | 0.503937 | False | False | False | 0 | False | False | 0 | 0 | 0 | False | 0 | 0 | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False |
| Winds | Flute | 73 | wind.flutes.flute | 1 | 4 | 10 | C | 4/4 | 82 | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | 0 | False | False | 0 | 0 | 0 | False | 0 | 0.503937 | False | False | False | 0 | False | False | 0 | 0 | 0 | False | 0 | 0 | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False |
| Winds | Flute | 73 | wind.flutes.flute | 1 | 4 | 11 | C | 4/4 | 82 | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | 0 | False | False | 0 | 0 | 0 | False | 0.503937 | 0.503937 | False | False | False | 0 | False | False | 0 | 0 | 0 | False | 0 | 0 | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False |
| Winds | Flute | 73 | wind.flutes.flute | 1 | 4 | 12 | C | 4/4 | 82 | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | 0 | False | False | 0 | 0 | 0 | False | 0.503937 | 0.503937 | False | False | False | 0 | False | False | 0 | 0 | 0 | False | 0 | 0 | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False |
| Winds | Flute | 73 | wind.flutes.flute | 1 | 4 | 13 | C | 4/4 | 82 | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | 0 | False | False | 0.503937 | 0 | 0 | False | 0.503937 | 0 | False | False | False | 0 | False | False | 0 | 0 | 0 | False | 0 | 0 | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False |
| Winds | Flute | 73 | wind.flutes.flute | 1 | 4 | 14 | C | 4/4 | 82 | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | 0 | False | False | 0.503937 | 0 | 0 | False | 0.503937 | 0 | False | False | False | 0 | False | False | 0 | 0 | 0 | False | 0 | 0 | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False |
| Winds | Flute | 73 | wind.flutes.flute | 1 | 4 | 15 | C | 4/4 | 82 | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | 0 | False | False | 0.503937 | 0 | 0 | False | 0 | 0 | False | False | False | 0 | False | False | 0 | 0 | 0 | False | 0 | 0 | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False |
| Winds | Flute | 73 | wind.flutes.flute | 1 | 4 | 16 | C | 4/4 | 82 | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | 0 | False | False | 0.503937 | 0 | 0 | False | 0 | 0 | False | False | False | 0 | False | False | 0 | 0 | 0 | False | 0 | 0 | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False |
Some Falses are being printed as 0's, but that is just a visualization problem, internally they are Falses.
Getting back to the MIDI format is simple:
```python
deserialized = deserialization.file(serial,
SETTINGS,
save_as='result.mid') ## optional
```
%package -n python3-EPMS
Summary: The Expressive Polyphonic MIDI Serializer is a tool to turn MIDI files into a model-friendly, expressive representation for ML projects.
Provides: python-EPMS
BuildRequires: python3-devel
BuildRequires: python3-setuptools
BuildRequires: python3-pip
%description -n python3-EPMS
# EPMS: Expressive Polyphonic MIDI Serializer
## Introduction
The MIDI (Musical Instrument Digital Interface) protocol is extremely useful - and awesome - when we want to work with digital audio. One of its many utilities is in
Machine Learning, where it allows us to train data models to generate musical pieces.
However, the current literature lack a tool that transcribes MIDI data to a model-friendly structure while preserving
polyphony and the whole expressive dimension of music.
EPMS is being build to address that need. While simultaneously working on a
LSTM that predict and translates musical data between instruments, our [PET](https://www.inf.ufrgs.br/site/pet/) group from the [Institute of Informatics](https://inf.ufrgs.br) of the [Federal University of Rio Grande do Sul (UFRGS)](https://ufrgs.br) - Brazil, is maintaining and developing this repository.
With the advances of [MIDI 2.0](https://www.midi.org/midi-articles/details-about-midi-2-0-midi-ci-profiles-and-property-exchange) in mind, we're working on merging concepts from Music Information Retrieval (MIR) and Machine Learning (ML) to prepare the ground for future works that can popularize the feeling of making music.
## The Concept
The main idea behind the project is to represent a MIDI file in some format that is easy to manipulate and feed to a Machine Learning (ML) model, like a neural network.
Simply put, we transform the input file in a **Pandas DataFrame** where information is stored.
### Settings
There are currently 3 setting parameters for the serialization process:
1. **RESOLUTION** (int): the amount of *frames per beat* to be recorded.
2. **KEYBOARD_SIZE** (int): the amount on *notes* that we'll be tracked by the serializer.
3. **KEYBOARD_OFFSET** (int): the *MIDI value* of the first key in our keyboard
\
For example, we can set the serial parameters like
```python
SETTINGS = {
'RESOLUTION': 16,
'KEYBOARD_SIZE': 13,
'KEYBOARD_OFFSET': 60
}
```
that will be internally transformed into a serie.
| SETTING | VALUE|
|:-----------|---|
| RESOLUTION | 16|
| KEYBOARD_SIZE | 13 |
| KEYBOARD_OFFSET | 60 |
### Serialization
Each row in the serial DataFrame corresponds to a **frame** of the song
and each frame is formed in a set of different *blocks*:
* the **Instrument Block**, that stores information about instrument qualities
| NAME | INSTRUMENT | MIDI_PROGRAM | SOUND |
|:-------|:-------------|---------------:|:------------------|
* the **Metric Block**, that will be our time reference across the song
| MEASURE | BEAT | FRAME |
|:----------|:-------|---------|
* the **Environment Block**, that provides the musical context of one's model environment
| ORIGINAL_KS | TS | TEMPO |
|:--------------|------|---------|
* and the **Performance Block**, that is a *piano-roll*-like representation that specifies one column for every
key in our model's 'artificial piano'. In this block we focus on representing the main
expressive characteristics of human musical performances, such as *dynamics*, *syncopations* and *articulations*.
\
\
With the settings values as shown before,
the Performance Block would be:
| C4 | C#4 | D4 | E-4 | E4 | F4 | F#4 | G4 | G#4 | A4 | B-4 | B4 | C5 |
|:------|-------|-------|---------|-------|-------|-------|----|-----|----|-----|----|----|
\
\
Finally, our frames will contain MIDI data in the following columns:
| NAME | INSTRUMENT | MIDI_PROGRAM | SOUND | MEASURE | BEAT | FRAME | ORIGINAL_KS | TS | TEMPO | A0 | B-0 | B0 | C1 | C#1 | D1 | E-1 | E1 | F1 | F#1 | G1 | G#1 | A1 | B-1 | B1 | C2 | C#2 | D2 | E-2 | E2 | F2 | F#2 | G2 | G#2 | A2 | B-2 | B2 | C3 | C#3 | D3 | E-3 | E3 | F3 | F#3 | G3 | G#3 | A3 | B-3 | B3 | C4 | C#4 | D4 | E-4 | E4 | F4 | F#4 | G4 | G#4 | A4 | B-4 | B4 | C5 | C#5 | D5 | E-5 | E5 | F5 | F#5 | G5 | G#5 | A5 | B-5 | B5 | C6 | C#6 | D6 | E-6 | E6 | F6 | F#6 | G6 | G#6 | A6 | B-6 | B6 | C7 | C#7 | D7 | E-7 | E7 | F7 | F#7 | G7 | G#7 | A7 | B-7 | B7 | C8 |
|:-------|:-------------|---------------:|:------------------|----------:|-------:|--------:|:--------------|:-----|--------:|:------|:------|:------|:------|:------|:------|:------|:------|:------|:------|:------|:------|:------|:------|:------|:------|:------|:------|:------|:------|:------|:------|:------|:------|:------|:------|:------|:------|:------|:------|:------|:------|:------|:------|:------|:------|:------|:------|:------|:------|:------|:------|:------|:------|:------|:------|:------|:------|:----------------------------|:------|:------|:----------------------------|:----------------------------|:----------------------------|:------|:----------------------------|:----------------------------|:------|:------|:------|:----------------------------|:------|:------|:----------------------------|:----------------------------|:----------------------------|:------|:----------------------------|:----------------------------|:------|:------|:------|:------|:------|:------|:------|:------|:------|:------|:------|:------|:------|:------|:------|:------|:------|:------|:------|
### Serialization Diagram

## Performance Block (PB) Representation
As a group project decision, the values stored in the PB are formatted in a way that we can
easily turn one row (one frame) into a **Multi Hot Encoded Performance (MHEP) frame**, that can be
used as input vector for a model that uses Binary Cross Entropy Loss (BCE Loss) to get a rapidly convergent
*'what notes should I play?'* kind of learning. The main point of this decision is that this way we
treat the playing problem as a Classification Problem, that is easier to work on.
In that sense, the data inside the PB is represented in a way where different data types provide
different semantic meaning for a note's frame in the performance encoding:
> ### **Boolean**
>
> **False**: represent silence, the note is not being played in the frame.
> ### Float32
>
> *****value*****: represent that this note is playing in the frame with current scalar velocity *****value*****.
* ****
## Usage and Example
First of all, you must import the package and define the settings for the serializer.
```python
from EMS import serialization, deserialization
SETTINGS = {
'RESOLUTION': 16,
'KEYBOARD_SIZE': 88,
'KEYBOARD_OFFSET': 21
}
```
Then, to serialize:
```python
serial = serialization.file('test_midi_files/George Benson - Breezin.mid',
SETTINGS,
save_as='serial.pkl') ## optional
```
The following is the score for the first flute measure of George Bensons - Breezin:

The serial version of this measure can be seen below, it is a Pandas DataFrame with dimensions (64, 98):
| NAME | INSTRUMENT | MIDI_PROGRAM | SOUND | MEASURE | BEAT | FRAME | ORIGINAL_KS | TS | TEMPO | A0 | B-0 | B0 | C1 | C#1 | D1 | E-1 | E1 | F1 | F#1 | G1 | G#1 | A1 | B-1 | B1 | C2 | C#2 | D2 | E-2 | E2 | F2 | F#2 | G2 | G#2 | A2 | B-2 | B2 | C3 | C#3 | D3 | E-3 | E3 | F3 | F#3 | G3 | G#3 | A3 | B-3 | B3 | C4 | C#4 | D4 | E-4 | E4 | F4 | F#4 | G4 | G#4 | A4 | B-4 | B4 | C5 | C#5 | D5 | E-5 | E5 | F5 | F#5 | G5 | G#5 | A5 | B-5 | B5 | C6 | C#6 | D6 | E-6 | E6 | F6 | F#6 | G6 | G#6 | A6 | B-6 | B6 | C7 | C#7 | D7 | E-7 | E7 | F7 | F#7 | G7 | G#7 | A7 | B-7 | B7 | C8 |
|:-------|:-------------|---------------:|:------------------|----------:|-------:|--------:|:--------------|:-----|--------:|:------|:------|:------|:------|:------|:------|:------|:------|:------|:------|:------|:------|:------|:------|:------|:------|:------|:------|:------|:------|:------|:------|:------|:------|:------|:------|:------|:------|:------|:------|:------|:------|:------|:------|:------|:------|:------|:------|:------|:------|:------|:------|:------|:------|:------|:------|:------|:------|---------:|:------|:------|---------:|---------:|---------:|:------|---------:|---------:|:------|:------|:------|---------:|:------|:------|---------:|---------:|---------:|:------|---------:|---------:|:------|:------|:------|:------|:------|:------|:------|:------|:------|:------|:------|:------|:------|:------|:------|:------|:------|:------|:------|
| Winds | Flute | 73 | wind.flutes.flute | 1 | 1 | 1 | C | 4/4 | 82 | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | 0 | False | False | 0 | 0.385827 | 0 | False | 0 | 0 | False | False | False | 0 | False | False | 0 | 0 | 0 | False | 0 | 0 | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False |
| Winds | Flute | 73 | wind.flutes.flute | 1 | 1 | 2 | C | 4/4 | 82 | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | 0 | False | False | 0 | 0.385827 | 0 | False | 0 | 0 | False | False | False | 0 | False | False | 0 | 0 | 0 | False | 0 | 0 | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False |
| Winds | Flute | 73 | wind.flutes.flute | 1 | 1 | 3 | C | 4/4 | 82 | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | 0 | False | False | 0 | 0.385827 | 0 | False | 0 | 0 | False | False | False | 0 | False | False | 0 | 0 | 0 | False | 0 | 0 | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False |
| Winds | Flute | 73 | wind.flutes.flute | 1 | 1 | 4 | C | 4/4 | 82 | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | 0 | False | False | 0 | 0.385827 | 0 | False | 0 | 0 | False | False | False | 0 | False | False | 0 | 0 | 0 | False | 0 | 0 | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False |
| Winds | Flute | 73 | wind.flutes.flute | 1 | 1 | 5 | C | 4/4 | 82 | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | 0 | False | False | 0 | 0 | 0.385827 | False | 0 | 0 | False | False | False | 0 | False | False | 0 | 0 | 0 | False | 0 | 0 | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False |
| Winds | Flute | 73 | wind.flutes.flute | 1 | 1 | 6 | C | 4/4 | 82 | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | 0 | False | False | 0 | 0.503937 | 0.385827 | False | 0 | 0 | False | False | False | 0 | False | False | 0 | 0 | 0 | False | 0 | 0 | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False |
| Winds | Flute | 73 | wind.flutes.flute | 1 | 1 | 7 | C | 4/4 | 82 | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | 0 | False | False | 0 | 0.503937 | 0.385827 | False | 0 | 0 | False | False | False | 0 | False | False | 0 | 0 | 0 | False | 0 | 0 | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False |
| Winds | Flute | 73 | wind.flutes.flute | 1 | 1 | 8 | C | 4/4 | 82 | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | 0 | False | False | 0 | 0.503937 | 0.385827 | False | 0 | 0 | False | False | False | 0 | False | False | 0 | 0 | 0 | False | 0 | 0 | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False |
| Winds | Flute | 73 | wind.flutes.flute | 1 | 1 | 9 | C | 4/4 | 82 | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | 0.503937 | False | False | 0 | 0.503937 | 0 | False | 0 | 0 | False | False | False | 0 | False | False | 0 | 0 | 0 | False | 0 | 0 | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False |
| Winds | Flute | 73 | wind.flutes.flute | 1 | 1 | 10 | C | 4/4 | 82 | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | 0.503937 | False | False | 0 | 0 | 0 | False | 0 | 0 | False | False | False | 0 | False | False | 0 | 0 | 0 | False | 0 | 0 | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False |
| Winds | Flute | 73 | wind.flutes.flute | 1 | 1 | 11 | C | 4/4 | 82 | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | 0.503937 | False | False | 0 | 0 | 0 | False | 0 | 0 | False | False | False | 0 | False | False | 0 | 0.385827 | 0 | False | 0 | 0 | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False |
| Winds | Flute | 73 | wind.flutes.flute | 1 | 1 | 12 | C | 4/4 | 82 | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | 0.503937 | False | False | 0 | 0 | 0 | False | 0 | 0 | False | False | False | 0 | False | False | 0 | 0.385827 | 0 | False | 0 | 0 | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False |
| Winds | Flute | 73 | wind.flutes.flute | 1 | 1 | 13 | C | 4/4 | 82 | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | 0 | False | False | 0 | 0 | 0 | False | 0 | 0 | False | False | False | 0 | False | False | 0 | 0.385827 | 0.503937 | False | 0 | 0 | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False |
| Winds | Flute | 73 | wind.flutes.flute | 1 | 1 | 14 | C | 4/4 | 82 | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | 0 | False | False | 0 | 0 | 0 | False | 0 | 0 | False | False | False | 0 | False | False | 0 | 0.385827 | 0.503937 | False | 0 | 0 | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False |
| Winds | Flute | 73 | wind.flutes.flute | 1 | 1 | 15 | C | 4/4 | 82 | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | 0 | False | False | 0 | 0 | 0 | False | 0 | 0 | False | False | False | 0 | False | False | 0 | 0 | 0.503937 | False | 0 | 0 | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False |
| Winds | Flute | 73 | wind.flutes.flute | 1 | 1 | 16 | C | 4/4 | 82 | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | 0 | False | False | 0 | 0 | 0 | False | 0 | 0 | False | False | False | 0 | False | False | 0 | 0 | 0.503937 | False | 0 | 0 | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False |
| Winds | Flute | 73 | wind.flutes.flute | 1 | 2 | 1 | C | 4/4 | 82 | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | 0 | False | False | 0 | 0 | 0 | False | 0 | 0 | False | False | False | 0 | False | False | 0 | 0.385827 | 0 | False | 0 | 0 | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False |
| Winds | Flute | 73 | wind.flutes.flute | 1 | 2 | 2 | C | 4/4 | 82 | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | 0 | False | False | 0 | 0 | 0 | False | 0 | 0 | False | False | False | 0 | False | False | 0 | 0.385827 | 0 | False | 0 | 0 | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False |
| Winds | Flute | 73 | wind.flutes.flute | 1 | 2 | 3 | C | 4/4 | 82 | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | 0 | False | False | 0 | 0 | 0 | False | 0 | 0 | False | False | False | 0 | False | False | 0 | 0.385827 | 0 | False | 0 | 0 | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False |
| Winds | Flute | 73 | wind.flutes.flute | 1 | 2 | 4 | C | 4/4 | 82 | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | 0 | False | False | 0 | 0 | 0 | False | 0 | 0 | False | False | False | 0 | False | False | 0 | 0.385827 | 0 | False | 0 | 0 | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False |
| Winds | Flute | 73 | wind.flutes.flute | 1 | 2 | 5 | C | 4/4 | 82 | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | 0 | False | False | 0 | 0 | 0 | False | 0 | 0 | False | False | False | 0.503937 | False | False | 0 | 0 | 0 | False | 0 | 0 | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False |
| Winds | Flute | 73 | wind.flutes.flute | 1 | 2 | 6 | C | 4/4 | 82 | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | 0 | False | False | 0 | 0.503937 | 0 | False | 0 | 0 | False | False | False | 0.503937 | False | False | 0 | 0 | 0 | False | 0 | 0 | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False |
| Winds | Flute | 73 | wind.flutes.flute | 1 | 2 | 7 | C | 4/4 | 82 | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | 0 | False | False | 0 | 0.503937 | 0 | False | 0 | 0 | False | False | False | 0.503937 | False | False | 0 | 0 | 0 | False | 0 | 0 | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False |
| Winds | Flute | 73 | wind.flutes.flute | 1 | 2 | 8 | C | 4/4 | 82 | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | 0 | False | False | 0 | 0.503937 | 0 | False | 0 | 0 | False | False | False | 0.503937 | False | False | 0 | 0 | 0 | False | 0 | 0 | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False |
| Winds | Flute | 73 | wind.flutes.flute | 1 | 2 | 9 | C | 4/4 | 82 | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | 0 | False | False | 0 | 0.503937 | 0.503937 | False | 0 | 0 | False | False | False | 0 | False | False | 0 | 0 | 0 | False | 0 | 0 | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False |
| Winds | Flute | 73 | wind.flutes.flute | 1 | 2 | 10 | C | 4/4 | 82 | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | 0 | False | False | 0 | 0 | 0.503937 | False | 0 | 0 | False | False | False | 0 | False | False | 0 | 0 | 0 | False | 0 | 0 | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False |
| Winds | Flute | 73 | wind.flutes.flute | 1 | 2 | 11 | C | 4/4 | 82 | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | 0 | False | False | 0 | 0.503937 | 0.503937 | False | 0 | 0 | False | False | False | 0 | False | False | 0 | 0 | 0 | False | 0 | 0 | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False |
| Winds | Flute | 73 | wind.flutes.flute | 1 | 2 | 12 | C | 4/4 | 82 | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | 0 | False | False | 0 | 0.503937 | 0.503937 | False | 0 | 0 | False | False | False | 0 | False | False | 0 | 0 | 0 | False | 0 | 0 | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False |
| Winds | Flute | 73 | wind.flutes.flute | 1 | 2 | 13 | C | 4/4 | 82 | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | 0.503937 | False | False | 0 | 0.503937 | 0 | False | 0 | 0 | False | False | False | 0 | False | False | 0 | 0 | 0 | False | 0 | 0 | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False |
| Winds | Flute | 73 | wind.flutes.flute | 1 | 2 | 14 | C | 4/4 | 82 | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | 0.503937 | False | False | 0 | 0.503937 | 0 | False | 0 | 0 | False | False | False | 0 | False | False | 0 | 0 | 0 | False | 0 | 0 | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False |
| Winds | Flute | 73 | wind.flutes.flute | 1 | 2 | 15 | C | 4/4 | 82 | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | 0.503937 | False | False | 0 | 0 | 0 | False | 0 | 0 | False | False | False | 0 | False | False | 0 | 0 | 0 | False | 0 | 0 | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False |
| Winds | Flute | 73 | wind.flutes.flute | 1 | 2 | 16 | C | 4/4 | 82 | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | 0.503937 | False | False | 0 | 0 | 0 | False | 0 | 0 | False | False | False | 0 | False | False | 0 | 0 | 0 | False | 0 | 0 | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False |
| Winds | Flute | 73 | wind.flutes.flute | 1 | 3 | 1 | C | 4/4 | 82 | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | 0 | False | False | 0 | 0 | 0 | False | 0.629921 | 0 | False | False | False | 0 | False | False | 0 | 0 | 0 | False | 0 | 0 | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False |
| Winds | Flute | 73 | wind.flutes.flute | 1 | 3 | 2 | C | 4/4 | 82 | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | 0 | False | False | 0 | 0 | 0 | False | 0.629921 | 0 | False | False | False | 0 | False | False | 0 | 0 | 0 | False | 0 | 0 | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False |
| Winds | Flute | 73 | wind.flutes.flute | 1 | 3 | 3 | C | 4/4 | 82 | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | 0 | False | False | 0 | 0 | 0 | False | 0.629921 | 0 | False | False | False | 0 | False | False | 0 | 0 | 0 | False | 0 | 0 | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False |
| Winds | Flute | 73 | wind.flutes.flute | 1 | 3 | 4 | C | 4/4 | 82 | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | 0 | False | False | 0 | 0 | 0 | False | 0.629921 | 0 | False | False | False | 0 | False | False | 0 | 0 | 0 | False | 0 | 0 | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False |
| Winds | Flute | 73 | wind.flutes.flute | 1 | 3 | 5 | C | 4/4 | 82 | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | 0 | False | False | 0 | 0 | 0 | False | 0 | 0.629921 | False | False | False | 0 | False | False | 0 | 0 | 0 | False | 0 | 0 | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False |
| Winds | Flute | 73 | wind.flutes.flute | 1 | 3 | 6 | C | 4/4 | 82 | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | 0 | False | False | 0 | 0 | 0 | False | 0.629921 | 0.629921 | False | False | False | 0 | False | False | 0 | 0 | 0 | False | 0 | 0 | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False |
| Winds | Flute | 73 | wind.flutes.flute | 1 | 3 | 7 | C | 4/4 | 82 | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | 0 | False | False | 0 | 0 | 0 | False | 0.629921 | 0.629921 | False | False | False | 0 | False | False | 0 | 0 | 0 | False | 0 | 0 | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False |
| Winds | Flute | 73 | wind.flutes.flute | 1 | 3 | 8 | C | 4/4 | 82 | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | 0 | False | False | 0 | 0 | 0 | False | 0.629921 | 0.629921 | False | False | False | 0 | False | False | 0 | 0 | 0 | False | 0 | 0 | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False |
| Winds | Flute | 73 | wind.flutes.flute | 1 | 3 | 9 | C | 4/4 | 82 | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | 0 | False | False | 0.503937 | 0 | 0 | False | 0.629921 | 0 | False | False | False | 0 | False | False | 0 | 0 | 0 | False | 0 | 0 | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False |
| Winds | Flute | 73 | wind.flutes.flute | 1 | 3 | 10 | C | 4/4 | 82 | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | 0 | False | False | 0.503937 | 0 | 0 | False | 0 | 0 | False | False | False | 0 | False | False | 0 | 0 | 0 | False | 0 | 0 | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False |
| Winds | Flute | 73 | wind.flutes.flute | 1 | 3 | 11 | C | 4/4 | 82 | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | 0 | False | False | 0.503937 | 0 | 0 | False | 0 | 0 | False | False | False | 0 | False | False | 0 | 0 | 0 | False | 0.503937 | 0 | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False |
| Winds | Flute | 73 | wind.flutes.flute | 1 | 3 | 12 | C | 4/4 | 82 | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | 0 | False | False | 0.503937 | 0 | 0 | False | 0 | 0 | False | False | False | 0 | False | False | 0 | 0 | 0 | False | 0.503937 | 0 | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False |
| Winds | Flute | 73 | wind.flutes.flute | 1 | 3 | 13 | C | 4/4 | 82 | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | 0 | False | False | 0 | 0 | 0 | False | 0 | 0 | False | False | False | 0 | False | False | 0 | 0 | 0 | False | 0.503937 | 0.503937 | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False |
| Winds | Flute | 73 | wind.flutes.flute | 1 | 3 | 14 | C | 4/4 | 82 | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | 0 | False | False | 0 | 0 | 0 | False | 0 | 0 | False | False | False | 0 | False | False | 0 | 0 | 0 | False | 0.503937 | 0.503937 | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False |
| Winds | Flute | 73 | wind.flutes.flute | 1 | 3 | 15 | C | 4/4 | 82 | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | 0 | False | False | 0 | 0 | 0 | False | 0 | 0 | False | False | False | 0 | False | False | 0 | 0 | 0 | False | 0 | 0.503937 | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False |
| Winds | Flute | 73 | wind.flutes.flute | 1 | 3 | 16 | C | 4/4 | 82 | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | 0 | False | False | 0 | 0 | 0 | False | 0 | 0 | False | False | False | 0 | False | False | 0 | 0 | 0 | False | 0 | 0.503937 | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False |
| Winds | Flute | 73 | wind.flutes.flute | 1 | 4 | 1 | C | 4/4 | 82 | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | 0 | False | False | 0 | 0 | 0 | False | 0 | 0 | False | False | False | 0 | False | False | 0 | 0 | 0 | False | 0.503937 | 0 | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False |
| Winds | Flute | 73 | wind.flutes.flute | 1 | 4 | 2 | C | 4/4 | 82 | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | 0 | False | False | 0 | 0 | 0 | False | 0 | 0 | False | False | False | 0 | False | False | 0 | 0 | 0 | False | 0.503937 | 0 | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False |
| Winds | Flute | 73 | wind.flutes.flute | 1 | 4 | 3 | C | 4/4 | 82 | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | 0 | False | False | 0 | 0 | 0 | False | 0 | 0 | False | False | False | 0 | False | False | 0 | 0 | 0 | False | 0.503937 | 0 | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False |
| Winds | Flute | 73 | wind.flutes.flute | 1 | 4 | 4 | C | 4/4 | 82 | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | 0 | False | False | 0 | 0 | 0 | False | 0 | 0 | False | False | False | 0 | False | False | 0 | 0 | 0 | False | 0.503937 | 0 | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False |
| Winds | Flute | 73 | wind.flutes.flute | 1 | 4 | 5 | C | 4/4 | 82 | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | 0 | False | False | 0 | 0 | 0 | False | 0 | 0 | False | False | False | 0 | False | False | 0.503937 | 0 | 0 | False | 0 | 0 | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False |
| Winds | Flute | 73 | wind.flutes.flute | 1 | 4 | 6 | C | 4/4 | 82 | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | 0 | False | False | 0 | 0 | 0 | False | 0.503937 | 0 | False | False | False | 0 | False | False | 0.503937 | 0 | 0 | False | 0 | 0 | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False |
| Winds | Flute | 73 | wind.flutes.flute | 1 | 4 | 7 | C | 4/4 | 82 | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | 0 | False | False | 0 | 0 | 0 | False | 0.503937 | 0 | False | False | False | 0 | False | False | 0.503937 | 0 | 0 | False | 0 | 0 | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False |
| Winds | Flute | 73 | wind.flutes.flute | 1 | 4 | 8 | C | 4/4 | 82 | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | 0 | False | False | 0 | 0 | 0 | False | 0.503937 | 0 | False | False | False | 0 | False | False | 0.503937 | 0 | 0 | False | 0 | 0 | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False |
| Winds | Flute | 73 | wind.flutes.flute | 1 | 4 | 9 | C | 4/4 | 82 | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | 0 | False | False | 0 | 0 | 0 | False | 0.503937 | 0.503937 | False | False | False | 0 | False | False | 0 | 0 | 0 | False | 0 | 0 | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False |
| Winds | Flute | 73 | wind.flutes.flute | 1 | 4 | 10 | C | 4/4 | 82 | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | 0 | False | False | 0 | 0 | 0 | False | 0 | 0.503937 | False | False | False | 0 | False | False | 0 | 0 | 0 | False | 0 | 0 | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False |
| Winds | Flute | 73 | wind.flutes.flute | 1 | 4 | 11 | C | 4/4 | 82 | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | 0 | False | False | 0 | 0 | 0 | False | 0.503937 | 0.503937 | False | False | False | 0 | False | False | 0 | 0 | 0 | False | 0 | 0 | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False |
| Winds | Flute | 73 | wind.flutes.flute | 1 | 4 | 12 | C | 4/4 | 82 | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | 0 | False | False | 0 | 0 | 0 | False | 0.503937 | 0.503937 | False | False | False | 0 | False | False | 0 | 0 | 0 | False | 0 | 0 | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False |
| Winds | Flute | 73 | wind.flutes.flute | 1 | 4 | 13 | C | 4/4 | 82 | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | 0 | False | False | 0.503937 | 0 | 0 | False | 0.503937 | 0 | False | False | False | 0 | False | False | 0 | 0 | 0 | False | 0 | 0 | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False |
| Winds | Flute | 73 | wind.flutes.flute | 1 | 4 | 14 | C | 4/4 | 82 | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | 0 | False | False | 0.503937 | 0 | 0 | False | 0.503937 | 0 | False | False | False | 0 | False | False | 0 | 0 | 0 | False | 0 | 0 | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False |
| Winds | Flute | 73 | wind.flutes.flute | 1 | 4 | 15 | C | 4/4 | 82 | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | 0 | False | False | 0.503937 | 0 | 0 | False | 0 | 0 | False | False | False | 0 | False | False | 0 | 0 | 0 | False | 0 | 0 | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False |
| Winds | Flute | 73 | wind.flutes.flute | 1 | 4 | 16 | C | 4/4 | 82 | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | 0 | False | False | 0.503937 | 0 | 0 | False | 0 | 0 | False | False | False | 0 | False | False | 0 | 0 | 0 | False | 0 | 0 | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False |
Some Falses are being printed as 0's, but that is just a visualization problem, internally they are Falses.
Getting back to the MIDI format is simple:
```python
deserialized = deserialization.file(serial,
SETTINGS,
save_as='result.mid') ## optional
```
%package help
Summary: Development documents and examples for EPMS
Provides: python3-EPMS-doc
%description help
# EPMS: Expressive Polyphonic MIDI Serializer
## Introduction
The MIDI (Musical Instrument Digital Interface) protocol is extremely useful - and awesome - when we want to work with digital audio. One of its many utilities is in
Machine Learning, where it allows us to train data models to generate musical pieces.
However, the current literature lack a tool that transcribes MIDI data to a model-friendly structure while preserving
polyphony and the whole expressive dimension of music.
EPMS is being build to address that need. While simultaneously working on a
LSTM that predict and translates musical data between instruments, our [PET](https://www.inf.ufrgs.br/site/pet/) group from the [Institute of Informatics](https://inf.ufrgs.br) of the [Federal University of Rio Grande do Sul (UFRGS)](https://ufrgs.br) - Brazil, is maintaining and developing this repository.
With the advances of [MIDI 2.0](https://www.midi.org/midi-articles/details-about-midi-2-0-midi-ci-profiles-and-property-exchange) in mind, we're working on merging concepts from Music Information Retrieval (MIR) and Machine Learning (ML) to prepare the ground for future works that can popularize the feeling of making music.
## The Concept
The main idea behind the project is to represent a MIDI file in some format that is easy to manipulate and feed to a Machine Learning (ML) model, like a neural network.
Simply put, we transform the input file in a **Pandas DataFrame** where information is stored.
### Settings
There are currently 3 setting parameters for the serialization process:
1. **RESOLUTION** (int): the amount of *frames per beat* to be recorded.
2. **KEYBOARD_SIZE** (int): the amount on *notes* that we'll be tracked by the serializer.
3. **KEYBOARD_OFFSET** (int): the *MIDI value* of the first key in our keyboard
\
For example, we can set the serial parameters like
```python
SETTINGS = {
'RESOLUTION': 16,
'KEYBOARD_SIZE': 13,
'KEYBOARD_OFFSET': 60
}
```
that will be internally transformed into a serie.
| SETTING | VALUE|
|:-----------|---|
| RESOLUTION | 16|
| KEYBOARD_SIZE | 13 |
| KEYBOARD_OFFSET | 60 |
### Serialization
Each row in the serial DataFrame corresponds to a **frame** of the song
and each frame is formed in a set of different *blocks*:
* the **Instrument Block**, that stores information about instrument qualities
| NAME | INSTRUMENT | MIDI_PROGRAM | SOUND |
|:-------|:-------------|---------------:|:------------------|
* the **Metric Block**, that will be our time reference across the song
| MEASURE | BEAT | FRAME |
|:----------|:-------|---------|
* the **Environment Block**, that provides the musical context of one's model environment
| ORIGINAL_KS | TS | TEMPO |
|:--------------|------|---------|
* and the **Performance Block**, that is a *piano-roll*-like representation that specifies one column for every
key in our model's 'artificial piano'. In this block we focus on representing the main
expressive characteristics of human musical performances, such as *dynamics*, *syncopations* and *articulations*.
\
\
With the settings values as shown before,
the Performance Block would be:
| C4 | C#4 | D4 | E-4 | E4 | F4 | F#4 | G4 | G#4 | A4 | B-4 | B4 | C5 |
|:------|-------|-------|---------|-------|-------|-------|----|-----|----|-----|----|----|
\
\
Finally, our frames will contain MIDI data in the following columns:
| NAME | INSTRUMENT | MIDI_PROGRAM | SOUND | MEASURE | BEAT | FRAME | ORIGINAL_KS | TS | TEMPO | A0 | B-0 | B0 | C1 | C#1 | D1 | E-1 | E1 | F1 | F#1 | G1 | G#1 | A1 | B-1 | B1 | C2 | C#2 | D2 | E-2 | E2 | F2 | F#2 | G2 | G#2 | A2 | B-2 | B2 | C3 | C#3 | D3 | E-3 | E3 | F3 | F#3 | G3 | G#3 | A3 | B-3 | B3 | C4 | C#4 | D4 | E-4 | E4 | F4 | F#4 | G4 | G#4 | A4 | B-4 | B4 | C5 | C#5 | D5 | E-5 | E5 | F5 | F#5 | G5 | G#5 | A5 | B-5 | B5 | C6 | C#6 | D6 | E-6 | E6 | F6 | F#6 | G6 | G#6 | A6 | B-6 | B6 | C7 | C#7 | D7 | E-7 | E7 | F7 | F#7 | G7 | G#7 | A7 | B-7 | B7 | C8 |
|:-------|:-------------|---------------:|:------------------|----------:|-------:|--------:|:--------------|:-----|--------:|:------|:------|:------|:------|:------|:------|:------|:------|:------|:------|:------|:------|:------|:------|:------|:------|:------|:------|:------|:------|:------|:------|:------|:------|:------|:------|:------|:------|:------|:------|:------|:------|:------|:------|:------|:------|:------|:------|:------|:------|:------|:------|:------|:------|:------|:------|:------|:------|:----------------------------|:------|:------|:----------------------------|:----------------------------|:----------------------------|:------|:----------------------------|:----------------------------|:------|:------|:------|:----------------------------|:------|:------|:----------------------------|:----------------------------|:----------------------------|:------|:----------------------------|:----------------------------|:------|:------|:------|:------|:------|:------|:------|:------|:------|:------|:------|:------|:------|:------|:------|:------|:------|:------|:------|
### Serialization Diagram

## Performance Block (PB) Representation
As a group project decision, the values stored in the PB are formatted in a way that we can
easily turn one row (one frame) into a **Multi Hot Encoded Performance (MHEP) frame**, that can be
used as input vector for a model that uses Binary Cross Entropy Loss (BCE Loss) to get a rapidly convergent
*'what notes should I play?'* kind of learning. The main point of this decision is that this way we
treat the playing problem as a Classification Problem, that is easier to work on.
In that sense, the data inside the PB is represented in a way where different data types provide
different semantic meaning for a note's frame in the performance encoding:
> ### **Boolean**
>
> **False**: represent silence, the note is not being played in the frame.
> ### Float32
>
> *****value*****: represent that this note is playing in the frame with current scalar velocity *****value*****.
* ****
## Usage and Example
First of all, you must import the package and define the settings for the serializer.
```python
from EMS import serialization, deserialization
SETTINGS = {
'RESOLUTION': 16,
'KEYBOARD_SIZE': 88,
'KEYBOARD_OFFSET': 21
}
```
Then, to serialize:
```python
serial = serialization.file('test_midi_files/George Benson - Breezin.mid',
SETTINGS,
save_as='serial.pkl') ## optional
```
The following is the score for the first flute measure of George Bensons - Breezin:

The serial version of this measure can be seen below, it is a Pandas DataFrame with dimensions (64, 98):
| NAME | INSTRUMENT | MIDI_PROGRAM | SOUND | MEASURE | BEAT | FRAME | ORIGINAL_KS | TS | TEMPO | A0 | B-0 | B0 | C1 | C#1 | D1 | E-1 | E1 | F1 | F#1 | G1 | G#1 | A1 | B-1 | B1 | C2 | C#2 | D2 | E-2 | E2 | F2 | F#2 | G2 | G#2 | A2 | B-2 | B2 | C3 | C#3 | D3 | E-3 | E3 | F3 | F#3 | G3 | G#3 | A3 | B-3 | B3 | C4 | C#4 | D4 | E-4 | E4 | F4 | F#4 | G4 | G#4 | A4 | B-4 | B4 | C5 | C#5 | D5 | E-5 | E5 | F5 | F#5 | G5 | G#5 | A5 | B-5 | B5 | C6 | C#6 | D6 | E-6 | E6 | F6 | F#6 | G6 | G#6 | A6 | B-6 | B6 | C7 | C#7 | D7 | E-7 | E7 | F7 | F#7 | G7 | G#7 | A7 | B-7 | B7 | C8 |
|:-------|:-------------|---------------:|:------------------|----------:|-------:|--------:|:--------------|:-----|--------:|:------|:------|:------|:------|:------|:------|:------|:------|:------|:------|:------|:------|:------|:------|:------|:------|:------|:------|:------|:------|:------|:------|:------|:------|:------|:------|:------|:------|:------|:------|:------|:------|:------|:------|:------|:------|:------|:------|:------|:------|:------|:------|:------|:------|:------|:------|:------|:------|---------:|:------|:------|---------:|---------:|---------:|:------|---------:|---------:|:------|:------|:------|---------:|:------|:------|---------:|---------:|---------:|:------|---------:|---------:|:------|:------|:------|:------|:------|:------|:------|:------|:------|:------|:------|:------|:------|:------|:------|:------|:------|:------|:------|
| Winds | Flute | 73 | wind.flutes.flute | 1 | 1 | 1 | C | 4/4 | 82 | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | 0 | False | False | 0 | 0.385827 | 0 | False | 0 | 0 | False | False | False | 0 | False | False | 0 | 0 | 0 | False | 0 | 0 | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False |
| Winds | Flute | 73 | wind.flutes.flute | 1 | 1 | 2 | C | 4/4 | 82 | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | 0 | False | False | 0 | 0.385827 | 0 | False | 0 | 0 | False | False | False | 0 | False | False | 0 | 0 | 0 | False | 0 | 0 | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False |
| Winds | Flute | 73 | wind.flutes.flute | 1 | 1 | 3 | C | 4/4 | 82 | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | 0 | False | False | 0 | 0.385827 | 0 | False | 0 | 0 | False | False | False | 0 | False | False | 0 | 0 | 0 | False | 0 | 0 | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False |
| Winds | Flute | 73 | wind.flutes.flute | 1 | 1 | 4 | C | 4/4 | 82 | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | 0 | False | False | 0 | 0.385827 | 0 | False | 0 | 0 | False | False | False | 0 | False | False | 0 | 0 | 0 | False | 0 | 0 | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False |
| Winds | Flute | 73 | wind.flutes.flute | 1 | 1 | 5 | C | 4/4 | 82 | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | 0 | False | False | 0 | 0 | 0.385827 | False | 0 | 0 | False | False | False | 0 | False | False | 0 | 0 | 0 | False | 0 | 0 | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False |
| Winds | Flute | 73 | wind.flutes.flute | 1 | 1 | 6 | C | 4/4 | 82 | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | 0 | False | False | 0 | 0.503937 | 0.385827 | False | 0 | 0 | False | False | False | 0 | False | False | 0 | 0 | 0 | False | 0 | 0 | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False |
| Winds | Flute | 73 | wind.flutes.flute | 1 | 1 | 7 | C | 4/4 | 82 | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | 0 | False | False | 0 | 0.503937 | 0.385827 | False | 0 | 0 | False | False | False | 0 | False | False | 0 | 0 | 0 | False | 0 | 0 | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False |
| Winds | Flute | 73 | wind.flutes.flute | 1 | 1 | 8 | C | 4/4 | 82 | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | 0 | False | False | 0 | 0.503937 | 0.385827 | False | 0 | 0 | False | False | False | 0 | False | False | 0 | 0 | 0 | False | 0 | 0 | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False |
| Winds | Flute | 73 | wind.flutes.flute | 1 | 1 | 9 | C | 4/4 | 82 | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | 0.503937 | False | False | 0 | 0.503937 | 0 | False | 0 | 0 | False | False | False | 0 | False | False | 0 | 0 | 0 | False | 0 | 0 | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False |
| Winds | Flute | 73 | wind.flutes.flute | 1 | 1 | 10 | C | 4/4 | 82 | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | 0.503937 | False | False | 0 | 0 | 0 | False | 0 | 0 | False | False | False | 0 | False | False | 0 | 0 | 0 | False | 0 | 0 | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False |
| Winds | Flute | 73 | wind.flutes.flute | 1 | 1 | 11 | C | 4/4 | 82 | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | 0.503937 | False | False | 0 | 0 | 0 | False | 0 | 0 | False | False | False | 0 | False | False | 0 | 0.385827 | 0 | False | 0 | 0 | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False |
| Winds | Flute | 73 | wind.flutes.flute | 1 | 1 | 12 | C | 4/4 | 82 | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | 0.503937 | False | False | 0 | 0 | 0 | False | 0 | 0 | False | False | False | 0 | False | False | 0 | 0.385827 | 0 | False | 0 | 0 | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False |
| Winds | Flute | 73 | wind.flutes.flute | 1 | 1 | 13 | C | 4/4 | 82 | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | 0 | False | False | 0 | 0 | 0 | False | 0 | 0 | False | False | False | 0 | False | False | 0 | 0.385827 | 0.503937 | False | 0 | 0 | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False |
| Winds | Flute | 73 | wind.flutes.flute | 1 | 1 | 14 | C | 4/4 | 82 | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | 0 | False | False | 0 | 0 | 0 | False | 0 | 0 | False | False | False | 0 | False | False | 0 | 0.385827 | 0.503937 | False | 0 | 0 | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False |
| Winds | Flute | 73 | wind.flutes.flute | 1 | 1 | 15 | C | 4/4 | 82 | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | 0 | False | False | 0 | 0 | 0 | False | 0 | 0 | False | False | False | 0 | False | False | 0 | 0 | 0.503937 | False | 0 | 0 | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False |
| Winds | Flute | 73 | wind.flutes.flute | 1 | 1 | 16 | C | 4/4 | 82 | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | 0 | False | False | 0 | 0 | 0 | False | 0 | 0 | False | False | False | 0 | False | False | 0 | 0 | 0.503937 | False | 0 | 0 | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False |
| Winds | Flute | 73 | wind.flutes.flute | 1 | 2 | 1 | C | 4/4 | 82 | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | 0 | False | False | 0 | 0 | 0 | False | 0 | 0 | False | False | False | 0 | False | False | 0 | 0.385827 | 0 | False | 0 | 0 | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False |
| Winds | Flute | 73 | wind.flutes.flute | 1 | 2 | 2 | C | 4/4 | 82 | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | 0 | False | False | 0 | 0 | 0 | False | 0 | 0 | False | False | False | 0 | False | False | 0 | 0.385827 | 0 | False | 0 | 0 | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False |
| Winds | Flute | 73 | wind.flutes.flute | 1 | 2 | 3 | C | 4/4 | 82 | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | 0 | False | False | 0 | 0 | 0 | False | 0 | 0 | False | False | False | 0 | False | False | 0 | 0.385827 | 0 | False | 0 | 0 | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False |
| Winds | Flute | 73 | wind.flutes.flute | 1 | 2 | 4 | C | 4/4 | 82 | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | 0 | False | False | 0 | 0 | 0 | False | 0 | 0 | False | False | False | 0 | False | False | 0 | 0.385827 | 0 | False | 0 | 0 | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False |
| Winds | Flute | 73 | wind.flutes.flute | 1 | 2 | 5 | C | 4/4 | 82 | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | 0 | False | False | 0 | 0 | 0 | False | 0 | 0 | False | False | False | 0.503937 | False | False | 0 | 0 | 0 | False | 0 | 0 | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False |
| Winds | Flute | 73 | wind.flutes.flute | 1 | 2 | 6 | C | 4/4 | 82 | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | 0 | False | False | 0 | 0.503937 | 0 | False | 0 | 0 | False | False | False | 0.503937 | False | False | 0 | 0 | 0 | False | 0 | 0 | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False |
| Winds | Flute | 73 | wind.flutes.flute | 1 | 2 | 7 | C | 4/4 | 82 | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | 0 | False | False | 0 | 0.503937 | 0 | False | 0 | 0 | False | False | False | 0.503937 | False | False | 0 | 0 | 0 | False | 0 | 0 | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False |
| Winds | Flute | 73 | wind.flutes.flute | 1 | 2 | 8 | C | 4/4 | 82 | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | 0 | False | False | 0 | 0.503937 | 0 | False | 0 | 0 | False | False | False | 0.503937 | False | False | 0 | 0 | 0 | False | 0 | 0 | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False |
| Winds | Flute | 73 | wind.flutes.flute | 1 | 2 | 9 | C | 4/4 | 82 | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | 0 | False | False | 0 | 0.503937 | 0.503937 | False | 0 | 0 | False | False | False | 0 | False | False | 0 | 0 | 0 | False | 0 | 0 | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False |
| Winds | Flute | 73 | wind.flutes.flute | 1 | 2 | 10 | C | 4/4 | 82 | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | 0 | False | False | 0 | 0 | 0.503937 | False | 0 | 0 | False | False | False | 0 | False | False | 0 | 0 | 0 | False | 0 | 0 | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False |
| Winds | Flute | 73 | wind.flutes.flute | 1 | 2 | 11 | C | 4/4 | 82 | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | 0 | False | False | 0 | 0.503937 | 0.503937 | False | 0 | 0 | False | False | False | 0 | False | False | 0 | 0 | 0 | False | 0 | 0 | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False |
| Winds | Flute | 73 | wind.flutes.flute | 1 | 2 | 12 | C | 4/4 | 82 | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | 0 | False | False | 0 | 0.503937 | 0.503937 | False | 0 | 0 | False | False | False | 0 | False | False | 0 | 0 | 0 | False | 0 | 0 | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False |
| Winds | Flute | 73 | wind.flutes.flute | 1 | 2 | 13 | C | 4/4 | 82 | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | 0.503937 | False | False | 0 | 0.503937 | 0 | False | 0 | 0 | False | False | False | 0 | False | False | 0 | 0 | 0 | False | 0 | 0 | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False |
| Winds | Flute | 73 | wind.flutes.flute | 1 | 2 | 14 | C | 4/4 | 82 | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | 0.503937 | False | False | 0 | 0.503937 | 0 | False | 0 | 0 | False | False | False | 0 | False | False | 0 | 0 | 0 | False | 0 | 0 | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False |
| Winds | Flute | 73 | wind.flutes.flute | 1 | 2 | 15 | C | 4/4 | 82 | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | 0.503937 | False | False | 0 | 0 | 0 | False | 0 | 0 | False | False | False | 0 | False | False | 0 | 0 | 0 | False | 0 | 0 | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False |
| Winds | Flute | 73 | wind.flutes.flute | 1 | 2 | 16 | C | 4/4 | 82 | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | 0.503937 | False | False | 0 | 0 | 0 | False | 0 | 0 | False | False | False | 0 | False | False | 0 | 0 | 0 | False | 0 | 0 | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False |
| Winds | Flute | 73 | wind.flutes.flute | 1 | 3 | 1 | C | 4/4 | 82 | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | 0 | False | False | 0 | 0 | 0 | False | 0.629921 | 0 | False | False | False | 0 | False | False | 0 | 0 | 0 | False | 0 | 0 | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False |
| Winds | Flute | 73 | wind.flutes.flute | 1 | 3 | 2 | C | 4/4 | 82 | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | 0 | False | False | 0 | 0 | 0 | False | 0.629921 | 0 | False | False | False | 0 | False | False | 0 | 0 | 0 | False | 0 | 0 | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False |
| Winds | Flute | 73 | wind.flutes.flute | 1 | 3 | 3 | C | 4/4 | 82 | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | 0 | False | False | 0 | 0 | 0 | False | 0.629921 | 0 | False | False | False | 0 | False | False | 0 | 0 | 0 | False | 0 | 0 | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False |
| Winds | Flute | 73 | wind.flutes.flute | 1 | 3 | 4 | C | 4/4 | 82 | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | 0 | False | False | 0 | 0 | 0 | False | 0.629921 | 0 | False | False | False | 0 | False | False | 0 | 0 | 0 | False | 0 | 0 | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False |
| Winds | Flute | 73 | wind.flutes.flute | 1 | 3 | 5 | C | 4/4 | 82 | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | 0 | False | False | 0 | 0 | 0 | False | 0 | 0.629921 | False | False | False | 0 | False | False | 0 | 0 | 0 | False | 0 | 0 | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False |
| Winds | Flute | 73 | wind.flutes.flute | 1 | 3 | 6 | C | 4/4 | 82 | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | 0 | False | False | 0 | 0 | 0 | False | 0.629921 | 0.629921 | False | False | False | 0 | False | False | 0 | 0 | 0 | False | 0 | 0 | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False |
| Winds | Flute | 73 | wind.flutes.flute | 1 | 3 | 7 | C | 4/4 | 82 | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | 0 | False | False | 0 | 0 | 0 | False | 0.629921 | 0.629921 | False | False | False | 0 | False | False | 0 | 0 | 0 | False | 0 | 0 | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False |
| Winds | Flute | 73 | wind.flutes.flute | 1 | 3 | 8 | C | 4/4 | 82 | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | 0 | False | False | 0 | 0 | 0 | False | 0.629921 | 0.629921 | False | False | False | 0 | False | False | 0 | 0 | 0 | False | 0 | 0 | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False |
| Winds | Flute | 73 | wind.flutes.flute | 1 | 3 | 9 | C | 4/4 | 82 | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | 0 | False | False | 0.503937 | 0 | 0 | False | 0.629921 | 0 | False | False | False | 0 | False | False | 0 | 0 | 0 | False | 0 | 0 | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False |
| Winds | Flute | 73 | wind.flutes.flute | 1 | 3 | 10 | C | 4/4 | 82 | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | 0 | False | False | 0.503937 | 0 | 0 | False | 0 | 0 | False | False | False | 0 | False | False | 0 | 0 | 0 | False | 0 | 0 | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False |
| Winds | Flute | 73 | wind.flutes.flute | 1 | 3 | 11 | C | 4/4 | 82 | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | 0 | False | False | 0.503937 | 0 | 0 | False | 0 | 0 | False | False | False | 0 | False | False | 0 | 0 | 0 | False | 0.503937 | 0 | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False |
| Winds | Flute | 73 | wind.flutes.flute | 1 | 3 | 12 | C | 4/4 | 82 | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | 0 | False | False | 0.503937 | 0 | 0 | False | 0 | 0 | False | False | False | 0 | False | False | 0 | 0 | 0 | False | 0.503937 | 0 | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False |
| Winds | Flute | 73 | wind.flutes.flute | 1 | 3 | 13 | C | 4/4 | 82 | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | 0 | False | False | 0 | 0 | 0 | False | 0 | 0 | False | False | False | 0 | False | False | 0 | 0 | 0 | False | 0.503937 | 0.503937 | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False |
| Winds | Flute | 73 | wind.flutes.flute | 1 | 3 | 14 | C | 4/4 | 82 | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | 0 | False | False | 0 | 0 | 0 | False | 0 | 0 | False | False | False | 0 | False | False | 0 | 0 | 0 | False | 0.503937 | 0.503937 | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False |
| Winds | Flute | 73 | wind.flutes.flute | 1 | 3 | 15 | C | 4/4 | 82 | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | 0 | False | False | 0 | 0 | 0 | False | 0 | 0 | False | False | False | 0 | False | False | 0 | 0 | 0 | False | 0 | 0.503937 | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False |
| Winds | Flute | 73 | wind.flutes.flute | 1 | 3 | 16 | C | 4/4 | 82 | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | 0 | False | False | 0 | 0 | 0 | False | 0 | 0 | False | False | False | 0 | False | False | 0 | 0 | 0 | False | 0 | 0.503937 | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False |
| Winds | Flute | 73 | wind.flutes.flute | 1 | 4 | 1 | C | 4/4 | 82 | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | 0 | False | False | 0 | 0 | 0 | False | 0 | 0 | False | False | False | 0 | False | False | 0 | 0 | 0 | False | 0.503937 | 0 | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False |
| Winds | Flute | 73 | wind.flutes.flute | 1 | 4 | 2 | C | 4/4 | 82 | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | 0 | False | False | 0 | 0 | 0 | False | 0 | 0 | False | False | False | 0 | False | False | 0 | 0 | 0 | False | 0.503937 | 0 | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False |
| Winds | Flute | 73 | wind.flutes.flute | 1 | 4 | 3 | C | 4/4 | 82 | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | 0 | False | False | 0 | 0 | 0 | False | 0 | 0 | False | False | False | 0 | False | False | 0 | 0 | 0 | False | 0.503937 | 0 | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False |
| Winds | Flute | 73 | wind.flutes.flute | 1 | 4 | 4 | C | 4/4 | 82 | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | 0 | False | False | 0 | 0 | 0 | False | 0 | 0 | False | False | False | 0 | False | False | 0 | 0 | 0 | False | 0.503937 | 0 | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False |
| Winds | Flute | 73 | wind.flutes.flute | 1 | 4 | 5 | C | 4/4 | 82 | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | 0 | False | False | 0 | 0 | 0 | False | 0 | 0 | False | False | False | 0 | False | False | 0.503937 | 0 | 0 | False | 0 | 0 | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False |
| Winds | Flute | 73 | wind.flutes.flute | 1 | 4 | 6 | C | 4/4 | 82 | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | 0 | False | False | 0 | 0 | 0 | False | 0.503937 | 0 | False | False | False | 0 | False | False | 0.503937 | 0 | 0 | False | 0 | 0 | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False |
| Winds | Flute | 73 | wind.flutes.flute | 1 | 4 | 7 | C | 4/4 | 82 | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | 0 | False | False | 0 | 0 | 0 | False | 0.503937 | 0 | False | False | False | 0 | False | False | 0.503937 | 0 | 0 | False | 0 | 0 | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False |
| Winds | Flute | 73 | wind.flutes.flute | 1 | 4 | 8 | C | 4/4 | 82 | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | 0 | False | False | 0 | 0 | 0 | False | 0.503937 | 0 | False | False | False | 0 | False | False | 0.503937 | 0 | 0 | False | 0 | 0 | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False |
| Winds | Flute | 73 | wind.flutes.flute | 1 | 4 | 9 | C | 4/4 | 82 | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | 0 | False | False | 0 | 0 | 0 | False | 0.503937 | 0.503937 | False | False | False | 0 | False | False | 0 | 0 | 0 | False | 0 | 0 | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False |
| Winds | Flute | 73 | wind.flutes.flute | 1 | 4 | 10 | C | 4/4 | 82 | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | 0 | False | False | 0 | 0 | 0 | False | 0 | 0.503937 | False | False | False | 0 | False | False | 0 | 0 | 0 | False | 0 | 0 | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False |
| Winds | Flute | 73 | wind.flutes.flute | 1 | 4 | 11 | C | 4/4 | 82 | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | 0 | False | False | 0 | 0 | 0 | False | 0.503937 | 0.503937 | False | False | False | 0 | False | False | 0 | 0 | 0 | False | 0 | 0 | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False |
| Winds | Flute | 73 | wind.flutes.flute | 1 | 4 | 12 | C | 4/4 | 82 | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | 0 | False | False | 0 | 0 | 0 | False | 0.503937 | 0.503937 | False | False | False | 0 | False | False | 0 | 0 | 0 | False | 0 | 0 | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False |
| Winds | Flute | 73 | wind.flutes.flute | 1 | 4 | 13 | C | 4/4 | 82 | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | 0 | False | False | 0.503937 | 0 | 0 | False | 0.503937 | 0 | False | False | False | 0 | False | False | 0 | 0 | 0 | False | 0 | 0 | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False |
| Winds | Flute | 73 | wind.flutes.flute | 1 | 4 | 14 | C | 4/4 | 82 | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | 0 | False | False | 0.503937 | 0 | 0 | False | 0.503937 | 0 | False | False | False | 0 | False | False | 0 | 0 | 0 | False | 0 | 0 | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False |
| Winds | Flute | 73 | wind.flutes.flute | 1 | 4 | 15 | C | 4/4 | 82 | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | 0 | False | False | 0.503937 | 0 | 0 | False | 0 | 0 | False | False | False | 0 | False | False | 0 | 0 | 0 | False | 0 | 0 | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False |
| Winds | Flute | 73 | wind.flutes.flute | 1 | 4 | 16 | C | 4/4 | 82 | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | 0 | False | False | 0.503937 | 0 | 0 | False | 0 | 0 | False | False | False | 0 | False | False | 0 | 0 | 0 | False | 0 | 0 | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False |
Some Falses are being printed as 0's, but that is just a visualization problem, internally they are Falses.
Getting back to the MIDI format is simple:
```python
deserialized = deserialization.file(serial,
SETTINGS,
save_as='result.mid') ## optional
```
%prep
%autosetup -n EPMS-0.0.8
%build
%py3_build
%install
%py3_install
install -d -m755 %{buildroot}/%{_pkgdocdir}
if [ -d doc ]; then cp -arf doc %{buildroot}/%{_pkgdocdir}; fi
if [ -d docs ]; then cp -arf docs %{buildroot}/%{_pkgdocdir}; fi
if [ -d example ]; then cp -arf example %{buildroot}/%{_pkgdocdir}; fi
if [ -d examples ]; then cp -arf examples %{buildroot}/%{_pkgdocdir}; fi
pushd %{buildroot}
if [ -d usr/lib ]; then
find usr/lib -type f -printf "\"/%h/%f\"\n" >> filelist.lst
fi
if [ -d usr/lib64 ]; then
find usr/lib64 -type f -printf "\"/%h/%f\"\n" >> filelist.lst
fi
if [ -d usr/bin ]; then
find usr/bin -type f -printf "\"/%h/%f\"\n" >> filelist.lst
fi
if [ -d usr/sbin ]; then
find usr/sbin -type f -printf "\"/%h/%f\"\n" >> filelist.lst
fi
touch doclist.lst
if [ -d usr/share/man ]; then
find usr/share/man -type f -printf "\"/%h/%f.gz\"\n" >> doclist.lst
fi
popd
mv %{buildroot}/filelist.lst .
mv %{buildroot}/doclist.lst .
%files -n python3-EPMS -f filelist.lst
%dir %{python3_sitelib}/*
%files help -f doclist.lst
%{_docdir}/*
%changelog
* Tue Jun 20 2023 Python_Bot <Python_Bot@openeuler.org> - 0.0.8-1
- Package Spec generated
|