A library for converting MIDI files from and to CSV format
Project description
py_midicsv
A Python library inspired by the midicsv tool created by John Walker. Its main purpose is to bidirectionally convert between the binary MIDI
format and a human-readable interpretation of the contained data in text format, expressed as CSV
.
If you found this library, you probably already know why you need it.
Disclaimer
This library is currently in Beta. This means that the interface might change and that the encoding scheme is not yet finalised. Expect slight inconsistencies.
Installation
py_midicsv
can be installed via pip:
$ pip install py_midicsv
Alternatively you can build the package by cloning this repository and installing via poetry:
$ git clone https://github.com/timwedde/py_midicsv.git
$ cd py_midicsv/
$ poetry install
Usage
import py_midicsv as pm
# Load the MIDI file and parse it into CSV format
csv_string = pm.midi_to_csv("example.mid")
# Parse the CSV output of the previous command back into a MIDI file
midi_object = pm.csv_to_midi(csv_string)
# Save the parsed MIDI file to disk
with open("example_converted.mid", "wb") as output_file:
midi_writer = pm.FileWriter(output_file)
midi_writer.write(midi_object)
Differences
This library adheres as much as possible to how the original library works, however generated files are not guaranteed to be entirely identical when compared bit-by-bit.
This is mostly due to the handling of meta-event data, especially lyric events, since the encoding scheme has changed. The original library did not encode some of the characters in the Latin-1 set, while this version does.
Project details
Release history Release notifications | RSS feed
Download files
Download the file for your platform. If you're not sure which to choose, learn more about installing packages.
Source Distribution
Built Distribution
Hashes for py_midicsv-1.11.0-py3-none-any.whl
Algorithm | Hash digest | |
---|---|---|
SHA256 | 0382593b0912a3ddbad9a04575a14d33f77fccf62d946cf3df5a5d38d0642957 |
|
MD5 | 1a0d503c3d5d85eb49e19d2916ee7fdc |
|
BLAKE2b-256 | 5b805e6866701646b8d19b4bf9ba2497ff87a91b94d6e9ae835fb906c6dc52ab |