range instead of amp
This commit is contained in:
parent
a4842b4865
commit
b860254884
25
lfogui.js
25
lfogui.js
@ -24,7 +24,7 @@ const ViewModes = Object.freeze({
|
|||||||
var modPhases = Array(MAXLFOS).fill(0);
|
var modPhases = Array(MAXLFOS).fill(0);
|
||||||
var firstUpdateTime = Date.now();
|
var firstUpdateTime = Date.now();
|
||||||
|
|
||||||
const MODULATORLABELS = ["-type-", "---shape---", "-------param-------", "--freq--", "-amp-", "-phase-", "-min", "-max"];
|
const MODULATORLABELS = ["-type-", "---shape---", "-------param-------", "--freq--", "-min-", "-max", "-phase-", "center"];
|
||||||
const ENUMERATORLABELS = ["---parameter---", "-# points-"];
|
const ENUMERATORLABELS = ["---parameter---", "-# points-"];
|
||||||
|
|
||||||
|
|
||||||
@ -51,11 +51,15 @@ function MasterLfoHandler(){
|
|||||||
const [djParamArr, setDjParamArr] = React.useState(Array(MAXLFOS).fill('NONE'));
|
const [djParamArr, setDjParamArr] = React.useState(Array(MAXLFOS).fill('NONE'));
|
||||||
|
|
||||||
const [freqArr, setFreqArr] = React.useState(Array(MAXLFOS).fill('1'));
|
const [freqArr, setFreqArr] = React.useState(Array(MAXLFOS).fill('1'));
|
||||||
const [ampArr, setAmpArr] = React.useState(Array(MAXLFOS).fill('1'));
|
|
||||||
|
// const [ampArr, setAmpArr] = React.useState(Array(MAXLFOS).fill('1'));
|
||||||
|
const [minArr, setMinArr] = React.useState(Array(MAXLFOS).fill('0'));
|
||||||
|
const [maxArr, setMaxArr] = React.useState(Array(MAXLFOS).fill('1'));
|
||||||
|
|
||||||
const [phaseArr, setPhaseArr] = React.useState(Array(MAXLFOS).fill('0'));
|
const [phaseArr, setPhaseArr] = React.useState(Array(MAXLFOS).fill('0'));
|
||||||
|
|
||||||
const allModArrays = [modVisibleArr, shapeArr, djParamArr, freqArr, ampArr, phaseArr];
|
const allModArrays = [modVisibleArr, shapeArr, djParamArr, freqArr, minArr, maxArr, phaseArr];
|
||||||
const allModSetters = [setModVisibleArr, setShapeArr, setDjParamArr, setFreqArr, setAmpArr, setPhaseArr];
|
const allModSetters = [setModVisibleArr, setShapeArr, setDjParamArr, setFreqArr, setMinArr, setMaxArr, setPhaseArr];
|
||||||
const modBlankVals = [true, SHAPETYPES[0], MODPARAMOPTIONS[0], '1', '1', '0'];
|
const modBlankVals = [true, SHAPETYPES[0], MODPARAMOPTIONS[0], '1', '1', '0'];
|
||||||
|
|
||||||
|
|
||||||
@ -182,7 +186,7 @@ function MasterLfoHandler(){
|
|||||||
|
|
||||||
function handleTick(event) {
|
function handleTick(event) {
|
||||||
let time = (Date.now() - firstUpdateTime) / 1000;
|
let time = (Date.now() - firstUpdateTime) / 1000;
|
||||||
operateModulators(modVisibleArr, djParamArr, modCenterVals, freqArr, ampArr, shapeArr, phaseArr, time);
|
operateModulators(modVisibleArr, djParamArr, modCenterVals, freqArr, minArr, maxArr, shapeArr, phaseArr, time);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
@ -222,8 +226,15 @@ function MasterLfoHandler(){
|
|||||||
|
|
||||||
freq: freqArr[i],
|
freq: freqArr[i],
|
||||||
setFreq: CreateParamChanger(freqArr, setFreqArr, i),
|
setFreq: CreateParamChanger(freqArr, setFreqArr, i),
|
||||||
amp: ampArr[i],
|
|
||||||
setAmp: CreateParamChanger(ampArr, setAmpArr, i),
|
//amp: ampArr[i],
|
||||||
|
//setAmp: CreateParamChanger(ampArr, setAmpArr, i),
|
||||||
|
|
||||||
|
min: minArr[i],
|
||||||
|
setMin : CreateParamChanger(minArr, setMinArr, i),
|
||||||
|
max: maxArr[i],
|
||||||
|
setMax: CreateParamChanger(maxArr, setMaxArr, i),
|
||||||
|
|
||||||
phase: phaseArr[i],
|
phase: phaseArr[i],
|
||||||
setPhase: CreateParamChanger(phaseArr, setPhaseArr, i),
|
setPhase: CreateParamChanger(phaseArr, setPhaseArr, i),
|
||||||
visible: modVisibleArr[i],
|
visible: modVisibleArr[i],
|
||||||
|
@ -25,10 +25,11 @@ function LfoRow(props){
|
|||||||
ListItem(DropDown({onChange: props.setShape, value:props.shape, options: SHAPETYPES})),
|
ListItem(DropDown({onChange: props.setShape, value:props.shape, options: SHAPETYPES})),
|
||||||
ListItem(DropDown({onChange: props.setDjParam, value: props.djParam, options: MODPARAMOPTIONS})),
|
ListItem(DropDown({onChange: props.setDjParam, value: props.djParam, options: MODPARAMOPTIONS})),
|
||||||
ListItem(e(NumberBox, {onChange:props.setFreq, value:props.freq, step: 0.1}, null)),
|
ListItem(e(NumberBox, {onChange:props.setFreq, value:props.freq, step: 0.1}, null)),
|
||||||
ListItem(e(NumberBox, {onChange:props.setAmp, value:props.amp, step:0.1}, null)),
|
ListItem(e(NumberBox, {onChange:props.setMin, value:props.min, step:0.1}, null)),
|
||||||
|
ListItem(e(NumberBox, {onChange:props.setMax, value:props.max, step:0.1}, null)),
|
||||||
|
//ListItem(e(NumberBox, {onChange:props.setAmp, value:props.amp, step:0.1}, null)),
|
||||||
ListItem(e(NumberBox, {onChange:props.setPhase, value:props.phase, step:0.1}, null)),
|
ListItem(e(NumberBox, {onChange:props.setPhase, value:props.phase, step:0.1}, null)),
|
||||||
ListItem(e("div", {className:"base-val"}, center.toString())),
|
ListItem(e("div", {className:"base-val"}, center.toString())),
|
||||||
ListItem(e("div", {className:"base-val"}, center + parseFloat(props.amp))),
|
|
||||||
ListItem(e("input", {type: 'range', min: 0, max: 1, step: 0.01, readonly: true, id: `slider-${props.djParam}`})),
|
ListItem(e("input", {type: 'range', min: 0, max: 1, step: 0.01, readonly: true, id: `slider-${props.djParam}`})),
|
||||||
ListItem(e(Button, {text:'+', onClick: props.addLfo}, null)),
|
ListItem(e(Button, {text:'+', onClick: props.addLfo}, null)),
|
||||||
ListItem(e(Button, {text:'-', onClick: props.removeLfo}, null))
|
ListItem(e(Button, {text:'-', onClick: props.removeLfo}, null))
|
||||||
@ -53,7 +54,7 @@ function indexWave(type, phase){
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
function operateModulators(visibleArr, paramNames, centers, freqs, amps, waveTypes, phaseArr, time){
|
function operateModulators(visibleArr, paramNames, centers, freqs, mins, maxs, waveTypes, phaseArr, time){
|
||||||
for (let i=0; i<paramNames.length; i++){
|
for (let i=0; i<paramNames.length; i++){
|
||||||
if (visibleArr[i]){
|
if (visibleArr[i]){
|
||||||
let name = paramNames[i];
|
let name = paramNames[i];
|
||||||
@ -61,15 +62,15 @@ 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(center, freqs[i], amps[i], waveTypes[i], phaseArr, i, name, time);
|
let output = operateModulator(center, freqs[i], mins[i], maxs[i], waveTypes[i], phaseArr, i, name, time);
|
||||||
if (name !== "NONE")
|
if (name !== "NONE")
|
||||||
window.dispatchEvent(new CustomEvent('enum', {'detail' : [name, output]}));
|
window.dispatchEvent(new CustomEvent('enum', {'detail' : [name, output]}));
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
function operateModulator(center, freq, amp, waveType, phaseArr, phaseI, name, time){
|
function operateModulator(center, freq, min, max, waveType, phaseArr, phaseI, name, time){
|
||||||
|
let amp = parseFloat(max) - parseFloat(min);
|
||||||
let phase = (time * freq + parseFloat(phaseArr[phaseI])) % 1.00;
|
let phase = (time * freq + parseFloat(phaseArr[phaseI])) % 1.00;
|
||||||
let unscaled = indexWave(waveType, phase);
|
let unscaled = indexWave(waveType, phase);
|
||||||
let el = document.getElementById(`slider-${name}`);
|
let el = document.getElementById(`slider-${name}`);
|
||||||
@ -77,5 +78,5 @@ function operateModulator(center, freq, amp, waveType, phaseArr, phaseI, name, t
|
|||||||
if (el)
|
if (el)
|
||||||
el.value = unscaled;
|
el.value = unscaled;
|
||||||
|
|
||||||
return unscaled * amp + center;
|
return unscaled * amp + center + parseFloat(min);
|
||||||
}
|
}
|
Loading…
Reference in New Issue
Block a user