[SCM] calf/master: + Wavetable: more wavetables, changed default velocity scaling to 100%

js at users.alioth.debian.org js at users.alioth.debian.org
Tue May 7 15:39:26 UTC 2013


The following commit has been merged in the master branch:
commit b85fd12375efb5b10bf8538ac98094ff50f155e6
Author: Krzysztof Foltman <wdev at foltman.com>
Date:   Thu Mar 5 23:46:44 2009 +0000

    + Wavetable: more wavetables, changed default velocity scaling to 100%

diff --git a/src/calf/metadata.h b/src/calf/metadata.h
index 1458665..b10460a 100644
--- a/src/calf/metadata.h
+++ b/src/calf/metadata.h
@@ -240,6 +240,9 @@ struct wavetable_metadata: public plugin_metadata<wavetable_metadata>
         wt_gtr5,
         wt_reed,
         wt_reed2,
+        wt_silver,
+        wt_brass,
+        wt_multi,
         wt_count
     };
     enum { 
diff --git a/src/modules.cpp b/src/modules.cpp
index dfa2032..5b8e422 100644
--- a/src/modules.cpp
+++ b/src/modules.cpp
@@ -530,6 +530,9 @@ const char *wavetable_names[] = {
     "Gtr 5",
     "Reed",
     "Reed 2",
+    "Silver",
+    "Brass",
+    "Multi",
 };
 
 const char *wavetable_init_soundfont = "";
@@ -541,7 +544,7 @@ CALF_PORT_NAMES(wavetable) = {
 CALF_PLUGIN_INFO(wavetable) = { 0x8701, "Wavetable", "Calf Wavetable", "Krzysztof Foltman", calf_plugins::calf_copyright_info, "SynthesizerPlugin" };
 
 CALF_PORT_PROPS(wavetable) = {
-    { 1 /*wavetable_metadata::wt_count - 1*/,       0,  wavetable_metadata::wt_count - 1, 0, PF_ENUM | PF_SCALE_LINEAR | PF_CTL_COMBO, wavetable_names, "o1wave", "Osc1 Wave" },
+    { wavetable_metadata::wt_count - 1,       0,  wavetable_metadata::wt_count - 1, 0, PF_ENUM | PF_SCALE_LINEAR | PF_CTL_COMBO, wavetable_names, "o1wave", "Osc1 Wave" },
     { 0.2,     -1,      1,  0, PF_FLOAT | PF_SCALE_PERC | PF_CTL_KNOB | PF_UNIT_COEF, NULL, "o1offset", "Osc1 Ctl"},
     { 0,        -48,   48, 48*2+1, PF_INT   | PF_SCALE_LINEAR | PF_CTL_KNOB | PF_UNIT_SEMITONES, NULL, "o1trans", "Osc1 Transpose" },
     { 6,       -100,  100,      0, PF_INT   | PF_SCALE_LINEAR | PF_CTL_KNOB | PF_UNIT_CENTS, NULL, "o1detune", "Osc1 Detune" },
@@ -557,13 +560,13 @@ CALF_PORT_PROPS(wavetable) = {
     { 350,       10,20000,    0, PF_FLOAT | PF_SCALE_LOG | PF_CTL_KNOB | PF_UNIT_MSEC, NULL, "adsr_d", "EG1 Decay" },
     { 0.5,        0,    1,    0, PF_FLOAT | PF_SCALE_PERC, NULL, "adsr_s", "EG1 Sustain" },
     { 50,       10,20000,     0, PF_FLOAT | PF_SCALE_LOG | PF_CTL_KNOB | PF_UNIT_MSEC, NULL, "adsr_r", "EG1 Release" },
-    { 0,          0,    1,    0, PF_FLOAT | PF_SCALE_PERC, NULL, "adsr_v", "EG1 VelMod" },
+    { 1,          0,    1,    0, PF_FLOAT | PF_SCALE_PERC, NULL, "adsr_v", "EG1 VelMod" },
 
     { 1,          1,20000,    0, PF_FLOAT | PF_SCALE_LOG | PF_CTL_KNOB | PF_UNIT_MSEC, NULL, "adsr2_a", "EG2 Attack" },
     { 350,       10,20000,    0, PF_FLOAT | PF_SCALE_LOG | PF_CTL_KNOB | PF_UNIT_MSEC, NULL, "adsr2_d", "EG2 Decay" },
     { 0.5,        0,    1,    0, PF_FLOAT | PF_SCALE_PERC, NULL, "adsr2_s", "EG2 Sustain" },
     { 50,       10,20000,     0, PF_FLOAT | PF_SCALE_LOG | PF_CTL_KNOB | PF_UNIT_MSEC, NULL, "adsr2_r", "EG2 Release" },
-    { 0,          0,    1,    0, PF_FLOAT | PF_SCALE_PERC, NULL, "adsr2_v", "EG2 VelMod" },
+    { 1,          0,    1,    0, PF_FLOAT | PF_SCALE_PERC, NULL, "adsr2_v", "EG2 VelMod" },
 
     { 1,          1,20000,    0, PF_FLOAT | PF_SCALE_LOG | PF_CTL_KNOB | PF_UNIT_MSEC, NULL, "adsr3_a", "EG3 Attack" },
     { 350,       10,20000,    0, PF_FLOAT | PF_SCALE_LOG | PF_CTL_KNOB | PF_UNIT_MSEC, NULL, "adsr3_d", "EG3 Decay" },
diff --git a/src/wavetable.cpp b/src/wavetable.cpp
index 3e0db89..892990e 100644
--- a/src/wavetable.cpp
+++ b/src/wavetable.cpp
@@ -126,6 +126,13 @@ static inline float sincl(float x, float clip)
     return sin(M_PI * x);
 }
 
+static inline float blip(float x, float center, float range)
+{
+    if (x < center - range || x > center + range)
+        return 0;
+    return 1 - fabs(x - center)/range;
+}
+
 static void interpolate_wt(int16_t table[129][256], int step)
 {
     for (int i = 0; i < 128; i++)
@@ -456,6 +463,51 @@ wavetable_audio_module::wavetable_audio_module()
             tables[wavetable_metadata::wt_reed2][i][j] = 32767 * v;
         }
     }
+    for (int i = 0; i < 129; i++)
+    {
+        for (int j = 0; j < 256; j++)
+        {
+            float ph = j * 2 * M_PI / 256;
+            float ii = i / 128.0;
+            float mod = 0;
+            for (int k = 0; k < 13; k++)
+            {
+                mod += blip(i, k * 10, 30) * sin (ph * (5 + 3 * k) + ii * cos(ph * (2 + 2 * k)));
+            }
+            float v = sin(ph + ii * mod);
+            tables[wavetable_metadata::wt_silver][i][j] = 32767 * v;
+        }
+    }
+    for (int i = 0; i < 129; i++)
+    {
+        for (int j = 0; j < 256; j++)
+        {
+            float ph = j * 2 * M_PI / 256;
+            float ii = i / 128.0;
+            float mod = 0;
+            for (int k = 0; k < 16; k++)
+            {
+                mod += 2 * blip(i, k * 8, k * 4 + 10) * cos (ph * (k + 1));
+            }
+            float v = sin(ph + ii * mod);
+            tables[wavetable_metadata::wt_multi][i][j] = 32767 * v;
+        }
+    }
+    for (int i = 0; i < 129; i++)
+    {
+        for (int j = 0; j < 256; j++)
+        {
+            float ph = j * 2 * M_PI / 256;
+            float ii = i / 128.0;
+            float mod = 0;
+            for (int k = 0; k < 16; k++)
+            {
+                mod += 2 * blip(i, k * 8, 16) * cos (ph * (2 * k + 1));
+            }
+            float v = (sin(ph + ii * mod) + ii * sin(2 * ph + ii * mod)) / 2;
+            tables[wavetable_metadata::wt_multi][i][j] = 32767 * v;
+        }
+    }
 }
 
 #endif

-- 
calf audio plugins packaging



More information about the pkg-multimedia-commits mailing list