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

@ -27,4 +27,18 @@ function EnumeratorRow(props){
if (props.visible){
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});
}
// 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) {
let name = event.detail[0];
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;
while (i < MAXLFOS){
if (modVisibleArr[i] && djParamArr[i] == name)
@ -133,7 +157,7 @@ function MasterLfoHandler(){
i++
}
if (i == MAXLFOS){
window.max.outlet(name + ' ' + val);
window.dispatchEvent(new CustomEvent('enum', {'detail' : [name, val]}));
}
modCenterVals[name] = val;
@ -156,12 +180,14 @@ function MasterLfoHandler(){
window.addEventListener('saveDict', handleSave);
window.addEventListener('tick', handleTick);
window.addEventListener('param', handleParam);
window.addEventListener('enum', handleEnum);
return () => {
window.removeEventListener('loadDict', handleLoad);
window.removeEventListener('saveDict', handleSave);
window.removeEventListener('tick', handleTick);
window.removeEventListener('param', handleParam);
window.removeEventListener('enum', handleEnum);
};
}, [...allModArrays, ...allEnumArrays, ...allEnumMats, modCenterVals]);

View File

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