dplyr package release.testthat package release.plot_fretboard()andplot_chord() including the addition offret_labels andfret_offset arguments.tabr_lilypond_api()).tabr_lilypond_api()).freq_ratio().dplyr 1.0+.freq_ratio() generic for generating a data frameof frequency ratios from frequencies, noteworthy objects, or musicobjects.tabr LilyPond API details.pitch_freq() documentation error.as_music().bar argument tophrase() (andassociated functions) is nowNULL by default, or character,rather than simplyTRUE orFALSE. If a stringis provided, it is interpreted as LilyPond bar notation. E.g.,bar = "|" adds the LilyPond syntax\bar "|" tothe end of a phrase.TRUE is still acceptedand will insert a bar check only rather than a literal bar.FALSE is treated asNULL forcompleteness.pc() andpn().scale_note().track() function. Nomore relative transposed keys. Now takes an explicitkeyargument that overrides the globalkey from sheet musicrender functions. Other arguments simplified and rearranged.noteinfo to complementnoteworthy and associated functions.music which builds upon the combinationofnoteworthy andnoteinfo, similar in contenttophrase but maintaining the structure of the othertabr classes for data manipulation and analysis.c,length,[ andmore to be used with special classes available intabr.noteworthyclass.noteworthyobjects. For example,time_format.t-prefix, e.g.,4 4] t8 t8- t8^ 4. Supportextends tomusic objects and now also tophrase(), which alleviates reliance on thetriplet() function and its limitations.lyrics class that parallels the structure andbehavior of the other classes; added associated functions and genericmethod implementations.lyrics argument support tomusicobject construction and transformations.track* functions to supportcombining lyrics with an existingphrase object.render_music* functions for making simple sheetmusic snippets directly frommusic objects. This abstractsthephrase() |> track() [|> trackbind()] |> score() |> render_*()pipeline from the user for simpler music that is essentially a singlevoice, single track.plot_music* function wrappers aroundcorrespondingrender_music* functions to further abstractthe external LilyPond process.render_music* andplot_music* functions to automatically handle lyricscontained in a music object.colors argument that takes a named list ofcolor overrides forlilypond() andrender_*functions.tuneRinstallation) and a set of functions for inspecting and manipulating thetable of MIDI music data.noteworthy,noteinfo,music andphrase classes so the MIDI data can be analyzed,transformed, edited and rendered to sheet music and a new MIDIfile.noteinfo andmusic objects.from_chorrrds() (for chordoutput fromchorrrds package) andfrom_music21(), for converting other music notation syntaxtotabr syntax.track_* wrapper functions to provide betterdefault track arguments for different instruments and use cases.render_tab() alias totab() forconsistent naming, and other functionsrender_score() andrender_midi() as simpler wrappers aroundtab()with appropriate fewer arguments and appropriate argument defaults.rests argument to some note metadatafunctions.-.,--,-+, etc. Otherwise spelled out inbracketed text:-. is the same as[staccato].The break is that the old form of staccato] is no longerallowed. Switch to-. or[staccato]. Theleading- does not cause conflict with the single-, which continues to represent slide notation.s-suffix stringnumbering. All instances of single string number inputs are assumedstarting string and any additional strings are inferredconsecutively.plot_fretboard() (renamed fromfretboard_plot) and added wrapper functionplot_chord() for more convenient chord diagrams.simplify_phrase() and the new (default)argument tolilypond(),simplify = TRUE, whichis also used by associatedrender_* functions.fnord-repeater for several helpfulsuggestions and insights as well as example code that helped to make thetranscription pipeline better.sf_phrase().Instead of providing the first three function arguments,string,fret andinfo,separately, you can now provide everything to the first inputstring as a single character string containing all threecomponents separated by semicolons. This makes it easier to reason aboutthe 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 relatedfunctions.no_tab argument totrack() allowingfor suppression of tab staff when music staff is included, e.g., forvocal tracks.no_tab-associated documentation and unit testupdates.dup andglue. Now usepn for repeating phrasesn times andpc for concatenating multiple phrases.fretboard_plot for making fretboard diagramsoutside of the LilyPond tablature pipeline. This necessitates importingggplot2.chord_*-named functions and also have shorterx*-named aliases. These are “piano chords,” i.e., based onthe condensed, defining intervals.guitarChords dataset containing several thousandformations of guitar chord voicings.guitarChords forobtaining guitar chord information and mapping between differentdefining properties of a chord, most notably the addition ofgc_notes() andgc_fretboard() for mappingchord names to noteworthy strings and fretboard diagram syntax.noteworthy class, used internally, optional forusers (includes custom print and summary methods).mainIntervals dataset.phraseobject construction).noteworthyclass output.transpose() to handle additional edge cases,including a new style option,strip.NA-valued no-chord rests(s orr) were unnamed in output ofchord_set().tabrSyntax.as_phrase()..keydata helper table.tabr.tuplet() andtriplet() toaccept a phrase object as well as a character string of notes.Previously, only notes were accepted but this was too limiting. Theargument name has changed to fromnotes toxandtuplet() will now check the class ofx andhandle phrase objects accordingly.tuplet().sf_phrase() andsfp() updated to allowreturning early with only the notes string as opposed to the entirephrase object. This is useful if you just want a quick, cleaner stringrepresentation of what notes are mapped by string/fretcombinations..onLoad for non-Windows systems.tibble package dependency. Using onlydplyr suffices.lintr to Suggests field in DESCRIPTION per CRANmaintainer request regardingtestthat unit tests.lilypond() example fromdontruntag.tempdir() location for examples that writefiles.Adjustments to meet requirements for CRAN resubmission:
tempdir.dontrun tag around one last file-writing packageexample that was usinglilypond().lilypond(),tab(),midily() andmiditab() to work with systemcalls that use absolute paths for output files instead of only workingwith relative paths..ly) files and wrapping around system calls to LilyPondfor rendering sheet music to pdf or png..mid to.ly and.mid totab output convenience functions.