Convert a MIDI file (.mid) to a LilyPond format (.ly) text file.
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)character, MIDI file (.mid). May include an absolute or relative path.
LilyPond output file ending in .ly.
key signature, defaults to "c".
logical, print absolute pitches.
integer, duration, quantize notes on duration.
logical, print explicit durations.
integer, duration, quantize note starts on the duration.
character vector, allow tuplet durations. See details.
logical, verbose detail.
logical, treat all text as lyrics.
character, optional output directory prefixed to file, may be an absolute or relative path. If NULL (default), only file is used.
nothing returned; a file is written.
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.
A future version will offer additional arguments that use tabr to subsequently edit the generated LilyPond file as a second step, allowing the user to make some nominal substitutions or additions to the default output.
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.
# 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