{
  "_id": "6a1079fbacfb0bcc41cad98e",
  "Package": "tabr",
  "Title": "Music Notation Syntax, Manipulation, Analysis and Transcription\nin R",
  "Version": "0.5.5",
  "Authors@R": "person(\"Matthew\", \"Leonawicz\", email = \"rpkgs@pm.me\", role = c(\"aut\", \"cre\"), comment = c(ORCID = \"0000-0001-9452-2771\"))",
  "Description": "Provides a music notation syntax and a collection of music\nprogramming functions for generating, manipulating, organizing,\nand analyzing musical information in R. Music syntax can be\nentered directly in character strings, for example to quickly\ntranscribe short pieces of music. The package contains\nfunctions for directly performing various mathematical, logical\nand organizational operations and musical transformations on\nspecial object classes that facilitate working with music data\nand notation. The same music data can be organized in tidy data\nframes for a familiar and powerful approach to the analysis of\nlarge amounts of structured music data. Functions are available\nfor mapping seamlessly between these formats and their\nrepresentations of musical information. The package also\nprovides an API to 'LilyPond' (<https://lilypond.org/>) for\ntranscribing musical representations in R into tablature\n(\"tabs\") and sheet music. 'LilyPond' is open source music\nengraving software for generating high quality sheet music\nbased on markup syntax. The package generates 'LilyPond' files\nfrom R code and can pass them to the 'LilyPond' command line\ninterface to be rendered into sheet music PDF files or inserted\ninto R markdown documents. The package offers nominal MIDI file\noutput support in conjunction with rendering sheet music. The\npackage can read MIDI files and attempts to structure the MIDI\ndata to integrate as best as possible with the data structures\nand functionality found throughout the package.",
  "License": "MIT + file LICENSE",
  "URL": "https://github.com/leonawicz/tabr,\nhttps://leonawicz.github.io/tabr/",
  "BugReports": "https://github.com/leonawicz/tabr/issues",
  "VignetteBuilder": "knitr",
  "ByteCompile": "true",
  "Encoding": "UTF-8",
  "LazyData": "true",
  "Roxygen": "list(markdown = TRUE)",
  "RoxygenNote": "7.3.2",
  "SystemRequirements": "LilyPond v2.22.1-2+ (needed for rendering sheet\nmusic or writing MIDI files)",
  "Config/pak/sysreqs": "libicu-dev",
  "Repository": "https://leonawicz.r-universe.dev",
  "Date/Publication": "2026-01-06 16:30:19 UTC",
  "RemoteUrl": "https://github.com/leonawicz/tabr",
  "RemoteRef": "HEAD",
  "RemoteSha": "c5dc81c83b519046ff6295038d83767888a5a77d",
  "NeedsCompilation": "no",
  "Packaged": {
    "Date": "2026-05-06 08:23:07 UTC",
    "User": "root"
  },
  "Author": "Matthew Leonawicz [aut, cre] (ORCID:\n<https://orcid.org/0000-0001-9452-2771>)",
  "Maintainer": "Matthew Leonawicz <rpkgs@pm.me>",
  "MD5sum": "d374b87e8052c814b82f8d3b3465194d",
  "_user": "leonawicz",
  "_type": "src",
  "_file": "tabr_0.5.5.tar.gz",
  "_fileid": "71ae853099febd228064404949d6d403e18d873f4d1b5a1ba33e183df10407a7",
  "_filesize": 845946,
  "_sha256": "71ae853099febd228064404949d6d403e18d873f4d1b5a1ba33e183df10407a7",
  "_created": "2026-05-06T08:23:07.000Z",
  "_published": "2026-05-22T15:44:59.671Z",
  "_distro": "noble",
  "_jobs": [
    {
      "job": 77413548976,
      "time": 168,
      "config": "linux-devel-x86_64",
      "r": "4.7.0",
      "check": "OK",
      "artifact": "6825721870"
    },
    {
      "job": 77413548543,
      "time": 156,
      "config": "linux-release-x86_64",
      "r": "4.6.0",
      "check": "OK",
      "artifact": "6825716890"
    },
    {
      "job": 77413548544,
      "time": 126,
      "config": "macos-oldrel-arm64",
      "r": "4.5.3",
      "check": "OK",
      "artifact": "6825707835"
    },
    {
      "job": 77413548953,
      "time": 135,
      "config": "macos-release-arm64",
      "r": "4.6.0",
      "check": "OK",
      "artifact": "6825710903"
    },
    {
      "job": 77413548178,
      "time": 207,
      "config": "source",
      "r": "4.6.0",
      "check": "OK",
      "artifact": "6825673404"
    },
    {
      "job": 77413548147,
      "time": 121,
      "config": "wasm-release",
      "r": "4.6.0",
      "check": "OK",
      "artifact": "7164598423"
    },
    {
      "job": 77413548747,
      "time": 122,
      "config": "windows-devel",
      "r": "4.7.0",
      "check": "OK",
      "artifact": "6825707199"
    },
    {
      "job": 77413548961,
      "time": 145,
      "config": "windows-oldrel",
      "r": "4.5.3",
      "check": "OK",
      "artifact": "6825714047"
    },
    {
      "job": 77413549090,
      "time": 126,
      "config": "windows-release",
      "r": "4.6.0",
      "check": "OK",
      "artifact": "6825708332"
    }
  ],
  "_buildurl": "https://github.com/r-universe/leonawicz/actions/runs/25424250849",
  "_status": "success",
  "_host": "GitHub-Actions",
  "_upstream": "https://github.com/leonawicz/tabr",
  "_commit": {
    "id": "c5dc81c83b519046ff6295038d83767888a5a77d",
    "author": "leonawicz <rpkgs@proton.me>",
    "committer": "leonawicz <rpkgs@proton.me>",
    "message": "Update site.\n",
    "time": 1767717019
  },
  "_maintainer": {
    "name": "Matthew Leonawicz",
    "email": "rpkgs@pm.me",
    "orcid": "0000-0001-9452-2771"
  },
  "_registered": true,
  "_dependencies": [
    {
      "package": "R",
      "version": ">= 4.1",
      "role": "Depends"
    },
    {
      "package": "crayon",
      "role": "Imports"
    },
    {
      "package": "dplyr",
      "role": "Imports"
    },
    {
      "package": "ggplot2",
      "role": "Imports"
    },
    {
      "package": "purrr",
      "role": "Imports"
    },
    {
      "package": "tibble",
      "role": "Imports"
    },
    {
      "package": "tidyr",
      "role": "Imports"
    },
    {
      "package": "fansi",
      "role": "Suggests"
    },
    {
      "package": "gridExtra",
      "role": "Suggests"
    },
    {
      "package": "htmltools",
      "role": "Suggests"
    },
    {
      "package": "kableExtra",
      "role": "Suggests"
    },
    {
      "package": "knitr",
      "role": "Suggests"
    },
    {
      "package": "png",
      "role": "Suggests"
    },
    {
      "package": "rmarkdown",
      "role": "Suggests"
    },
    {
      "package": "testthat",
      "role": "Suggests"
    },
    {
      "package": "tuneR",
      "role": "Suggests"
    }
  ],
  "_owner": "leonawicz",
  "_selfowned": true,
  "_usedby": 1,
  "_updates": [
    {
      "week": "2025-27",
      "n": 2
    },
    {
      "week": "2025-44",
      "n": 4
    },
    {
      "week": "2026-02",
      "n": 3
    }
  ],
  "_tags": [
    {
      "name": "v0.5.4",
      "date": "2025-10-30"
    },
    {
      "name": "v0.5.5",
      "date": "2026-01-06"
    }
  ],
  "_topics": [
    "guitar-tablature",
    "lilypond",
    "lilypond-api",
    "music-analysis",
    "music-data",
    "music-notation",
    "music-programming",
    "music-syntax",
    "music-transcription",
    "sheet-music"
  ],
  "_stars": 139,
  "_contributors": [
    {
      "user": "leonawicz",
      "count": 7,
      "uuid": 1672103
    },
    {
      "user": "davisvaughan",
      "count": 2,
      "uuid": 19150088
    },
    {
      "user": "hadley",
      "count": 1,
      "uuid": 4196
    },
    {
      "user": "hanoostdijk",
      "count": 1,
      "uuid": 13506389
    }
  ],
  "_userbio": {
    "uuid": 1672103,
    "type": "user",
    "name": "Matt Leonawicz",
    "description": "R and Shiny developer | Software Engineer @ropensci @r-music"
  },
  "_downloads": {
    "count": 560,
    "source": "https://cranlogs.r-pkg.org/downloads/total/last-month/tabr"
  },
  "_devurl": "https://github.com/leonawicz/tabr",
  "_pkgdown": "https://leonawicz.github.io/tabr/",
  "_searchresults": 108,
  "_rbuild": "4.6.0",
  "_assets": [
    "extra/citation.cff",
    "extra/citation.html",
    "extra/citation.json",
    "extra/citation.txt",
    "extra/contents.json",
    "extra/NEWS.html",
    "extra/NEWS.txt",
    "extra/readme.html",
    "extra/readme.md",
    "extra/tabr.html",
    "manual.pdf"
  ],
  "_homeurl": "https://github.com/leonawicz/tabr",
  "_realowner": "leonawicz",
  "_cranurl": true,
  "_releases": [
    {
      "version": "0.1.2",
      "date": "2018-04-18"
    },
    {
      "version": "0.2.0",
      "date": "2018-05-17"
    },
    {
      "version": "0.3.0",
      "date": "2019-06-23"
    },
    {
      "version": "0.3.5",
      "date": "2019-10-06"
    },
    {
      "version": "0.4.0",
      "date": "2019-12-04"
    },
    {
      "version": "0.4.1",
      "date": "2020-02-09"
    },
    {
      "version": "0.4.2",
      "date": "2020-03-17"
    },
    {
      "version": "0.4.3",
      "date": "2020-05-05"
    },
    {
      "version": "0.4.4",
      "date": "2020-11-17"
    },
    {
      "version": "0.4.5",
      "date": "2021-02-21"
    },
    {
      "version": "0.4.9",
      "date": "2023-09-21"
    },
    {
      "version": "0.5.0",
      "date": "2024-06-29"
    },
    {
      "version": "0.5.1",
      "date": "2024-09-11"
    },
    {
      "version": "0.5.2",
      "date": "2025-04-28"
    },
    {
      "version": "0.5.3",
      "date": "2025-07-03"
    },
    {
      "version": "0.5.4",
      "date": "2025-10-31"
    },
    {
      "version": "0.5.5",
      "date": "2026-01-09"
    }
  ],
  "_exports": [
    "accidental_type",
    "as_integer_octaves",
    "as_lyrics",
    "as_music",
    "as_music_df",
    "as_noteinfo",
    "as_noteworthy",
    "as_phrase",
    "as_space_time",
    "as_tick_octaves",
    "as_vector_time",
    "bpm",
    "cents_to_ratio",
    "chord_11",
    "chord_13",
    "chord_5",
    "chord_7s11",
    "chord_7s5",
    "chord_7s9",
    "chord_add9",
    "chord_arpeggiate",
    "chord_aug",
    "chord_break",
    "chord_def",
    "chord_degree",
    "chord_dim",
    "chord_dim7",
    "chord_dom7",
    "chord_dom9",
    "chord_freq",
    "chord_invert",
    "chord_is_major",
    "chord_is_minor",
    "chord_m7b5",
    "chord_madd9",
    "chord_maj",
    "chord_maj11",
    "chord_maj13",
    "chord_maj6",
    "chord_maj7",
    "chord_maj7s11",
    "chord_maj9",
    "chord_min",
    "chord_min11",
    "chord_min13",
    "chord_min6",
    "chord_min7",
    "chord_min9",
    "chord_order",
    "chord_rank",
    "chord_root",
    "chord_semitones",
    "chord_set",
    "chord_size",
    "chord_slice",
    "chord_sort",
    "chord_sus2",
    "chord_sus4",
    "chord_top",
    "distinct_notes",
    "distinct_octaves",
    "distinct_pitches",
    "duration_to_ticks",
    "dyad",
    "flatten_sharp",
    "freq_pitch",
    "freq_ratio",
    "freq_semitones",
    "from_chorrrds",
    "from_music21",
    "gc_fretboard",
    "gc_info",
    "gc_is_known",
    "gc_name_mod",
    "gc_name_root",
    "gc_name_split",
    "gc_notes",
    "gc_notes_to_fb",
    "hp",
    "info_annotation",
    "info_articulation",
    "info_bend",
    "info_dotted",
    "info_double_dotted",
    "info_duration",
    "info_single_dotted",
    "info_slide",
    "info_slur_off",
    "info_slur_on",
    "informable",
    "interval_semitones",
    "is_chord",
    "is_diatonic",
    "is_in_scale",
    "is_lyrics",
    "is_mode",
    "is_music",
    "is_note",
    "is_noteinfo",
    "is_noteworthy",
    "is_space_time",
    "is_vector_time",
    "key_is_flat",
    "key_is_major",
    "key_is_minor",
    "key_is_natural",
    "key_is_sharp",
    "key_n_flats",
    "key_n_sharps",
    "keys",
    "lilypond",
    "lilypond_root",
    "lilypond_version",
    "lp_chord_id",
    "lp_chord_mod",
    "lyrical",
    "lyrics_template",
    "midi_key",
    "midi_metadata",
    "midi_notes",
    "midi_time",
    "midily",
    "miditab",
    "mode_aeolian",
    "mode_dorian",
    "mode_ionian",
    "mode_locrian",
    "mode_lydian",
    "mode_mixolydian",
    "mode_modern",
    "mode_phrygian",
    "mode_rotate",
    "modes",
    "music_info",
    "music_key",
    "music_lyrics",
    "music_notes",
    "music_split",
    "music_strings",
    "music_tempo",
    "music_time",
    "musical",
    "n_beats",
    "n_chords",
    "n_measures",
    "n_notes",
    "n_octaves",
    "n_steps",
    "naturalize",
    "notable",
    "notate",
    "note_arpeggiate",
    "note_has_accidental",
    "note_has_flat",
    "note_has_integer",
    "note_has_natural",
    "note_has_rest",
    "note_has_sharp",
    "note_has_tick",
    "note_in_scale",
    "note_is_accidental",
    "note_is_equal",
    "note_is_flat",
    "note_is_identical",
    "note_is_integer",
    "note_is_natural",
    "note_is_rest",
    "note_is_sharp",
    "note_is_tick",
    "note_ngram",
    "note_rotate",
    "note_set_key",
    "note_shift",
    "note_slice",
    "note_sort",
    "noteworthy",
    "notify",
    "octave_is_equal",
    "octave_is_identical",
    "octave_range",
    "octave_span",
    "octave_type",
    "octaves",
    "p",
    "pc",
    "pct",
    "phrase",
    "phrase_info",
    "phrase_notes",
    "phrase_strings",
    "phrasey",
    "pitch_diff",
    "pitch_freq",
    "pitch_interval",
    "pitch_is_equal",
    "pitch_is_identical",
    "pitch_range",
    "pitch_semitones",
    "pitch_seq",
    "plot_chord",
    "plot_fretboard",
    "plot_music",
    "plot_music_bass",
    "plot_music_bc",
    "plot_music_guitar",
    "plot_music_tab",
    "plot_music_tc",
    "pn",
    "pretty_notes",
    "ratio_to_cents",
    "read_midi",
    "render_chordchart",
    "render_midi",
    "render_music",
    "render_music_bass",
    "render_music_bc",
    "render_music_guitar",
    "render_music_tab",
    "render_music_tc",
    "render_score",
    "render_tab",
    "rest",
    "rp",
    "scale_chords",
    "scale_chromatic",
    "scale_degree",
    "scale_diatonic",
    "scale_diff",
    "scale_harmonic_minor",
    "scale_hungarian_minor",
    "scale_interval",
    "scale_jazz_minor",
    "scale_major",
    "scale_melodic_minor",
    "scale_minor",
    "scale_note",
    "score",
    "seconds",
    "seconds_per_measure",
    "seconds_per_step",
    "semitone_freq",
    "semitone_pitch",
    "semitone_range",
    "semitone_span",
    "sf_note",
    "sf_phrase",
    "sfn",
    "sfp",
    "sharpen_flat",
    "simplify_phrase",
    "steps_per_measure",
    "steps_start_time",
    "string_fold",
    "string_unfold",
    "tab",
    "tabr_lilypond_api",
    "tabr_options",
    "tally_notes",
    "tally_octaves",
    "tally_pitches",
    "ticks_to_duration",
    "tie",
    "time_format",
    "to_tabr",
    "tp",
    "track",
    "track_bass",
    "track_bc",
    "track_guitar",
    "track_tc",
    "trackbind",
    "transpose",
    "triplet",
    "tuning_intervals",
    "tuplet",
    "untie",
    "volta",
    "x_11",
    "x_13",
    "x5",
    "x7",
    "x7s11",
    "x7s5",
    "x7s9",
    "x9",
    "xadd9",
    "xaug",
    "xdim",
    "xdim7",
    "xm",
    "xM",
    "xm11",
    "xM11",
    "xm13",
    "xM13",
    "xm6",
    "xM6",
    "xm7",
    "xM7",
    "xm7b5",
    "xM7s11",
    "xm9",
    "xM9",
    "xma9",
    "xs2",
    "xs4"
  ],
  "_datasets": [
    {
      "name": "articulations",
      "title": "Single note articulations and syntax",
      "object": "articulations",
      "class": [
        "data.frame"
      ],
      "fields": [
        "type",
        "value",
        "abb"
      ],
      "rows": 44,
      "table": true,
      "tojson": true
    },
    {
      "name": "guitarChords",
      "title": "Predefined guitar chords",
      "object": "guitarChords",
      "class": [
        "tbl_df",
        "tbl",
        "data.frame"
      ],
      "fields": [
        "id",
        "lp_name",
        "root",
        "octave",
        "root_fret",
        "min_fret",
        "bass_string",
        "notes",
        "frets",
        "semitones",
        "fretboard",
        "open"
      ],
      "rows": 3967,
      "table": true,
      "tojson": true
    },
    {
      "name": "mainIntervals",
      "title": "Main musical intervals",
      "object": "mainIntervals",
      "class": [
        "data.frame"
      ],
      "fields": [
        "semitones",
        "mmp",
        "mmp_abb",
        "ad",
        "ad_abb"
      ],
      "rows": 26,
      "table": true,
      "tojson": true
    },
    {
      "name": "tabrSyntax",
      "title": "tabr syntax",
      "object": "tabrSyntax",
      "class": [
        "data.frame"
      ],
      "fields": [
        "description",
        "syntax",
        "example"
      ],
      "rows": 15,
      "table": true,
      "tojson": true
    },
    {
      "name": "tunings",
      "title": "Predefined instrument tunings",
      "object": "tunings",
      "class": [
        "data.frame"
      ],
      "fields": [
        "id",
        "value"
      ],
      "rows": 32,
      "table": true,
      "tojson": true
    }
  ],
  "_help": [
    {
      "page": "append_phrases",
      "title": "Concatenate and repeat",
      "topics": [
        "append_phrases",
        "pc",
        "pn"
      ]
    },
    {
      "page": "articulations",
      "title": "Single note articulations and syntax",
      "topics": [
        "articulations"
      ]
    },
    {
      "page": "as_music_df",
      "title": "Noteworthy string to data frame",
      "topics": [
        "as_music_df"
      ]
    },
    {
      "page": "chord_arpeggiate",
      "title": "Arpeggiate a chord",
      "topics": [
        "chord_arpeggiate"
      ]
    },
    {
      "page": "chord_break",
      "title": "Broken chords",
      "topics": [
        "chord_break"
      ]
    },
    {
      "page": "chord_def",
      "title": "Define chords",
      "topics": [
        "chord_def"
      ]
    },
    {
      "page": "chord_invert",
      "title": "Chord inversion",
      "topics": [
        "chord_invert"
      ]
    },
    {
      "page": "chord_is_major",
      "title": "Check if chords are major or minor",
      "topics": [
        "chord_is_major",
        "chord_is_minor"
      ]
    },
    {
      "page": "chord_set",
      "title": "Generate a chord set",
      "topics": [
        "chord_set"
      ]
    },
    {
      "page": "chord-compare",
      "title": "Rank, order and sort chords and notes",
      "topics": [
        "chord-compare",
        "chord_order",
        "chord_rank",
        "chord_sort"
      ]
    },
    {
      "page": "chord-filter",
      "title": "Extract notes from chords",
      "topics": [
        "chord-filter",
        "chord_root",
        "chord_slice",
        "chord_top"
      ]
    },
    {
      "page": "chord-mapping",
      "title": "Chord mapping",
      "topics": [
        "chord-mapping",
        "gc_fretboard",
        "gc_info",
        "gc_is_known",
        "gc_name_mod",
        "gc_name_root",
        "gc_name_split",
        "gc_notes",
        "gc_notes_to_fb"
      ]
    },
    {
      "page": "chords",
      "title": "Chord constructors",
      "topics": [
        "chords",
        "chord_11",
        "chord_13",
        "chord_5",
        "chord_7s11",
        "chord_7s5",
        "chord_7s9",
        "chord_add9",
        "chord_aug",
        "chord_dim",
        "chord_dim7",
        "chord_dom7",
        "chord_dom9",
        "chord_m7b5",
        "chord_madd9",
        "chord_maj",
        "chord_maj11",
        "chord_maj13",
        "chord_maj6",
        "chord_maj7",
        "chord_maj7s11",
        "chord_maj9",
        "chord_min",
        "chord_min11",
        "chord_min13",
        "chord_min6",
        "chord_min7",
        "chord_min9",
        "chord_sus2",
        "chord_sus4",
        "x5",
        "x7",
        "x7s11",
        "x7s5",
        "x7s9",
        "x9",
        "xadd9",
        "xaug",
        "xdim",
        "xdim7",
        "xM",
        "xm",
        "xM11",
        "xm11",
        "xM13",
        "xm13",
        "xM6",
        "xm6",
        "xM7",
        "xm7",
        "xm7b5",
        "xM7s11",
        "xM9",
        "xm9",
        "xma9",
        "xs2",
        "xs4",
        "x_11",
        "x_13"
      ]
    },
    {
      "page": "double-bracket",
      "title": "Double bracket methods for tabr classes",
      "topics": [
        "double-bracket",
        "[[.lyrics",
        "[[.music",
        "[[.noteinfo",
        "[[.noteworthy",
        "[[<-.lyrics",
        "[[<-.music",
        "[[<-.noteinfo",
        "[[<-.noteworthy"
      ]
    },
    {
      "page": "dyad",
      "title": "Construct a dyad",
      "topics": [
        "dyad"
      ]
    },
    {
      "page": "freq_ratio",
      "title": "Frequency ratios",
      "topics": [
        "freq_ratio"
      ]
    },
    {
      "page": "guitarChords",
      "title": "Predefined guitar chords",
      "topics": [
        "guitarChords"
      ]
    },
    {
      "page": "hp",
      "title": "Hammer ons and pull offs",
      "topics": [
        "hp"
      ]
    },
    {
      "page": "interval_semitones",
      "title": "Interval semitones",
      "topics": [
        "interval_semitones"
      ]
    },
    {
      "page": "intervals",
      "title": "Interval helpers",
      "topics": [
        "intervals",
        "pitch_diff",
        "pitch_interval",
        "scale_diff",
        "scale_interval",
        "tuning_intervals"
      ]
    },
    {
      "page": "is_diatonic",
      "title": "Check if notes and chords are diatonic",
      "topics": [
        "is_diatonic"
      ]
    },
    {
      "page": "keys",
      "title": "Key signatures",
      "topics": [
        "keys",
        "key_is_flat",
        "key_is_major",
        "key_is_minor",
        "key_is_natural",
        "key_is_sharp",
        "key_n_flats",
        "key_n_sharps"
      ]
    },
    {
      "page": "lilypond",
      "title": "Save score to LilyPond file",
      "topics": [
        "lilypond"
      ]
    },
    {
      "page": "lilypond_root",
      "title": "LilyPond installation information",
      "topics": [
        "lilypond_root",
        "lilypond_version",
        "tabr_lilypond_api"
      ]
    },
    {
      "page": "lp_chord_id",
      "title": "LilyPond chord notation",
      "topics": [
        "lp_chord_id",
        "lp_chord_mod"
      ]
    },
    {
      "page": "lyrics",
      "title": "Create lyrics and check lyrics string validity",
      "topics": [
        "as_lyrics",
        "is_lyrics",
        "lyrical",
        "lyrics",
        "lyrics_template"
      ]
    },
    {
      "page": "mainIntervals",
      "title": "Main musical intervals",
      "topics": [
        "mainIntervals"
      ]
    },
    {
      "page": "midily",
      "title": "Convert MIDI to LilyPond file",
      "topics": [
        "midily"
      ]
    },
    {
      "page": "miditab",
      "title": "Convert MIDI to tablature",
      "topics": [
        "miditab"
      ]
    },
    {
      "page": "mode-helpers",
      "title": "Mode helpers",
      "topics": [
        "is_mode",
        "mode-helpers",
        "modes",
        "mode_aeolian",
        "mode_dorian",
        "mode_ionian",
        "mode_locrian",
        "mode_lydian",
        "mode_mixolydian",
        "mode_modern",
        "mode_phrygian",
        "mode_rotate"
      ]
    },
    {
      "page": "music",
      "title": "Create music objects and check music string validity",
      "topics": [
        "as_music",
        "is_music",
        "music",
        "musical",
        "music_split"
      ]
    },
    {
      "page": "music-helpers",
      "title": "Accessing music object values and attributes",
      "topics": [
        "music-helpers",
        "music_info",
        "music_key",
        "music_lyrics",
        "music_notes",
        "music_strings",
        "music_tempo",
        "music_time"
      ]
    },
    {
      "page": "n_measures",
      "title": "Summarize rhythm and time of music objects",
      "topics": [
        "bpm",
        "n_beats",
        "n_measures",
        "seconds",
        "seconds_per_measure",
        "seconds_per_step",
        "steps_per_measure",
        "steps_start_time"
      ]
    },
    {
      "page": "notate",
      "title": "Add text to music staff",
      "topics": [
        "notate"
      ]
    },
    {
      "page": "note_ngram",
      "title": "Note/chord n-gram",
      "topics": [
        "note_ngram"
      ]
    },
    {
      "page": "note_slice",
      "title": "Slice, sort, rotate, shift and arpeggiate notes",
      "topics": [
        "note_arpeggiate",
        "note_rotate",
        "note_shift",
        "note_slice",
        "note_sort"
      ]
    },
    {
      "page": "note-checks",
      "title": "Basic noteworthy string checks",
      "topics": [
        "note-checks",
        "note_has_accidental",
        "note_has_flat",
        "note_has_natural",
        "note_has_sharp",
        "note_is_accidental",
        "note_is_flat",
        "note_is_natural",
        "note_is_sharp"
      ]
    },
    {
      "page": "note-coerce",
      "title": "Basic noteworthy strings formatting and coercion helpers",
      "topics": [
        "as_integer_octaves",
        "as_space_time",
        "as_tick_octaves",
        "as_vector_time",
        "flatten_sharp",
        "naturalize",
        "note-coerce",
        "note_set_key",
        "pretty_notes",
        "sharpen_flat"
      ]
    },
    {
      "page": "note-equivalence",
      "title": "Note, pitch and chord equivalence",
      "topics": [
        "note-equivalence",
        "note_is_equal",
        "note_is_identical",
        "octave_is_equal",
        "octave_is_identical",
        "pitch_is_equal",
        "pitch_is_identical"
      ]
    },
    {
      "page": "note-logic",
      "title": "Relational operators for noteworthy class",
      "topics": [
        "!=.noteworthy",
        "<.noteworthy",
        "<=.noteworthy",
        "==.noteworthy",
        ">.noteworthy",
        ">=.noteworthy",
        "note-logic"
      ]
    },
    {
      "page": "note-metadata",
      "title": "Noteworthy string metadata",
      "topics": [
        "accidental_type",
        "chord_size",
        "is_space_time",
        "is_vector_time",
        "note-metadata",
        "note_has_integer",
        "note_has_rest",
        "note_has_tick",
        "note_is_integer",
        "note_is_rest",
        "note_is_tick",
        "n_chords",
        "n_notes",
        "n_octaves",
        "n_steps",
        "octave_type",
        "time_format"
      ]
    },
    {
      "page": "note-summaries",
      "title": "Noteworthy string summaries",
      "topics": [
        "distinct_notes",
        "distinct_octaves",
        "distinct_pitches",
        "note-summaries",
        "octaves",
        "octave_range",
        "octave_span",
        "pitch_range",
        "semitone_range",
        "semitone_span",
        "tally_notes",
        "tally_octaves",
        "tally_pitches"
      ]
    },
    {
      "page": "noteinfo",
      "title": "Note info helpers",
      "topics": [
        "info_annotation",
        "info_articulation",
        "info_bend",
        "info_dotted",
        "info_double_dotted",
        "info_duration",
        "info_single_dotted",
        "info_slide",
        "info_slur_off",
        "info_slur_on",
        "noteinfo"
      ]
    },
    {
      "page": "phrase",
      "title": "Create a musical phrase",
      "topics": [
        "p",
        "phrase"
      ]
    },
    {
      "page": "phrase-checks",
      "title": "Phrase validation and coercion",
      "topics": [
        "as_phrase",
        "notable",
        "notify",
        "phrase-checks",
        "phrasey",
        "phrase_info",
        "phrase_notes",
        "phrase_strings"
      ]
    },
    {
      "page": "pitch_freq",
      "title": "Pitch conversions",
      "topics": [
        "chord_freq",
        "chord_semitones",
        "freq_pitch",
        "freq_semitones",
        "pitch_freq",
        "pitch_semitones",
        "semitone_freq",
        "semitone_pitch"
      ]
    },
    {
      "page": "pitch_seq",
      "title": "Create a sequence from pitch notation",
      "topics": [
        "pitch_seq"
      ]
    },
    {
      "page": "plot_fretboard",
      "title": "Chord and fretboard diagram plots",
      "topics": [
        "plot_chord",
        "plot_fretboard"
      ]
    },
    {
      "page": "plot_music",
      "title": "Plot sheet music snippet with LilyPond",
      "topics": [
        "plot_music",
        "plot_music_bass",
        "plot_music_bc",
        "plot_music_guitar",
        "plot_music_tab",
        "plot_music_tc"
      ]
    },
    {
      "page": "ratio_to_cents",
      "title": "Convert between chord frequency ratios and cents",
      "topics": [
        "cents_to_ratio",
        "ratio_to_cents"
      ]
    },
    {
      "page": "read_midi",
      "title": "Read, inspect and convert MIDI file contents",
      "topics": [
        "duration_to_ticks",
        "midi_key",
        "midi_metadata",
        "midi_notes",
        "midi_time",
        "read_midi",
        "ticks_to_duration"
      ]
    },
    {
      "page": "render_chordchart",
      "title": "Render a chord chart with LilyPond",
      "topics": [
        "render_chordchart"
      ]
    },
    {
      "page": "render_music",
      "title": "Render sheet music snippet with LilyPond",
      "topics": [
        "render_music",
        "render_music_bass",
        "render_music_bc",
        "render_music_guitar",
        "render_music_tab",
        "render_music_tc"
      ]
    },
    {
      "page": "repeats",
      "title": "Repeat phrases",
      "topics": [
        "pct",
        "repeats",
        "rp",
        "volta"
      ]
    },
    {
      "page": "rest",
      "title": "Create rests",
      "topics": [
        "rest"
      ]
    },
    {
      "page": "scale_chords",
      "title": "Diatonic chords",
      "topics": [
        "scale_chords"
      ]
    },
    {
      "page": "scale-deg",
      "title": "Scale degrees and mappings",
      "topics": [
        "chord_degree",
        "is_in_scale",
        "note_in_scale",
        "scale-deg",
        "scale_degree",
        "scale_note"
      ]
    },
    {
      "page": "scale-helpers",
      "title": "Scale helpers",
      "topics": [
        "scale-helpers",
        "scale_chromatic",
        "scale_diatonic",
        "scale_harmonic_minor",
        "scale_hungarian_minor",
        "scale_jazz_minor",
        "scale_major",
        "scale_melodic_minor",
        "scale_minor"
      ]
    },
    {
      "page": "score",
      "title": "Create a music score",
      "topics": [
        "score"
      ]
    },
    {
      "page": "sf_phrase",
      "title": "Create a musical phrase from string/fret combinations",
      "topics": [
        "sfn",
        "sfp",
        "sf_note",
        "sf_phrase"
      ]
    },
    {
      "page": "simplify_phrase",
      "title": "Simplify the LilyPond syntax of a phrase",
      "topics": [
        "simplify_phrase"
      ]
    },
    {
      "page": "single-bracket",
      "title": "Single bracket methods for tabr classes",
      "topics": [
        "single-bracket",
        "[.lyrics",
        "[.music",
        "[.noteinfo",
        "[.noteworthy",
        "[<-.lyrics",
        "[<-.music",
        "[<-.noteinfo",
        "[<-.noteworthy"
      ]
    },
    {
      "page": "string_unfold",
      "title": "Fold and unfold strings",
      "topics": [
        "string_fold",
        "string_unfold"
      ]
    },
    {
      "page": "tab",
      "title": "Render sheet music with LilyPond",
      "topics": [
        "render_midi",
        "render_score",
        "render_tab",
        "tab"
      ]
    },
    {
      "page": "tabr",
      "title": "tabr: Music Notation Syntax, Manipulation, Analysis and Transcription in R",
      "topics": [
        "tabr-package",
        "tabr"
      ]
    },
    {
      "page": "tabr_options",
      "title": "Options",
      "topics": [
        "tabr_options"
      ]
    },
    {
      "page": "tabr-c",
      "title": "Concatenate for tabr classes",
      "topics": [
        "c.lyrics",
        "c.music",
        "c.noteinfo",
        "c.noteworthy",
        "c.phrase",
        "tabr-c"
      ]
    },
    {
      "page": "tabr-details",
      "title": "tabr: Additional Detals",
      "topics": [
        "tabr-details"
      ]
    },
    {
      "page": "tabr-head",
      "title": "Head and tail for tabr classes",
      "topics": [
        "head.lyrics",
        "head.music",
        "head.noteinfo",
        "head.noteworthy",
        "tabr-head",
        "tail.lyrics",
        "tail.music",
        "tail.noteinfo",
        "tail.noteworthy"
      ]
    },
    {
      "page": "tabr-length",
      "title": "Length for tabr classes",
      "topics": [
        "length.lyrics",
        "length.music",
        "length.noteinfo",
        "length.noteworthy",
        "tabr-length"
      ]
    },
    {
      "page": "tabr-methods",
      "title": "Summary of implemented S3 generic methods",
      "topics": [
        "tabr-methods"
      ]
    },
    {
      "page": "tabr-rep",
      "title": "Repeat for tabr classes",
      "topics": [
        "rep.lyrics",
        "rep.music",
        "rep.noteinfo",
        "rep.noteworthy",
        "rep.phrase",
        "tabr-rep"
      ]
    },
    {
      "page": "tabr-rev",
      "title": "Reverse for tabr classes",
      "topics": [
        "rev.lyrics",
        "rev.music",
        "rev.noteinfo",
        "rev.noteworthy",
        "tabr-rev"
      ]
    },
    {
      "page": "tabrSyntax",
      "title": "tabr syntax",
      "topics": [
        "tabrSyntax"
      ]
    },
    {
      "page": "tie",
      "title": "Tied notes",
      "topics": [
        "tie",
        "untie"
      ]
    },
    {
      "page": "to_tabr",
      "title": "Music notation syntax converters",
      "topics": [
        "from_chorrrds",
        "from_music21",
        "to_tabr"
      ]
    },
    {
      "page": "track",
      "title": "Create a music track",
      "topics": [
        "track",
        "track_bass",
        "track_bc",
        "track_guitar",
        "track_tc"
      ]
    },
    {
      "page": "trackbind",
      "title": "Bind track tables",
      "topics": [
        "trackbind"
      ]
    },
    {
      "page": "transpose",
      "title": "Transpose pitch",
      "topics": [
        "tp",
        "transpose"
      ]
    },
    {
      "page": "tunings",
      "title": "Predefined instrument tunings",
      "topics": [
        "tunings"
      ]
    },
    {
      "page": "tuplet",
      "title": "Tuplets",
      "topics": [
        "triplet",
        "tuplet"
      ]
    },
    {
      "page": "valid-noteinfo",
      "title": "Check note info validity",
      "topics": [
        "as_noteinfo",
        "informable",
        "is_noteinfo",
        "valid-noteinfo"
      ]
    },
    {
      "page": "valid-notes",
      "title": "Check note and chord validity",
      "topics": [
        "as_noteworthy",
        "is_chord",
        "is_note",
        "is_noteworthy",
        "noteworthy",
        "valid-notes"
      ]
    }
  ],
  "_pkglogo": "https://github.com/leonawicz/tabr/raw/HEAD/man/figures/logo.png",
  "_readme": "https://github.com/leonawicz/tabr/raw/HEAD/README.md",
  "_rundeps": [
    "cli",
    "cpp11",
    "crayon",
    "dplyr",
    "farver",
    "generics",
    "ggplot2",
    "glue",
    "gtable",
    "isoband",
    "labeling",
    "lifecycle",
    "magrittr",
    "pillar",
    "pkgconfig",
    "purrr",
    "R6",
    "RColorBrewer",
    "rlang",
    "S7",
    "scales",
    "stringi",
    "stringr",
    "tibble",
    "tidyr",
    "tidyselect",
    "utf8",
    "vctrs",
    "viridisLite",
    "withr"
  ],
  "_vignettes": [
    {
      "source": "tabr-prog-chords.Rmd",
      "filename": "tabr-prog-chords.html",
      "title": "Chord functions",
      "engine": "knitr::rmarkdown",
      "headings": [
        "Chord identity and comparison",
        "Slice and filter chords",
        "Chord transformations",
        "Dyads",
        "Predefined chord constructors",
        "Predefined guitar chords",
        "Defining new guitar chord collections",
        "Related helper functions",
        "Guitar chord construction",
        "Chord information",
        "Map chord names to notes",
        "Fretboard diagrams"
      ],
      "created": "2019-02-23 07:36:53",
      "modified": "2023-09-17 02:37:39",
      "commits": 12
    },
    {
      "source": "tabr-prog-scales.Rmd",
      "filename": "tabr-prog-scales.html",
      "title": "Musical scales",
      "engine": "knitr::rmarkdown",
      "headings": [
        "Key signatures",
        "Scales",
        "Modes",
        "Diatonic scale chords",
        "Scale degrees",
        "Musical intervals"
      ],
      "created": "2019-02-22 21:36:15",
      "modified": "2026-01-06 15:27:50",
      "commits": 7
    },
    {
      "source": "tabr-prog-notes.Rmd",
      "filename": "tabr-prog-notes.html",
      "title": "Note functions",
      "engine": "knitr::rmarkdown",
      "headings": [
        "Note identity checks",
        "Noteworthy string metadata",
        "Noteworthy string summaries",
        "Coercion functions",
        "Accidentals",
        "Octave numbering",
        "Timestep format",
        "Comparative equivalence",
        "Slice, sort, rotate, shift, arpeggiate",
        "Transpose"
      ],
      "created": "2019-02-23 07:36:53",
      "modified": "2023-09-17 02:37:39",
      "commits": 9
    },
    {
      "source": "tabr-prog-noteinfo.Rmd",
      "filename": "tabr-prog-noteinfo.html",
      "title": "Note information",
      "engine": "knitr::rmarkdown",
      "headings": [
        "The noteinfo class",
        "Checking note info",
        "Coercion",
        "Other methods",
        "Note info functions",
        "Use cases"
      ],
      "created": "2019-11-16 21:25:19",
      "modified": "2023-09-17 02:37:39",
      "commits": 5
    },
    {
      "source": "tabr-prog-nw.Rmd",
      "filename": "tabr-prog-nw.html",
      "title": "Noteworthiness",
      "engine": "knitr::rmarkdown",
      "headings": [
        "Noteworthy strings",
        "Checking noteworthiness",
        "The noteworthy class",
        "Stricter note and chord validation",
        "Notable phrases"
      ],
      "created": "2019-02-22 21:36:15",
      "modified": "2023-09-17 02:37:39",
      "commits": 9
    },
    {
      "source": "tabr-prog-music.Rmd",
      "filename": "tabr-prog-music.html",
      "title": "The music class",
      "engine": "knitr::rmarkdown",
      "headings": [
        "Constructing a music object",
        "Deconstructing a music object",
        "Constructing from character",
        "Details",
        "Other efficiencies",
        "Working with music objects"
      ],
      "created": "2019-11-16 21:25:19",
      "modified": "2023-09-17 02:37:39",
      "commits": 4
    }
  ],
  "_score": 9.084923574619694,
  "_indexed": true,
  "_nocasepkg": "tabr",
  "_universes": [
    "leonawicz"
  ],
  "_binaries": [
    {
      "r": "4.7.0",
      "os": "linux",
      "version": "0.5.5",
      "date": "2026-05-06T08:25:46.000Z",
      "distro": "noble",
      "commit": "c5dc81c83b519046ff6295038d83767888a5a77d",
      "fileid": "cd374f58aab4f6fb3fc24bd88a7791d3acf9593b822ca4484884efee2f7859da",
      "status": "success",
      "check": "OK",
      "buildurl": "https://github.com/r-universe/leonawicz/actions/runs/25424250849"
    },
    {
      "r": "4.6.0",
      "os": "linux",
      "version": "0.5.5",
      "date": "2026-05-06T08:25:33.000Z",
      "distro": "noble",
      "commit": "c5dc81c83b519046ff6295038d83767888a5a77d",
      "fileid": "2e05d25954d589586fab9b6d170a7a93703cd45816028cc4dab54eb78febc210",
      "status": "success",
      "check": "OK",
      "buildurl": "https://github.com/r-universe/leonawicz/actions/runs/25424250849"
    },
    {
      "r": "4.5.3",
      "os": "mac",
      "version": "0.5.5",
      "date": "2026-05-06T08:25:02.000Z",
      "commit": "c5dc81c83b519046ff6295038d83767888a5a77d",
      "fileid": "809116a5da83dc63e6ce5dee6f330e0c152311f86710a64e88621351a68737c2",
      "status": "success",
      "check": "OK",
      "buildurl": "https://github.com/r-universe/leonawicz/actions/runs/25424250849"
    },
    {
      "r": "4.6.0",
      "os": "mac",
      "version": "0.5.5",
      "date": "2026-05-06T08:25:12.000Z",
      "commit": "c5dc81c83b519046ff6295038d83767888a5a77d",
      "fileid": "20dc9171d8da154d4f6dd9b595e71ab0c076c13efe7111f6caf9901f0595a071",
      "status": "success",
      "check": "OK",
      "buildurl": "https://github.com/r-universe/leonawicz/actions/runs/25424250849"
    },
    {
      "r": "4.7.0",
      "os": "win",
      "version": "0.5.5",
      "date": "2026-05-06T08:24:40.000Z",
      "commit": "c5dc81c83b519046ff6295038d83767888a5a77d",
      "fileid": "2986860e382fa38886243b598f8d41eb48917b1ccab58ecd5e70450adf2139ab",
      "status": "success",
      "check": "OK",
      "buildurl": "https://github.com/r-universe/leonawicz/actions/runs/25424250849"
    },
    {
      "r": "4.5.3",
      "os": "win",
      "version": "0.5.5",
      "date": "2026-05-06T08:25:16.000Z",
      "commit": "c5dc81c83b519046ff6295038d83767888a5a77d",
      "fileid": "4d6c9435260fc45ad7b1d0dcad94f9d328c20a4d9df23cfa97e3c171f3da461d",
      "status": "success",
      "check": "OK",
      "buildurl": "https://github.com/r-universe/leonawicz/actions/runs/25424250849"
    },
    {
      "r": "4.6.0",
      "os": "win",
      "version": "0.5.5",
      "date": "2026-05-06T08:24:42.000Z",
      "commit": "c5dc81c83b519046ff6295038d83767888a5a77d",
      "fileid": "7600000fd57efb3901624b66a7cf8fd404317e5cedf0defa7113d721969caac7",
      "status": "success",
      "check": "OK",
      "buildurl": "https://github.com/r-universe/leonawicz/actions/runs/25424250849"
    },
    {
      "r": "4.6.0",
      "os": "wasm",
      "version": "0.5.5",
      "date": "2026-05-22T15:44:42.000Z",
      "commit": "c5dc81c83b519046ff6295038d83767888a5a77d",
      "fileid": "047ca273e756069b468f78434521f6886208e4b13e0aed586f15479f8acd9b6c",
      "status": "success",
      "buildurl": "https://github.com/r-universe/leonawicz/actions/runs/25424250849"
    }
  ]
}