- humanizing based on jittered slider positions

git-svn-id: http://moon:8086/svn/software/trunk/projects/JaySynth@267 b431acfa-c32f-4a4a-93f1-934dc6c82436
This commit is contained in:
2015-03-19 10:48:24 +00:00
parent aa0d99f484
commit 262bc75179
2 changed files with 32 additions and 13 deletions
+31 -13
View File
@@ -79,15 +79,18 @@ JaySynth::JaySynth (int num_voices, String pathToWaves)
// Init humanize parameter from global parameter constraints // Init humanize parameter from global parameter constraints
humanize_voice_param = new param_info_t*[SYNTH_NUM_PARAMS]; humanize_voice_param = new param_info_t*[SYNTH_NUM_PARAMS];
ppHumanizedSliders = new synth_float_t*[SYNTH_NUM_PARAMS];
for (i=0; i < SYNTH_NUM_PARAMS; i++) for (i=0; i < SYNTH_NUM_PARAMS; i++)
{ {
humanize_voice_param[i] = new param_info_t[max_num_voices]; humanize_voice_param[i] = new param_info_t[max_num_voices];
ppHumanizedSliders[i] = new synth_float_t[max_num_voices];
for (j=0; j < max_num_voices; j++) for (j=0; j < max_num_voices; j++)
{ {
sprintf(paramName, "%s Voice# %03d", getParamInfo(i)->pName, j); sprintf(paramName, "%s Voice# %03d", getParamInfo(i)->pName, j);
paramInfoInit(&humanize_voice_param[i][j], getParamInfo(i)->id, paramName); paramInfoInit(&humanize_voice_param[i][j], getParamInfo(i)->id, paramName);
paramInfoCopy(&humanize_voice_param[i][j], getParamInfo(i)); paramInfoCopy(&humanize_voice_param[i][j], getParamInfo(i));
ppHumanizedSliders[i][j] = 0;
} }
} }
updateParameters(); updateParameters();
@@ -126,8 +129,10 @@ JaySynth::~JaySynth()
paramInfoFree(&humanize_voice_param[i][j]); paramInfoFree(&humanize_voice_param[i][j]);
} }
delete (humanize_voice_param[i]); delete (humanize_voice_param[i]);
delete (ppHumanizedSliders[i]);
} }
delete (humanize_voice_param); delete (humanize_voice_param);
delete (ppHumanizedSliders);
for (i = max_num_voices; --i >= 0;) for (i = max_num_voices; --i >= 0;)
removeVoice(i); removeVoice(i);
@@ -179,6 +184,8 @@ void JaySynth::humanizeParam (int paramID, bool useRandom, UINT32 random_seed, s
/*pcenter*/-1E6/*getParamInfo(i)->pcenter*/, /*pcenter*/-1E6/*getParamInfo(i)->pcenter*/,
/*pmax*/getParamInfo(paramID)->pmax * (1+spread), /*pmax*/getParamInfo(paramID)->pmax * (1+spread),
/*pinterval*/0); /*pinterval*/0);
ppHumanizedSliders[paramID][j] = spread;
} }
Noise_Free(&noise); Noise_Free(&noise);
#else #else
@@ -249,14 +256,14 @@ void JaySynth::humanizeModeChanged(void)
void JaySynth::humanizeVarianceChanged_VCO(void) void JaySynth::humanizeVarianceChanged_VCO(void)
{ {
#ifdef WITH_OLD_HUMANIZE #ifdef WITH_OLD_HUMANIZE
humanizeParam(SYNTH_PARAM_TUNE, true, 0x1234561, 0, 0.2*humanize_var_vco); humanizeParam(SYNTH_PARAM_TUNE, true, 0x1234561, 0, 0.5*humanize_var_vco);
humanizeParam(SYNTH_PARAM_OSC_0_DETUNE, true, 0x293857, 0, 2*humanize_var_vco); // humanizeParam(SYNTH_PARAM_OSC_0_DETUNE, true, 0x293857, 0, humanize_var_vco);
humanizeParam(SYNTH_PARAM_OSC_1_DETUNE, true, 0x137573, 0, 2*humanize_var_vco); // humanizeParam(SYNTH_PARAM_OSC_1_DETUNE, true, 0x137573, 0, humanize_var_vco);
// Re-Read parameter // Re-Read parameter
setParameter(SYNTH_PARAM_TUNE, params[SYNTH_PARAM_TUNE]); setParameter(SYNTH_PARAM_TUNE, params[SYNTH_PARAM_TUNE]);
setParameter(SYNTH_PARAM_OSC_0_DETUNE, params[SYNTH_PARAM_OSC_0_DETUNE]); // setParameter(SYNTH_PARAM_OSC_0_DETUNE, params[SYNTH_PARAM_OSC_0_DETUNE]);
setParameter(SYNTH_PARAM_OSC_1_DETUNE, params[SYNTH_PARAM_OSC_1_DETUNE]); // setParameter(SYNTH_PARAM_OSC_1_DETUNE, params[SYNTH_PARAM_OSC_1_DETUNE]);
#else #else
int i; int i;
synth_float_t f_ref; synth_float_t f_ref;
@@ -280,8 +287,8 @@ void JaySynth::humanizeVarianceChanged_VCO(void)
void JaySynth::humanizeVarianceChanged_VCF(void) void JaySynth::humanizeVarianceChanged_VCF(void)
{ {
humanizeParam(SYNTH_PARAM_VCF_F, true, 0x1234561, 0, 2*humanize_var_vcf); humanizeParam(SYNTH_PARAM_VCF_F, true, 0x1234561, 0, 0.5*humanize_var_vcf);
humanizeParam(SYNTH_PARAM_VCF_Q, true, 0x1234561, 0, 0.2*humanize_var_vcf); humanizeParam(SYNTH_PARAM_VCF_Q, true, 0x1234561, 0, 0.05*humanize_var_vcf);
// Re-Read parameter // Re-Read parameter
setParameter(SYNTH_PARAM_VCF_F, params[SYNTH_PARAM_VCF_F]); setParameter(SYNTH_PARAM_VCF_F, params[SYNTH_PARAM_VCF_F]);
@@ -781,17 +788,16 @@ void JaySynth::setParam(int paramID, int voice)
if (isHumanize) if (isHumanize)
{ {
param_info_t *pConstraints = getParamInfo(paramID); synth_float_t slider;
param_info_t *pHumanized;
for (i=voice_min; i <= voice_max; i++) for (i=voice_min; i <= voice_max; i++)
{ {
param = params[paramID] + controls[paramID]; slider = toSlider(pParamInfo, params[paramID]) + ppHumanizedSliders[paramID][i];
param = toParam(pParamInfo, slider) + controls[paramID];
for (j=0; j < SYNTH_PER_VOICE_CONTROL_SIZE; j++) for (j=0; j < SYNTH_PER_VOICE_CONTROL_SIZE; j++)
param += pPer_voice_controls[i].ctrl[j][paramID]; param += pPer_voice_controls[i].ctrl[j][paramID];
param = clampParam(pParamInfo, param); param = clampParam(pParamInfo, param);
pHumanized = &humanize_voice_param[paramID][i]; ((JaySynthVoice*)getVoice(i))->setParameter(voice_param_type, param);
((JaySynthVoice*)getVoice(i))->setParameter(voice_param_type, toParam(pHumanized, toSlider(pConstraints, param)));
} }
} }
else else
@@ -1019,6 +1025,14 @@ void JaySynth::handleMidiEvent (const MidiMessage& m)
m.getControllerNumber(), m.getControllerNumber(),
m.getControllerValue()); m.getControllerValue());
} }
else if (m.isMidiMachineControlMessage())
{
SynthDebug("MidiMachineControlMessage(%08X)\n", m.getMidiMachineControlCommand());
}
else if (m.isTempoMetaEvent())
{
SynthDebug("TempoMetaEvent\n");
}
else if (m.isMidiStart()) else if (m.isMidiStart())
{ {
SynthDebug("MidiStart\n"); SynthDebug("MidiStart\n");
@@ -1047,6 +1061,10 @@ void JaySynth::handleMidiEvent (const MidiMessage& m)
{ {
} }
else
{
SynthDebug("Unknown\n");
}
} }
//============================================================================== //==============================================================================
+1
View File
@@ -236,6 +236,7 @@ private:
int unison_num_voices; int unison_num_voices;
int max_num_voices, total_num_voices; int max_num_voices, total_num_voices;
param_info_t **humanize_voice_param; param_info_t **humanize_voice_param;
synth_float_t **ppHumanizedSliders;
ListenerList <JaySynthListener> listeners; ListenerList <JaySynthListener> listeners;
OwnedArray <JaySynthVoice> voices; OwnedArray <JaySynthVoice> voices;
synth_float_t m_unisonGain; synth_float_t m_unisonGain;