[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
- Previous message: [SCM] calf/master: + Curve: add maximum number of points, pass CalfCurve object to callbacks, allow customized clipping + Framework: some API docs, more of incomplete handling of DSSI-like configure() (JACK host only, no support in presets etc., be patient) + Organ: more work on FM-based percussion generator, including user-settable keytrack curve (editing currently limited to white keys) + SVN: mark more files as ignored (install-sh, depcomp, missing)
- Next message: [SCM] calf/master: + JACK host: remove deadlock on shutdown + Organ: make polyphonic percussion click-free (more or less) at cost of code ugliness, simplify monophonic percussion phase reset code + Organ: make default percussion parameters more H****nd-like again (which means FM is not used by default, it still wastes CPU cycles though)
- Messages sorted by:
[ date ]
[ thread ]
[ subject ]
[ author ]
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
- Previous message: [SCM] calf/master: + Curve: add maximum number of points, pass CalfCurve object to callbacks, allow customized clipping + Framework: some API docs, more of incomplete handling of DSSI-like configure() (JACK host only, no support in presets etc., be patient) + Organ: more work on FM-based percussion generator, including user-settable keytrack curve (editing currently limited to white keys) + SVN: mark more files as ignored (install-sh, depcomp, missing)
- Next message: [SCM] calf/master: + JACK host: remove deadlock on shutdown + Organ: make polyphonic percussion click-free (more or less) at cost of code ugliness, simplify monophonic percussion phase reset code + Organ: make default percussion parameters more H****nd-like again (which means FM is not used by default, it still wastes CPU cycles though)
- Messages sorted by:
[ date ]
[ thread ]
[ subject ]
[ author ]
More information about the pkg-multimedia-commits
mailing list