Scale
A scale is a collection of pitches in ascending or descending order.
This module provides functions to get and manipulate scales.
Example
// es6// es5const Scale = ;
Example
Scale // => [ "Ab", "Bb", "C", "Db", "Eb", "F", "Gb", "G" ]Scale "major" "minor" ...
- Scale
.props(name)
⇒Object
.names([aliases])
⇒Array
.intervals(name)
⇒Array.<string>
.notes(tonic, nameOrTonic, [name])
⇒Array
.exists(name)
⇒Boolean
.tokenize(name)
⇒Array
.modeNames(name)
.chords(name)
⇒Array.<string>
.toScale(notes)
⇒Array
.supersets(name)
⇒Array
.subsets(name)
⇒Array
Scale.props(name)
⇒ Object
Get scale properties. It returns an object with:
- name: the scale name
- names: a list with all possible names (includes the current)
- intervals: an array with the scale intervals
- chroma: scale croma (see pcset)
- setnum: scale chroma number
Kind: static method of Scale
Param | Type | Description |
---|---|---|
name | string |
the scale name (without tonic) |
Scale.names([aliases])
⇒ Array
Return the available scale names
Kind: static method of Scale
Returns: Array
- the scale names
Param | Type | Default | Description |
---|---|---|---|
[aliases] | boolean |
false |
true to include aliases |
Example
Scale // => ["maj7", ...]
Scale.intervals(name)
⇒ Array.<string>
Given a scale name, return its intervals. The name can be the type and optionally the tonic (which is ignored)
It retruns an empty array when no scale found
Kind: static method of Scale
Returns: Array.<string>
- the scale intervals if is a known scale or an empty
array if no scale found
Param | Type | Description |
---|---|---|
name | string |
the scale name (tonic and type, tonic is optional) |
Example
Scale // => [ "1P", "2M", "3M", "4P", "5P", "6M", "7M" ]
Scale.notes(tonic, nameOrTonic, [name])
⇒ Array
Get the notes (pitch classes) of a scale.
Note that it always returns an array, and the values are only pitch classes.
Kind: static method of Scale
Returns: Array
- a pitch classes array
Param | Type | Description |
---|---|---|
tonic | string |
|
nameOrTonic | string |
the scale name or tonic (if 2nd param) |
[name] | string |
the scale name without tonic |
Example
Scale // => [ "C", "D", "E", "F", "G", "A", "B" ]Scale // => [ "C", "D", "E", "F", "G", "A", "B" ]Scale // => [ "C", "D", "E", "F", "G", "A", "B" ]Scale // => []Scale // => []
Scale.exists(name)
⇒ Boolean
Check if the given name is a known scale from the scales dictionary
Kind: static method of Scale
Param | Type | Description |
---|---|---|
name | string |
the scale name |
Scale.tokenize(name)
⇒ Array
Given a string with a scale name and (optionally) a tonic, split that components.
It retuns an array with the form [ name, tonic ] where tonic can be a note name or null and name can be any arbitrary string (this function doesn"t check if that scale name exists)
Kind: static method of Scale
Returns: Array
- an array [tonic, name]
Param | Type | Description |
---|---|---|
name | string |
the scale name |
Example
Scale // => ["C", "mixolydean"]Scale // => ["", "anything is valid"]Scale // => ["", ""]
Scale.modeNames(name)
Find mode names of a scale
Kind: static method of Scale
Param | Type | Description |
---|---|---|
name | string |
scale name |
Example
Scale // => [ "C" "major pentatonic" "D" "egyptian" "E" "malkos raga" "G" "ritusen" "A" "minor pentatonic"
Scale.chords(name)
⇒ Array.<string>
Get all chords that fits a given scale
Kind: static method of Scale
Returns: Array.<string>
- - the chord names
Param | Type | Description |
---|---|---|
name | string |
the scale name |
Example
Scale // => ["5", "64", "M", "M6", "Madd9", "Msus2"]
Scale.toScale(notes)
⇒ Array
Given an array of notes, return the scale: a pitch class set starting from the first note of the array
Kind: static method of Scale
Param | Type |
---|---|
notes | Array |
Example
Scale // => ["C"]Scale // => ["D", "F#", "A", "C#"]
Scale.supersets(name)
⇒ Array
Get all scales names that are a superset of the given one (has the same notes and at least one more)
Kind: static method of Scale
Returns: Array
- a list of scale names
Param | Type |
---|---|
name | string |
Example
Scale // => ["bebop", "bebop dominant", "bebop major", "chromatic", "ichikosucho"]
Scale.subsets(name)
⇒ Array
Find all scales names that are a subset of the given one (has less notes but all from the given scale)
Kind: static method of Scale
Returns: Array
- a list of scale names
Param | Type |
---|---|
name | string |
Example
Scale // => ["ionian pentatonic", "major pentatonic", "ritusen"]