[chuck-users] Envelope.last()

Spencer Salazar ssalazar at CS.Princeton.EDU
Sat Jan 13 11:19:45 EST 2007


Hey Dan,
You're on the right track with that code.  Envelope needs a source to  
work on, though--if there isn't a ugen inputting samples to it, it  
just envelopes a zero signal.  The Step ugen works nicely for this,  
as you can feed it an arbitrary sample value, and it will  
continuously feed this value through a patch.

SinOsc s => dac;
220 => s.freq;

Step stp => Envelope e => blackhole;
// set step value
s.freq() => stp.next;
// set the current value of the envelope
1 => e.value;
// set the target value of envelope
2 => e.target;
// set time to reach target
10 => e.time;

// activate
e.keyOn();

while (20::ms => now){
	e.last()  => s.freq;
}

A functionally equivalent but potentially clearer way of writing this  
would be:

SinOsc s => dac;
220 => s.freq;

Step stp => Envelope e => blackhole;
// set step value
1 => stp.next;
// set the current value of the envelope
s.freq() => e.value;
// set the target value of envelope
s.freq() * 2 => e.target;
// set time to reach target
10 => e.time;

// activate
e.keyOn();

while (20::ms => now){
	e.last()  => s.freq;
}

spencer

On Jan 13, 2007, at 12:27 AM, dan trueman wrote:

> can Envelope work like SinOsc to control ugen parameters? meaning,  
> something like this, hacked from the lovely ChucK manual blackhole  
> example:
>
> SinOsc s => dac;
> Envelope e => blackhole;
> 10. => lfo.time;
> s.freq = 220.;
> e.target(440.);
>
> while (20::ms => now){
> 	e.last()  => s.freq;
> }
>
> ?
>
> it doesn't work, and it seems that e.last() doesn't actually give  
> you anything. obviously there are other ways to do this, but i'm  
> trying to *learn* here!
>
> takk,
> dan
> _______________________________________________
> chuck-users mailing list
> chuck-users at lists.cs.princeton.edu
> https://lists.cs.princeton.edu/mailman/listinfo/chuck-users



More information about the chuck-users mailing list