diff options
-rw-r--r-- | .gitignore | 1 | ||||
-rw-r--r-- | python-epms.spec | 714 | ||||
-rw-r--r-- | sources | 1 |
3 files changed, 716 insertions, 0 deletions
@@ -0,0 +1 @@ +/EPMS-0.0.8.tar.gz 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 + + + + +## Performance Block (PB) Representation +As a group project decision, the values stored in the PB are formatted in a way that we can +easily turn one row (one frame) into a **Multi Hot Encoded Performance (MHEP) frame**, that can be +used as input vector for a model that uses Binary Cross Entropy Loss (BCE Loss) to get a rapidly convergent +*'what notes should I play?'* kind of learning. The main point of this decision is that this way we +treat the playing problem as a Classification Problem, that is easier to work on. + +In that sense, the data inside the PB is represented in a way where different data types provide +different semantic meaning for a note's frame in the performance encoding: + +> ### **Boolean** +> +> **False**: represent silence, the note is not being played in the frame. + + +> ### Float32 +> +> *****value*****: represent that this note is playing in the frame with current scalar velocity *****value*****. + +* **** + +## Usage and Example +First of all, you must import the package and define the settings for the serializer. +```python +from EMS import serialization, deserialization + +SETTINGS = { + 'RESOLUTION': 16, + 'KEYBOARD_SIZE': 88, + 'KEYBOARD_OFFSET': 21 +} +``` +Then, to serialize: +```python +serial = serialization.file('test_midi_files/George Benson - Breezin.mid', + SETTINGS, + save_as='serial.pkl') ## optional +``` +The following is the score for the first flute measure of George Bensons - Breezin: + + + +The serial version of this measure can be seen below, it is a Pandas DataFrame with dimensions (64, 98): + +| NAME | INSTRUMENT | MIDI_PROGRAM | SOUND | MEASURE | BEAT | FRAME | ORIGINAL_KS | TS | TEMPO | A0 | B-0 | B0 | C1 | C#1 | D1 | E-1 | E1 | F1 | F#1 | G1 | G#1 | A1 | B-1 | B1 | C2 | C#2 | D2 | E-2 | E2 | F2 | F#2 | G2 | G#2 | A2 | B-2 | B2 | C3 | C#3 | D3 | E-3 | E3 | F3 | F#3 | G3 | G#3 | A3 | B-3 | B3 | C4 | C#4 | D4 | E-4 | E4 | F4 | F#4 | G4 | G#4 | A4 | B-4 | B4 | C5 | C#5 | D5 | E-5 | E5 | F5 | F#5 | G5 | G#5 | A5 | B-5 | B5 | C6 | C#6 | D6 | E-6 | E6 | F6 | F#6 | G6 | G#6 | A6 | B-6 | B6 | C7 | C#7 | D7 | E-7 | E7 | F7 | F#7 | G7 | G#7 | A7 | B-7 | B7 | C8 | +|:-------|:-------------|---------------:|:------------------|----------:|-------:|--------:|:--------------|:-----|--------:|:------|:------|:------|:------|:------|:------|:------|:------|:------|:------|:------|:------|:------|:------|:------|:------|:------|:------|:------|:------|:------|:------|:------|:------|:------|:------|:------|:------|:------|:------|:------|:------|:------|:------|:------|:------|:------|:------|:------|:------|:------|:------|:------|:------|:------|:------|:------|:------|---------:|:------|:------|---------:|---------:|---------:|:------|---------:|---------:|:------|:------|:------|---------:|:------|:------|---------:|---------:|---------:|:------|---------:|---------:|:------|:------|:------|:------|:------|:------|:------|:------|:------|:------|:------|:------|:------|:------|:------|:------|:------|:------|:------| +| Winds | Flute | 73 | wind.flutes.flute | 1 | 1 | 1 | C | 4/4 | 82 | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | 0 | False | False | 0 | 0.385827 | 0 | False | 0 | 0 | False | False | False | 0 | False | False | 0 | 0 | 0 | False | 0 | 0 | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | +| Winds | Flute | 73 | wind.flutes.flute | 1 | 1 | 2 | C | 4/4 | 82 | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | 0 | False | False | 0 | 0.385827 | 0 | False | 0 | 0 | False | False | False | 0 | False | False | 0 | 0 | 0 | False | 0 | 0 | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | +| Winds | Flute | 73 | wind.flutes.flute | 1 | 1 | 3 | C | 4/4 | 82 | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | 0 | False | False | 0 | 0.385827 | 0 | False | 0 | 0 | False | False | False | 0 | False | False | 0 | 0 | 0 | False | 0 | 0 | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | +| Winds | Flute | 73 | wind.flutes.flute | 1 | 1 | 4 | C | 4/4 | 82 | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | 0 | False | False | 0 | 0.385827 | 0 | False | 0 | 0 | False | False | False | 0 | False | False | 0 | 0 | 0 | False | 0 | 0 | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | +| Winds | Flute | 73 | wind.flutes.flute | 1 | 1 | 5 | C | 4/4 | 82 | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | 0 | False | False | 0 | 0 | 0.385827 | False | 0 | 0 | False | False | False | 0 | False | False | 0 | 0 | 0 | False | 0 | 0 | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | +| Winds | Flute | 73 | wind.flutes.flute | 1 | 1 | 6 | C | 4/4 | 82 | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | 0 | False | False | 0 | 0.503937 | 0.385827 | False | 0 | 0 | False | False | False | 0 | False | False | 0 | 0 | 0 | False | 0 | 0 | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | +| Winds | Flute | 73 | wind.flutes.flute | 1 | 1 | 7 | C | 4/4 | 82 | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | 0 | False | False | 0 | 0.503937 | 0.385827 | False | 0 | 0 | False | False | False | 0 | False | False | 0 | 0 | 0 | False | 0 | 0 | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | +| Winds | Flute | 73 | wind.flutes.flute | 1 | 1 | 8 | C | 4/4 | 82 | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | 0 | False | False | 0 | 0.503937 | 0.385827 | False | 0 | 0 | False | False | False | 0 | False | False | 0 | 0 | 0 | False | 0 | 0 | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | +| Winds | Flute | 73 | wind.flutes.flute | 1 | 1 | 9 | C | 4/4 | 82 | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | 0.503937 | False | False | 0 | 0.503937 | 0 | False | 0 | 0 | False | False | False | 0 | False | False | 0 | 0 | 0 | False | 0 | 0 | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | +| Winds | Flute | 73 | wind.flutes.flute | 1 | 1 | 10 | C | 4/4 | 82 | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | 0.503937 | False | False | 0 | 0 | 0 | False | 0 | 0 | False | False | False | 0 | False | False | 0 | 0 | 0 | False | 0 | 0 | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | +| Winds | Flute | 73 | wind.flutes.flute | 1 | 1 | 11 | C | 4/4 | 82 | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | 0.503937 | False | False | 0 | 0 | 0 | False | 0 | 0 | False | False | False | 0 | False | False | 0 | 0.385827 | 0 | False | 0 | 0 | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | +| Winds | Flute | 73 | wind.flutes.flute | 1 | 1 | 12 | C | 4/4 | 82 | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | 0.503937 | False | False | 0 | 0 | 0 | False | 0 | 0 | False | False | False | 0 | False | False | 0 | 0.385827 | 0 | False | 0 | 0 | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | +| Winds | Flute | 73 | wind.flutes.flute | 1 | 1 | 13 | C | 4/4 | 82 | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | 0 | False | False | 0 | 0 | 0 | False | 0 | 0 | False | False | False | 0 | False | False | 0 | 0.385827 | 0.503937 | False | 0 | 0 | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | +| Winds | Flute | 73 | wind.flutes.flute | 1 | 1 | 14 | C | 4/4 | 82 | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | 0 | False | False | 0 | 0 | 0 | False | 0 | 0 | False | False | False | 0 | False | False | 0 | 0.385827 | 0.503937 | False | 0 | 0 | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | +| Winds | Flute | 73 | wind.flutes.flute | 1 | 1 | 15 | C | 4/4 | 82 | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | 0 | False | False | 0 | 0 | 0 | False | 0 | 0 | False | False | False | 0 | False | False | 0 | 0 | 0.503937 | False | 0 | 0 | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | +| Winds | Flute | 73 | wind.flutes.flute | 1 | 1 | 16 | C | 4/4 | 82 | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | 0 | False | False | 0 | 0 | 0 | False | 0 | 0 | False | False | False | 0 | False | False | 0 | 0 | 0.503937 | False | 0 | 0 | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | +| Winds | Flute | 73 | wind.flutes.flute | 1 | 2 | 1 | C | 4/4 | 82 | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | 0 | False | False | 0 | 0 | 0 | False | 0 | 0 | False | False | False | 0 | False | False | 0 | 0.385827 | 0 | False | 0 | 0 | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | +| Winds | Flute | 73 | wind.flutes.flute | 1 | 2 | 2 | C | 4/4 | 82 | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | 0 | False | False | 0 | 0 | 0 | False | 0 | 0 | False | False | False | 0 | False | False | 0 | 0.385827 | 0 | False | 0 | 0 | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | +| Winds | Flute | 73 | wind.flutes.flute | 1 | 2 | 3 | C | 4/4 | 82 | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | 0 | False | False | 0 | 0 | 0 | False | 0 | 0 | False | False | False | 0 | False | False | 0 | 0.385827 | 0 | False | 0 | 0 | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | +| Winds | Flute | 73 | wind.flutes.flute | 1 | 2 | 4 | C | 4/4 | 82 | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | 0 | False | False | 0 | 0 | 0 | False | 0 | 0 | False | False | False | 0 | False | False | 0 | 0.385827 | 0 | False | 0 | 0 | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | +| Winds | Flute | 73 | wind.flutes.flute | 1 | 2 | 5 | C | 4/4 | 82 | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | 0 | False | False | 0 | 0 | 0 | False | 0 | 0 | False | False | False | 0.503937 | False | False | 0 | 0 | 0 | False | 0 | 0 | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | +| Winds | Flute | 73 | wind.flutes.flute | 1 | 2 | 6 | C | 4/4 | 82 | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | 0 | False | False | 0 | 0.503937 | 0 | False | 0 | 0 | False | False | False | 0.503937 | False | False | 0 | 0 | 0 | False | 0 | 0 | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | +| Winds | Flute | 73 | wind.flutes.flute | 1 | 2 | 7 | C | 4/4 | 82 | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | 0 | False | False | 0 | 0.503937 | 0 | False | 0 | 0 | False | False | False | 0.503937 | False | False | 0 | 0 | 0 | False | 0 | 0 | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | +| Winds | Flute | 73 | wind.flutes.flute | 1 | 2 | 8 | C | 4/4 | 82 | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | 0 | False | False | 0 | 0.503937 | 0 | False | 0 | 0 | False | False | False | 0.503937 | False | False | 0 | 0 | 0 | False | 0 | 0 | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | +| Winds | Flute | 73 | wind.flutes.flute | 1 | 2 | 9 | C | 4/4 | 82 | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | 0 | False | False | 0 | 0.503937 | 0.503937 | False | 0 | 0 | False | False | False | 0 | False | False | 0 | 0 | 0 | False | 0 | 0 | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | +| Winds | Flute | 73 | wind.flutes.flute | 1 | 2 | 10 | C | 4/4 | 82 | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | 0 | False | False | 0 | 0 | 0.503937 | False | 0 | 0 | False | False | False | 0 | False | False | 0 | 0 | 0 | False | 0 | 0 | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | +| Winds | Flute | 73 | wind.flutes.flute | 1 | 2 | 11 | C | 4/4 | 82 | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | 0 | False | False | 0 | 0.503937 | 0.503937 | False | 0 | 0 | False | False | False | 0 | False | False | 0 | 0 | 0 | False | 0 | 0 | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | +| Winds | Flute | 73 | wind.flutes.flute | 1 | 2 | 12 | C | 4/4 | 82 | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | 0 | False | False | 0 | 0.503937 | 0.503937 | False | 0 | 0 | False | False | False | 0 | False | False | 0 | 0 | 0 | False | 0 | 0 | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | +| Winds | Flute | 73 | wind.flutes.flute | 1 | 2 | 13 | C | 4/4 | 82 | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | 0.503937 | False | False | 0 | 0.503937 | 0 | False | 0 | 0 | False | False | False | 0 | False | False | 0 | 0 | 0 | False | 0 | 0 | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | +| Winds | Flute | 73 | wind.flutes.flute | 1 | 2 | 14 | C | 4/4 | 82 | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | 0.503937 | False | False | 0 | 0.503937 | 0 | False | 0 | 0 | False | False | False | 0 | False | False | 0 | 0 | 0 | False | 0 | 0 | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | +| Winds | Flute | 73 | wind.flutes.flute | 1 | 2 | 15 | C | 4/4 | 82 | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | 0.503937 | False | False | 0 | 0 | 0 | False | 0 | 0 | False | False | False | 0 | False | False | 0 | 0 | 0 | False | 0 | 0 | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | +| Winds | Flute | 73 | wind.flutes.flute | 1 | 2 | 16 | C | 4/4 | 82 | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | 0.503937 | False | False | 0 | 0 | 0 | False | 0 | 0 | False | False | False | 0 | False | False | 0 | 0 | 0 | False | 0 | 0 | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | +| Winds | Flute | 73 | wind.flutes.flute | 1 | 3 | 1 | C | 4/4 | 82 | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | 0 | False | False | 0 | 0 | 0 | False | 0.629921 | 0 | False | False | False | 0 | False | False | 0 | 0 | 0 | False | 0 | 0 | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | +| Winds | Flute | 73 | wind.flutes.flute | 1 | 3 | 2 | C | 4/4 | 82 | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | 0 | False | False | 0 | 0 | 0 | False | 0.629921 | 0 | False | False | False | 0 | False | False | 0 | 0 | 0 | False | 0 | 0 | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | +| Winds | Flute | 73 | wind.flutes.flute | 1 | 3 | 3 | C | 4/4 | 82 | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | 0 | False | False | 0 | 0 | 0 | False | 0.629921 | 0 | False | False | False | 0 | False | False | 0 | 0 | 0 | False | 0 | 0 | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | +| Winds | Flute | 73 | wind.flutes.flute | 1 | 3 | 4 | C | 4/4 | 82 | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | 0 | False | False | 0 | 0 | 0 | False | 0.629921 | 0 | False | False | False | 0 | False | False | 0 | 0 | 0 | False | 0 | 0 | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | +| Winds | Flute | 73 | wind.flutes.flute | 1 | 3 | 5 | C | 4/4 | 82 | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | 0 | False | False | 0 | 0 | 0 | False | 0 | 0.629921 | False | False | False | 0 | False | False | 0 | 0 | 0 | False | 0 | 0 | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | +| Winds | Flute | 73 | wind.flutes.flute | 1 | 3 | 6 | C | 4/4 | 82 | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | 0 | False | False | 0 | 0 | 0 | False | 0.629921 | 0.629921 | False | False | False | 0 | False | False | 0 | 0 | 0 | False | 0 | 0 | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | +| Winds | Flute | 73 | wind.flutes.flute | 1 | 3 | 7 | C | 4/4 | 82 | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | 0 | False | False | 0 | 0 | 0 | False | 0.629921 | 0.629921 | False | False | False | 0 | False | False | 0 | 0 | 0 | False | 0 | 0 | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | +| Winds | Flute | 73 | wind.flutes.flute | 1 | 3 | 8 | C | 4/4 | 82 | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | 0 | False | False | 0 | 0 | 0 | False | 0.629921 | 0.629921 | False | False | False | 0 | False | False | 0 | 0 | 0 | False | 0 | 0 | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | +| Winds | Flute | 73 | wind.flutes.flute | 1 | 3 | 9 | C | 4/4 | 82 | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | 0 | False | False | 0.503937 | 0 | 0 | False | 0.629921 | 0 | False | False | False | 0 | False | False | 0 | 0 | 0 | False | 0 | 0 | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | +| Winds | Flute | 73 | wind.flutes.flute | 1 | 3 | 10 | C | 4/4 | 82 | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | 0 | False | False | 0.503937 | 0 | 0 | False | 0 | 0 | False | False | False | 0 | False | False | 0 | 0 | 0 | False | 0 | 0 | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | +| Winds | Flute | 73 | wind.flutes.flute | 1 | 3 | 11 | C | 4/4 | 82 | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | 0 | False | False | 0.503937 | 0 | 0 | False | 0 | 0 | False | False | False | 0 | False | False | 0 | 0 | 0 | False | 0.503937 | 0 | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | +| Winds | Flute | 73 | wind.flutes.flute | 1 | 3 | 12 | C | 4/4 | 82 | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | 0 | False | False | 0.503937 | 0 | 0 | False | 0 | 0 | False | False | False | 0 | False | False | 0 | 0 | 0 | False | 0.503937 | 0 | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | +| Winds | Flute | 73 | wind.flutes.flute | 1 | 3 | 13 | C | 4/4 | 82 | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | 0 | False | False | 0 | 0 | 0 | False | 0 | 0 | False | False | False | 0 | False | False | 0 | 0 | 0 | False | 0.503937 | 0.503937 | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | +| Winds | Flute | 73 | wind.flutes.flute | 1 | 3 | 14 | C | 4/4 | 82 | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | 0 | False | False | 0 | 0 | 0 | False | 0 | 0 | False | False | False | 0 | False | False | 0 | 0 | 0 | False | 0.503937 | 0.503937 | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | +| Winds | Flute | 73 | wind.flutes.flute | 1 | 3 | 15 | C | 4/4 | 82 | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | 0 | False | False | 0 | 0 | 0 | False | 0 | 0 | False | False | False | 0 | False | False | 0 | 0 | 0 | False | 0 | 0.503937 | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | +| Winds | Flute | 73 | wind.flutes.flute | 1 | 3 | 16 | C | 4/4 | 82 | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | 0 | False | False | 0 | 0 | 0 | False | 0 | 0 | False | False | False | 0 | False | False | 0 | 0 | 0 | False | 0 | 0.503937 | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | +| Winds | Flute | 73 | wind.flutes.flute | 1 | 4 | 1 | C | 4/4 | 82 | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | 0 | False | False | 0 | 0 | 0 | False | 0 | 0 | False | False | False | 0 | False | False | 0 | 0 | 0 | False | 0.503937 | 0 | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | +| Winds | Flute | 73 | wind.flutes.flute | 1 | 4 | 2 | C | 4/4 | 82 | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | 0 | False | False | 0 | 0 | 0 | False | 0 | 0 | False | False | False | 0 | False | False | 0 | 0 | 0 | False | 0.503937 | 0 | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | +| Winds | Flute | 73 | wind.flutes.flute | 1 | 4 | 3 | C | 4/4 | 82 | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | 0 | False | False | 0 | 0 | 0 | False | 0 | 0 | False | False | False | 0 | False | False | 0 | 0 | 0 | False | 0.503937 | 0 | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | +| Winds | Flute | 73 | wind.flutes.flute | 1 | 4 | 4 | C | 4/4 | 82 | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | 0 | False | False | 0 | 0 | 0 | False | 0 | 0 | False | False | False | 0 | False | False | 0 | 0 | 0 | False | 0.503937 | 0 | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | +| Winds | Flute | 73 | wind.flutes.flute | 1 | 4 | 5 | C | 4/4 | 82 | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | 0 | False | False | 0 | 0 | 0 | False | 0 | 0 | False | False | False | 0 | False | False | 0.503937 | 0 | 0 | False | 0 | 0 | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | +| Winds | Flute | 73 | wind.flutes.flute | 1 | 4 | 6 | C | 4/4 | 82 | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | 0 | False | False | 0 | 0 | 0 | False | 0.503937 | 0 | False | False | False | 0 | False | False | 0.503937 | 0 | 0 | False | 0 | 0 | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | +| Winds | Flute | 73 | wind.flutes.flute | 1 | 4 | 7 | C | 4/4 | 82 | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | 0 | False | False | 0 | 0 | 0 | False | 0.503937 | 0 | False | False | False | 0 | False | False | 0.503937 | 0 | 0 | False | 0 | 0 | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | +| Winds | Flute | 73 | wind.flutes.flute | 1 | 4 | 8 | C | 4/4 | 82 | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | 0 | False | False | 0 | 0 | 0 | False | 0.503937 | 0 | False | False | False | 0 | False | False | 0.503937 | 0 | 0 | False | 0 | 0 | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | +| Winds | Flute | 73 | wind.flutes.flute | 1 | 4 | 9 | C | 4/4 | 82 | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | 0 | False | False | 0 | 0 | 0 | False | 0.503937 | 0.503937 | False | False | False | 0 | False | False | 0 | 0 | 0 | False | 0 | 0 | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | +| Winds | Flute | 73 | wind.flutes.flute | 1 | 4 | 10 | C | 4/4 | 82 | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | 0 | False | False | 0 | 0 | 0 | False | 0 | 0.503937 | False | False | False | 0 | False | False | 0 | 0 | 0 | False | 0 | 0 | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | +| Winds | Flute | 73 | wind.flutes.flute | 1 | 4 | 11 | C | 4/4 | 82 | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | 0 | False | False | 0 | 0 | 0 | False | 0.503937 | 0.503937 | False | False | False | 0 | False | False | 0 | 0 | 0 | False | 0 | 0 | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | +| Winds | Flute | 73 | wind.flutes.flute | 1 | 4 | 12 | C | 4/4 | 82 | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | 0 | False | False | 0 | 0 | 0 | False | 0.503937 | 0.503937 | False | False | False | 0 | False | False | 0 | 0 | 0 | False | 0 | 0 | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | +| Winds | Flute | 73 | wind.flutes.flute | 1 | 4 | 13 | C | 4/4 | 82 | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | 0 | False | False | 0.503937 | 0 | 0 | False | 0.503937 | 0 | False | False | False | 0 | False | False | 0 | 0 | 0 | False | 0 | 0 | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | +| Winds | Flute | 73 | wind.flutes.flute | 1 | 4 | 14 | C | 4/4 | 82 | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | 0 | False | False | 0.503937 | 0 | 0 | False | 0.503937 | 0 | False | False | False | 0 | False | False | 0 | 0 | 0 | False | 0 | 0 | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | +| Winds | Flute | 73 | wind.flutes.flute | 1 | 4 | 15 | C | 4/4 | 82 | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | 0 | False | False | 0.503937 | 0 | 0 | False | 0 | 0 | False | False | False | 0 | False | False | 0 | 0 | 0 | False | 0 | 0 | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | +| Winds | Flute | 73 | wind.flutes.flute | 1 | 4 | 16 | C | 4/4 | 82 | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | 0 | False | False | 0.503937 | 0 | 0 | False | 0 | 0 | False | False | False | 0 | False | False | 0 | 0 | 0 | False | 0 | 0 | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | + +Some Falses are being printed as 0's, but that is just a visualization problem, internally they are Falses. + +Getting back to the MIDI format is simple: +```python +deserialized = deserialization.file(serial, + SETTINGS, + save_as='result.mid') ## optional +``` + + + + +%package -n python3-EPMS +Summary: The Expressive Polyphonic MIDI Serializer is a tool to turn MIDI files into a model-friendly, expressive representation for ML projects. +Provides: python-EPMS +BuildRequires: python3-devel +BuildRequires: python3-setuptools +BuildRequires: python3-pip +%description -n python3-EPMS +# EPMS: Expressive Polyphonic MIDI Serializer + +## Introduction + +The MIDI (Musical Instrument Digital Interface) protocol is extremely useful - and awesome - when we want to work with digital audio. One of its many utilities is in +Machine Learning, where it allows us to train data models to generate musical pieces. +However, the current literature lack a tool that transcribes MIDI data to a model-friendly structure while preserving +polyphony and the whole expressive dimension of music. + +EPMS is being build to address that need. While simultaneously working on a +LSTM that predict and translates musical data between instruments, our [PET](https://www.inf.ufrgs.br/site/pet/) group from the [Institute of Informatics](https://inf.ufrgs.br) of the [Federal University of Rio Grande do Sul (UFRGS)](https://ufrgs.br) - Brazil, is maintaining and developing this repository. + + With the advances of [MIDI 2.0](https://www.midi.org/midi-articles/details-about-midi-2-0-midi-ci-profiles-and-property-exchange) in mind, we're working on merging concepts from Music Information Retrieval (MIR) and Machine Learning (ML) to prepare the ground for future works that can popularize the feeling of making music. + + +## The Concept + +The main idea behind the project is to represent a MIDI file in some format that is easy to manipulate and feed to a Machine Learning (ML) model, like a neural network. +Simply put, we transform the input file in a **Pandas DataFrame** where information is stored. + +### Settings +There are currently 3 setting parameters for the serialization process: +1. **RESOLUTION** (int): the amount of *frames per beat* to be recorded. +2. **KEYBOARD_SIZE** (int): the amount on *notes* that we'll be tracked by the serializer. +3. **KEYBOARD_OFFSET** (int): the *MIDI value* of the first key in our keyboard + +\ +For example, we can set the serial parameters like + +```python +SETTINGS = { + 'RESOLUTION': 16, + 'KEYBOARD_SIZE': 13, + 'KEYBOARD_OFFSET': 60 +} +``` + +that will be internally transformed into a serie. + +| SETTING | VALUE| +|:-----------|---| +| RESOLUTION | 16| +| KEYBOARD_SIZE | 13 | +| KEYBOARD_OFFSET | 60 | + +### Serialization +Each row in the serial DataFrame corresponds to a **frame** of the song +and each frame is formed in a set of different *blocks*: +* the **Instrument Block**, that stores information about instrument qualities + + +| NAME | INSTRUMENT | MIDI_PROGRAM | SOUND | +|:-------|:-------------|---------------:|:------------------| + + +* the **Metric Block**, that will be our time reference across the song + +| MEASURE | BEAT | FRAME | +|:----------|:-------|---------| + +* the **Environment Block**, that provides the musical context of one's model environment + + +| ORIGINAL_KS | TS | TEMPO | +|:--------------|------|---------| + + + +* and the **Performance Block**, that is a *piano-roll*-like representation that specifies one column for every +key in our model's 'artificial piano'. In this block we focus on representing the main + expressive characteristics of human musical performances, such as *dynamics*, *syncopations* and *articulations*. +\ +\ +With the settings values as shown before, +the Performance Block would be: + +| C4 | C#4 | D4 | E-4 | E4 | F4 | F#4 | G4 | G#4 | A4 | B-4 | B4 | C5 | +|:------|-------|-------|---------|-------|-------|-------|----|-----|----|-----|----|----| + + +\ +\ +Finally, our frames will contain MIDI data in the following columns: + +| NAME | INSTRUMENT | MIDI_PROGRAM | SOUND | MEASURE | BEAT | FRAME | ORIGINAL_KS | TS | TEMPO | A0 | B-0 | B0 | C1 | C#1 | D1 | E-1 | E1 | F1 | F#1 | G1 | G#1 | A1 | B-1 | B1 | C2 | C#2 | D2 | E-2 | E2 | F2 | F#2 | G2 | G#2 | A2 | B-2 | B2 | C3 | C#3 | D3 | E-3 | E3 | F3 | F#3 | G3 | G#3 | A3 | B-3 | B3 | C4 | C#4 | D4 | E-4 | E4 | F4 | F#4 | G4 | G#4 | A4 | B-4 | B4 | C5 | C#5 | D5 | E-5 | E5 | F5 | F#5 | G5 | G#5 | A5 | B-5 | B5 | C6 | C#6 | D6 | E-6 | E6 | F6 | F#6 | G6 | G#6 | A6 | B-6 | B6 | C7 | C#7 | D7 | E-7 | E7 | F7 | F#7 | G7 | G#7 | A7 | B-7 | B7 | C8 | +|:-------|:-------------|---------------:|:------------------|----------:|-------:|--------:|:--------------|:-----|--------:|:------|:------|:------|:------|:------|:------|:------|:------|:------|:------|:------|:------|:------|:------|:------|:------|:------|:------|:------|:------|:------|:------|:------|:------|:------|:------|:------|:------|:------|:------|:------|:------|:------|:------|:------|:------|:------|:------|:------|:------|:------|:------|:------|:------|:------|:------|:------|:------|:----------------------------|:------|:------|:----------------------------|:----------------------------|:----------------------------|:------|:----------------------------|:----------------------------|:------|:------|:------|:----------------------------|:------|:------|:----------------------------|:----------------------------|:----------------------------|:------|:----------------------------|:----------------------------|:------|:------|:------|:------|:------|:------|:------|:------|:------|:------|:------|:------|:------|:------|:------|:------|:------|:------|:------| + + +### Serialization Diagram + + + + +## Performance Block (PB) Representation +As a group project decision, the values stored in the PB are formatted in a way that we can +easily turn one row (one frame) into a **Multi Hot Encoded Performance (MHEP) frame**, that can be +used as input vector for a model that uses Binary Cross Entropy Loss (BCE Loss) to get a rapidly convergent +*'what notes should I play?'* kind of learning. The main point of this decision is that this way we +treat the playing problem as a Classification Problem, that is easier to work on. + +In that sense, the data inside the PB is represented in a way where different data types provide +different semantic meaning for a note's frame in the performance encoding: + +> ### **Boolean** +> +> **False**: represent silence, the note is not being played in the frame. + + +> ### Float32 +> +> *****value*****: represent that this note is playing in the frame with current scalar velocity *****value*****. + +* **** + +## Usage and Example +First of all, you must import the package and define the settings for the serializer. +```python +from EMS import serialization, deserialization + +SETTINGS = { + 'RESOLUTION': 16, + 'KEYBOARD_SIZE': 88, + 'KEYBOARD_OFFSET': 21 +} +``` +Then, to serialize: +```python +serial = serialization.file('test_midi_files/George Benson - Breezin.mid', + SETTINGS, + save_as='serial.pkl') ## optional +``` +The following is the score for the first flute measure of George Bensons - Breezin: + + + +The serial version of this measure can be seen below, it is a Pandas DataFrame with dimensions (64, 98): + +| NAME | INSTRUMENT | MIDI_PROGRAM | SOUND | MEASURE | BEAT | FRAME | ORIGINAL_KS | TS | TEMPO | A0 | B-0 | B0 | C1 | C#1 | D1 | E-1 | E1 | F1 | F#1 | G1 | G#1 | A1 | B-1 | B1 | C2 | C#2 | D2 | E-2 | E2 | F2 | F#2 | G2 | G#2 | A2 | B-2 | B2 | C3 | C#3 | D3 | E-3 | E3 | F3 | F#3 | G3 | G#3 | A3 | B-3 | B3 | C4 | C#4 | D4 | E-4 | E4 | F4 | F#4 | G4 | G#4 | A4 | B-4 | B4 | C5 | C#5 | D5 | E-5 | E5 | F5 | F#5 | G5 | G#5 | A5 | B-5 | B5 | C6 | C#6 | D6 | E-6 | E6 | F6 | F#6 | G6 | G#6 | A6 | B-6 | B6 | C7 | C#7 | D7 | E-7 | E7 | F7 | F#7 | G7 | G#7 | A7 | B-7 | B7 | C8 | +|:-------|:-------------|---------------:|:------------------|----------:|-------:|--------:|:--------------|:-----|--------:|:------|:------|:------|:------|:------|:------|:------|:------|:------|:------|:------|:------|:------|:------|:------|:------|:------|:------|:------|:------|:------|:------|:------|:------|:------|:------|:------|:------|:------|:------|:------|:------|:------|:------|:------|:------|:------|:------|:------|:------|:------|:------|:------|:------|:------|:------|:------|:------|---------:|:------|:------|---------:|---------:|---------:|:------|---------:|---------:|:------|:------|:------|---------:|:------|:------|---------:|---------:|---------:|:------|---------:|---------:|:------|:------|:------|:------|:------|:------|:------|:------|:------|:------|:------|:------|:------|:------|:------|:------|:------|:------|:------| +| Winds | Flute | 73 | wind.flutes.flute | 1 | 1 | 1 | C | 4/4 | 82 | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | 0 | False | False | 0 | 0.385827 | 0 | False | 0 | 0 | False | False | False | 0 | False | False | 0 | 0 | 0 | False | 0 | 0 | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | +| Winds | Flute | 73 | wind.flutes.flute | 1 | 1 | 2 | C | 4/4 | 82 | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | 0 | False | False | 0 | 0.385827 | 0 | False | 0 | 0 | False | False | False | 0 | False | False | 0 | 0 | 0 | False | 0 | 0 | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | +| Winds | Flute | 73 | wind.flutes.flute | 1 | 1 | 3 | C | 4/4 | 82 | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | 0 | False | False | 0 | 0.385827 | 0 | False | 0 | 0 | False | False | False | 0 | False | False | 0 | 0 | 0 | False | 0 | 0 | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | +| Winds | Flute | 73 | wind.flutes.flute | 1 | 1 | 4 | C | 4/4 | 82 | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | 0 | False | False | 0 | 0.385827 | 0 | False | 0 | 0 | False | False | False | 0 | False | False | 0 | 0 | 0 | False | 0 | 0 | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | +| Winds | Flute | 73 | wind.flutes.flute | 1 | 1 | 5 | C | 4/4 | 82 | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | 0 | False | False | 0 | 0 | 0.385827 | False | 0 | 0 | False | False | False | 0 | False | False | 0 | 0 | 0 | False | 0 | 0 | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | +| Winds | Flute | 73 | wind.flutes.flute | 1 | 1 | 6 | C | 4/4 | 82 | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | 0 | False | False | 0 | 0.503937 | 0.385827 | False | 0 | 0 | False | False | False | 0 | False | False | 0 | 0 | 0 | False | 0 | 0 | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | +| Winds | Flute | 73 | wind.flutes.flute | 1 | 1 | 7 | C | 4/4 | 82 | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | 0 | False | False | 0 | 0.503937 | 0.385827 | False | 0 | 0 | False | False | False | 0 | False | False | 0 | 0 | 0 | False | 0 | 0 | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | +| Winds | Flute | 73 | wind.flutes.flute | 1 | 1 | 8 | C | 4/4 | 82 | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | 0 | False | False | 0 | 0.503937 | 0.385827 | False | 0 | 0 | False | False | False | 0 | False | False | 0 | 0 | 0 | False | 0 | 0 | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | +| Winds | Flute | 73 | wind.flutes.flute | 1 | 1 | 9 | C | 4/4 | 82 | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | 0.503937 | False | False | 0 | 0.503937 | 0 | False | 0 | 0 | False | False | False | 0 | False | False | 0 | 0 | 0 | False | 0 | 0 | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | +| Winds | Flute | 73 | wind.flutes.flute | 1 | 1 | 10 | C | 4/4 | 82 | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | 0.503937 | False | False | 0 | 0 | 0 | False | 0 | 0 | False | False | False | 0 | False | False | 0 | 0 | 0 | False | 0 | 0 | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | +| Winds | Flute | 73 | wind.flutes.flute | 1 | 1 | 11 | C | 4/4 | 82 | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | 0.503937 | False | False | 0 | 0 | 0 | False | 0 | 0 | False | False | False | 0 | False | False | 0 | 0.385827 | 0 | False | 0 | 0 | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | +| Winds | Flute | 73 | wind.flutes.flute | 1 | 1 | 12 | C | 4/4 | 82 | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | 0.503937 | False | False | 0 | 0 | 0 | False | 0 | 0 | False | False | False | 0 | False | False | 0 | 0.385827 | 0 | False | 0 | 0 | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | +| Winds | Flute | 73 | wind.flutes.flute | 1 | 1 | 13 | C | 4/4 | 82 | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | 0 | False | False | 0 | 0 | 0 | False | 0 | 0 | False | False | False | 0 | False | False | 0 | 0.385827 | 0.503937 | False | 0 | 0 | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | +| Winds | Flute | 73 | wind.flutes.flute | 1 | 1 | 14 | C | 4/4 | 82 | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | 0 | False | False | 0 | 0 | 0 | False | 0 | 0 | False | False | False | 0 | False | False | 0 | 0.385827 | 0.503937 | False | 0 | 0 | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | +| Winds | Flute | 73 | wind.flutes.flute | 1 | 1 | 15 | C | 4/4 | 82 | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | 0 | False | False | 0 | 0 | 0 | False | 0 | 0 | False | False | False | 0 | False | False | 0 | 0 | 0.503937 | False | 0 | 0 | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | +| Winds | Flute | 73 | wind.flutes.flute | 1 | 1 | 16 | C | 4/4 | 82 | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | 0 | False | False | 0 | 0 | 0 | False | 0 | 0 | False | False | False | 0 | False | False | 0 | 0 | 0.503937 | False | 0 | 0 | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | +| Winds | Flute | 73 | wind.flutes.flute | 1 | 2 | 1 | C | 4/4 | 82 | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | 0 | False | False | 0 | 0 | 0 | False | 0 | 0 | False | False | False | 0 | False | False | 0 | 0.385827 | 0 | False | 0 | 0 | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | +| Winds | Flute | 73 | wind.flutes.flute | 1 | 2 | 2 | C | 4/4 | 82 | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | 0 | False | False | 0 | 0 | 0 | False | 0 | 0 | False | False | False | 0 | False | False | 0 | 0.385827 | 0 | False | 0 | 0 | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | +| Winds | Flute | 73 | wind.flutes.flute | 1 | 2 | 3 | C | 4/4 | 82 | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | 0 | False | False | 0 | 0 | 0 | False | 0 | 0 | False | False | False | 0 | False | False | 0 | 0.385827 | 0 | False | 0 | 0 | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | +| Winds | Flute | 73 | wind.flutes.flute | 1 | 2 | 4 | C | 4/4 | 82 | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | 0 | False | False | 0 | 0 | 0 | False | 0 | 0 | False | False | False | 0 | False | False | 0 | 0.385827 | 0 | False | 0 | 0 | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | +| Winds | Flute | 73 | wind.flutes.flute | 1 | 2 | 5 | C | 4/4 | 82 | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | 0 | False | False | 0 | 0 | 0 | False | 0 | 0 | False | False | False | 0.503937 | False | False | 0 | 0 | 0 | False | 0 | 0 | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | +| Winds | Flute | 73 | wind.flutes.flute | 1 | 2 | 6 | C | 4/4 | 82 | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | 0 | False | False | 0 | 0.503937 | 0 | False | 0 | 0 | False | False | False | 0.503937 | False | False | 0 | 0 | 0 | False | 0 | 0 | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | +| Winds | Flute | 73 | wind.flutes.flute | 1 | 2 | 7 | C | 4/4 | 82 | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | 0 | False | False | 0 | 0.503937 | 0 | False | 0 | 0 | False | False | False | 0.503937 | False | False | 0 | 0 | 0 | False | 0 | 0 | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | +| Winds | Flute | 73 | wind.flutes.flute | 1 | 2 | 8 | C | 4/4 | 82 | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | 0 | False | False | 0 | 0.503937 | 0 | False | 0 | 0 | False | False | False | 0.503937 | False | False | 0 | 0 | 0 | False | 0 | 0 | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | +| Winds | Flute | 73 | wind.flutes.flute | 1 | 2 | 9 | C | 4/4 | 82 | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | 0 | False | False | 0 | 0.503937 | 0.503937 | False | 0 | 0 | False | False | False | 0 | False | False | 0 | 0 | 0 | False | 0 | 0 | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | +| Winds | Flute | 73 | wind.flutes.flute | 1 | 2 | 10 | C | 4/4 | 82 | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | 0 | False | False | 0 | 0 | 0.503937 | False | 0 | 0 | False | False | False | 0 | False | False | 0 | 0 | 0 | False | 0 | 0 | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | +| Winds | Flute | 73 | wind.flutes.flute | 1 | 2 | 11 | C | 4/4 | 82 | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | 0 | False | False | 0 | 0.503937 | 0.503937 | False | 0 | 0 | False | False | False | 0 | False | False | 0 | 0 | 0 | False | 0 | 0 | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | +| Winds | Flute | 73 | wind.flutes.flute | 1 | 2 | 12 | C | 4/4 | 82 | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | 0 | False | False | 0 | 0.503937 | 0.503937 | False | 0 | 0 | False | False | False | 0 | False | False | 0 | 0 | 0 | False | 0 | 0 | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | +| Winds | Flute | 73 | wind.flutes.flute | 1 | 2 | 13 | C | 4/4 | 82 | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | 0.503937 | False | False | 0 | 0.503937 | 0 | False | 0 | 0 | False | False | False | 0 | False | False | 0 | 0 | 0 | False | 0 | 0 | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | +| Winds | Flute | 73 | wind.flutes.flute | 1 | 2 | 14 | C | 4/4 | 82 | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | 0.503937 | False | False | 0 | 0.503937 | 0 | False | 0 | 0 | False | False | False | 0 | False | False | 0 | 0 | 0 | False | 0 | 0 | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | +| Winds | Flute | 73 | wind.flutes.flute | 1 | 2 | 15 | C | 4/4 | 82 | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | 0.503937 | False | False | 0 | 0 | 0 | False | 0 | 0 | False | False | False | 0 | False | False | 0 | 0 | 0 | False | 0 | 0 | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | +| Winds | Flute | 73 | wind.flutes.flute | 1 | 2 | 16 | C | 4/4 | 82 | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | 0.503937 | False | False | 0 | 0 | 0 | False | 0 | 0 | False | False | False | 0 | False | False | 0 | 0 | 0 | False | 0 | 0 | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | +| Winds | Flute | 73 | wind.flutes.flute | 1 | 3 | 1 | C | 4/4 | 82 | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | 0 | False | False | 0 | 0 | 0 | False | 0.629921 | 0 | False | False | False | 0 | False | False | 0 | 0 | 0 | False | 0 | 0 | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | +| Winds | Flute | 73 | wind.flutes.flute | 1 | 3 | 2 | C | 4/4 | 82 | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | 0 | False | False | 0 | 0 | 0 | False | 0.629921 | 0 | False | False | False | 0 | False | False | 0 | 0 | 0 | False | 0 | 0 | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | +| Winds | Flute | 73 | wind.flutes.flute | 1 | 3 | 3 | C | 4/4 | 82 | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | 0 | False | False | 0 | 0 | 0 | False | 0.629921 | 0 | False | False | False | 0 | False | False | 0 | 0 | 0 | False | 0 | 0 | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | +| Winds | Flute | 73 | wind.flutes.flute | 1 | 3 | 4 | C | 4/4 | 82 | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | 0 | False | False | 0 | 0 | 0 | False | 0.629921 | 0 | False | False | False | 0 | False | False | 0 | 0 | 0 | False | 0 | 0 | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | +| Winds | Flute | 73 | wind.flutes.flute | 1 | 3 | 5 | C | 4/4 | 82 | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | 0 | False | False | 0 | 0 | 0 | False | 0 | 0.629921 | False | False | False | 0 | False | False | 0 | 0 | 0 | False | 0 | 0 | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | +| Winds | Flute | 73 | wind.flutes.flute | 1 | 3 | 6 | C | 4/4 | 82 | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | 0 | False | False | 0 | 0 | 0 | False | 0.629921 | 0.629921 | False | False | False | 0 | False | False | 0 | 0 | 0 | False | 0 | 0 | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | +| Winds | Flute | 73 | wind.flutes.flute | 1 | 3 | 7 | C | 4/4 | 82 | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | 0 | False | False | 0 | 0 | 0 | False | 0.629921 | 0.629921 | False | False | False | 0 | False | False | 0 | 0 | 0 | False | 0 | 0 | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | +| Winds | Flute | 73 | wind.flutes.flute | 1 | 3 | 8 | C | 4/4 | 82 | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | 0 | False | False | 0 | 0 | 0 | False | 0.629921 | 0.629921 | False | False | False | 0 | False | False | 0 | 0 | 0 | False | 0 | 0 | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | +| Winds | Flute | 73 | wind.flutes.flute | 1 | 3 | 9 | C | 4/4 | 82 | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | 0 | False | False | 0.503937 | 0 | 0 | False | 0.629921 | 0 | False | False | False | 0 | False | False | 0 | 0 | 0 | False | 0 | 0 | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | +| Winds | Flute | 73 | wind.flutes.flute | 1 | 3 | 10 | C | 4/4 | 82 | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | 0 | False | False | 0.503937 | 0 | 0 | False | 0 | 0 | False | False | False | 0 | False | False | 0 | 0 | 0 | False | 0 | 0 | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | +| Winds | Flute | 73 | wind.flutes.flute | 1 | 3 | 11 | C | 4/4 | 82 | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | 0 | False | False | 0.503937 | 0 | 0 | False | 0 | 0 | False | False | False | 0 | False | False | 0 | 0 | 0 | False | 0.503937 | 0 | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | +| Winds | Flute | 73 | wind.flutes.flute | 1 | 3 | 12 | C | 4/4 | 82 | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | 0 | False | False | 0.503937 | 0 | 0 | False | 0 | 0 | False | False | False | 0 | False | False | 0 | 0 | 0 | False | 0.503937 | 0 | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | +| Winds | Flute | 73 | wind.flutes.flute | 1 | 3 | 13 | C | 4/4 | 82 | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | 0 | False | False | 0 | 0 | 0 | False | 0 | 0 | False | False | False | 0 | False | False | 0 | 0 | 0 | False | 0.503937 | 0.503937 | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | +| Winds | Flute | 73 | wind.flutes.flute | 1 | 3 | 14 | C | 4/4 | 82 | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | 0 | False | False | 0 | 0 | 0 | False | 0 | 0 | False | False | False | 0 | False | False | 0 | 0 | 0 | False | 0.503937 | 0.503937 | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | +| Winds | Flute | 73 | wind.flutes.flute | 1 | 3 | 15 | C | 4/4 | 82 | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | 0 | False | False | 0 | 0 | 0 | False | 0 | 0 | False | False | False | 0 | False | False | 0 | 0 | 0 | False | 0 | 0.503937 | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | +| Winds | Flute | 73 | wind.flutes.flute | 1 | 3 | 16 | C | 4/4 | 82 | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | 0 | False | False | 0 | 0 | 0 | False | 0 | 0 | False | False | False | 0 | False | False | 0 | 0 | 0 | False | 0 | 0.503937 | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | +| Winds | Flute | 73 | wind.flutes.flute | 1 | 4 | 1 | C | 4/4 | 82 | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | 0 | False | False | 0 | 0 | 0 | False | 0 | 0 | False | False | False | 0 | False | False | 0 | 0 | 0 | False | 0.503937 | 0 | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | +| Winds | Flute | 73 | wind.flutes.flute | 1 | 4 | 2 | C | 4/4 | 82 | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | 0 | False | False | 0 | 0 | 0 | False | 0 | 0 | False | False | False | 0 | False | False | 0 | 0 | 0 | False | 0.503937 | 0 | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | +| Winds | Flute | 73 | wind.flutes.flute | 1 | 4 | 3 | C | 4/4 | 82 | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | 0 | False | False | 0 | 0 | 0 | False | 0 | 0 | False | False | False | 0 | False | False | 0 | 0 | 0 | False | 0.503937 | 0 | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | +| Winds | Flute | 73 | wind.flutes.flute | 1 | 4 | 4 | C | 4/4 | 82 | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | 0 | False | False | 0 | 0 | 0 | False | 0 | 0 | False | False | False | 0 | False | False | 0 | 0 | 0 | False | 0.503937 | 0 | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | +| Winds | Flute | 73 | wind.flutes.flute | 1 | 4 | 5 | C | 4/4 | 82 | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | 0 | False | False | 0 | 0 | 0 | False | 0 | 0 | False | False | False | 0 | False | False | 0.503937 | 0 | 0 | False | 0 | 0 | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | +| Winds | Flute | 73 | wind.flutes.flute | 1 | 4 | 6 | C | 4/4 | 82 | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | 0 | False | False | 0 | 0 | 0 | False | 0.503937 | 0 | False | False | False | 0 | False | False | 0.503937 | 0 | 0 | False | 0 | 0 | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | +| Winds | Flute | 73 | wind.flutes.flute | 1 | 4 | 7 | C | 4/4 | 82 | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | 0 | False | False | 0 | 0 | 0 | False | 0.503937 | 0 | False | False | False | 0 | False | False | 0.503937 | 0 | 0 | False | 0 | 0 | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | +| Winds | Flute | 73 | wind.flutes.flute | 1 | 4 | 8 | C | 4/4 | 82 | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | 0 | False | False | 0 | 0 | 0 | False | 0.503937 | 0 | False | False | False | 0 | False | False | 0.503937 | 0 | 0 | False | 0 | 0 | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | +| Winds | Flute | 73 | wind.flutes.flute | 1 | 4 | 9 | C | 4/4 | 82 | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | 0 | False | False | 0 | 0 | 0 | False | 0.503937 | 0.503937 | False | False | False | 0 | False | False | 0 | 0 | 0 | False | 0 | 0 | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | +| Winds | Flute | 73 | wind.flutes.flute | 1 | 4 | 10 | C | 4/4 | 82 | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | 0 | False | False | 0 | 0 | 0 | False | 0 | 0.503937 | False | False | False | 0 | False | False | 0 | 0 | 0 | False | 0 | 0 | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | +| Winds | Flute | 73 | wind.flutes.flute | 1 | 4 | 11 | C | 4/4 | 82 | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | 0 | False | False | 0 | 0 | 0 | False | 0.503937 | 0.503937 | False | False | False | 0 | False | False | 0 | 0 | 0 | False | 0 | 0 | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | +| Winds | Flute | 73 | wind.flutes.flute | 1 | 4 | 12 | C | 4/4 | 82 | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | 0 | False | False | 0 | 0 | 0 | False | 0.503937 | 0.503937 | False | False | False | 0 | False | False | 0 | 0 | 0 | False | 0 | 0 | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | +| Winds | Flute | 73 | wind.flutes.flute | 1 | 4 | 13 | C | 4/4 | 82 | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | 0 | False | False | 0.503937 | 0 | 0 | False | 0.503937 | 0 | False | False | False | 0 | False | False | 0 | 0 | 0 | False | 0 | 0 | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | +| Winds | Flute | 73 | wind.flutes.flute | 1 | 4 | 14 | C | 4/4 | 82 | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | 0 | False | False | 0.503937 | 0 | 0 | False | 0.503937 | 0 | False | False | False | 0 | False | False | 0 | 0 | 0 | False | 0 | 0 | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | +| Winds | Flute | 73 | wind.flutes.flute | 1 | 4 | 15 | C | 4/4 | 82 | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | 0 | False | False | 0.503937 | 0 | 0 | False | 0 | 0 | False | False | False | 0 | False | False | 0 | 0 | 0 | False | 0 | 0 | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | +| Winds | Flute | 73 | wind.flutes.flute | 1 | 4 | 16 | C | 4/4 | 82 | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | 0 | False | False | 0.503937 | 0 | 0 | False | 0 | 0 | False | False | False | 0 | False | False | 0 | 0 | 0 | False | 0 | 0 | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | + +Some Falses are being printed as 0's, but that is just a visualization problem, internally they are Falses. + +Getting back to the MIDI format is simple: +```python +deserialized = deserialization.file(serial, + SETTINGS, + save_as='result.mid') ## optional +``` + + + + +%package help +Summary: Development documents and examples for EPMS +Provides: python3-EPMS-doc +%description help +# EPMS: Expressive Polyphonic MIDI Serializer + +## Introduction + +The MIDI (Musical Instrument Digital Interface) protocol is extremely useful - and awesome - when we want to work with digital audio. One of its many utilities is in +Machine Learning, where it allows us to train data models to generate musical pieces. +However, the current literature lack a tool that transcribes MIDI data to a model-friendly structure while preserving +polyphony and the whole expressive dimension of music. + +EPMS is being build to address that need. While simultaneously working on a +LSTM that predict and translates musical data between instruments, our [PET](https://www.inf.ufrgs.br/site/pet/) group from the [Institute of Informatics](https://inf.ufrgs.br) of the [Federal University of Rio Grande do Sul (UFRGS)](https://ufrgs.br) - Brazil, is maintaining and developing this repository. + + With the advances of [MIDI 2.0](https://www.midi.org/midi-articles/details-about-midi-2-0-midi-ci-profiles-and-property-exchange) in mind, we're working on merging concepts from Music Information Retrieval (MIR) and Machine Learning (ML) to prepare the ground for future works that can popularize the feeling of making music. + + +## The Concept + +The main idea behind the project is to represent a MIDI file in some format that is easy to manipulate and feed to a Machine Learning (ML) model, like a neural network. +Simply put, we transform the input file in a **Pandas DataFrame** where information is stored. + +### Settings +There are currently 3 setting parameters for the serialization process: +1. **RESOLUTION** (int): the amount of *frames per beat* to be recorded. +2. **KEYBOARD_SIZE** (int): the amount on *notes* that we'll be tracked by the serializer. +3. **KEYBOARD_OFFSET** (int): the *MIDI value* of the first key in our keyboard + +\ +For example, we can set the serial parameters like + +```python +SETTINGS = { + 'RESOLUTION': 16, + 'KEYBOARD_SIZE': 13, + 'KEYBOARD_OFFSET': 60 +} +``` + +that will be internally transformed into a serie. + +| SETTING | VALUE| +|:-----------|---| +| RESOLUTION | 16| +| KEYBOARD_SIZE | 13 | +| KEYBOARD_OFFSET | 60 | + +### Serialization +Each row in the serial DataFrame corresponds to a **frame** of the song +and each frame is formed in a set of different *blocks*: +* the **Instrument Block**, that stores information about instrument qualities + + +| NAME | INSTRUMENT | MIDI_PROGRAM | SOUND | +|:-------|:-------------|---------------:|:------------------| + + +* the **Metric Block**, that will be our time reference across the song + +| MEASURE | BEAT | FRAME | +|:----------|:-------|---------| + +* the **Environment Block**, that provides the musical context of one's model environment + + +| ORIGINAL_KS | TS | TEMPO | +|:--------------|------|---------| + + + +* and the **Performance Block**, that is a *piano-roll*-like representation that specifies one column for every +key in our model's 'artificial piano'. In this block we focus on representing the main + expressive characteristics of human musical performances, such as *dynamics*, *syncopations* and *articulations*. +\ +\ +With the settings values as shown before, +the Performance Block would be: + +| C4 | C#4 | D4 | E-4 | E4 | F4 | F#4 | G4 | G#4 | A4 | B-4 | B4 | C5 | +|:------|-------|-------|---------|-------|-------|-------|----|-----|----|-----|----|----| + + +\ +\ +Finally, our frames will contain MIDI data in the following columns: + +| NAME | INSTRUMENT | MIDI_PROGRAM | SOUND | MEASURE | BEAT | FRAME | ORIGINAL_KS | TS | TEMPO | A0 | B-0 | B0 | C1 | C#1 | D1 | E-1 | E1 | F1 | F#1 | G1 | G#1 | A1 | B-1 | B1 | C2 | C#2 | D2 | E-2 | E2 | F2 | F#2 | G2 | G#2 | A2 | B-2 | B2 | C3 | C#3 | D3 | E-3 | E3 | F3 | F#3 | G3 | G#3 | A3 | B-3 | B3 | C4 | C#4 | D4 | E-4 | E4 | F4 | F#4 | G4 | G#4 | A4 | B-4 | B4 | C5 | C#5 | D5 | E-5 | E5 | F5 | F#5 | G5 | G#5 | A5 | B-5 | B5 | C6 | C#6 | D6 | E-6 | E6 | F6 | F#6 | G6 | G#6 | A6 | B-6 | B6 | C7 | C#7 | D7 | E-7 | E7 | F7 | F#7 | G7 | G#7 | A7 | B-7 | B7 | C8 | +|:-------|:-------------|---------------:|:------------------|----------:|-------:|--------:|:--------------|:-----|--------:|:------|:------|:------|:------|:------|:------|:------|:------|:------|:------|:------|:------|:------|:------|:------|:------|:------|:------|:------|:------|:------|:------|:------|:------|:------|:------|:------|:------|:------|:------|:------|:------|:------|:------|:------|:------|:------|:------|:------|:------|:------|:------|:------|:------|:------|:------|:------|:------|:----------------------------|:------|:------|:----------------------------|:----------------------------|:----------------------------|:------|:----------------------------|:----------------------------|:------|:------|:------|:----------------------------|:------|:------|:----------------------------|:----------------------------|:----------------------------|:------|:----------------------------|:----------------------------|:------|:------|:------|:------|:------|:------|:------|:------|:------|:------|:------|:------|:------|:------|:------|:------|:------|:------|:------| + + +### Serialization Diagram + + + + +## Performance Block (PB) Representation +As a group project decision, the values stored in the PB are formatted in a way that we can +easily turn one row (one frame) into a **Multi Hot Encoded Performance (MHEP) frame**, that can be +used as input vector for a model that uses Binary Cross Entropy Loss (BCE Loss) to get a rapidly convergent +*'what notes should I play?'* kind of learning. The main point of this decision is that this way we +treat the playing problem as a Classification Problem, that is easier to work on. + +In that sense, the data inside the PB is represented in a way where different data types provide +different semantic meaning for a note's frame in the performance encoding: + +> ### **Boolean** +> +> **False**: represent silence, the note is not being played in the frame. + + +> ### Float32 +> +> *****value*****: represent that this note is playing in the frame with current scalar velocity *****value*****. + +* **** + +## Usage and Example +First of all, you must import the package and define the settings for the serializer. +```python +from EMS import serialization, deserialization + +SETTINGS = { + 'RESOLUTION': 16, + 'KEYBOARD_SIZE': 88, + 'KEYBOARD_OFFSET': 21 +} +``` +Then, to serialize: +```python +serial = serialization.file('test_midi_files/George Benson - Breezin.mid', + SETTINGS, + save_as='serial.pkl') ## optional +``` +The following is the score for the first flute measure of George Bensons - Breezin: + + + +The serial version of this measure can be seen below, it is a Pandas DataFrame with dimensions (64, 98): + +| NAME | INSTRUMENT | MIDI_PROGRAM | SOUND | MEASURE | BEAT | FRAME | ORIGINAL_KS | TS | TEMPO | A0 | B-0 | B0 | C1 | C#1 | D1 | E-1 | E1 | F1 | F#1 | G1 | G#1 | A1 | B-1 | B1 | C2 | C#2 | D2 | E-2 | E2 | F2 | F#2 | G2 | G#2 | A2 | B-2 | B2 | C3 | C#3 | D3 | E-3 | E3 | F3 | F#3 | G3 | G#3 | A3 | B-3 | B3 | C4 | C#4 | D4 | E-4 | E4 | F4 | F#4 | G4 | G#4 | A4 | B-4 | B4 | C5 | C#5 | D5 | E-5 | E5 | F5 | F#5 | G5 | G#5 | A5 | B-5 | B5 | C6 | C#6 | D6 | E-6 | E6 | F6 | F#6 | G6 | G#6 | A6 | B-6 | B6 | C7 | C#7 | D7 | E-7 | E7 | F7 | F#7 | G7 | G#7 | A7 | B-7 | B7 | C8 | +|:-------|:-------------|---------------:|:------------------|----------:|-------:|--------:|:--------------|:-----|--------:|:------|:------|:------|:------|:------|:------|:------|:------|:------|:------|:------|:------|:------|:------|:------|:------|:------|:------|:------|:------|:------|:------|:------|:------|:------|:------|:------|:------|:------|:------|:------|:------|:------|:------|:------|:------|:------|:------|:------|:------|:------|:------|:------|:------|:------|:------|:------|:------|---------:|:------|:------|---------:|---------:|---------:|:------|---------:|---------:|:------|:------|:------|---------:|:------|:------|---------:|---------:|---------:|:------|---------:|---------:|:------|:------|:------|:------|:------|:------|:------|:------|:------|:------|:------|:------|:------|:------|:------|:------|:------|:------|:------| +| Winds | Flute | 73 | wind.flutes.flute | 1 | 1 | 1 | C | 4/4 | 82 | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | 0 | False | False | 0 | 0.385827 | 0 | False | 0 | 0 | False | False | False | 0 | False | False | 0 | 0 | 0 | False | 0 | 0 | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | +| Winds | Flute | 73 | wind.flutes.flute | 1 | 1 | 2 | C | 4/4 | 82 | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | 0 | False | False | 0 | 0.385827 | 0 | False | 0 | 0 | False | False | False | 0 | False | False | 0 | 0 | 0 | False | 0 | 0 | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | +| Winds | Flute | 73 | wind.flutes.flute | 1 | 1 | 3 | C | 4/4 | 82 | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | 0 | False | False | 0 | 0.385827 | 0 | False | 0 | 0 | False | False | False | 0 | False | False | 0 | 0 | 0 | False | 0 | 0 | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | +| Winds | Flute | 73 | wind.flutes.flute | 1 | 1 | 4 | C | 4/4 | 82 | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | 0 | False | False | 0 | 0.385827 | 0 | False | 0 | 0 | False | False | False | 0 | False | False | 0 | 0 | 0 | False | 0 | 0 | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | +| Winds | Flute | 73 | wind.flutes.flute | 1 | 1 | 5 | C | 4/4 | 82 | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | 0 | False | False | 0 | 0 | 0.385827 | False | 0 | 0 | False | False | False | 0 | False | False | 0 | 0 | 0 | False | 0 | 0 | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | +| Winds | Flute | 73 | wind.flutes.flute | 1 | 1 | 6 | C | 4/4 | 82 | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | 0 | False | False | 0 | 0.503937 | 0.385827 | False | 0 | 0 | False | False | False | 0 | False | False | 0 | 0 | 0 | False | 0 | 0 | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | +| Winds | Flute | 73 | wind.flutes.flute | 1 | 1 | 7 | C | 4/4 | 82 | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | 0 | False | False | 0 | 0.503937 | 0.385827 | False | 0 | 0 | False | False | False | 0 | False | False | 0 | 0 | 0 | False | 0 | 0 | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | +| Winds | Flute | 73 | wind.flutes.flute | 1 | 1 | 8 | C | 4/4 | 82 | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | 0 | False | False | 0 | 0.503937 | 0.385827 | False | 0 | 0 | False | False | False | 0 | False | False | 0 | 0 | 0 | False | 0 | 0 | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | +| Winds | Flute | 73 | wind.flutes.flute | 1 | 1 | 9 | C | 4/4 | 82 | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | 0.503937 | False | False | 0 | 0.503937 | 0 | False | 0 | 0 | False | False | False | 0 | False | False | 0 | 0 | 0 | False | 0 | 0 | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | +| Winds | Flute | 73 | wind.flutes.flute | 1 | 1 | 10 | C | 4/4 | 82 | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | 0.503937 | False | False | 0 | 0 | 0 | False | 0 | 0 | False | False | False | 0 | False | False | 0 | 0 | 0 | False | 0 | 0 | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | +| Winds | Flute | 73 | wind.flutes.flute | 1 | 1 | 11 | C | 4/4 | 82 | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | 0.503937 | False | False | 0 | 0 | 0 | False | 0 | 0 | False | False | False | 0 | False | False | 0 | 0.385827 | 0 | False | 0 | 0 | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | +| Winds | Flute | 73 | wind.flutes.flute | 1 | 1 | 12 | C | 4/4 | 82 | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | 0.503937 | False | False | 0 | 0 | 0 | False | 0 | 0 | False | False | False | 0 | False | False | 0 | 0.385827 | 0 | False | 0 | 0 | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | +| Winds | Flute | 73 | wind.flutes.flute | 1 | 1 | 13 | C | 4/4 | 82 | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | 0 | False | False | 0 | 0 | 0 | False | 0 | 0 | False | False | False | 0 | False | False | 0 | 0.385827 | 0.503937 | False | 0 | 0 | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | +| Winds | Flute | 73 | wind.flutes.flute | 1 | 1 | 14 | C | 4/4 | 82 | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | 0 | False | False | 0 | 0 | 0 | False | 0 | 0 | False | False | False | 0 | False | False | 0 | 0.385827 | 0.503937 | False | 0 | 0 | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | +| Winds | Flute | 73 | wind.flutes.flute | 1 | 1 | 15 | C | 4/4 | 82 | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | 0 | False | False | 0 | 0 | 0 | False | 0 | 0 | False | False | False | 0 | False | False | 0 | 0 | 0.503937 | False | 0 | 0 | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | +| Winds | Flute | 73 | wind.flutes.flute | 1 | 1 | 16 | C | 4/4 | 82 | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | 0 | False | False | 0 | 0 | 0 | False | 0 | 0 | False | False | False | 0 | False | False | 0 | 0 | 0.503937 | False | 0 | 0 | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | +| Winds | Flute | 73 | wind.flutes.flute | 1 | 2 | 1 | C | 4/4 | 82 | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | 0 | False | False | 0 | 0 | 0 | False | 0 | 0 | False | False | False | 0 | False | False | 0 | 0.385827 | 0 | False | 0 | 0 | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | +| Winds | Flute | 73 | wind.flutes.flute | 1 | 2 | 2 | C | 4/4 | 82 | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | 0 | False | False | 0 | 0 | 0 | False | 0 | 0 | False | False | False | 0 | False | False | 0 | 0.385827 | 0 | False | 0 | 0 | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | +| Winds | Flute | 73 | wind.flutes.flute | 1 | 2 | 3 | C | 4/4 | 82 | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | 0 | False | False | 0 | 0 | 0 | False | 0 | 0 | False | False | False | 0 | False | False | 0 | 0.385827 | 0 | False | 0 | 0 | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | +| Winds | Flute | 73 | wind.flutes.flute | 1 | 2 | 4 | C | 4/4 | 82 | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | 0 | False | False | 0 | 0 | 0 | False | 0 | 0 | False | False | False | 0 | False | False | 0 | 0.385827 | 0 | False | 0 | 0 | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | +| Winds | Flute | 73 | wind.flutes.flute | 1 | 2 | 5 | C | 4/4 | 82 | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | 0 | False | False | 0 | 0 | 0 | False | 0 | 0 | False | False | False | 0.503937 | False | False | 0 | 0 | 0 | False | 0 | 0 | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | +| Winds | Flute | 73 | wind.flutes.flute | 1 | 2 | 6 | C | 4/4 | 82 | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | 0 | False | False | 0 | 0.503937 | 0 | False | 0 | 0 | False | False | False | 0.503937 | False | False | 0 | 0 | 0 | False | 0 | 0 | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | +| Winds | Flute | 73 | wind.flutes.flute | 1 | 2 | 7 | C | 4/4 | 82 | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | 0 | False | False | 0 | 0.503937 | 0 | False | 0 | 0 | False | False | False | 0.503937 | False | False | 0 | 0 | 0 | False | 0 | 0 | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | +| Winds | Flute | 73 | wind.flutes.flute | 1 | 2 | 8 | C | 4/4 | 82 | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | 0 | False | False | 0 | 0.503937 | 0 | False | 0 | 0 | False | False | False | 0.503937 | False | False | 0 | 0 | 0 | False | 0 | 0 | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | +| Winds | Flute | 73 | wind.flutes.flute | 1 | 2 | 9 | C | 4/4 | 82 | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | 0 | False | False | 0 | 0.503937 | 0.503937 | False | 0 | 0 | False | False | False | 0 | False | False | 0 | 0 | 0 | False | 0 | 0 | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | +| Winds | Flute | 73 | wind.flutes.flute | 1 | 2 | 10 | C | 4/4 | 82 | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | 0 | False | False | 0 | 0 | 0.503937 | False | 0 | 0 | False | False | False | 0 | False | False | 0 | 0 | 0 | False | 0 | 0 | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | +| Winds | Flute | 73 | wind.flutes.flute | 1 | 2 | 11 | C | 4/4 | 82 | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | 0 | False | False | 0 | 0.503937 | 0.503937 | False | 0 | 0 | False | False | False | 0 | False | False | 0 | 0 | 0 | False | 0 | 0 | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | +| Winds | Flute | 73 | wind.flutes.flute | 1 | 2 | 12 | C | 4/4 | 82 | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | 0 | False | False | 0 | 0.503937 | 0.503937 | False | 0 | 0 | False | False | False | 0 | False | False | 0 | 0 | 0 | False | 0 | 0 | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | +| Winds | Flute | 73 | wind.flutes.flute | 1 | 2 | 13 | C | 4/4 | 82 | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | 0.503937 | False | False | 0 | 0.503937 | 0 | False | 0 | 0 | False | False | False | 0 | False | False | 0 | 0 | 0 | False | 0 | 0 | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | +| Winds | Flute | 73 | wind.flutes.flute | 1 | 2 | 14 | C | 4/4 | 82 | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | 0.503937 | False | False | 0 | 0.503937 | 0 | False | 0 | 0 | False | False | False | 0 | False | False | 0 | 0 | 0 | False | 0 | 0 | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | +| Winds | Flute | 73 | wind.flutes.flute | 1 | 2 | 15 | C | 4/4 | 82 | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | 0.503937 | False | False | 0 | 0 | 0 | False | 0 | 0 | False | False | False | 0 | False | False | 0 | 0 | 0 | False | 0 | 0 | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | +| Winds | Flute | 73 | wind.flutes.flute | 1 | 2 | 16 | C | 4/4 | 82 | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | 0.503937 | False | False | 0 | 0 | 0 | False | 0 | 0 | False | False | False | 0 | False | False | 0 | 0 | 0 | False | 0 | 0 | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | +| Winds | Flute | 73 | wind.flutes.flute | 1 | 3 | 1 | C | 4/4 | 82 | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | 0 | False | False | 0 | 0 | 0 | False | 0.629921 | 0 | False | False | False | 0 | False | False | 0 | 0 | 0 | False | 0 | 0 | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | +| Winds | Flute | 73 | wind.flutes.flute | 1 | 3 | 2 | C | 4/4 | 82 | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | 0 | False | False | 0 | 0 | 0 | False | 0.629921 | 0 | False | False | False | 0 | False | False | 0 | 0 | 0 | False | 0 | 0 | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | +| Winds | Flute | 73 | wind.flutes.flute | 1 | 3 | 3 | C | 4/4 | 82 | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | 0 | False | False | 0 | 0 | 0 | False | 0.629921 | 0 | False | False | False | 0 | False | False | 0 | 0 | 0 | False | 0 | 0 | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | +| Winds | Flute | 73 | wind.flutes.flute | 1 | 3 | 4 | C | 4/4 | 82 | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | 0 | False | False | 0 | 0 | 0 | False | 0.629921 | 0 | False | False | False | 0 | False | False | 0 | 0 | 0 | False | 0 | 0 | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | +| Winds | Flute | 73 | wind.flutes.flute | 1 | 3 | 5 | C | 4/4 | 82 | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | 0 | False | False | 0 | 0 | 0 | False | 0 | 0.629921 | False | False | False | 0 | False | False | 0 | 0 | 0 | False | 0 | 0 | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | +| Winds | Flute | 73 | wind.flutes.flute | 1 | 3 | 6 | C | 4/4 | 82 | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | 0 | False | False | 0 | 0 | 0 | False | 0.629921 | 0.629921 | False | False | False | 0 | False | False | 0 | 0 | 0 | False | 0 | 0 | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | +| Winds | Flute | 73 | wind.flutes.flute | 1 | 3 | 7 | C | 4/4 | 82 | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | 0 | False | False | 0 | 0 | 0 | False | 0.629921 | 0.629921 | False | False | False | 0 | False | False | 0 | 0 | 0 | False | 0 | 0 | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | +| Winds | Flute | 73 | wind.flutes.flute | 1 | 3 | 8 | C | 4/4 | 82 | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | 0 | False | False | 0 | 0 | 0 | False | 0.629921 | 0.629921 | False | False | False | 0 | False | False | 0 | 0 | 0 | False | 0 | 0 | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | +| Winds | Flute | 73 | wind.flutes.flute | 1 | 3 | 9 | C | 4/4 | 82 | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | 0 | False | False | 0.503937 | 0 | 0 | False | 0.629921 | 0 | False | False | False | 0 | False | False | 0 | 0 | 0 | False | 0 | 0 | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | +| Winds | Flute | 73 | wind.flutes.flute | 1 | 3 | 10 | C | 4/4 | 82 | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | 0 | False | False | 0.503937 | 0 | 0 | False | 0 | 0 | False | False | False | 0 | False | False | 0 | 0 | 0 | False | 0 | 0 | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | +| Winds | Flute | 73 | wind.flutes.flute | 1 | 3 | 11 | C | 4/4 | 82 | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | 0 | False | False | 0.503937 | 0 | 0 | False | 0 | 0 | False | False | False | 0 | False | False | 0 | 0 | 0 | False | 0.503937 | 0 | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | +| Winds | Flute | 73 | wind.flutes.flute | 1 | 3 | 12 | C | 4/4 | 82 | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | 0 | False | False | 0.503937 | 0 | 0 | False | 0 | 0 | False | False | False | 0 | False | False | 0 | 0 | 0 | False | 0.503937 | 0 | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | +| Winds | Flute | 73 | wind.flutes.flute | 1 | 3 | 13 | C | 4/4 | 82 | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | 0 | False | False | 0 | 0 | 0 | False | 0 | 0 | False | False | False | 0 | False | False | 0 | 0 | 0 | False | 0.503937 | 0.503937 | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | +| Winds | Flute | 73 | wind.flutes.flute | 1 | 3 | 14 | C | 4/4 | 82 | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | 0 | False | False | 0 | 0 | 0 | False | 0 | 0 | False | False | False | 0 | False | False | 0 | 0 | 0 | False | 0.503937 | 0.503937 | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | +| Winds | Flute | 73 | wind.flutes.flute | 1 | 3 | 15 | C | 4/4 | 82 | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | 0 | False | False | 0 | 0 | 0 | False | 0 | 0 | False | False | False | 0 | False | False | 0 | 0 | 0 | False | 0 | 0.503937 | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | +| Winds | Flute | 73 | wind.flutes.flute | 1 | 3 | 16 | C | 4/4 | 82 | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | 0 | False | False | 0 | 0 | 0 | False | 0 | 0 | False | False | False | 0 | False | False | 0 | 0 | 0 | False | 0 | 0.503937 | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | +| Winds | Flute | 73 | wind.flutes.flute | 1 | 4 | 1 | C | 4/4 | 82 | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | 0 | False | False | 0 | 0 | 0 | False | 0 | 0 | False | False | False | 0 | False | False | 0 | 0 | 0 | False | 0.503937 | 0 | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | +| Winds | Flute | 73 | wind.flutes.flute | 1 | 4 | 2 | C | 4/4 | 82 | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | 0 | False | False | 0 | 0 | 0 | False | 0 | 0 | False | False | False | 0 | False | False | 0 | 0 | 0 | False | 0.503937 | 0 | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | +| Winds | Flute | 73 | wind.flutes.flute | 1 | 4 | 3 | C | 4/4 | 82 | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | 0 | False | False | 0 | 0 | 0 | False | 0 | 0 | False | False | False | 0 | False | False | 0 | 0 | 0 | False | 0.503937 | 0 | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | +| Winds | Flute | 73 | wind.flutes.flute | 1 | 4 | 4 | C | 4/4 | 82 | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | 0 | False | False | 0 | 0 | 0 | False | 0 | 0 | False | False | False | 0 | False | False | 0 | 0 | 0 | False | 0.503937 | 0 | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | +| Winds | Flute | 73 | wind.flutes.flute | 1 | 4 | 5 | C | 4/4 | 82 | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | 0 | False | False | 0 | 0 | 0 | False | 0 | 0 | False | False | False | 0 | False | False | 0.503937 | 0 | 0 | False | 0 | 0 | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | +| Winds | Flute | 73 | wind.flutes.flute | 1 | 4 | 6 | C | 4/4 | 82 | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | 0 | False | False | 0 | 0 | 0 | False | 0.503937 | 0 | False | False | False | 0 | False | False | 0.503937 | 0 | 0 | False | 0 | 0 | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | +| Winds | Flute | 73 | wind.flutes.flute | 1 | 4 | 7 | C | 4/4 | 82 | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | 0 | False | False | 0 | 0 | 0 | False | 0.503937 | 0 | False | False | False | 0 | False | False | 0.503937 | 0 | 0 | False | 0 | 0 | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | +| Winds | Flute | 73 | wind.flutes.flute | 1 | 4 | 8 | C | 4/4 | 82 | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | 0 | False | False | 0 | 0 | 0 | False | 0.503937 | 0 | False | False | False | 0 | False | False | 0.503937 | 0 | 0 | False | 0 | 0 | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | +| Winds | Flute | 73 | wind.flutes.flute | 1 | 4 | 9 | C | 4/4 | 82 | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | 0 | False | False | 0 | 0 | 0 | False | 0.503937 | 0.503937 | False | False | False | 0 | False | False | 0 | 0 | 0 | False | 0 | 0 | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | +| Winds | Flute | 73 | wind.flutes.flute | 1 | 4 | 10 | C | 4/4 | 82 | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | 0 | False | False | 0 | 0 | 0 | False | 0 | 0.503937 | False | False | False | 0 | False | False | 0 | 0 | 0 | False | 0 | 0 | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | +| Winds | Flute | 73 | wind.flutes.flute | 1 | 4 | 11 | C | 4/4 | 82 | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | 0 | False | False | 0 | 0 | 0 | False | 0.503937 | 0.503937 | False | False | False | 0 | False | False | 0 | 0 | 0 | False | 0 | 0 | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | +| Winds | Flute | 73 | wind.flutes.flute | 1 | 4 | 12 | C | 4/4 | 82 | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | 0 | False | False | 0 | 0 | 0 | False | 0.503937 | 0.503937 | False | False | False | 0 | False | False | 0 | 0 | 0 | False | 0 | 0 | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | +| Winds | Flute | 73 | wind.flutes.flute | 1 | 4 | 13 | C | 4/4 | 82 | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | 0 | False | False | 0.503937 | 0 | 0 | False | 0.503937 | 0 | False | False | False | 0 | False | False | 0 | 0 | 0 | False | 0 | 0 | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | +| Winds | Flute | 73 | wind.flutes.flute | 1 | 4 | 14 | C | 4/4 | 82 | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | 0 | False | False | 0.503937 | 0 | 0 | False | 0.503937 | 0 | False | False | False | 0 | False | False | 0 | 0 | 0 | False | 0 | 0 | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | +| Winds | Flute | 73 | wind.flutes.flute | 1 | 4 | 15 | C | 4/4 | 82 | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | 0 | False | False | 0.503937 | 0 | 0 | False | 0 | 0 | False | False | False | 0 | False | False | 0 | 0 | 0 | False | 0 | 0 | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | +| Winds | Flute | 73 | wind.flutes.flute | 1 | 4 | 16 | C | 4/4 | 82 | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | 0 | False | False | 0.503937 | 0 | 0 | False | 0 | 0 | False | False | False | 0 | False | False | 0 | 0 | 0 | False | 0 | 0 | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | + +Some Falses are being printed as 0's, but that is just a visualization problem, internally they are Falses. + +Getting back to the MIDI format is simple: +```python +deserialized = deserialization.file(serial, + SETTINGS, + save_as='result.mid') ## optional +``` + + + + +%prep +%autosetup -n EPMS-0.0.8 + +%build +%py3_build + +%install +%py3_install +install -d -m755 %{buildroot}/%{_pkgdocdir} +if [ -d doc ]; then cp -arf doc %{buildroot}/%{_pkgdocdir}; fi +if [ -d docs ]; then cp -arf docs %{buildroot}/%{_pkgdocdir}; fi +if [ -d example ]; then cp -arf example %{buildroot}/%{_pkgdocdir}; fi +if [ -d examples ]; then cp -arf examples %{buildroot}/%{_pkgdocdir}; fi +pushd %{buildroot} +if [ -d usr/lib ]; then + find usr/lib -type f -printf "\"/%h/%f\"\n" >> filelist.lst +fi +if [ -d usr/lib64 ]; then + find usr/lib64 -type f -printf "\"/%h/%f\"\n" >> filelist.lst +fi +if [ -d usr/bin ]; then + find usr/bin -type f -printf "\"/%h/%f\"\n" >> filelist.lst +fi +if [ -d usr/sbin ]; then + find usr/sbin -type f -printf "\"/%h/%f\"\n" >> filelist.lst +fi +touch doclist.lst +if [ -d usr/share/man ]; then + find usr/share/man -type f -printf "\"/%h/%f.gz\"\n" >> doclist.lst +fi +popd +mv %{buildroot}/filelist.lst . +mv %{buildroot}/doclist.lst . + +%files -n python3-EPMS -f filelist.lst +%dir %{python3_sitelib}/* + +%files help -f doclist.lst +%{_docdir}/* + +%changelog +* Tue Jun 20 2023 Python_Bot <Python_Bot@openeuler.org> - 0.0.8-1 +- Package Spec generated @@ -0,0 +1 @@ +020ef69e9e32331f4bc389508576157f EPMS-0.0.8.tar.gz |