feat(xen/tunejs): support sending a custom tuning

This commit is contained in:
dudymas 2025-07-05 13:43:42 -04:00
parent 37fde8f3e8
commit 0722cf7ded

View file

@ -139,10 +139,10 @@ Tune.prototype.MIDI = function(stepIn,octaveIn) {
/* Load a new scale */ /* Load a new scale */
Tune.prototype.loadScale = function(name){ Tune.prototype.loadScale = function(scale){
/* load the scale */ /* load the scale */
var freqs = TuningList[name].frequencies var freqs = isArrayOfNumbers(scale) ? scale : TuningList[scale].frequencies
this.scale = [] this.scale = []
for (var i=0;i<freqs.length-1;i++) { for (var i=0;i<freqs.length-1;i++) {
this.scale.push(freqs[i]/freqs[0]) this.scale.push(freqs[i]/freqs[0])
@ -207,8 +207,13 @@ Tune.prototype.search = function(letters) {
return possible return possible
} }
Tune.prototype.isValidScale = function(name) { function isArrayOfNumbers(arg) {
return !!TuningList[name]; return Array.isArray(arg) && arg.length > 0 && arg.every(item => typeof item === 'number' && !isNaN(item));
}
/* allow an array of values too */
Tune.prototype.isValidScale = function(scale) {
return !!TuningList[scale] || isArrayOfNumbers(scale) ;
} }
/* Return a collection of notes as an array */ /* Return a collection of notes as an array */