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"),
lyric = FALSE
)
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, treat all text as lyrics.
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.
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