[chuck-users] Envelope.rate() READ
Kassen
signal.automatique at gmail.com
Thu Jun 19 08:39:39 EDT 2008
2008/6/19 kevin <vacillates at gmail.com>:
> I suppose I'll chime in my support for this functionality, as it makes
> sense, though it does seem like it'd be harder to implement.
>
> Not by much, I think. This is the "essence" of Envelope, it comes from
Ugen_stk.cpp, starts at line 6972;
=============================-
MY_FLOAT Envelope :: tick(void)
{
if (state) {
if (target > value) {
value += rate;
if (value >= target) {
value = target;
state = 0;
}
}
else {
value -= rate;
if (value <= target) {
value = target;
state = 0;
}
}
}
return value;
}
============
So; that has clauses for having reached the end already anyway, so what we
simply could do would be;
=================
MY_FLOAT Envelope :: tick(void)
{
if (state) {
if (target > value) {
value += rate;
if (value >= target) {
value = target;
state = 0;
rate = 0;
}
}
else {
value -= rate;
if (value <= target) {
value = target;
state = 0; //not sure we actually need this line?
rate = 0;
}
}
}
return value;
}
=============
I think that would fly.
I am, BTW, not sure why there are separate "rate" and "state" variables...
and I can't seem to find the getRate() one. Also; in ChucK .rate() will
always be a non-negative value. Maybe it would be best to have .rate() (in
ChucK) report a rate with the appropriate sign as we don't have access to
.state() from ChucK.... of course in that case we could also add a little
check and if rate == 0 immediately proceed to returning value, in the
interest of saving CPU.
Yours,
Kas.
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://lists.cs.princeton.edu/pipermail/chuck-users/attachments/20080619/5caf784f/attachment.htm>
More information about the chuck-users
mailing list