[linux-audio-dev] XAP: Some thoughts on control ramping
David Olofson
david at olofson.net
Tue Jan 21 11:17:00 UTC 2003
On Tuesday 21 January 2003 10.18, Steve Harris wrote:
> On Tue, Jan 21, 2003 at 05:09:34 +0100, David Olofson wrote:
> > For example, setting the initial level of an envelope and then
> > setting up the delay or attack phase won't work, unless you wait
> > for one frame before sending the RAMP event for the delay or
> > attack phase. Similarly, an attack duration of 0 would result in
> > the decay starting at the current value, instead of the attack
> > peak level.
>
> Yes, you're right. Damn.
>
> OTOH If we define that RAMP events arring in the same timestamp for
> the same control override each other then it becomes the hosts job
> to normalise them (not a hard task).
It's not hard, but I didn't like the way it looked in Audiality's EG,
and I don't like the logical glitch that is a broken duration 0.
With only RAMP events and RAMP(value, 0) as a special case on the
receiver end, the EG code is nice and simple, and the receiver end
if() is trivial.
I could just test for 0 duration in the EG, but the only really
straightforward solution would be to delay for an extra frame, which
would effectively make a 0 duration stage take one frame too many ==>
timing error build-up. Then I would need to shorten the next section
by 1 - but what happens if the next section is 0 or 1 frames...?
I don't feel like I need that when I'm adding multiplication with
ramped input - and this is still pretty basic event processing! :-)
> Envelope sections with 0 duration are often not provided anyway.
They definitely generate nasty clicks, but setting the initial level
of an envelope higher than 0 generally doesn't, unless the waveform
starts with a click. Anyway, this isn't as much of an issue as the
special-casing needed in senders, I think.
//David Olofson - Programmer, Composer, Open Source Advocate
.- The Return of Audiality! --------------------------------.
| Free/Open Source Audio Engine for use in Games or Studio. |
| RT and off-line synth. Scripting. Sample accurate timing. |
`---------------------------> http://olofson.net/audiality -'
--- http://olofson.net --- http://www.reologica.se ---
More information about the Linux-audio-dev
mailing list