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.

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

As a Command Line Tool

Usage: midicsvpy [OPTIONS] INPUT_FILE OUTPUT_FILE

  Convert MIDI files to CSV files.

  midicsv reads a standard MIDI file and decodes it into a CSV file which
  preserves all the information in the MIDI file. The ASCII CSV file may be
  loaded into a spreadsheet or database application, or processed by a
  program to transform the MIDI data (for example, to key transpose a
  composition or extract a track from a multi-track sequence). A CSV file in
  the format created by midicsv may be converted back into a standard MIDI
  file with the csvmidi program.

  Specify an input file and an output file to process it. Either argument
  can be stdin/stdout.

Options:
  -u, --usage
  -v, --verbose
  --help         Show this message and exit.
Usage: csvmidipy [OPTIONS] INPUT_FILE OUTPUT_FILE

  Convert CSV files to MIDI files.

  csvmidi reads a CSV file in the format written by midicsv and creates the
  equivalent standard MIDI file.

  Specify an input file and an output file to process it. Either argument
  can be stdin/stdout.

Options:
  -u, --usage
  -v, --verbose
  -z, --strict-csv
  -x, --no-compress
  --help             Show this message and exit.

As a Library

import py_midicsv as pm

# Load the MIDI file and parse it into CSV format
csv_string = pm.midi_to_csv("example.mid")

with open("example_converted.csv", "w") as f:
    f.writelines(csv_string)

# 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)

Documentation

A full explanation of the midicsv file format can be found here.

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

Uploaded Source

Built Distribution

py_midicsv-2.0.1-py3-none-any.whl (16.0 kB view details)

Uploaded Python 3

File details

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

File metadata

  • Download URL: py_midicsv-2.0.1.tar.gz
  • Upload date:
  • Size: 14.1 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: poetry/1.1.11 CPython/3.8.12 Linux/4.15.0-1110-aws

File hashes

Hashes for py_midicsv-2.0.1.tar.gz
Algorithm Hash digest
SHA256 5bae75f4c77fcbbce5564214a7153743214214fdcbf105557d69eb3b50c1144b
MD5 8f9c95020083f4fbc6c49c9b9a836037
BLAKE2b-256 d282e00314de5be21eb5fdc7665287563d707d062d03b94619b1719c6e9c4f48

See more details on using hashes here.

File details

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

File metadata

  • Download URL: py_midicsv-2.0.1-py3-none-any.whl
  • Upload date:
  • Size: 16.0 kB
  • Tags: Python 3
  • Uploaded using Trusted Publishing? No
  • Uploaded via: poetry/1.1.11 CPython/3.8.12 Linux/4.15.0-1110-aws

File hashes

Hashes for py_midicsv-2.0.1-py3-none-any.whl
Algorithm Hash digest
SHA256 939b8d8f7ffb9b2ef69c319c304e59c7b7538f597d32fc6a702c3c0196de38f8
MD5 6577dbf5f545d890246058d8107d4224
BLAKE2b-256 3ace1a99a859bbf6533ba3d1f7cd72bf0fd3458d5425335b8c04bfe786460d17

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