Hi, yap, the following is a possible solution:
Step step => ADSR adsr => SinOsc oscil => dac; step.next(500); adsr.set(5::ms, 150::ms, 1, 500::ms); while(true){ adsr.keyOn(); 400::ms => now; adsr.keyOff(); 1000::ms => now; } cheers, Mario 2017-11-01 16:17 GMT+00:00 Michael Heuer <heue...@gmail.com>: > Yes, I use the following pattern often > > 220.0 => float f; > SinOsc osc => dac; > ASDR adsr => blackhole; > > spork ~ updateAtSampleRate(); > > fun void updateAtSampleRate() { > while (true) { > f + adsr.last() * f => osc.freq; > 1::samp => now; > } > } > > There is also this pattern, which tries to encapsulate the above (whatever > you chuck into cv Gain(s) are provided as float parameter(s) to the tick > method) > > https://github.com/heuermh/lick/blob/master/lick/module/Module.ck > https://github.com/heuermh/lick/blob/master/examples/moduleExample.ck > > Cheers, > > michael > > > On Wed, Nov 1, 2017 at 11:05 AM, Jean Menezes da Rocha < > j...@menezesdarocha.info> wrote: > >> Hello, >> >> the ADSR UGen, to me, seems to have effect only over amplitude (which is >> its original function, I concede). >> However, is there any use case where I can use ADSR to map, say, pitch >> instead of amplitude, in order to avoid recurring to functions and for >> loops? >> >> Thanks in advance! >> -- >> Jean Menezes da Rocha >> Compositor >> Professor >> Doutorando em Música pela Universidade Federal da Bahia >> >> _______________________________________________ >> 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 > >
_______________________________________________ chuck-users mailing list chuck-users@lists.cs.princeton.edu https://lists.cs.princeton.edu/mailman/listinfo/chuck-users