tonal-scale

2.2.2 • Public • Published

Scale

npm version

A scale is a collection of pitches in ascending or descending order.

This module provides functions to get and manipulate scales.

Example

// es6
import * as Scale from "tonal-scale"
// es5
const Scale = require("tonal-scale");

Example

Scale.notes("Ab bebop") // => [ "Ab", "Bb", "C", "Db", "Eb", "F", "Gb", "G" ]
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 Default Description
[aliases] boolean false true to include aliases

Example

Scale.names() // => ["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.intervals("major") // => [ "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.notes("C", "major") // => [ "C", "D", "E", "F", "G", "A", "B" ]
Scale.notes("C major") // => [ "C", "D", "E", "F", "G", "A", "B" ]
Scale.notes("C4", "major") // => [ "C", "D", "E", "F", "G", "A", "B" ]
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") // => ["C", "mixolydean"]
Scale.tokenize("anything is valid") // => ["", "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

Example

Scale.modeNames("C pentatonic") // => [
  ["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.chords("pentatonic") // => ["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.toScale(['C4', 'c3', 'C5', 'C4', 'c4']) // => ["C"]
Scale.toScale(['D4', 'c#5', 'A5', 'F#6']) // => ["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.supersets("major") // => ["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.subsets("major") // => ["ionian pentatonic", "major pentatonic", "ritusen"]

Versions

Current Tags

  • Version
    Downloads (Last 7 Days)
    • Tag
  • 2.2.2
    263
    • latest
  • 0.60.0
    0
    • alpha-1

Version History

Package Sidebar

Install

npm i tonal-scale

Weekly Downloads

223

Version

2.2.2

License

MIT

Unpacked Size

39.4 kB

Total Files

8

Last publish

Collaborators

  • danigb