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 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-"];
|
||||
|
||||
|
||||
@ -51,11 +51,15 @@ function MasterLfoHandler(){
|
||||
const [djParamArr, setDjParamArr] = React.useState(Array(MAXLFOS).fill('NONE'));
|
||||
|
||||
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 allModArrays = [modVisibleArr, shapeArr, djParamArr, freqArr, ampArr, phaseArr];
|
||||
const allModSetters = [setModVisibleArr, setShapeArr, setDjParamArr, setFreqArr, setAmpArr, setPhaseArr];
|
||||
const allModArrays = [modVisibleArr, shapeArr, djParamArr, freqArr, minArr, maxArr, phaseArr];
|
||||
const allModSetters = [setModVisibleArr, setShapeArr, setDjParamArr, setFreqArr, setMinArr, setMaxArr, setPhaseArr];
|
||||
const modBlankVals = [true, SHAPETYPES[0], MODPARAMOPTIONS[0], '1', '1', '0'];
|
||||
|
||||
|
||||
@ -182,7 +186,7 @@ function MasterLfoHandler(){
|
||||
|
||||
function handleTick(event) {
|
||||
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],
|
||||
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],
|
||||
setPhase: CreateParamChanger(phaseArr, setPhaseArr, 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.setDjParam, value: props.djParam, options: MODPARAMOPTIONS})),
|
||||
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("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(Button, {text:'+', onClick: props.addLfo}, 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++){
|
||||
if (visibleArr[i]){
|
||||
let name = paramNames[i];
|
||||
@ -61,15 +62,15 @@ function operateModulators(visibleArr, paramNames, centers, freqs, amps, waveTyp
|
||||
if (centers.hasOwnProperty(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")
|
||||
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 unscaled = indexWave(waveType, phase);
|
||||
let el = document.getElementById(`slider-${name}`);
|
||||
@ -77,5 +78,5 @@ function operateModulator(center, freq, amp, waveType, phaseArr, phaseI, name, t
|
||||
if (el)
|
||||
el.value = unscaled;
|
||||
|
||||
return unscaled * amp + center;
|
||||
return unscaled * amp + center + parseFloat(min);
|
||||
}
|
Loading…
Reference in New Issue
Block a user