tabr (version 0.3.5)

midily: Convert MIDI to LilyPond file

Description

Convert a MIDI file (.mid) to a LilyPond format (.ly) text file.

Usage

midily(midi_file, file, key = "c", absolute = FALSE, quantize = NULL,
  explicit = FALSE, start_quant = NULL, allow_tuplet = c("4*2/3",
  "8*2/3", "16*2/3"), details = FALSE, lyric = FALSE, path = NULL)

Arguments

midi_file

character, MIDI file (.mid). May include an absolute or relative path.

file

LilyPond output file ending in .ly.

key

key signature, defaults to "c".

absolute

logical, print absolute pitches.

quantize

integer, duration, quantize notes on duration.

explicit

logical, print explicit durations.

start_quant

integer, duration, quantize note starts on the duration.

allow_tuplet

character vector, allow tuplet durations. See details.

details

logical, verbose detail.

lyric

logical, treat all text as lyrics.

path

character, optional output directory prefixed to file, may be an absolute or relative path. If NULL (default), only file is used.

Value

nothing returned; a file is written.

Details

Under development/testing. See warning and details below.

This function is a wrapper around the midi2ly command line utility provided by LilyPond. It inherits all the limitations thereof. LilyPond is not intended to be used to produce meaningful sheet music from arbitrary MIDI files. While lilypond converts R code score objects to LilyPond markup directly, MIDI conversion to LilyPond markup by midily requires LilyPond.

WARNING: Even though the purpose of the command line utility is to convert an existing MIDI file to a LilyPond file, it nevertheless generates a LilyPond file that specifies inclusion of MIDI output. This means when you subsequently process the LilyPond file with LilyPond or if you use miditab to go straight from your MIDI file to pdf output, the command line tool will also produce a MIDI file output. It will overwrite your original MIDI file if it has the same file name and location! The next version of this function will add an default argument midi_out = FALSE to remove this from the generated LilyPond file. If TRUE and the basename of midi_file matches the basename of file, then file will be renamed, the basename appended with a -1.

allow_tuplets = NULL to disallow all tuplets. Fourth, eighth and sixteenth note triplets are allowed. The format is a character vector where each element is duration*numerator/denominator, no spaces. See default argument.

On Windows systems, it may be necessary to specify a path in tabr_options to both midi2ly and python if they are not already successfully set as follows. On package load, tabr will attempt to check for midi2ly.exe at C:/Program Files (x86)/LilyPond/usr/bin/midi2ly.py and similarly for the python.exe that ships with LilyPond at C:/Program Files (x86)/LilyPond/usr/bin/python.exe. If this is not where LilyPond is installed, then LilyPond and Python need to be provided to tabr_options or added to the system PATH variable.

See Also

miditab, tab, lilypond

Examples

Run this code
# NOT RUN {
if(tabr_options()$midi2ly != ""){
  midi <- system.file("example.mid", package = "tabr")
  outfile <- file.path(tempdir(), "out.ly")
  midily(midi, outfile) # requires LilyPond installation
}
# }

Run the code above in your browser using DataLab