@tonaljs/scale-type
Version:
A dictionary of musical scales
218 lines (216 loc) • 6.46 kB
JavaScript
// index.ts
import {
EmptyPcset,
get as pcset
} from "@tonaljs/pcset";
// data.ts
var SCALES = [
// Basic scales
["1P 2M 3M 5P 6M", "major pentatonic", "pentatonic"],
["1P 2M 3M 4P 5P 6M 7M", "major", "ionian"],
["1P 2M 3m 4P 5P 6m 7m", "minor", "aeolian"],
// Jazz common scales
["1P 2M 3m 3M 5P 6M", "major blues"],
["1P 3m 4P 5d 5P 7m", "minor blues", "blues"],
["1P 2M 3m 4P 5P 6M 7M", "melodic minor"],
["1P 2M 3m 4P 5P 6m 7M", "harmonic minor"],
["1P 2M 3M 4P 5P 6M 7m 7M", "bebop"],
["1P 2M 3m 4P 5d 6m 6M 7M", "diminished", "whole-half diminished"],
// Modes
["1P 2M 3m 4P 5P 6M 7m", "dorian"],
["1P 2M 3M 4A 5P 6M 7M", "lydian"],
["1P 2M 3M 4P 5P 6M 7m", "mixolydian", "dominant"],
["1P 2m 3m 4P 5P 6m 7m", "phrygian"],
["1P 2m 3m 4P 5d 6m 7m", "locrian"],
// 5-note scales
["1P 3M 4P 5P 7M", "ionian pentatonic"],
["1P 3M 4P 5P 7m", "mixolydian pentatonic", "indian"],
["1P 2M 4P 5P 6M", "ritusen"],
["1P 2M 4P 5P 7m", "egyptian"],
["1P 3M 4P 5d 7m", "neopolitan major pentatonic"],
["1P 3m 4P 5P 6m", "vietnamese 1"],
["1P 2m 3m 5P 6m", "pelog"],
["1P 2m 4P 5P 6m", "kumoijoshi"],
["1P 2M 3m 5P 6m", "hirajoshi"],
["1P 2m 4P 5d 7m", "iwato"],
["1P 2m 4P 5P 7m", "in-sen"],
["1P 3M 4A 5P 7M", "lydian pentatonic", "chinese"],
["1P 3m 4P 6m 7m", "malkos raga"],
["1P 3m 4P 5d 7m", "locrian pentatonic", "minor seven flat five pentatonic"],
["1P 3m 4P 5P 7m", "minor pentatonic", "vietnamese 2"],
["1P 3m 4P 5P 6M", "minor six pentatonic"],
["1P 2M 3m 5P 6M", "flat three pentatonic", "kumoi"],
["1P 2M 3M 5P 6m", "flat six pentatonic"],
["1P 2m 3M 5P 6M", "scriabin"],
["1P 3M 5d 6m 7m", "whole tone pentatonic"],
["1P 3M 4A 5A 7M", "lydian #5P pentatonic"],
["1P 3M 4A 5P 7m", "lydian dominant pentatonic"],
["1P 3m 4P 5P 7M", "minor #7M pentatonic"],
["1P 3m 4d 5d 7m", "super locrian pentatonic"],
// 6-note scales
["1P 2M 3m 4P 5P 7M", "minor hexatonic"],
["1P 2A 3M 5P 5A 7M", "augmented"],
["1P 2M 4P 5P 6M 7m", "piongio"],
["1P 2m 3M 4A 6M 7m", "prometheus neopolitan"],
["1P 2M 3M 4A 6M 7m", "prometheus"],
["1P 2m 3M 5d 6m 7m", "mystery #1"],
["1P 2m 3M 4P 5A 6M", "six tone symmetric"],
["1P 2M 3M 4A 5A 6A", "whole tone", "messiaen's mode #1"],
["1P 2m 4P 4A 5P 7M", "messiaen's mode #5"],
// 7-note scales
["1P 2M 3M 4P 5d 6m 7m", "locrian major", "arabian"],
["1P 2m 3M 4A 5P 6m 7M", "double harmonic lydian"],
[
"1P 2m 2A 3M 4A 6m 7m",
"altered",
"super locrian",
"diminished whole tone",
"pomeroy"
],
["1P 2M 3m 4P 5d 6m 7m", "locrian #2", "half-diminished", "aeolian b5"],
[
"1P 2M 3M 4P 5P 6m 7m",
"mixolydian b6",
"melodic minor fifth mode",
"hindu"
],
["1P 2M 3M 4A 5P 6M 7m", "lydian dominant", "lydian b7", "overtone"],
["1P 2M 3M 4A 5A 6M 7M", "lydian augmented"],
[
"1P 2m 3m 4P 5P 6M 7m",
"dorian b2",
"phrygian #6",
"melodic minor second mode"
],
[
"1P 2m 3m 4d 5d 6m 7d",
"ultralocrian",
"superlocrian bb7",
"superlocrian diminished"
],
["1P 2m 3m 4P 5d 6M 7m", "locrian 6", "locrian natural 6", "locrian sharp 6"],
["1P 2A 3M 4P 5P 5A 7M", "augmented heptatonic"],
// Source https://en.wikipedia.org/wiki/Ukrainian_Dorian_scale
[
"1P 2M 3m 4A 5P 6M 7m",
"dorian #4",
"ukrainian dorian",
"romanian minor",
"altered dorian"
],
["1P 2M 3m 4A 5P 6M 7M", "lydian diminished"],
["1P 2M 3M 4A 5A 7m 7M", "leading whole tone"],
["1P 2M 3M 4A 5P 6m 7m", "lydian minor"],
["1P 2m 3M 4P 5P 6m 7m", "phrygian dominant", "spanish", "phrygian major"],
["1P 2m 3m 4P 5P 6m 7M", "balinese"],
["1P 2m 3m 4P 5P 6M 7M", "neopolitan major"],
["1P 2M 3M 4P 5P 6m 7M", "harmonic major"],
["1P 2m 3M 4P 5P 6m 7M", "double harmonic major", "gypsy"],
["1P 2M 3m 4A 5P 6m 7M", "hungarian minor"],
["1P 2A 3M 4A 5P 6M 7m", "hungarian major"],
["1P 2m 3M 4P 5d 6M 7m", "oriental"],
["1P 2m 3m 3M 4A 5P 7m", "flamenco"],
["1P 2m 3m 4A 5P 6m 7M", "todi raga"],
["1P 2m 3M 4P 5d 6m 7M", "persian"],
["1P 2m 3M 5d 6m 7m 7M", "enigmatic"],
[
"1P 2M 3M 4P 5A 6M 7M",
"major augmented",
"major #5",
"ionian augmented",
"ionian #5"
],
["1P 2A 3M 4A 5P 6M 7M", "lydian #9"],
// 8-note scales
["1P 2m 2M 4P 4A 5P 6m 7M", "messiaen's mode #4"],
["1P 2m 3M 4P 4A 5P 6m 7M", "purvi raga"],
["1P 2m 3m 3M 4P 5P 6m 7m", "spanish heptatonic"],
["1P 2M 3m 3M 4P 5P 6M 7m", "bebop minor"],
["1P 2M 3M 4P 5P 5A 6M 7M", "bebop major"],
["1P 2m 3m 4P 5d 5P 6m 7m", "bebop locrian"],
["1P 2M 3m 4P 5P 6m 7m 7M", "minor bebop"],
["1P 2M 3M 4P 5d 5P 6M 7M", "ichikosucho"],
["1P 2M 3m 4P 5P 6m 6M 7M", "minor six diminished"],
[
"1P 2m 3m 3M 4A 5P 6M 7m",
"half-whole diminished",
"dominant diminished",
"messiaen's mode #2"
],
["1P 3m 3M 4P 5P 6M 7m 7M", "kafi raga"],
["1P 2M 3M 4P 4A 5A 6A 7M", "messiaen's mode #6"],
// 9-note scales
["1P 2M 3m 3M 4P 5d 5P 6M 7m", "composite blues"],
["1P 2M 3m 3M 4A 5P 6m 7m 7M", "messiaen's mode #3"],
// 10-note scales
["1P 2m 2M 3m 4P 4A 5P 6m 6M 7M", "messiaen's mode #7"],
// 12-note scales
["1P 2m 2M 3m 3M 4P 5d 5P 6m 6M 7m 7M", "chromatic"]
];
var data_default = SCALES;
// index.ts
var NoScaleType = {
...EmptyPcset,
intervals: [],
aliases: []
};
var dictionary = [];
var index = {};
function names() {
return dictionary.map((scale) => scale.name);
}
function get(type) {
return index[type] || NoScaleType;
}
var scaleType = get;
function all() {
return dictionary.slice();
}
var entries = all;
function keys() {
return Object.keys(index);
}
function removeAll() {
dictionary = [];
index = {};
}
function add(intervals, name, aliases = []) {
const scale = { ...pcset(intervals), name, intervals, aliases };
dictionary.push(scale);
index[scale.name] = scale;
index[scale.setNum] = scale;
index[scale.chroma] = scale;
scale.aliases.forEach((alias) => addAlias(scale, alias));
return scale;
}
function addAlias(scale, alias) {
index[alias] = scale;
}
data_default.forEach(
([ivls, name, ...aliases]) => add(ivls.split(" "), name, aliases)
);
var scale_type_default = {
names,
get,
all,
add,
removeAll,
keys,
// deprecated
entries,
scaleType
};
export {
NoScaleType,
add,
addAlias,
all,
scale_type_default as default,
entries,
get,
keys,
names,
removeAll,
scaleType
};
//# sourceMappingURL=index.mjs.map