non functional enumeration. FIX

This commit is contained in:
trian-gles 2024-07-18 16:57:46 +02:00
parent 72858f0959
commit 148e8211b3
3 changed files with 47 additions and 8 deletions

View File

@ -28,3 +28,17 @@ function EnumeratorRow(props){
return content; return content;
}; };
} }
// FIX THIS
function enumerate(name, inval, count, keys, vals){
let output = "OUT OF RANGE";
for (let i=0; i < count; i++){
if (inval >= keys[i]){
output = vals[i - 1];
break
}
}
window.max.outlet(name + " " + output);
}

View File

@ -120,12 +120,36 @@ function MasterLfoHandler(){
window.max.setDict(event.detail, {"data" : data}); window.max.setDict(event.detail, {"data" : data});
} }
// only called internally by 1. Handler after modulator processing 2. LFO outputs
function handleEnum(event){
let name = event.detail[0];
let val = event.detail[1];
// if none of the Enums use this param, then we output it
let i = 0;
while (i < MAXENUMS){
if (enumVisibleArr[i] && enumNames[i] == name)
break;
i++
}
if (i == MAXENUMS){
window.max.outlet(name + ' ' + val);
}
else {
window.max.outlet(name + ' ' + val);
}
}
function handleParam(event) { function handleParam(event) {
let name = event.detail[0]; let name = event.detail[0];
let val = event.detail[1]; let val = event.detail[1];
// if none of the LFOs use this param, then we output it raw // if none of the LFOs use this param, then we send it straight to the enum
let i = 0; let i = 0;
while (i < MAXLFOS){ while (i < MAXLFOS){
if (modVisibleArr[i] && djParamArr[i] == name) if (modVisibleArr[i] && djParamArr[i] == name)
@ -133,7 +157,7 @@ function MasterLfoHandler(){
i++ i++
} }
if (i == MAXLFOS){ if (i == MAXLFOS){
window.max.outlet(name + ' ' + val); window.dispatchEvent(new CustomEvent('enum', {'detail' : [name, val]}));
} }
modCenterVals[name] = val; modCenterVals[name] = val;
@ -156,12 +180,14 @@ function MasterLfoHandler(){
window.addEventListener('saveDict', handleSave); window.addEventListener('saveDict', handleSave);
window.addEventListener('tick', handleTick); window.addEventListener('tick', handleTick);
window.addEventListener('param', handleParam); window.addEventListener('param', handleParam);
window.addEventListener('enum', handleEnum);
return () => { return () => {
window.removeEventListener('loadDict', handleLoad); window.removeEventListener('loadDict', handleLoad);
window.removeEventListener('saveDict', handleSave); window.removeEventListener('saveDict', handleSave);
window.removeEventListener('tick', handleTick); window.removeEventListener('tick', handleTick);
window.removeEventListener('param', handleParam); window.removeEventListener('param', handleParam);
window.removeEventListener('enum', handleEnum);
}; };
}, [...allModArrays, ...allEnumArrays, ...allEnumMats, modCenterVals]); }, [...allModArrays, ...allEnumArrays, ...allEnumMats, modCenterVals]);

View File

@ -52,18 +52,17 @@ function operateModulators(visibleArr, paramNames, centers, freqs, amps, waveTyp
if (centers.hasOwnProperty(name)){ if (centers.hasOwnProperty(name)){
center = centers[name]; center = centers[name];
} }
let output = operateModulator(name, center, freqs[i], amps[i], waveTypes[i], phaseArr, i, delta); let output = operateModulator(center, freqs[i], amps[i], waveTypes[i], phaseArr, i, delta);
window.max.outlet(output); window.dispatchEvent(new CustomEvent('enum', {'detail' : [name, output]}));
} }
} }
} }
function operateModulator(paramName, center, freq, amp, waveType, phaseArr, phaseI, delta){ function operateModulator(center, freq, amp, waveType, phaseArr, phaseI, delta){
let oldPhase = phaseArr[phaseI]; let oldPhase = phaseArr[phaseI];
let newPhase = (oldPhase + freq * delta) % 1.00; let newPhase = (oldPhase + freq * delta) % 1.00;
phaseArr[phaseI] = newPhase; phaseArr[phaseI] = newPhase;
let outputVal = indexWave(waveType, newPhase) * amp + center; return indexWave(waveType, newPhase) * amp + center;
return paramName + ' ' + outputVal.toString();
} }