thanks spencer. which of course leads to more questions...

by accident, i did this:

>>>>>>>>>>>
Step stp => Envelope e => SinOsc s => dac;
220 => s.freq;

// 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;

while (20::ms => now){
//nothing needed to do....
}
>>>>>>>>>>>

and it works! so i gather there is some default parameter that gets set in a ugen when you chuck to it?

i'm curious in part because i'd like to write classes which can do this, for example:

someRandomControlSignal => MySillyControlFilter_class mscfc => Envelope e => SinOsc s => dac;

etc....

is there a way to write classes which can be chucked to in this way? again, this can obviously be done other ways, but grasshopper is attempting to learn.

sorry if this is documented somewhere already!

dan


On Jan 13, 2007, at 11:19 AM, Spencer Salazar wrote:

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@lists.cs.princeton.edu
https://lists.cs.princeton.edu/mailman/listinfo/chuck-users

_______________________________________________
chuck-users mailing list
chuck-users@lists.cs.princeton.edu
https://lists.cs.princeton.edu/mailman/listinfo/chuck-users