Skip to main content

py_midicsv

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.

  Some arguments are kept for backwards-compatibility with the original
  midicsv tooling. These are marked as NOOP in this command line interface.

Options:
  -n, --nostrict  Do not fail on parse/validation errors.
  -u, --usage     Print usage information (NOOP)
  -v, --verbose   Print debug information (NOOP)
  --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.

  Some arguments are kept for backwards-compatibility with the original
  csvmidi tooling. These are marked as NOOP in this command line interface.

Options:
  -n, --nostrict     Do not fail on parse/validation errors.
  -u, --usage        Print usage information (NOOP)
  -v, --verbose      Print debug information (NOOP)
  -z, --strict-csv   Raise exceptions on CSV errors (NOOP)
  -x, --no-compress  Do not compress status bytes (NOOP)
  --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_list = pm.midi_to_csv("example.mid")

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

# Parse the CSV output of the previous command back into a MIDI file
midi_object = pm.csv_to_midi(csv_string_list)

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

Stargazers over time

Stargazers over time

Release files for py_midicsv 4.1.2

For a detailed explanation of source distributions (sdists) and built distributions (wheels), please see the package formats documentation.

Source distribution (sdist)

Source distribution for py_midicsv 4.1.2
File Size Uploaded
py_midicsv-4.1.2.tar.gz 14.4 kB Details

Built distribution (wheel)

Table of built distributions (wheels) for py_midicsv 4.1.2
File Interpreter ABI Platform
py_midicsv-4.1.2-py3-none-any.whl Python 3 none any Details

Total release size: 31.0 kB

Release files / py_midicsv-4.1.2.tar.gz

Download URL py_midicsv-4.1.2.tar.gz
Size 14.4 kB
Tags Source
SHA-256 checksum
How to use checksums
85d0ad57764c3a0f9ed1d39e38a9bf8db2436bb99c78f9c98b1d2a0626657e1f
BLAKE2b-256 checksum
How to use checksums
9ff9cd1ecd3cc2dd44786cbcf5c2219fef8d048bb1d3ea78f150c6aed00463e1
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via poetry/1.8.3 CPython/3.11.0 Linux/6.5.0-1023-azure

Release files / py_midicsv-4.1.2-py3-none-any.whl

Download URL py_midicsv-4.1.2-py3-none-any.whl
Size 16.6 kB
Tags Python 3
SHA-256 checksum
How to use checksums
ee84c1d47a211043edb4ccd98a83074b0593131e6ad9dab95bc0130d9508d351
BLAKE2b-256 checksum
How to use checksums
443a34449ad515ddb1997e1ba045fc94a8d8921beaedd0451e8c4d58d7f16261
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via poetry/1.8.3 CPython/3.11.0 Linux/6.5.0-1023-azure

Release history Release notifications | RSS feed

This release

4.1.2 This release

2 release files

4.1.1

2 release files

4.1.0

2 release files

4.0.0

2 release files

3.1.0

2 release files

3.0.0

2 release files

2.0.1

2 release files

2.0.0

2 release files

1.14.1

2 release files

1.11.0

2 release files

1.10.0

2 release files

1.9.0

2 release files

1.8.4

2 release files

1.8.3

2 release files

1.8.2

2 release files

1.8.1

2 release files

1.8.0

1 release file

1.7.0

3 release files

1.6.0

2 release files

1.5.0

2 release files

1.4.0

2 release files

1.3.0

2 release files

1.2.0

2 release files

Anthropic, PBC Visionary sponsor Bloomberg Visionary sponsor Hudson River Trading Visionary sponsor Meta Visionary sponsor NVIDIA Visionary sponsor Microsoft Sustainability sponsor Depot Continuous Integration AWS Cloud computing and Security Sponsor Datadog Monitoring Fastly CDN Google Download Analytics Sentry Error logging StatusPage Status page