separated phase handling into two options
This commit is contained in:
parent
985b6c832f
commit
c794b5bc2f
@ -10,6 +10,11 @@ const MODPARAMOPTIONS = ["NONE", "stream", "pulse_length", "eventfulness", "even
|
||||
"harmoniclarity", "melodic_cohesion", "melody_scope", "tonic_pitch", "pitch_center", "pitch_range", "dynamics",
|
||||
"attenuation", "chordal_weight", "tonality-profile", "ostinato-buffer", "ostinato", "meter", "scale"];
|
||||
|
||||
const PhaseTypes = Object.freeze({
|
||||
MUSICAL: Symbol("musical"),
|
||||
TIME: Symbol("time")
|
||||
});
|
||||
|
||||
function ControlType(){
|
||||
return e('select', {className: 'control-type'}, Option("LFO"));
|
||||
}
|
||||
@ -80,9 +85,15 @@ function operateModulators(visibleArr, instanceNumArr, paramNames, centers, freq
|
||||
|
||||
function operateModulator(center, inst, freq, min, max, waveType, phaseArr, phaseI, userDefinedWave, name, currTime, bpm, beatsInMeasure){
|
||||
let amp = parseFloat(max) - parseFloat(min);
|
||||
let phaseType;
|
||||
|
||||
freq = parseLfoTime(freq, bpm, beatsInMeasure);
|
||||
let phase = (currTime * freq + parseFloat(phaseArr[phaseI])) % 1.00;
|
||||
freq, phaseType = parseLfoTime(freq, bpm, beatsInMeasure);
|
||||
let phase;
|
||||
|
||||
if (phaseType === PhaseTypes.TIME)
|
||||
phase = (currTime * freq + parseFloat(phaseArr[phaseI])) % 1.00;
|
||||
else if (phaseType === PhaseTypes.MUSICAL)
|
||||
phase = 0; // needs to be worked on
|
||||
let unscaled = indexWave(waveType, phase, userDefinedWave);
|
||||
let el = document.getElementById(`slider-${inst}-${name}`);
|
||||
|
||||
@ -95,19 +106,19 @@ function operateModulator(center, inst, freq, min, max, waveType, phaseArr, phas
|
||||
|
||||
function parseLfoTime(lfoTime, bpm, beatsInMeasure){
|
||||
if (lfoTime.slice(-2) == "hz"){
|
||||
return parseFloat(lfoTime.slice(0, -2));
|
||||
return parseFloat(lfoTime.slice(0, -2)), PhaseTypes.TIME;
|
||||
}
|
||||
else if (lfoTime.slice(-2) == "ms"){
|
||||
return 1000 / parseFloat(lfoTime.slice(0, -2));
|
||||
return 1000 / parseFloat(lfoTime.slice(0, -2)), PhaseTypes.TIME;
|
||||
}
|
||||
else if (lfoTime.slice(-1) == "s"){
|
||||
return 1 / parseFloat(lfoTime.slice(0, -1));
|
||||
return 1 / parseFloat(lfoTime.slice(0, -1)), PhaseTypes.TIME;
|
||||
}
|
||||
else if ((lfoTime.match(/:/g) || []).length == 2){
|
||||
return 1 / moment.duration(lfoTime).asSeconds();
|
||||
return 1 / moment.duration(lfoTime).asSeconds(), PhaseTypes.TIME;
|
||||
}
|
||||
else if ((lfoTime.match(/\./g) || []).length == 2){
|
||||
return musicalTimingToFreq(...lfoTime.split('.'), bpm, beatsInMeasure)
|
||||
return musicalTimingToFreq(...lfoTime.split('.'), bpm, beatsInMeasure), PhaseTypes.MUSICAL
|
||||
}
|
||||
else {
|
||||
return 0;
|
||||
|
Loading…
Reference in New Issue
Block a user