[SCM] calf/master: + Organ: add pitch bend inertia
js at users.alioth.debian.org
js at users.alioth.debian.org
Tue May 7 15:39:21 UTC 2013
The following commit has been merged in the master branch:
commit 884bdbabef6e526c9fd9295e8ddb524bd57aaf00
Author: Krzysztof Foltman <wdev at foltman.com>
Date: Sun Feb 8 20:20:01 2009 +0000
+ Organ: add pitch bend inertia
diff --git a/src/calf/organ.h b/src/calf/organ.h
index 441a6c4..5c71c16 100644
--- a/src/calf/organ.h
+++ b/src/calf/organ.h
@@ -207,14 +207,19 @@ protected:
bool perc_released;
/// The envelopes have ended and the voice is in final fadeout stage
bool finishing;
+ dsp::inertia<dsp::exponential_ramp> inertia_pitchbend;
public:
organ_voice()
- : organ_voice_base(NULL, sample_rate, perc_released),
- expression(dsp::linear_ramp(16)) {
+ : organ_voice_base(NULL, sample_rate, perc_released)
+ , expression(dsp::linear_ramp(16))
+ , inertia_pitchbend(dsp::exponential_ramp(1))
+ {
+ inertia_pitchbend.set_now(1);
}
void reset() {
+ inertia_pitchbend.ramp.set_length(sample_rate / (BlockSize * 30)); // 1/30s
vibrato.reset();
phase = 0;
for (int i = 0; i < FilterCount; i++)
diff --git a/src/organ.cpp b/src/organ.cpp
index 7c384a6..28fe4d1 100644
--- a/src/organ.cpp
+++ b/src/organ.cpp
@@ -551,7 +551,7 @@ void organ_vibrato::process(organ_parameters *parameters, float (*data)[2], unsi
void organ_voice::update_pitch()
{
organ_voice_base::update_pitch();
- dphase.set(dsp::midi_note_to_phase(note, 100 * parameters->global_transpose + parameters->global_detune, sample_rate) * parameters->pitch_bend);
+ dphase.set(dsp::midi_note_to_phase(note, 100 * parameters->global_transpose + parameters->global_detune, sample_rate) * inertia_pitchbend.get_last());
}
void organ_voice::render_block() {
@@ -567,6 +567,8 @@ void organ_voice::render_block() {
return;
}
+ inertia_pitchbend.set_inertia(parameters->pitch_bend);
+ inertia_pitchbend.step();
update_pitch();
dsp::fixed_point<int, 20> tphase, tdphase;
unsigned int foldvalue = parameters->foldvalue;
--
calf audio plugins packaging
More information about the pkg-multimedia-commits
mailing list