diff options
Diffstat (limited to 'note_compiler/templates/set_param.1')
-rw-r--r-- | note_compiler/templates/set_param.1 | 16 |
1 files changed, 15 insertions, 1 deletions
diff --git a/note_compiler/templates/set_param.1 b/note_compiler/templates/set_param.1 index 21fc983..e99f481 100644 --- a/note_compiler/templates/set_param.1 +++ b/note_compiler/templates/set_param.1 @@ -5,6 +5,13 @@ return; } + if ( ((p.par==FREQ_ATTACK) || (p.par==FREQ_DECAY) || (p.par==FREQ_SUSTAIN) || + (p.par==FREQ_RELEASE) || (p.par==FREQ_HOLD)) && sel_factor_env==NULL ) + { + output_note("NOTE: cannot change parameter for freq-envelope"+IntToStr(p.osc)+" because it's disabled"); + return; + } + switch(p.par) { case ATTACK: sel_env->set_attack(v*samp_rate >>SCALE); break; @@ -13,10 +20,17 @@ case RELEASE: sel_env->set_release(v*samp_rate >>SCALE); break; case HOLD: sel_env->set_hold(v!=0); break; + case FREQ_ATTACK: sel_factor_env->set_attack(v*samp_rate >>SCALE); break; + case FREQ_DECAY: sel_factor_env->set_decay(v*samp_rate >>SCALE); break; + case FREQ_SUSTAIN: sel_factor_env->set_sustain(v); break; + case FREQ_RELEASE: sel_factor_env->set_release(v*samp_rate >>SCALE); break; + case FREQ_HOLD: sel_factor_env->set_hold((v!=0)); break; + case FREQ_ENV_AMOUNT: sel_orig_osc->freq_env_amount=double(v)/ONE; apply_pfactor(); break; + case KSR: sel_osc->ksr=float(v)/ONE; break; case KSL: sel_osc->ksl=float(v)/ONE; break; - case FACTOR: sel_osc->factor=v; break; + case FACTOR: sel_orig_osc->factor=v; sel_osc->factor=v*freqfactor_factor[p.osc]; break; case TREMOLO: sel_osc->tremolo_depth=v; break; case TREM_LFO: sel_osc->tremolo_lfo=v; break; case VIBRATO: sel_osc->vibrato_depth=v; break; |