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.13.0.tar.gz (12.6 kB view details)

Uploaded Source

Built Distribution

py_midicsv-1.13.0-py3-none-any.whl (14.5 kB view details)

Uploaded Python 3

File details

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

File metadata

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

File hashes

Hashes for py_midicsv-1.13.0.tar.gz
Algorithm Hash digest
SHA256 c6f5a4f24cf4b27c367b07efa975474822c6e3dae55c12d71c3032dbd8fa34c8
MD5 3882cdeed1bc3a4aa28e4a978f2812e9
BLAKE2b-256 ce17a9577867339363da6b1a25be90cc9f190f283080f57a851c36eb0cb92f6b

See more details on using hashes here.

File details

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

File metadata

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

File hashes

Hashes for py_midicsv-1.13.0-py3-none-any.whl
Algorithm Hash digest
SHA256 d5640ffdd8b439483f0f553be4bfd40dd9e7449df3c41c9aa2350e3b5505e555
MD5 4ec69ebbf7387dd6e80c3a1fccdd9ae8
BLAKE2b-256 bb530a0c4f5e5426cd93522184033a8f0cda580ebe758d9a850456dd41c06cb1

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