Helper functions for working with musical scales.
Usage
scale_diatonic(key = "c", collapse = FALSE, ignore_octave = FALSE)
scale_major(key = "c", collapse = FALSE, ignore_octave = FALSE)
scale_minor(key = "am", collapse = FALSE, ignore_octave = FALSE)
scale_harmonic_minor(key = "am", collapse = FALSE, ignore_octave = FALSE)
scale_hungarian_minor(key = "am", collapse = FALSE, ignore_octave = FALSE)
scale_melodic_minor(
key = "am",
descending = FALSE,
collapse = FALSE,
ignore_octave = FALSE
)
scale_jazz_minor(key = "am", collapse = FALSE, ignore_octave = FALSE)
scale_chromatic(
root = "c",
collapse = FALSE,
sharp = TRUE,
ignore_octave = FALSE
)
Arguments
- key
character, key signature.
- collapse
logical, collapse result into a single string ready for phrase construction.
- ignore_octave
logical, strip octave numbering from scales not rooted on C.
- descending
logical, return the descending scale, available as a built-in argument for the melodic minor scale, which is different in each direction.
- root
character, root note.
- sharp
logical, accidentals in arbitrary scale output should be sharp rather than flat.
Details
For valid key signatures, see keys()
.
Examples
scale_diatonic(key = "dm")
#> <Noteworthy string>
#> Format: vectorized time
#> Values: d e f g a b_ c'
scale_minor(key = "dm")
#> <Noteworthy string>
#> Format: vectorized time
#> Values: d e f g a b_ c'
scale_major(key = "d")
#> <Noteworthy string>
#> Format: vectorized time
#> Values: d e f# g a b c#'
scale_chromatic(root = "a")
#> <Noteworthy string>
#> Format: vectorized time
#> Values: a, a#, b, c c# d d# e f f# g g#
scale_harmonic_minor("am")
#> <Noteworthy string>
#> Format: vectorized time
#> Values: a, b, c d e f g#
scale_hungarian_minor("am")
#> <Noteworthy string>
#> Format: vectorized time
#> Values: a, b, c d# e f g#
identical(scale_melodic_minor("am"), scale_jazz_minor("am"))
#> [1] TRUE
rev(scale_melodic_minor("am", descending = TRUE))
#> <Noteworthy string>
#> Format: vectorized time
#> Values: a, b, c d e f g
scale_jazz_minor("am")
#> <Noteworthy string>
#> Format: vectorized time
#> Values: a, b, c d e f# g#