diff --git a/src/ArrayExtensions.ts b/src/ArrayExtensions.ts index b7d73c1..7a5fc3f 100644 --- a/src/ArrayExtensions.ts +++ b/src/ArrayExtensions.ts @@ -1,5 +1,4 @@ import { type UserAPI } from "./API"; -import { SCALES } from "./Scales"; import { safeScale } from "zifferjs"; export { }; @@ -374,16 +373,11 @@ Array.prototype.scale = function(scale: string = "major", base_note: number = 0) // This is a helper function to handle up or down octaviation. const mod = (n: number, m: number) => ((n % m) + m) % m; - - if (SCALES.hasOwnProperty(scale)) { - const selected_scale = SCALES[scale]; - return this.map((value) => { - const octaveShift = Math.floor(value / selected_scale.length) * 12; - return selected_scale[mod(value, selected_scale.length)] + base_note + octaveShift; - }); - } else { - return this.map((value) => value + base_note); - } + let selected_scale = safeScale(scale); + return this.map((value) => { + const octaveShift = Math.floor(value / selected_scale.length) * 12; + return selected_scale[mod(value, selected_scale.length)] + base_note + octaveShift; + }); }; Array.prototype.arp = function(scaleName: string = "major") { @@ -391,13 +385,7 @@ Array.prototype.arp = function(scaleName: string = "major") { * Ajouter documentation * */ - const scale = SCALES[scaleName]; - - //input protect from unknow scale - - if (!scale) { - throw new Error(`Unknown scale ${scaleName}`); - } + const scale = safeScale[scaleName]; let result = []; for (let j = 0; j < scale.length; j++) { diff --git a/src/Scales.ts b/src/Scales.ts deleted file mode 100644 index 1850fc3..0000000 --- a/src/Scales.ts +++ /dev/null @@ -1,83 +0,0 @@ -export const SCALES: Record = { - major: [0, 2, 4, 5, 7, 9, 11], - naturalMinor: [0, 2, 3, 5, 7, 8, 10], - harmonicMinor: [0, 2, 3, 5, 7, 8, 11], - melodicMinor: [0, 2, 3, 5, 7, 9, 11], - dorian: [0, 2, 3, 5, 7, 9, 10], - phrygian: [0, 1, 3, 5, 7, 8, 10], - lydian: [0, 2, 4, 6, 7, 9, 11], - mixolydian: [0, 2, 4, 5, 7, 9, 10], - aeolian: [0, 2, 3, 5, 7, 8, 10], - locrian: [0, 1, 3, 5, 6, 8, 10], - wholeTone: [0, 2, 4, 6, 8, 10], - majorPentatonic: [0, 2, 4, 7, 9], - minorPentatonic: [0, 3, 5, 7, 10], - chromatic: [0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11], - blues: [0, 3, 5, 6, 7, 10], - diminished: [0, 2, 3, 5, 6, 8, 9, 11], - neapolitanMinor: [0, 1, 3, 5, 7, 8, 11], - neapolitanMajor: [0, 1, 3, 5, 7, 9, 11], - enigmatic: [0, 1, 4, 6, 8, 10, 11], - doubleHarmonic: [0, 1, 4, 5, 7, 8, 11], - octatonic: [0, 2, 3, 5, 6, 8, 9, 11], - bebopDominant: [0, 2, 4, 5, 7, 9, 10, 11], - bebopMajor: [0, 2, 4, 5, 7, 8, 9, 11], - bebopMinor: [0, 2, 3, 5, 7, 8, 9, 11], - bebopDorian: [0, 2, 3, 4, 5, 7, 9, 10], - harmonicMajor: [0, 2, 4, 5, 7, 8, 11], - hungarianMinor: [0, 2, 3, 6, 7, 8, 11], - hungarianMajor: [0, 3, 4, 6, 7, 9, 10], - oriental: [0, 1, 4, 5, 6, 9, 10], - romanianMinor: [0, 2, 3, 6, 7, 9, 10], - spanishGypsy: [0, 1, 4, 5, 7, 8, 10], - jewish: [0, 1, 4, 5, 7, 8, 10], - hindu: [0, 2, 4, 5, 7, 8, 10], - japanese: [0, 1, 5, 7, 8], - hirajoshi: [0, 2, 3, 7, 8], - kumoi: [0, 2, 3, 7, 9], - inSen: [0, 1, 5, 7, 10], - iwato: [0, 1, 5, 6, 10], - yo: [0, 2, 5, 7, 9], - minorBlues: [0, 3, 5, 6, 7, 10], - algerian: [0, 2, 3, 5, 6, 7, 8, 11], - augmented: [0, 3, 4, 7, 8, 11], - balinese: [0, 1, 3, 7, 8], - byzantine: [0, 1, 4, 5, 7, 8, 11], - chinese: [0, 4, 6, 7, 11], - egyptian: [0, 2, 5, 7, 10], - eightToneSpanish: [0, 1, 3, 4, 5, 6, 8, 10], - hawaiian: [0, 2, 3, 5, 7, 9, 10], - hindustan: [0, 2, 4, 5, 7, 8, 10], - persian: [0, 1, 4, 5, 6, 8, 11], - eastIndianPurvi: [0, 1, 4, 6, 7, 8, 11], - orientalA: [0, 1, 4, 5, 6, 9, 10], -}; - - -// Legacy function, see Array.prototype.scale @ ArrayExtensions.ts -/* -export function scale( - n: number, - scaleName: string = "major", - octave: number = 4 -): number { - /* - * Returns the MIDI note number for the given scale degree in the given scale. - * @param {number} n - The scale degree, where 0 is the tonic. - * @param {string} scaleName - The name of the scale. - * @param {number} octave - The octave number. - * @returns {number} The MIDI note number. - * / - const scale = SCALES[scaleName]; - - if (!scale) { - throw new Error(`Unknown scale ${scaleName}`); - } - - let index = n % scale.length; - if (index < 0) index += scale.length; // adjust for negative indexes - let additionalOctaves = Math.floor(n / scale.length); - return 60 + (octave + additionalOctaves) * 12 + scale[index]; -} - -*/