summaryrefslogtreecommitdiff
path: root/python-epms.spec
diff options
context:
space:
mode:
authorCoprDistGit <infra@openeuler.org>2023-06-20 09:24:58 +0000
committerCoprDistGit <infra@openeuler.org>2023-06-20 09:24:58 +0000
commit92e6ee5f257bfd528d0e14bb6b1b25183edf6aea (patch)
treed254cca1ecdcda873f1361af004d243c39198366 /python-epms.spec
parent63689151389663632e031fb2cab253210a9f1e8e (diff)
automatic import of python-EPMSopeneuler20.03
Diffstat (limited to 'python-epms.spec')
-rw-r--r--python-epms.spec714
1 files changed, 714 insertions, 0 deletions
diff --git a/python-epms.spec b/python-epms.spec
new file mode 100644
index 0000000..d904504
--- /dev/null
+++ b/python-epms.spec
@@ -0,0 +1,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
+![](docs/serial-diagram.png "Diagram representing the serial block division concept.")
+
+
+
+## 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:
+
+![](docs/breezin_flute_first_measure.png "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
+![](docs/serial-diagram.png "Diagram representing the serial block division concept.")
+
+
+
+## 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:
+
+![](docs/breezin_flute_first_measure.png "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
+![](docs/serial-diagram.png "Diagram representing the serial block division concept.")
+
+
+
+## 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:
+
+![](docs/breezin_flute_first_measure.png "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