New Case Study:See how Anthropic automated 95% of dependency reviews with Socket.Learn More
Socket
Sign inDemoInstall
Socket

tonal-scale

Package Overview
Dependencies
Maintainers
1
Versions
37
Alerts
File Explorer

Advanced tools

Socket logo

Install Socket

Detect and block malicious and high-risk dependencies

Install

tonal-scale

Music scales creation and manipulation

  • 2.2.2
  • latest
  • Source
  • npm
  • Socket score

Version published
Maintainers
1
Created
Source

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

ParamTypeDescription
namestringthe scale name (without tonic)

Scale.names([aliases])Array

Return the available scale names

Kind: static method of Scale
Returns: Array - the scale names

ParamTypeDefaultDescription
[aliases]booleanfalsetrue 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

ParamTypeDescription
namestringthe 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

ParamTypeDescription
tonicstring
nameOrTonicstringthe scale name or tonic (if 2nd param)
[name]stringthe 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

ParamTypeDescription
namestringthe 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]

ParamTypeDescription
namestringthe 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

ParamTypeDescription
namestringscale 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

ParamTypeDescription
namestringthe 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

ParamType
notesArray

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

ParamType
namestring

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

ParamType
namestring

Example

Scale.subsets("major") // => ["ionian pentatonic", "major pentatonic", "ritusen"]

Keywords

FAQs

Package last updated on 03 Apr 2019

Did you know?

Socket

Socket for GitHub automatically highlights issues in each pull request and monitors the health of all your open source dependencies. Discover the contents of your packages and block harmful activity before you install or update your dependencies.

Install

Related posts

SocketSocket SOC 2 Logo

Product

  • Package Alerts
  • Integrations
  • Docs
  • Pricing
  • FAQ
  • Roadmap
  • Changelog

Packages

npm

Stay in touch

Get open source security insights delivered straight into your inbox.


  • Terms
  • Privacy
  • Security

Made with ⚡️ by Socket Inc