Skip to main content

A library for converting MIDI files from and to CSV format

Project description

py_midicsv

CircleCI Downloads

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


Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

py_midicsv-1.12.0.tar.gz (12.6 kB view details)

Uploaded Source

Built Distribution

py_midicsv-1.12.0-py3-none-any.whl (14.4 kB view details)

Uploaded Python 3

File details

Details for the file py_midicsv-1.12.0.tar.gz.

File metadata

  • Download URL: py_midicsv-1.12.0.tar.gz
  • Upload date:
  • Size: 12.6 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: poetry/1.0.10 CPython/3.8.5 Linux/4.15.0-1077-aws

File hashes

Hashes for py_midicsv-1.12.0.tar.gz
Algorithm Hash digest
SHA256 dc819c6b307c9c94bb86f63dd59c874100694ceec5e9f0d75b16d22a55afb1c5
MD5 f31a8b7dc4bcb10f93b1822dce18cdb5
BLAKE2b-256 6d856c8b61e33f1348dd8d538500d1d840455fe9564af34d540bc3de9b0f219e

See more details on using hashes here.

File details

Details for the file py_midicsv-1.12.0-py3-none-any.whl.

File metadata

  • Download URL: py_midicsv-1.12.0-py3-none-any.whl
  • Upload date:
  • Size: 14.4 kB
  • Tags: Python 3
  • Uploaded using Trusted Publishing? No
  • Uploaded via: poetry/1.0.10 CPython/3.8.5 Linux/4.15.0-1077-aws

File hashes

Hashes for py_midicsv-1.12.0-py3-none-any.whl
Algorithm Hash digest
SHA256 d86bb9092d2fbfac6329c908dc19b20cf701c98908b56519c400f8c4bf740e4a
MD5 ac60aabe661adff95770967be90edc45
BLAKE2b-256 d86306c0f87420f48d30336cee87de142351681263f98c4f071e6c5ab3102199

See more details on using hashes here.

Supported by

AWS Cloud computing and Security Sponsor Datadog Monitoring Fastly CDN Google Download Analytics Pingdom Monitoring Sentry Error logging StatusPage Status page