synchronized LFOs?


I have seen that other programs allow that the LFOs within an all voices
of an instrument have the same phase, and run independant of whether a
voice is played or silent. That means that if you create a filter sweep
with an sine LFO, then the phase of the filter sweep will be dependant
only on the position relative to the start of the dsp engine, not on the
position relative to the start of the note. In acoustic terms this means
that for instance the frequency wobble created by the LFO will be
synchronous between all notes played by one instrument.

Now I am wondering whether we should support this for BEAST, and if yes,
what will be the best way to implement it. Certainly one of the things
necessary for this is adding an LFO module which at least supports sine.

If a special property in this module is active (or should this be
default, and disabled by a special property), one could activate the
special logic to cause this phase behaviour. But then how to implement
it? Should it be using something like newly added

guint64 sample_count()

method in the module to compute its phase, which in turn would be
implemented based on gsl_tick_stamp and a tick stamp BEAST sets once you
hit the play button?

In fact, what I have been suggesting so far has been kind of a
"workaround": it would be sufficient (and also cheaper in terms of CPU
power) if the LFO of an instrument could be instantiated in a way that
it is not subject to polyphonic instantiation, like the rest of the
SNet is; however I can't judge if it is not the simpler/better route to
go for the workaround right now, as I am not sure what adding the
necessary infrastructure for supporting partial polyphonic instantiation
would mean in terms of implementation cost.

   Cu... Stefan
Stefan Westerfeld, Hamburg/Germany,

[Date Prev][Date Next]   [Thread Prev][Thread Next]   [Thread Index] [Date Index] [Author Index]