Clicks
Posted: Fri Feb 24, 2012 7:57 am
I found two bugs, that cause SL to click..
When I press undo_all and record a new loop, there's no fade in on the recorded loop. Seems to be because after undo_all fLoopFadeAtten is still 1.
I fixed it by insterting pLS->fLoopFadeAtten = 0.0f; in plugin.cc (Function: runSooperLooper) in case STATE_TRIG_START:
There's also a click of one sample in multiply. I changed the comparison to >= in plugin.cc (Function: runSooperLooper)
Two other small bugs: The state and waiting au parameters are not working. I disabled the else case in SooperLooperAU.cpp (Function: parameter_changed) to make the state parameter working:
And added this line in engine.cpp (Function: mainloop) to make the waiting parameter working:
Hope this helps...
Thanks for your work!!!
Greetings, Uebe
When I press undo_all and record a new loop, there's no fade in on the recorded loop. Seems to be because after undo_all fLoopFadeAtten is still 1.
I fixed it by insterting pLS->fLoopFadeAtten = 0.0f; in plugin.cc (Function: runSooperLooper) in case STATE_TRIG_START:
Code: Select all
// cause input-to-loop fade in
pLS->fLoopFadeAtten = 0.0f;
pLS->fLoopFadeDelta = 1.0f / xfadeSamples;
pLS->fPlayFadeDelta = -1.0f / xfadeSamples;Code: Select all
// increment
loop->dCurrPos = loop->dCurrPos + fRate;
// ASSUMPTION: our rate is +1 only
if ((unsigned long)loop->dCurrPos >= (loop->lLoopLength)) {Code: Select all
//else {
if (instance == -1) {
// all loops
for (size_t i=0; i < _engine->loop_count(); ++i) {
paramid = (i+1)*10000 + ctrl_id;
changedUnit.mParameterID = paramid;
AUParameterListenerNotify (NULL, NULL, &changedUnit);
}
changedUnit.mParameterID = 1000 + ctrl_id;
AUParameterListenerNotify (NULL, NULL, &changedUnit);
}
else {
// normal control
changedUnit.mParameterID = paramid;
AUParameterListenerNotify (NULL, NULL, &changedUnit);
if (selected) {
changedUnit.mParameterID = 1000 + ctrl_id;
AUParameterListenerNotify (NULL, NULL, &changedUnit);
}
}
//cerr << "notifying for param change on: " << ctrl_id << " inst: " << instance << endl;
//}Code: Select all
// emit a parameter changed for state and others
for (unsigned int n=0; n < _instances.size(); ++n) {
ParamChanged(Event::State, n); // emit
ParamChanged(Event::Waiting, n);
ParamChanged(Event::LoopPosition, n);
ParamChanged(Event::LoopLength, n);
ParamChanged(Event::CycleLength, n);
ParamChanged(Event::FreeTime, n);
}Thanks for your work!!!
Greetings, Uebe