Your programs can use functions from the popular open-source package Tonal.js to help you select notes and chords. Here we provide a quick reference to common functions as well as convenient links to Tonal's online docs.
Tonal.Scale functions |
Description | Example |
---|---|---|
rangeOf(name) |
returns function that produces note names in a range. | rangeOf("C Minor")("C1", "C6") |
steps(name) |
returns function that produces note names. Index-origin is 0. | s=steps("A4 major") ; s(0):"A4" , s(7):"A5" , s(-1):"G#4" , s(-7):"A3" , s(-8):"G#3" |
Tonal.Note functions |
Description | Example |
---|---|---|
midi(note) |
convert note name to its MIDI key number. | midi("C3") |
Tonal.Midi functions |
Description | Example |
---|---|---|
midiToFreq(key) |
convert MIDI key to a frequency. | midiToFreq(60) |
name | aliases | intervals | size |
---|---|---|---|
altered | super locrian,diminished whole tone,pomeroy | 0P,2m,2A,3M,4A,6m,7m | 7 |
augmented heptatonic | 0P,2A,3M,4P,5P,5A,7M | 7 | |
augmented | 0P,2A,3M,5P,5A,7M | 6 | |
balinese | 0P,2m,3m,4P,5P,6m,7M | 7 | |
bebop locrian | 0P,2m,3m,4P,5d,5P,6m,7m | 8 | |
bebop major | 0P,2M,3M,4P,5P,5A,6M,7M | 8 | |
bebop minor | 0P,2M,3m,3M,4P,5P,6M,7m | 8 | |
bebop | 0P,2M,3M,4P,5P,6M,7m,7M | 8 | |
chromatic | 0P,2m,2M,3m,3M,4P,5d,5P,6m,6M,7m,7M | 12 | |
composite blues | 0P,2M,3m,3M,4P,5d,5P,6M,7m | 9 | |
diminished | whole-half diminished | 0P,2M,3m,4P,5d,6m,6M,7M | 8 |
dorian #4 | ukrainian dorian,romanian minor,altered dorian | 0P,2M,3m,4A,5P,6M,7m | 7 |
dorian b2 | phrygian #6,melodic minor second mode | 0P,2m,3m,4P,5P,6M,7m | 7 |
dorian | 0P,2M,3m,4P,5P,6M,7m | 7 | |
double harmonic lydian | 0P,2m,3M,4A,5P,6m,7M | 7 | |
double harmonic major | gypsy | 0P,2m,3M,4P,5P,6m,7M | 7 |
egyptian | 0P,2M,4P,5P,7m | 5 | |
enigmatic | 0P,2m,3M,5d,6m,7m,7M | 7 | |
flamenco | 0P,2m,3m,3M,4A,5P,7m | 7 | |
flat six pentatonic | 0P,2M,3M,5P,6m | 5 | |
flat three pentatonic | kumoi | 0P,2M,3m,5P,6M | 5 |
half-whole diminished | dominant diminished,messiaen's mode #2 | 0P,2m,3m,3M,4A,5P,6M,7m | 8 |
harmonic major | 0P,2M,3M,4P,5P,6m,7M | 7 | |
harmonic minor | 0P,2M,3m,4P,5P,6m,7M | 7 | |
hirajoshi | 0P,2M,3m,5P,6m | 5 | |
hungarian major | 0P,2A,3M,4A,5P,6M,7m | 7 | |
hungarian minor | 0P,2M,3m,4A,5P,6m,7M | 7 | |
ichikosucho | 0P,2M,3M,4P,5d,5P,6M,7M | 8 | |
in-sen | 0P,2m,4P,5P,7m | 5 | |
ionian pentatonic | 0P,3M,4P,5P,7M | 5 | |
iwato | 0P,2m,4P,5d,7m | 5 | |
kafi raga | 0P,3m,3M,4P,5P,6M,7m,7M | 8 | |
kumoijoshi | 0P,2m,4P,5P,6m | 5 | |
leading whole tone | 0P,2M,3M,4A,5A,7m,7M | 7 | |
locrian #2 | half-diminished,aeolian b5 | 0P,2M,3m,4P,5d,6m,7m | 7 |
locrian 6 | locrian natural 6,locrian sharp 6 | 0P,2m,3m,4P,5d,6M,7m | 7 |
locrian major | arabian | 0P,2M,3M,4P,5d,6m,7m | 7 |
locrian pentatonic | minor seven flat five pentatonic | 0P,3m,4P,5d,7m | 5 |
locrian | 0P,2m,3m,4P,5d,6m,7m | 7 | |
lydian #5P pentatonic | 0P,3M,4A,5A,7M | 5 | |
lydian #9 | 0P,2A,3M,4A,5P,6M,7M | 7 | |
lydian augmented | 0P,2M,3M,4A,5A,6M,7M | 7 | |
lydian diminished | 0P,2M,3m,4A,5P,6M,7M | 7 | |
lydian dominant pentatonic | 0P,3M,4A,5P,7m | 5 | |
lydian dominant | lydian b7,overtone | 0P,2M,3M,4A,5P,6M,7m | 7 |
lydian minor | 0P,2M,3M,4A,5P,6m,7m | 7 | |
lydian pentatonic | chinese | 0P,3M,4A,5P,7M | 5 |
lydian | 0P,2M,3M,4A,5P,6M,7M | 7 | |
major augmented | major #5,ionian augmented,ionian #5 | 0P,2M,3M,4P,5A,6M,7M | 7 |
major blues | 0P,2M,3m,3M,5P,6M | 6 | |
major pentatonic | pentatonic | 0P,2M,3M,5P,6M | 5 |
major | ionian | 0P,2M,3M,4P,5P,6M,7M | 7 |
malkos raga | 0P,3m,4P,6m,7m | 5 | |
melodic minor | 0P,2M,3m,4P,5P,6M,7M | 7 | |
messiaen's mode #3 | 0P,2M,3m,3M,4A,5P,6m,7m,7M | 9 | |
messiaen's mode #4 | 0P,2m,2M,4P,4A,5P,6m,7M | 8 | |
messiaen's mode #5 | 0P,2m,4P,4A,5P,7M | 6 | |
messiaen's mode #6 | 0P,2M,3M,4P,4A,5A,6A,7M | 8 | |
messiaen's mode #7 | 0P,2m,2M,3m,4P,4A,5P,6m,6M,7M | 10 | |
minor #7M pentatonic | 0P,3m,4P,5P,7M | 5 | |
minor bebop | 0P,2M,3m,4P,5P,6m,7m,7M | 8 | |
minor blues | blues | 0P,3m,4P,5d,5P,7m | 6 |
minor hexatonic | 0P,2M,3m,4P,5P,7M | 6 | |
minor pentatonic | vietnamese 2 | 0P,3m,4P,5P,7m | 5 |
minor six diminished | 0P,2M,3m,4P,5P,6m,6M,7M | 8 | |
minor six pentatonic | 0P,3m,4P,5P,6M | 5 | |
minor | aeolian | 0P,2M,3m,4P,5P,6m,7m | 7 |
mixolydian b6 | melodic minor fifth mode,hindu | 0P,2M,3M,4P,5P,6m,7m | 7 |
mixolydian pentatonic | indian | 0P,3M,4P,5P,7m | 5 |
mixolydian | dominant | 0P,2M,3M,4P,5P,6M,7m | 7 |
mystery #1 | 0P,2m,3M,5d,6m,7m | 6 | |
neopolitan major pentatonic | 0P,3M,4P,5d,7m | 5 | |
neopolitan major | 0P,2m,3m,4P,5P,6M,7M | 7 | |
oriental | 0P,2m,3M,4P,5d,6M,7m | 7 | |
pelog | 0P,2m,3m,5P,6m | 5 | |
persian | 0P,2m,3M,4P,5d,6m,7M | 7 | |
phrygian dominant | spanish,phrygian major | 0P,2m,3M,4P,5P,6m,7m | 7 |
phrygian | 0P,2m,3m,4P,5P,6m,7m | 7 | |
piongio | 0P,2M,4P,5P,6M,7m | 6 | |
prometheus neopolitan | 0P,2m,3M,4A,6M,7m | 6 | |
prometheus | 0P,2M,3M,4A,6M,7m | 6 | |
purvi raga | 0P,2m,3M,4P,4A,5P,6m,7M | 8 | |
ritusen | 0P,2M,4P,5P,6M | 5 | |
scriabin | 0P,2m,3M,5P,6M | 5 | |
six tone symmetric | 0P,2m,3M,4P,5A,6M | 6 | |
spanish heptatonic | 0P,2m,3m,3M,4P,5P,6m,7m | 8 | |
super locrian pentatonic | 0P,3m,4d,5d,7m | 5 | |
todi raga | 0P,2m,3m,4A,5P,6m,7M | 7 | |
ultralocrian | superlocrian bb7,superlocrian diminished | 0P,2m,3m,4d,5d,6m,7d | 7 |
vietnamese 1 | 0P,3m,4P,5P,6m | 5 | |
whole tone pentatonic | 0P,3M,5d,6m,7m | 5 | |
whole tone | messiaen's mode #1 | 0P,2M,3M,4A,5A,6A | 6 |
Courtesy tonaljs via :
let scales = [];
for(let n of Scale.names())
{
let s = Scale.get(n);
scales.push(`|${n}|${s.aliases}|${s.intervals.length}|${s.intervals}|`);
}
scales.sort();
Full name | short name | intervals |
---|---|---|
altered | alt7 | 1P,3M,7m,9m |
augmented seventh | maj7#5, maj7+5, +maj7, ^7#5 | 1P,3M,5A,7M |
augmented | aug, +, +5, ^#5 | 1P,3M,5A |
diminished seventh | dim7, °7, o7 | 1P,3m,5d,7d |
diminished | dim, °, o | 1P,3m,5d |
dominant flat ninth | 7b9 | 1P,3M,5P,7m,9m |
dominant ninth | 9 | 1P,3M,5P,7m,9M |
dominant seventh | 7, dom | 1P,3M,5P,7m |
dominant sharp ninth | 7#9 | 1P,3M,5P,7m,9A |
dominant thirteenth | 13 | 1P,3M,5P,7m,9M,13M |
eleventh | 11 | 1P,5P,7m,9M,11P |
fifth | 5 | 1P,5P |
half-diminished | m7b5, ø, -7b5, h7, h | 1P,3m,5d,7m |
lydian dominant seventh | 7#11, 7#4 | 1P,3M,5P,7m,11A |
major ninth | maj9, Δ9, ^9 | 1P,3M,5P,7M,9M |
major seventh flat sixth | M7b6, ^7b6 | 1P,3M,6m,7M |
major seventh sharp eleventh | maj#4, Δ#4, Δ#11, M7#11, ^7#11, maj7#11 | 1P,3M,5P,7M,11A |
major seventh | maj7, Δ, ma7, M7, Maj7, ^7 | 1P,3M,5P,7M |
major sharp eleventh (lydian) | maj9#11, Δ9#11, ^9#11 | 1P,3M,5P,7M,9M,11A |
major thirteenth | maj13, Maj13, ^13 | 1P,3M,5P,7M,9M,13M |
major | M, ^, , maj | 1P,3M,5P |
minor augmented | m#5, -#5, m+ | 1P,3m,5A |
minor eleventh | m11, -11 | 1P,3m,5P,7m,9M,11P |
minor ninth | m9, -9 | 1P,3m,5P,7m,9M |
minor seventh | m7, min7, mi7, -7 | 1P,3m,5P,7m |
minor sixth | m6, -6 | 1P,3m,5P,6M |
minor thirteenth | m13, -13 | 1P,3m,5P,7m,9M,13M |
minor/major ninth | mM9, mMaj9, -^9 | 1P,3m,5P,7M,9M |
minor/major seventh | m/ma7, m/maj7, mM7, mMaj7, m/M7, -Δ7, mΔ, -^7, -maj7 | 1P,3m,5P,7M |
minor | m, min, - | 1P,3m,5P |
sixth added ninth | 6add9, 6/9, 69, M69 | 1P,3M,5P,6M,9M |
sixth | 6, add6, add13, M6 | 1P,3M,5P,6M |
suspended fourth flat ninth | b9sus, phryg, 7b9sus, 7b9sus4 | 1P,4P,5P,7m,9m |
suspended fourth seventh | 7sus4, 7sus | 1P,4P,5P,7m |
suspended fourth | sus4, sus | 1P,4P,5P |
suspended second | sus2 | 1P,2M,5P |
Courtesy tonaljs via :
let lines = [];
for(let t of Tonal.ChordType.names())
{
c = Tonal.Chord.get(t);
lines.push(`|${c.name}|${c.aliases.join(", ")}|${c.intervals}|`);
}
lines.sort();
Chroma | Interval | Description |
---|---|---|
0 | 1P | tonic, root |
1 | 2m | minor second |
2 | 2M | major second |
3 | 3m | minor second |
4 | 3M | major third |
5 | 4P | perfect fourth |
6 | 5d | diminished fifth |
7 | 5P | perfect fifth |
8 | 6m | minor sixth |
9 | 6M | major sixth |
10 | 7m | minor seventh |
11 | 7M | major seventh |
Interval alteration qualities: ..dd
, d
, m
, M
, P
, A..
Roman Numeral chords are of use to describe key-agnostic chord progressions and are very common in Jazz leadsheets.
example | interpretation |
---|---|
IMaj7 |
major seventh chord off root |
IIm7 |
minor seventh chord off second |
V7 |
dominant fifth chord |
bVIIMaj7 |
flattened seventh as a major 7 |
The Key context (Major, Minor, diminished, augmented, …) is represented by
M
, m
, d
, a
, and the chord extension is represented by
a number: 7
, 11
, etc. The chord root can be changed by preceding
the roman numeral field with b
or #
.
Generally:
[#|b]RomanNumber[quality][extension]
This notation can be combined with a key tonic to produce concrete chords. These still can be further qualified by providing a octave with the key tonic.
To produce triads off a C4 (middle-c) root:
Scale = "C4"
[I IIm IIIm IV] [V VIm VIId I]
Further reading here.