[SCM] calf/master: + Organ: first version of stereo phase parameter for percussion module

js at users.alioth.debian.org js at users.alioth.debian.org
Tue May 7 15:37:28 UTC 2013


The following commit has been merged in the master branch:
commit 82a7f881a1a47f9e7313627660ff3cb904e17a6f
Author: kfoltman <kfoltman at 78b06b96-2940-0410-b7fc-879d825d01d8>
Date:   Sun Aug 3 22:58:23 2008 +0000

    + Organ: first version of stereo phase parameter for percussion module
    
    
    git-svn-id: https://calf.svn.sourceforge.net/svnroot/calf/trunk@254 78b06b96-2940-0410-b7fc-879d825d01d8

diff --git a/src/calf/organ.h b/src/calf/organ.h
index 0801b1c..da9d412 100644
--- a/src/calf/organ.h
+++ b/src/calf/organ.h
@@ -66,6 +66,7 @@ struct organ_parameters {
     float percussion_fm_harmonic;
     float percussion_vel2fm;
     float percussion_trigger;
+    float percussion_stereo;
     float filter_chain;
     float master;
 
@@ -313,7 +314,7 @@ struct drawbar_organ: public synth::basic_synth {
         par_foldover,
         par_percdecay, par_perclevel, par_percwave, par_percharm, par_percvel2amp,
         par_percfmdecay, par_percfmdepth, par_percfmwave, par_percfmharm, par_percvel2fm,
-        par_perctrigger, 
+        par_perctrigger, par_percstereo,
         par_filterchain,
         par_master, 
         par_f1cutoff, par_f1res, par_f1env1, par_f1env2, par_f1env3, par_f1keyf,
diff --git a/src/organ.cpp b/src/organ.cpp
index 40b904c..e5e7509 100644
--- a/src/organ.cpp
+++ b/src/organ.cpp
@@ -331,6 +331,11 @@ const char *organ_audio_module::get_gui_xml()
                                     "</vbox>"        
                                 "</table>"
                                 "<vbox>"
+                                    "<vbox>"
+                                        "<label param=\"perc_stereo\"/>"
+                                        "<knob param=\"perc_stereo\" expand=\"0\" fill=\"0\" type=\"3\"/>"
+                                        "<value param=\"perc_stereo\"/>"
+                                    "</vbox>"
                                     "<hbox>"
                                         "<vbox>"
                                             "<label param=\"perc_trigger\"/>"
@@ -518,6 +523,7 @@ parameter_properties organ_audio_module::param_props[] = {
     { 0,          0,    1,    0, PF_FLOAT | PF_SCALE_PERC, NULL, "perc_vel2fm", "P: Vel->FM" },
     
     { 0,         0,  organ_voice_base::perctrig_count - 1, 0, PF_ENUM | PF_CTL_COMBO, organ_percussion_trigger_names, "perc_trigger", "P: Trigger" },
+    { 0,       0,360, 361, PF_FLOAT | PF_SCALE_LINEAR | PF_CTL_KNOB | PF_UNIT_DEG, NULL, "perc_stereo", "P: Stereo Phase" },
 
     { 0,         0,  1, 0, PF_BOOL | PF_CTL_TOGGLE, NULL, "filter_chain", "Filter 1 To 2" },
     { 0.1,         0,  1, 100, PF_FLOAT | PF_SCALE_GAIN | PF_CTL_KNOB | PF_PROP_OUTPUT_GAIN, NULL, "master", "Volume" },
@@ -1215,16 +1221,16 @@ void percussion_voice::render_to(float (*buf)[2], int nsamples)
         amp.set(0.0);
         return;
     }
+    float s = parameters->percussion_stereo * ORGAN_WAVE_SIZE * (0.5 / 360.0);
     for (int i = 0; i < nsamples; i++) {
         float fm = wave(fmdata, modphase);
         fm *= ORGAN_WAVE_SIZE * parameters->percussion_fm_depth * fm_amp.get();
         modphase += moddphase;
         fm_amp.age_exp(fm_age_const, 1.0 / 32768.0);
         
-        float osc = level * wave(data, phase + dsp::fixed_point<int64_t, 20>(fm));
-        osc *= level * amp.get();
-        buf[i][0] += osc;
-        buf[i][1] += osc;
+        float lamp = level * amp.get();
+        buf[i][0] += lamp * wave(data, phase + dsp::fixed_point<int64_t, 20>(fm - s));
+        buf[i][1] += lamp * wave(data, phase + dsp::fixed_point<int64_t, 20>(fm + s));
         amp.age_exp(age_const, 1.0 / 32768.0);
         phase += dphase;
     }

-- 
calf audio plugins packaging



More information about the pkg-multimedia-commits mailing list