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