All Projects → timwedde → py_midicsv

timwedde / py_midicsv

Licence: MIT license
A Python port and library-fication of the midicsv tool by John Walker. If you need to convert MIDI files to human-readable text files and back, this is the library for you.

Programming Languages

python
139335 projects - #7 most used programming language

Projects that are alternatives of or similar to py midicsv

node-poppler
Asynchronous node.js wrapper for the Poppler PDF rendering library
Stars: ✭ 97 (+76.36%)
Mutual labels:  converter, text
Node Html To Text
Advanced html to text converter
Stars: ✭ 872 (+1485.45%)
Mutual labels:  converter, text
CTR-tools
Crash Team Racing (PS1) tools - a C# framework by DCxDemo and a set of tools to parse files found in the original kart racing game by Naughty Dog.
Stars: ✭ 93 (+69.09%)
Mutual labels:  converter, midi
Mybox
Easy tools of document, image, file, network, location, color, and media.
Stars: ✭ 45 (-18.18%)
Mutual labels:  converter, text
FigmaConvertXib
FigmaConvertXib is a tool for exporting design elements from figma.com and generating files to a projects iOS .xib / Android .xml
Stars: ✭ 111 (+101.82%)
Mutual labels:  converter, text
Handwritten.js
Convert typed text to realistic handwriting!
Stars: ✭ 1,806 (+3183.64%)
Mutual labels:  converter, text
vista2xp
Vista-to-XP application converter
Stars: ✭ 36 (-34.55%)
Mutual labels:  converter
zxtap-to-wav
Converter of .TAP files (a ZX-Spectrum emulator data format) into .WAV sound files
Stars: ✭ 34 (-38.18%)
Mutual labels:  converter
markovifyR
Markovify wrapper for R
Stars: ✭ 81 (+47.27%)
Mutual labels:  text
justified
Wrap, align and justify the words in a string.
Stars: ✭ 30 (-45.45%)
Mutual labels:  text
guitar
🎸 Online guitar toy and tablature recorder/player
Stars: ✭ 80 (+45.45%)
Mutual labels:  midi
csv-to-sqlite
A command-line tool that copies data from CSV files into a SQLite database.
Stars: ✭ 62 (+12.73%)
Mutual labels:  converter
Omeclone
A clone of omegle.com
Stars: ✭ 66 (+20%)
Mutual labels:  text
patchmaster
MIDI processing and patching system
Stars: ✭ 22 (-60%)
Mutual labels:  midi
gonvert
Golang character encoding converter with an automatic code-estimation.
Stars: ✭ 24 (-56.36%)
Mutual labels:  converter
react-native-text-area
Simple and easy to use TextArea for React Native.
Stars: ✭ 20 (-63.64%)
Mutual labels:  text
SoxSharp
.NET wrapper for SoX.
Stars: ✭ 41 (-25.45%)
Mutual labels:  converter
Arduino-USBMIDI
Allows a microcontroller, with native USB capabilities, to appear as a MIDI device over USB to a connected computer
Stars: ✭ 98 (+78.18%)
Mutual labels:  midi
WindowTextExtractor
WindowTextExtractor allows you to get a text from any window of an operating system including asterisk passwords
Stars: ✭ 128 (+132.73%)
Mutual labels:  text
brkraw
BrkRaw: A comprehensive tool to access raw Bruker Biospin MRI data
Stars: ✭ 31 (-43.64%)
Mutual labels:  converter

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.

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

Stargazers over time

Stargazers over time

Note that the project description data, including the texts, logos, images, and/or trademarks, for each open source project belongs to its rightful owner. If you wish to add or remove any projects, please contact us at [email protected].