NEWS.md
plot_fretboard()
and plot_chord()
including the addition of fret_labels
and fret_offset
arguments.tabr_lilypond_api()
).tabr_lilypond_api()
).freq_ratio()
.dplyr
1.0+.freq_ratio()
generic for generating a data frame of frequency ratios from frequencies, noteworthy objects, or music objects.tabr
LilyPond API details.pitch_freq()
documentation error.as_music()
.bar
argument to phrase()
(and associated functions) is now NULL
by default, or character, rather than simply TRUE
or FALSE
. If a string is provided, it is interpreted as LilyPond bar notation. E.g., bar = "|"
adds the LilyPond syntax \bar "|"
to the end of a phrase.TRUE
is still accepted and will insert a bar check only rather than a literal bar. FALSE
is treated as NULL
for completeness.pc()
and pn()
.scale_note()
.track()
function. No more relative transposed keys. Now takes an explicit key
argument that overrides the global key
from sheet music render functions. Other arguments simplified and rearranged.noteinfo
to complement noteworthy
and associated functions.music
which builds upon the combination of noteworthy
and noteinfo
, similar in content to phrase
but maintaining the structure of the other tabr
classes for data manipulation and analysis.c
, length
, [
and more to be used with special classes available in tabr
.noteworthy
class.noteworthy
objects. For example, time_format
.t
-prefix, e.g., 4 4] t8 t8- t8^ 4
. Support extends to music
objects and now also to phrase()
, which alleviates reliance on the triplet()
function and its limitations.lyrics
class that parallels the structure and behavior of the other classes; added associated functions and generic method implementations.lyrics
argument support to music
object construction and transformations.track*
functions to support combining lyrics with an existing phrase
object.render_music*
functions for making simple sheet music snippets directly from music
objects. This abstracts the phrase() |> track() [|> trackbind()] |> score() |> render_*()
pipeline from the user for simpler music that is essentially a single voice, single track.plot_music*
function wrappers around corresponding render_music*
functions to further abstract the external LilyPond process.render_music*
and plot_music*
functions to automatically handle lyrics contained in a music object.colors
argument that takes a named list of color overrides for lilypond()
and render_*
functions.tuneR
installation) and a set of functions for inspecting and manipulating the table of MIDI music data.noteworthy
, noteinfo
, music
and phrase
classes so the MIDI data can be analyzed, transformed, edited and rendered to sheet music and a new MIDI file.noteinfo
and music
objects.from_chorrrds()
(for chord output from chorrrds
package) and from_music21()
, for converting other music notation syntax to tabr
syntax.track_*
wrapper functions to provide better default track arguments for different instruments and use cases.render_tab()
alias to tab()
for consistent naming, and other functions render_score()
and render_midi()
as simpler wrappers around tab()
with appropriate fewer arguments and appropriate argument defaults.rests
argument to some note metadata functions.-.
, --
, -+
, etc. Otherwise spelled out in bracketed text: -.
is the same as [staccato]
. The break is that the old form of staccato ]
is no longer allowed. Switch to -.
or [staccato]
. The leading -
does not cause conflict with the single -
, which continues to represent slide notation.s
-suffix string numbering. All instances of single string number inputs are assumed starting string and any additional strings are inferred consecutively.plot_fretboard()
(renamed from fretboard_plot
) and added wrapper function plot_chord()
for more convenient chord diagrams.simplify_phrase()
and the new (default) argument to lilypond()
, simplify = TRUE
, which is also used by associated render_*
functions.fnord-repeater
for several helpful suggestions and insights as well as example code that helped to make the transcription pipeline better.sf_phrase()
. Instead of providing the first three function arguments, string
, fret
and info
, separately, you can now provide everything to the first input string
as a single character string containing all three components separated by semicolons. This makes it easier to reason about the input by time step rather than by argument.chord_root()
, chord_top()
, chord_slice()
, chord_is_major()
, chord_is_minor()
.pitch_freq()
, freq_pitch()
and other related functions.no_tab
argument to track()
allowing for suppression of tab staff when music staff is included, e.g., for vocal tracks.no_tab
-associated documentation and unit test updates.dup
and glue
. Now use pn
for repeating phrases n
times and pc
for concatenating multiple phrases.fretboard_plot
for making fretboard diagrams outside of the LilyPond tablature pipeline. This necessitates importing ggplot2
.chord_*
-named functions and also have shorter x*
-named aliases. These are “piano chords,” i.e., based on the condensed, defining intervals.guitarChords
dataset containing several thousand formations of guitar chord voicings.guitarChords
for obtaining guitar chord information and mapping between different defining properties of a chord, most notably the addition of gc_notes()
and gc_fretboard()
for mapping chord names to noteworthy strings and fretboard diagram syntax.noteworthy
class, used internally, optional for users (includes custom print and summary methods).mainIntervals
dataset.phrase
object construction).noteworthy
class output.transpose()
to handle additional edge cases, including a new style option, strip
.NA
-valued no-chord rests (s
or r
) were unnamed in output of chord_set()
.tabrSyntax
.as_phrase()
..keydata
helper table.tabr
.tuplet()
and triplet()
to accept a phrase object as well as a character string of notes. Previously, only notes were accepted but this was too limiting. The argument name has changed to from notes
to x
and tuplet()
will now check the class of x
and handle phrase objects accordingly.tuplet()
.sf_phrase()
and sfp()
updated to allow returning early with only the notes string as opposed to the entire phrase object. This is useful if you just want a quick, cleaner string representation of what notes are mapped by string/fret combinations..onLoad
for non-Windows systems.tibble
package dependency. Using only dplyr
suffices.lintr
to Suggests field in DESCRIPTION per CRAN maintainer request regarding testthat
unit tests.lilypond()
example from dontrun
tag.tempdir()
location for examples that write files.Adjustments to meet requirements for CRAN resubmission:
tempdir
.dontrun
tag around one last file-writing package example that was using lilypond()
.lilypond()
, tab()
, midily()
and miditab()
to work with system calls that use absolute paths for output files instead of only working with relative paths..ly
) files and wrapping around system calls to LilyPond for rendering sheet music to pdf or png..mid
to .ly
and .mid
to tab output convenience functions.