[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