[SCM] calf/master: Fix LFO delay and some compile warnings in Monosynth.
js at users.alioth.debian.org
js at users.alioth.debian.org
Tue May 7 15:41:15 UTC 2013
The following commit has been merged in the master branch:
commit 018f49d4215c5eb3183205e1daf53faaff8df454
Author: Krzysztof Foltman <wdev at foltman.com>
Date: Wed Sep 26 21:28:06 2012 +0100
Fix LFO delay and some compile warnings in Monosynth.
diff --git a/src/calf/modules_synths.h b/src/calf/modules_synths.h
index dc57d60..6f4dc4b 100644
--- a/src/calf/modules_synths.h
+++ b/src/calf/modules_synths.h
@@ -180,6 +180,7 @@ public:
/// Send all configure variables set within a plugin to given destination (which may be limited to only those that plugin understands)
virtual void send_configures(send_configure_iface *sci) { return mod_matrix_impl::send_configures(sci); }
virtual char *configure(const char *key, const char *value) { return mod_matrix_impl::configure(key, value); }
+ float get_lfo(dsp::triangle_lfo &lfo, int param);
};
};
diff --git a/src/monosynth.cpp b/src/monosynth.cpp
index ae2213b..484482e 100644
--- a/src/monosynth.cpp
+++ b/src/monosynth.cpp
@@ -57,6 +57,7 @@ void monosynth_audio_module::activate() {
wave2 = -1;
queue_note_on = -1;
last_filter_type = -1;
+ lfo_clock = 0.f;
}
waveform_family<MONOSYNTH_WAVE_BITS> *monosynth_audio_module::waves;
@@ -407,10 +408,12 @@ void monosynth_audio_module::delayed_note_on()
envelope1.note_on();
if (starting || !(legato & 1) || envelope2.released())
envelope2.note_on();
+ if (!running || !(legato & 1))
+ lfo_clock = 0.f;
envelope1.advance();
envelope2.advance();
queue_note_on = -1;
- float modsrc[modsrc_count] = { 1, velocity, inertia_pressure.get_last(), modwheel_value, envelope1.value, envelope2.value, 0.5+0.5*lfo1.last, 0.5+0.5*lfo2.last};
+ float modsrc[modsrc_count] = { 1.f, velocity, (float)inertia_pressure.get_last(), modwheel_value, (float)envelope1.value, (float)envelope2.value, 0.5f+0.5f*lfo1.last, 0.5f+0.5f*lfo2.last};
calculate_modmatrix(moddest, moddest_count, modsrc);
set_frequency();
lookup_waveforms();
@@ -433,6 +436,14 @@ void monosynth_audio_module::set_sample_rate(uint32_t sr) {
master.set_sample_rate(sr);
}
+float monosynth_audio_module::get_lfo(dsp::triangle_lfo &lfo, int param)
+{
+ if (*params[param] <= 0)
+ return lfo.get();
+ float pt = lfo_clock / *params[param];
+ return lfo.get() * std::min(1.0f, pt);
+}
+
void monosynth_audio_module::calculate_step()
{
if (queue_note_on != -1)
@@ -445,7 +456,7 @@ void monosynth_audio_module::calculate_step()
envelope2.advance();
lfo1.get();
lfo2.get();
- float modsrc[modsrc_count] = { 1, velocity, inertia_pressure.get_last(), modwheel_value, envelope1.value, envelope2.value, 0.5+0.5*lfo1.last, 0.5+0.5*lfo2.last};
+ float modsrc[modsrc_count] = { 1.f, velocity, inertia_pressure.get_last(), modwheel_value, (float)envelope1.value, (float)envelope2.value, 0.5f+0.5f*lfo1.last, 0.5f+0.5f*lfo2.last};
calculate_modmatrix(moddest, moddest_count, modsrc);
last_stretch1 = (int32_t)(65536 * dsp::clip(*params[par_stretch1] + 0.01f * moddest[moddest_o1stretch], 1.f, 16.f));
return;
@@ -466,9 +477,9 @@ void monosynth_audio_module::calculate_step()
porta_time += odcr;
}
}
- float lfov1 = lfo1.get() * std::min(1.0f, lfo_clock / *params[par_lfodelay]);
+ float lfov1 = get_lfo(lfo1, par_lfodelay);
lfov1 = lfov1 * dsp::lerp(1.f, modwheel_value, *params[par_mwhl_lfo]);
- float lfov2 = lfo2.get() * std::min(1.0f, lfo_clock / *params[par_lfo2delay]);
+ float lfov2 = get_lfo(lfo2, par_lfodelay);
lfo_clock += odcr;
if (fabs(*params[par_lfopitch]) > small_value<float>())
lfo_bend = pow(2.0f, *params[par_lfopitch] * lfov1 * (1.f / 1200.0f));
@@ -480,7 +491,7 @@ void monosynth_audio_module::calculate_step()
// mod matrix
// this should be optimized heavily; I think I'll do it when MIDI in Ardour 3 gets stable :>
- float modsrc[modsrc_count] = { 1, velocity, inertia_pressure.get(), modwheel_value, env1, env2, 0.5+0.5*lfov1, 0.5+0.5*lfov2};
+ float modsrc[modsrc_count] = { 1.f, velocity, inertia_pressure.get(), modwheel_value, env1, env2, 0.5f+0.5f*lfov1, 0.5f+0.5f*lfov2};
calculate_modmatrix(moddest, moddest_count, modsrc);
set_frequency();
--
calf audio plugins packaging
More information about the pkg-multimedia-commits
mailing list