Skip to contents

This function generates a gamut: an ordered range of notes used in music. It is used to generate factor() levels for pitch functions. The output format of the gamut is controlled by the deparser argument (a function) and any deparseArgs that are passed to it, defaulting to kern().

Usage

gamut(
  generic = FALSE,
  simple = FALSE,
  min.octave,
  max.octave,
  min.lof,
  max.lof,
  reference = NULL,
  deparser = tint2kern,
  deparseArgs = list(),
  ...
)

Arguments

generic

***Should the gamut include only generic intervals?

Defaults to FALSE.

Must be a singleton logical value: an on/off switch.

simple

Should the gamut be constrained to one octave?

Defaults to FALSE.

Must be a singleton logical value: an on/off switch.

reference

An optional reference vector to base the gamut on.

Defaults to NULL.

Must be either NULL, or a tonalInterval(), integer, or character vector.

This vector is parsed as pitch. If it can't be parsed as pitch, it will be ignored.

deparser

A pitch function to format the output.

Defaults to kern().

Must be a pitch function.

Details

A gamut is produced based on two criteria: what range on the line-of-fifths to include, and what range of octaves to include? These ranges can be controlled directly with the min.octave, max.octave, min.lof, and max.lof arguments, with the corresponding ranges being min.octave:max.octave and min.log:max.log respectively. If any of these arguments are missing (by default), the ranges default values based on the simple/compound and generic/specific arguments. These default ranges are:

  • Line-of-fifths:

  • If generic = TRUE, -1:5 (F to B)

  • If generic = FALSE, -4:7 (Ab to C#)

  • Octaves:

  • If simple = TRUE, 0:0 (one octave only).

  • If simple = FALSE, -1:1.

If a tints argument is provide (not NULL), tints is parsed as pitch data and the line-of-fifth and octave ranges of this data is used to set the gamut ranges. This assures that all values that appear in tint always make it into the gamut. However, if min.octave, max.octave, min.lof, or max.lof are present, they override the ranges of tint; this can be used to exclude values, even if they appear in tint.