[SCM] calf/master: + Wavetable: tweak the wavetable, add velocity sensitivity
js at users.alioth.debian.org
js at users.alioth.debian.org
Tue May 7 15:39:24 UTC 2013
The following commit has been merged in the master branch:
commit 09835bb1d140aaefb279bc865fa5d96dbf84694c
Author: Krzysztof Foltman <wdev at foltman.com>
Date: Sat Feb 28 22:46:28 2009 +0000
+ Wavetable: tweak the wavetable, add velocity sensitivity
diff --git a/src/calf/wavetable.h b/src/calf/wavetable.h
index b553187..34a0eab 100644
--- a/src/calf/wavetable.h
+++ b/src/calf/wavetable.h
@@ -49,6 +49,7 @@ protected:
dsp::decay amp;
wavetable_oscillator oscs[OscCount];
dsp::adsr envs[EnvCount];
+ float velocity;
public:
wavetable_voice();
void set_params_ptr(wavetable_audio_module *_parent, int _srate);
diff --git a/src/wavetable.cpp b/src/wavetable.cpp
index 27f0b62..79d9dab 100644
--- a/src/wavetable.cpp
+++ b/src/wavetable.cpp
@@ -55,6 +55,7 @@ void wavetable_voice::reset()
void wavetable_voice::note_on(int note, int vel)
{
this->note = note;
+ velocity = vel / 127.0;
amp.set(1.0);
for (int i = 0; i < OscCount; i++) {
oscs[i].tables = parent->tables;
@@ -92,7 +93,7 @@ void wavetable_voice::render_block()
for (int i = 0; i < BlockSize; i++) {
float value = 0.f;
- float env = prev_value + (cur_value - prev_value) * i * (1.0 / BlockSize);
+ float env = velocity * (prev_value + (cur_value - prev_value) * i * (1.0 / BlockSize));
for (int j = 0; j < OscCount; j++)
value += oscs[j].get(dsp::clip(fastf2i_drm((env + *params[wavetable_metadata::par_o1offset + j * spc]) * 127.0), 0, 127)) * *params[wavetable_metadata::par_o1level + j * spc];
@@ -114,7 +115,7 @@ wavetable_audio_module::wavetable_audio_module()
//tables[i][j] = i < j ? -32767 : 32767;
float ph = j * 2 * M_PI / 256;
float ii = i / 128.0;
- float peak = (32 * ii * ii);
+ float peak = (32 * ii);
float rezo = lerp(sin(floor(peak) * ph), sin(floor(peak+1) * ph), peak - floor(peak));
tables[i][j] = 32767 * sin (ph + 2 * ii * sin(2 * ph) + 2 * ii * ii * sin(4 * ph) + ii * ii * rezo);
}
--
calf audio plugins packaging
More information about the pkg-multimedia-commits
mailing list