Scale
A scale is a collection of pitches in ascending or descending order.
This module provides functions to get and manipulate scales.
Example
import * as Scale from "tonal-scale"
const Scale = require("tonal-scale");
Example
Scale.notes("Ab bebop")
Scale.names() => ["major", "minor", ...]
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 | Description |
---|
aliases | boolean | true to include aliases |
Example
Scale.names()
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.intervals("major")
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.notes("C", "major")
Scale.notes("C major")
Scale.notes("C4", "major")
Scale.notes("A4", "no-scale")
Scale.notes("blah", "major")
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.tokenize("C mixolydean")
Scale.tokenize("anything is valid")
Scale.tokenize()
Scale.modeNames(name)
Find mode names of a scale
Kind: static method of Scale
Param | Type | Description |
---|
name | String | scale name |
Scale.chords(name)
Get all chords that fits a given scale
Kind: static method of Scale
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
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
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