Skip to content

tabr 0.4.0 release

Compare
Choose a tag to compare
@leonawicz leonawicz released this 04 Dec 16:08
· 65 commits to master since this release
  • Breaking change: major refactor of 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.
  • Refactored many package functions. Most behavior unchanged, but some breaking changes were made based on intentional shifts in perspective about what some functions should do and how the user should interact with them. This included changes to function arguments as well as some redefinition of what certain functions do.
  • Substantial code optimization was done, overhauling much of the package in the process.
  • Vectorized functions that previously only operated note by note.
  • Generalized functions that previously could accept notes but not chords, doing so on a case by case basis in ways that are meaningful and sensible for handling chords.
  • Added new classes noteinfo to complement noteworthy and associated functions.
  • Added new class 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.
  • Added implementations for several common R functions including primitives like c, length, [ and more to be used with special classes available in tabr.
  • Added logical operator methods for the noteworthy class.
  • Refactored some basic metadata functions as generics to dispatch to the new classes rather than only working for noteworthy objects. For example, time_format.
  • Added native triplet support in note info using the 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.
  • Added lyrics class that parallels the structure and behavior of the other classes; added associated functions and generic method implementations.
  • Added lyrics support to music object construction and transformations.
  • Added lyrics argument to track* functions to support combining lyrics with an existing phrase object.
  • Added 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.
  • Added plot_music_* function wrappers around corresponding render_music_* functions to further abstract the external LilyPond process.
  • Added support for render_music_* and plot_music_* functions to automatically handle lyrics contained in a music object.
  • Added support for auto-cropping of rendered sheet music when the output format is png.
  • Added transparent background png support.
  • Added a colors argument that takes a named list of color overrides for lilypond and render_* functions.
  • Added MIDI file read support (requires optional tuneR installation) and a set of functions for inspecting and manipulating the table of MIDI music data.
  • Added initial support for conversion of MIDI file input to 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.
  • Added more functions for music data manipulation and analysis.
  • Added more functions for mapping between noteworthy strings, phrase objects, and data frames.
  • Added functions for summarizing times and durations in noteinfo and music objects.
  • Added syntax converters from_chorrrds (for chord output from chorrrds package) and from_music21, for converting other music notation syntax to tabr syntax.
  • Added track_* wrapper functions to provide better default track arguments for different instruments and use cases.
  • Added 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.
  • Added new vignettes on syntax conversion and rendering chord charts.
  • Updated vignettes, readme and other documentation.
  • Made improvements to print method for phrase objects.
  • Added rests argument to some note metadata functions.
  • Breaking change: Added support for many articulations. Some have abbreviated syntax options beginning with a hyphen: -., --, -+, 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.
  • No more need (or support for) the s-suffix string numbering. All instances of single string number inputs are assumed starting string and any additional strings are inferred consecutively.
  • Improvements to plot_fretboard (renamed from fretboard_plot) and added wrapper function plot_chord for more convenient chord diagrams.
  • Minor bug fixes.
  • Significantly simplified LilyPond syntax for generated LilyPond files by adding simplify_phrase and the new (default) argument to lilypond, simplify = TRUE, which is also used by associated render_* functions.
  • Thank you to fnord-repeater for several helpful suggestions and insights as well as example code that helped to make the transcription pipeline better.
  • Thank you to Han Oostdijk for additional bug fixes and improvements to the code for the transcription pipeline.