All Projects → JamesOwers → midi_degradation_toolkit

JamesOwers / midi_degradation_toolkit

Licence: MIT license
A toolkit for generating datasets of midi files which have been degraded to be 'un-musical'.

Programming Languages

python
139335 projects - #7 most used programming language

Projects that are alternatives of or similar to midi degradation toolkit

guitar-tabs-to-MIDI
A program that converts Guitar Tabs into MIDI files.
Stars: ✭ 38 (+31.03%)
Mutual labels:  midi, midi-files
UnityMidiPlayer
Midi file player for unity. Allows import of type zero and one midi files and playing them via midi outputs. Also provides code for creating procedural music using midi.
Stars: ✭ 30 (+3.45%)
Mutual labels:  midi, midi-files
Automatic speech recognition
End-to-end Automatic Speech Recognition for Madarian and English in Tensorflow
Stars: ✭ 2,751 (+9386.21%)
Mutual labels:  paper, evaluation
JZZ-midi-SMF
Standard MIDI Files: read / write / play
Stars: ✭ 28 (-3.45%)
Mutual labels:  midi, midi-files
cool-papers-in-pytorch
Reimplementing cool papers in PyTorch...
Stars: ✭ 21 (-27.59%)
Mutual labels:  paper
groove2groove
Code for "Groove2Groove: One-Shot Music Style Transfer with Supervision from Synthetic Data"
Stars: ✭ 88 (+203.45%)
Mutual labels:  paper
paper-survey
Summary of machine learning papers
Stars: ✭ 26 (-10.34%)
Mutual labels:  paper
JsObjExporter
A little JavaScript plugin to generate PDF, XLS, CSV and DOC from JavaScript Object or DOM element only from the frontend!
Stars: ✭ 58 (+100%)
Mutual labels:  csv
neural network papers
记录一些读过的论文,给出个人对论文的评分情况并简述论文insight
Stars: ✭ 152 (+424.14%)
Mutual labels:  paper
CSV
CSV - AutoHotkey library for working with CSV Files
Stars: ✭ 34 (+17.24%)
Mutual labels:  csv
TBbard
Automated FFXIV Bard Performer (Now with MIDI support!)
Stars: ✭ 38 (+31.03%)
Mutual labels:  midi
tune
Make xenharmonic music and create synthesizer tuning files for microtonal scales.
Stars: ✭ 73 (+151.72%)
Mutual labels:  midi
Hyde
Call of Duty XAsset compiler that transforms raw assets into digestible data.
Stars: ✭ 15 (-48.28%)
Mutual labels:  csv
PaperView
PaperView 是一个自定义的View,它就像一张纸折叠和展开
Stars: ✭ 26 (-10.34%)
Mutual labels:  paper
image-matching-toolbox
This is a toolbox repository to help evaluate various methods that perform image matching from a pair of images.
Stars: ✭ 252 (+768.97%)
Mutual labels:  evaluation
LabMidi
Midi IN and OUT. Standard midi file parser and player. Midi Softsynth implementation.
Stars: ✭ 38 (+31.03%)
Mutual labels:  midi
Curriculum-Learning-PaperList-Materials
Curriculum Learning related papers and materials
Stars: ✭ 50 (+72.41%)
Mutual labels:  paper
android-midisuite
Android MIDI test programs and examples.
Stars: ✭ 123 (+324.14%)
Mutual labels:  midi
csv2xls
Put together some CSV files into a single Excel file, in different sheets.
Stars: ✭ 14 (-51.72%)
Mutual labels:  csv
CSV2RDF
Streaming, transforming, SPARQL-based CSV to RDF converter. Apache license.
Stars: ✭ 48 (+65.52%)
Mutual labels:  csv


mdtk - The MIDI Degradation Toolkit

Build Status Code Coverage GitHub license ArXiv Paper

Tools to generate datasets of Altered and Corrupted MIDI Excerpts -ACME datasets. Baseline models for cleaning the output from Automatic Music Transcription systems.

The accompanying paper, The MIDI Degradation Toolkit: Symbolic Music Augmentation and Correction, describes the toolkit and its motivation in detail. For instructions to reproduce the results from the paper, see the documentation ./docs/06_training_and_evaluation.ipynb.

Documentation

Documentation for the components of the toolkit is provided in ./docs

Overview

As a brief overview, the toolkit takes midi files as input and first converts them to a standard data structure like this:

onset track pitch dur velocity
0 0 100 250 80
250 0 105 255 100
250 1 100 100 95

where:

  • onset is the time in milliseconds when a note began,
  • track is the identifier for a distinct track in the midi file,
  • pitch is the midinote pitch number ranging from 0 (C-2) to 127 (G9) (concert A4 is midinote 69), and
  • dur is how long the note is held in milliseconds.
  • velocity is the velocity of the note (defaults to 100 if not parsing from MIDI).

There are then functions to alter these files, introducing un-musical degradations such as pitch shifts.

The toolkit also contains modules to aid modelling, such as pytorch dataset classes for easy data loading.

For a more comprehensive overview, see the documentation avaialbe in ./docs

Install

We recommend using an environment manager such as conda, but you may omit these lines if you use something else. This install will allow you to both run all the scripts in this repository and use the toolkit in your own scripts (import mdtk). The requirements are described in the setup.cfg file.

git clone https://github.com/JamesOwers/midi_degradation_toolkit
cd midi_degradation_toolkit
conda update conda
conda create -n mdtk python=3.7
conda activate mdtk
pip install .

There are install options available:

# use pip install -e . for dev mode if you want to edit files
pip install -e ".[dev]"  # install everything
pip install -e ".[docs]"  # packages to rerun documentation
pip install -e ".[eval]"  # required for reproducing results from paper

Quickstart

To generate an ACME dataset simply install the package with instructions above and run python make_dataset.py.

For usage instructions for the measure_errors.py script, run python measure_errors.py -h you should create a directory of transcriptions and a directory of ground truth files (in mid or csv format). The ground truth and corresponding transcription should be named the exact same thing.

Training and evaluation code for the proposed modelling tasks is contained in ./baselines

Contributors

If you would like to contribute, please install in developer mode and use the dev option when installing the package. Additionally, please run pre-commit install to automatically run pre-commit hooks.

pip install -e "${path_to_repo}[dev]"
pre-commit install
Note that the project description data, including the texts, logos, images, and/or trademarks, for each open source project belongs to its rightful owner. If you wish to add or remove any projects, please contact us at [email protected].