Create a pause of e.g. 2 seconds between notes or samples to be played

Hi, I've only recentely started studiing ChucK and i'm looking for an easy way to integrate a pause between notes to be played in a "while()" loop. Could someone tell me in what direction to look for a solution? thanks in advance! Herman

Hello Herman, ChucK supports advancing time by chucking a duration to now, e.g. note.play(); 2::second => now; note.play(); LiCK (a Library for ChucK) https://github.com/heuermh/lick has a TimeSignature class, which provides static durations TimeSignature.common(120) @=> TimeSignature ts; note.play(); ts.q => now; note.play(); and those that are dynamic to tempo changes, with anticipation and delay humanization TimeSignature.common(120) @=> TimeSignature ts; ts.quarterProvider() @=> QuarterProvider q; 0.1 => q.anticipation; 0.0 => q.delay; while (true) { note.play(); q.get() => now; ts.tempo() - 1 => ts.tempo; } Cheers! michael
On Feb 5, 2020, at 9:24 AM, herman verbaeten
wrote: Hi,
I've only recentely started studiing ChucK and i'm looking for an easy way to integrate a pause between notes to be played in a "while()" loop. Could someone tell me in what direction to look for a solution? thanks in advance!
Herman _______________________________________________ chuck-users mailing list chuck-users@lists.cs.princeton.edu mailto:chuck-users@lists.cs.princeton.edu https://lists.cs.princeton.edu/mailman/listinfo/chuck-users https://lists.cs.princeton.edu/mailman/listinfo/chuck-users

Hello Michael,
Thanks a lot for your help. I don't know if i can reply to you with other questions or if i should use "chuck-users@lists.cs.princeton.edu".
In the meantime i found a solution for my "pause" problem in the use of ADSR. But i still have some general questions and some about the program that follows:
1. Where can i find a chuck editor with the possibility to find words and replace them (all) and that also gives the colors for reserved words etc.
2. Is there a way to debug line per line to discover logical errors?
3. i discovered by accident that sometimes i can use "p.puf" but on other occasions i have to write "p.buf()" why is this?
4. in the program hereby, is there a way to have the pan do it's job independantely from the note-envelope-flow? to go faster or slower?
5. When i run this program it does what i want but i can't figure out why it says 2 times "p.pan = 1.000000" and 2 times "p.pan= -1.000000" (see below)
Please let me know if i have to address all my questions to the general email address. thanks a lot !!
Herman
// sound file
me.sourceDir() + "wavefile.wav" => string filename;
if( me.args() ) me.arg(0) => filename;
<<

On Feb 6, 2020, at 10:41 AM, herman verbaeten
Hello Michael,
Thanks a lot for your help. I don't know if i can reply to you with other questions or if i should use "chuck-users@lists.cs.princeton.edu mailto:chuck-users@lists.cs.princeton.edu".
The ChucK mailing list is probably best.
In the meantime i found a solution for my "pause" problem in the use of ADSR. But i still have some general questions and some about the program that follows:
Where can i find a chuck editor with the possibility to find words and replace them (all) and that also gives the colors for reserved words etc. Have you seen the miniAudicle? That is the official IDE for ChucK
http://audicle.cs.princeton.edu/mini/ http://audicle.cs.princeton.edu/mini/ I personally use a mode for Emacs to provide syntax highlighting https://github.com/heuermh/chuck-mode https://github.com/heuermh/chuck-mode There is support for other editors out there; I seem to remember a wiki with links to such somewhere but I can't find it.
Is there a way to debug line per line to discover logical errors? Not that I know of. My bit of advice is to not run a ChucK script with headphones on without trying it on speakers first. I learned that the hard way from a mis-configured filter.
i discovered by accident that sometimes i can use "p.puf" but on other occasions i have to write "p.buf()" why is this? In general, to read from a function/value, use the version with params
p.buf() => float f; To set a value, use the chuck operator into the version without params 1.0 => p.buf; This is equivalent to making a single-argument function call (but the former is more ChucK-y) p.buf(1.0);
in the program hereby, is there a way to have the pan do it's job independantely from the note-envelope-flow? to go faster or slower? Yes, you can use an oscillator as an LFO modulator
SinOsc lfo => blackhole; 0.5 => lfo.freq; //… while (true) { // ... lfo.next() => pan.pan; If you want to update the pan at sample rate or at a rate independent from your main while loop, create a new shred spork ~ _updateAtSampleRate(); fun void _updateAtSampleRate() { while (true) { 1::samp => now; lfo.next() => pan.pan; } } Hope this helps!
When i run this program it does what i want but i can't figure out why it says 2 times "p.pan = 1.000000" and 2 times "p.pan= -1.000000" (see below) Please let me know if i have to address all my questions to the general email address. thanks a lot !!
Herman
// sound file me.sourceDir() + "wavefile.wav" => string filename; if( me.args() ) me.arg(0) => filename; <<
>>; // the patch SndBuf buf => ADSR e => Pan2 p => dac;
// set attack time, decay time, release time and pause time dur attack; dur decay ; dur release; dur pauze; 12::ms => attack ; 90::ms => decay ; 100::ms => release ; 5::ms => pauze ;
// load file in buf filename => buf.read;
// set gain .5 => buf.gain;
// set a, d, s and r e.set( attack, decay, 0.001, release );
// switch is needed to stay in the "else" step untill p.pan = -1 0 => int switch;
// begin pan extreme left -1 => p.pan;
// time loop while( true ) { Math.random2(0,900000) => buf.pos; Math.random2f(1.0,1.2) => buf.rate; if( p.pan() < 1.0 && switch == 0) { p.pan() + .10 => p.pan; <<<"if p.pan = ",p.pan()>>>; } else { p.pan() - .10 => p.pan; <<<"else p.pan = ", p.pan()>>>; 1 => switch; if (p.pan() == -1) { 0 => switch; } } // key on - start attack e.keyOn(); attack + decay => dur ontime; ontime => now;
// key off - start release e.keyOff();
// advance time by releasetime + pausetime release + pauze => now; } ---------------------------------------------------------console result print---------------------------------------------------- if p.pan = -0.900000 if p.pan = -0.800000 if p.pan = -0.700000 if p.pan = -0.600000 if p.pan = -0.500000 if p.pan = -0.400000 if p.pan = -0.300000 if p.pan = -0.200000 if p.pan = -0.100000 if p.pan = -0.000000 if p.pan = 0.100000 if p.pan = 0.200000 if p.pan = 0.300000 if p.pan = 0.400000 if p.pan = 0.500000 if p.pan = 0.600000 if p.pan = 0.700000 if p.pan = 0.800000 if p.pan = 0.900000 if p.pan = 1.000000 if p.pan = 1.000000 else p.pan = 0.900000 else p.pan = 0.800000 else p.pan = 0.700000 else p.pan = 0.600000 else p.pan = 0.500000 else p.pan = 0.400000 else p.pan = 0.300000 else p.pan = 0.200000 else p.pan = 0.100000 else p.pan = 0.000000 else p.pan = -0.100000 else p.pan = -0.200000 else p.pan = -0.300000 else p.pan = -0.400000 else p.pan = -0.500000 else p.pan = -0.600000 else p.pan = -0.700000 else p.pan = -0.800000 else p.pan = -0.900000 else p.pan = -1.000000 else p.pan = -1.000000 if p.pan = -0.900000 if p.pan = -0.800000 if p.pan = -0.700000 if p.pan = -0.600000 if p.pan = -0.500000 if p.pan = -0.400000
Van: chuck-users-bounces@lists.cs.princeton.edu
namens Michael Heuer Verzonden: woensdag 5 februari 2020 15:42 Aan: ChucK Users Mailing List Onderwerp: Re: [chuck-users] Create a pause of e.g. 2 seconds between notes or samples to be played Hello Herman,
ChucK supports advancing time by chucking a duration to now, e.g.
note.play(); 2::second => now; note.play();
LiCK (a Library for ChucK) https://github.com/heuermh/lick has a TimeSignature class, which provides static durations
TimeSignature.common(120) @=> TimeSignature ts;
note.play(); ts.q => now; note.play();
and those that are dynamic to tempo changes, with anticipation and delay humanization
TimeSignature.common(120) @=> TimeSignature ts; ts.quarterProvider() @=> QuarterProvider q; 0.1 => q.anticipation; 0.0 => q.delay;
while (true) { note.play(); q.get() => now; ts.tempo() - 1 => ts.tempo; }
Cheers!
michael
On Feb 5, 2020, at 9:24 AM, herman verbaeten
mailto:hverb54@hotmail.com> wrote: Hi,
I've only recentely started studiing ChucK and i'm looking for an easy way to integrate a pause between notes to be played in a "while()" loop. Could someone tell me in what direction to look for a solution? thanks in advance!
Herman _______________________________________________ chuck-users mailing list chuck-users@lists.cs.princeton.edu mailto:chuck-users@lists.cs.princeton.edu https://lists.cs.princeton.edu/mailman/listinfo/chuck-users https://lists.cs.princeton.edu/mailman/listinfo/chuck-users
chuck-users mailing list chuck-users@lists.cs.princeton.edu mailto:chuck-users@lists.cs.princeton.edu https://lists.cs.princeton.edu/mailman/listinfo/chuck-users https://lists.cs.princeton.edu/mailman/listinfo/chuck-users

Hi Michael,
Sorry for all the trouble but when i do as you told me :
SinOsc lfo => blackhole;
0.5 => lfo.freq;
//…
while (true)
{
// ...
lfo.next() => pan.pan;
.....
Console tells me sinOsc doesn't have a member .next()
Kind regards,
Herman
________________________________
Van: chuck-users-bounces@lists.cs.princeton.edu

Sorry, guess my email client needs a ChucK interpreter. ;) lfo.next() should be lfo.last()
On Feb 7, 2020, at 1:26 PM, herman verbaeten
wrote: Hi Michael,
Sorry for all the trouble but when i do as you told me :
SinOsc lfo => blackhole; 0.5 => lfo.freq; //… while (true) { // ... lfo.next() => pan.pan; .....
Console tells me sinOsc doesn't have a member .next()
Kind regards, Herman
Van: chuck-users-bounces@lists.cs.princeton.edu
namens Michael Heuer Verzonden: donderdag 6 februari 2020 17:02 Aan: ChucK Users Mailing List Onderwerp: Re: [chuck-users] Create a pause and gradualy shift pan from left to right and back On Feb 6, 2020, at 10:41 AM, herman verbaeten
mailto:hverb54@hotmail.com> wrote: Hello Michael,
Thanks a lot for your help. I don't know if i can reply to you with other questions or if i should use "chuck-users@lists.cs.princeton.edu mailto:chuck-users@lists.cs.princeton.edu".
The ChucK mailing list is probably best.
In the meantime i found a solution for my "pause" problem in the use of ADSR. But i still have some general questions and some about the program that follows:
Where can i find a chuck editor with the possibility to find words and replace them (all) and that also gives the colors for reserved words etc. Have you seen the miniAudicle? That is the official IDE for ChucK
http://audicle.cs.princeton.edu/mini/ http://audicle.cs.princeton.edu/mini/
I personally use a mode for Emacs to provide syntax highlighting
https://github.com/heuermh/chuck-mode https://github.com/heuermh/chuck-mode
There is support for other editors out there; I seem to remember a wiki with links to such somewhere but I can't find it.
Is there a way to debug line per line to discover logical errors? Not that I know of. My bit of advice is to not run a ChucK script with headphones on without trying it on speakers first. I learned that the hard way from a mis-configured filter.
i discovered by accident that sometimes i can use "p.puf" but on other occasions i have to write "p.buf()" why is this? In general, to read from a function/value, use the version with params
p.buf() => float f;
To set a value, use the chuck operator into the version without params
1.0 => p.buf;
This is equivalent to making a single-argument function call (but the former is more ChucK-y)
p.buf(1.0);
in the program hereby, is there a way to have the pan do it's job independantely from the note-envelope-flow? to go faster or slower? Yes, you can use an oscillator as an LFO modulator
SinOsc lfo => blackhole; 0.5 => lfo.freq;
//… while (true) { // ... lfo.next() => pan.pan;
If you want to update the pan at sample rate or at a rate independent from your main while loop, create a new shred
spork ~ _updateAtSampleRate();
fun void _updateAtSampleRate() { while (true) { 1::samp => now; lfo.next() => pan.pan; } }
Hope this helps!
When i run this program it does what i want but i can't figure out why it says 2 times "p.pan = 1.000000" and 2 times "p.pan= -1.000000" (see below) Please let me know if i have to address all my questions to the general email address. thanks a lot !!
Herman
// sound file me.sourceDir() + "wavefile.wav" => string filename; if( me.args() ) me.arg(0) => filename; <<
>>; // the patch SndBuf buf => ADSR e => Pan2 p => dac;
// set attack time, decay time, release time and pause time dur attack; dur decay ; dur release; dur pauze; 12::ms => attack ; 90::ms => decay ; 100::ms => release ; 5::ms => pauze ;
// load file in buf filename => buf.read;
// set gain .5 => buf.gain;
// set a, d, s and r e.set( attack, decay, 0.001, release );
// switch is needed to stay in the "else" step untill p.pan = -1 0 => int switch;
// begin pan extreme left -1 => p.pan;
// time loop while( true ) { Math.random2(0,900000) => buf.pos; Math.random2f(1.0,1.2) => buf.rate; if( p.pan() < 1.0 && switch == 0) { p.pan() + .10 => p.pan; <<<"if p.pan = ",p.pan()>>>; } else { p.pan() - .10 => p.pan; <<<"else p.pan = ", p.pan()>>>; 1 => switch; if (p.pan() == -1) { 0 => switch; } } // key on - start attack e.keyOn(); attack + decay => dur ontime; ontime => now;
// key off - start release e.keyOff();
// advance time by releasetime + pausetime release + pauze => now; } ---------------------------------------------------------console result print---------------------------------------------------- if p.pan = -0.900000 if p.pan = -0.800000 if p.pan = -0.700000 if p.pan = -0.600000 if p.pan = -0.500000 if p.pan = -0.400000 if p.pan = -0.300000 if p.pan = -0.200000 if p.pan = -0.100000 if p.pan = -0.000000 if p.pan = 0.100000 if p.pan = 0.200000 if p.pan = 0.300000 if p.pan = 0.400000 if p.pan = 0.500000 if p.pan = 0.600000 if p.pan = 0.700000 if p.pan = 0.800000 if p.pan = 0.900000 if p.pan = 1.000000 if p.pan = 1.000000 else p.pan = 0.900000 else p.pan = 0.800000 else p.pan = 0.700000 else p.pan = 0.600000 else p.pan = 0.500000 else p.pan = 0.400000 else p.pan = 0.300000 else p.pan = 0.200000 else p.pan = 0.100000 else p.pan = 0.000000 else p.pan = -0.100000 else p.pan = -0.200000 else p.pan = -0.300000 else p.pan = -0.400000 else p.pan = -0.500000 else p.pan = -0.600000 else p.pan = -0.700000 else p.pan = -0.800000 else p.pan = -0.900000 else p.pan = -1.000000 else p.pan = -1.000000 if p.pan = -0.900000 if p.pan = -0.800000 if p.pan = -0.700000 if p.pan = -0.600000 if p.pan = -0.500000 if p.pan = -0.400000
Van: chuck-users-bounces@lists.cs.princeton.edu mailto:chuck-users-bounces@lists.cs.princeton.edu
mailto:chuck-users-bounces@lists.cs.princeton.edu> namens Michael Heuer mailto:heuermh@gmail.com> Verzonden: woensdag 5 februari 2020 15:42 Aan: ChucK Users Mailing List mailto:chuck-users@lists.cs.princeton.edu> Onderwerp: Re: [chuck-users] Create a pause of e.g. 2 seconds between notes or samples to be played Hello Herman,
ChucK supports advancing time by chucking a duration to now, e.g.
note.play(); 2::second => now; note.play();
LiCK (a Library for ChucK) https://github.com/heuermh/lick has a TimeSignature class, which provides static durations
TimeSignature.common(120) @=> TimeSignature ts;
note.play(); ts.q => now; note.play();
and those that are dynamic to tempo changes, with anticipation and delay humanization
TimeSignature.common(120) @=> TimeSignature ts; ts.quarterProvider() @=> QuarterProvider q; 0.1 => q.anticipation; 0.0 => q.delay;
while (true) { note.play(); q.get() => now; ts.tempo() - 1 => ts.tempo; }
Cheers!
michael
On Feb 5, 2020, at 9:24 AM, herman verbaeten
mailto:hverb54@hotmail.com> wrote: Hi,
I've only recentely started studiing ChucK and i'm looking for an easy way to integrate a pause between notes to be played in a "while()" loop. Could someone tell me in what direction to look for a solution? thanks in advance!
Herman _______________________________________________ chuck-users mailing list chuck-users@lists.cs.princeton.edu mailto:chuck-users@lists.cs.princeton.edu https://lists.cs.princeton.edu/mailman/listinfo/chuck-users https://lists.cs.princeton.edu/mailman/listinfo/chuck-users
chuck-users mailing list chuck-users@lists.cs.princeton.edu mailto:chuck-users@lists.cs.princeton.edu https://lists.cs.princeton.edu/mailman/listinfo/chuck-users https://lists.cs.princeton.edu/mailman/listinfo/chuck-users
chuck-users mailing list chuck-users@lists.cs.princeton.edu mailto:chuck-users@lists.cs.princeton.edu https://lists.cs.princeton.edu/mailman/listinfo/chuck-users https://lists.cs.princeton.edu/mailman/listinfo/chuck-users

Thanks again Michael but this brings along a lot of other questions:
- the difference between blackhole and dac. Can you use them together?
- SinOsc doesn't have ".last()" as a member eighter. Where can i find ".next()", ".last()" ... etc... and their use.
- If i refer to ".last()" in case of a sinewave does it give the last freq, sfreq, phase or sync member.
Kind regards,
Herman
________________________________
Van: chuck-users-bounces@lists.cs.princeton.edu

ChucK's home page https://chuck.cs.princeton.edu links to the unit
generators reference https://chuck.cs.princeton.edu/doc/program/ugen.html,
which links to the unit generators section of the language reference
https://chuck.cs.princeton.edu/doc/language/ugen.html, which has:
"*last()* (of type float): get the last sample computed by the UGen. if
UGen has more than one channel, the average of all components channels are
returned."
You might use it like this:
SinOsc s => dac;
<<< s.last() >>>;
second => now;
<<< s.last() >>>;
Or, if you want it to oscillate but not be audible:
SinOsc s => blackhole;
<<< s.last() >>>;
second => now;
<<< s.last() >>>;
You can chuck it to dac and blackhole in the same program, but it would be
the same as just chucking it to dac.
On Sat, Feb 8, 2020 at 8:40 AM herman verbaeten
Thanks again Michael but this brings along a lot of other questions: - the difference between blackhole and dac. Can you use them together? - SinOsc doesn't have ".last()" as a member eighter. Where can i find ".next()", ".last()" ... etc... and their use. - If i refer to ".last()" in case of a sinewave does it give the last freq, sfreq, phase or sync member.
Kind regards, Herman
------------------------------ *Van:* chuck-users-bounces@lists.cs.princeton.edu < chuck-users-bounces@lists.cs.princeton.edu> namens Michael Heuer < heuermh@gmail.com> *Verzonden:* vrijdag 7 februari 2020 19:52 *Aan:* ChucK Users Mailing List
*Onderwerp:* Re: [chuck-users] Create a pause and gradualy shift pan from left to right and back Sorry, guess my email client needs a ChucK interpreter. ;)
lfo.next() should be lfo.last()
On Feb 7, 2020, at 1:26 PM, herman verbaeten
wrote: Hi Michael,
Sorry for all the trouble but when i do as you told me :
SinOsc lfo => blackhole; 0.5 => lfo.freq; //… while (true) { // ... lfo.next() => pan.pan; .....
Console tells me sinOsc doesn't have a member .next()
Kind regards, Herman
------------------------------ *Van:* chuck-users-bounces@lists.cs.princeton.edu < chuck-users-bounces@lists.cs.princeton.edu> namens Michael Heuer < heuermh@gmail.com> *Verzonden:* donderdag 6 februari 2020 17:02 *Aan:* ChucK Users Mailing List
*Onderwerp:* Re: [chuck-users] Create a pause and gradualy shift pan from left to right and back On Feb 6, 2020, at 10:41 AM, herman verbaeten
wrote: Hello Michael,
Thanks a lot for your help. I don't know if i can reply to you with other questions or if i should use "chuck-users@lists.cs.princeton.edu".
The ChucK mailing list is probably best.
In the meantime i found a solution for my "pause" problem in the use of ADSR. But i still have some general questions and some about the program that follows:
1. Where can i find a chuck editor with the possibility to find words and replace them (all) and that also gives the colors for reserved words etc.
Have you seen the miniAudicle? That is the official IDE for ChucK
http://audicle.cs.princeton.edu/mini/
I personally use a mode for Emacs to provide syntax highlighting
https://github.com/heuermh/chuck-mode
There is support for other editors out there; I seem to remember a wiki with links to such somewhere but I can't find it.
1. Is there a way to debug line per line to discover logical errors?
Not that I know of. My bit of advice is to not run a ChucK script with headphones on without trying it on speakers first. I learned that the hard way from a mis-configured filter.
1. i discovered by accident that sometimes i can use "p.puf" but on other occasions i have to write "p.buf()" why is this?
In general, to read from a function/value, use the version with params
p.buf() => float f;
To set a value, use the chuck operator into the version without params
1.0 => p.buf;
This is equivalent to making a single-argument function call (but the former is more ChucK-y)
p.buf(1.0);
1. in the program hereby, is there a way to have the pan do it's job independantely from the note-envelope-flow? to go faster or slower?
Yes, you can use an oscillator as an LFO modulator
SinOsc lfo => blackhole; 0.5 => lfo.freq;
//… while (true) { // ... lfo.next() => pan.pan;
If you want to update the pan at sample rate or at a rate independent from your main while loop, create a new shred
spork ~ _updateAtSampleRate();
fun void _updateAtSampleRate() { while (true) { 1::samp => now; lfo.next() => pan.pan; } }
Hope this helps!
1. When i run this program it does what i want but i can't figure out why it says 2 times "p.pan = 1.000000" and 2 times "p.pan= -1.000000" (see below)
Please let me know if i have to address all my questions to the general email address. thanks a lot !!
Herman
// sound file me.sourceDir() + "wavefile.wav" => string filename; if( me.args() ) me.arg(0) => filename; <<
>>; // the patch SndBuf buf => ADSR e => Pan2 p => dac;
// set attack time, decay time, release time and pause time dur attack; dur decay ; dur release; dur pauze; 12::ms => attack ; 90::ms => decay ; 100::ms => release ; 5::ms => pauze ;
// load file in buf filename => buf.read;
// set gain .5 => buf.gain;
// set a, d, s and r e.set( attack, decay, 0.001, release );
// switch is needed to stay in the "else" step untill p.pan = -1 0 => int switch;
// begin pan extreme left -1 => p.pan;
// time loop while( true ) { Math.random2(0,900000) => buf.pos; Math.random2f(1.0,1.2) => buf.rate; if( p.pan() < 1.0 && switch == 0) { p.pan() + .10 => p.pan; <<<"if p.pan = ",p.pan()>>>; } else { p.pan() - .10 => p.pan; <<<"else p.pan = ", p.pan()>>>; 1 => switch; if (p.pan() == -1) { 0 => switch; } } // key on - start attack e.keyOn(); attack + decay => dur ontime; ontime => now;
// key off - start release e.keyOff();
// advance time by releasetime + pausetime release + pauze => now; } ---------------------------------------------------------console result print---------------------------------------------------- if p.pan = -0.900000
if p.pan = -0.800000 if p.pan = -0.700000 if p.pan = -0.600000 if p.pan = -0.500000 if p.pan = -0.400000 if p.pan = -0.300000 if p.pan = -0.200000 if p.pan = -0.100000 if p.pan = -0.000000 if p.pan = 0.100000 if p.pan = 0.200000 if p.pan = 0.300000 if p.pan = 0.400000 if p.pan = 0.500000 if p.pan = 0.600000 if p.pan = 0.700000 if p.pan = 0.800000 if p.pan = 0.900000 if p.pan = 1.000000 if p.pan = 1.000000 else p.pan = 0.900000 else p.pan = 0.800000 else p.pan = 0.700000 else p.pan = 0.600000 else p.pan = 0.500000 else p.pan = 0.400000 else p.pan = 0.300000 else p.pan = 0.200000 else p.pan = 0.100000 else p.pan = 0.000000 else p.pan = -0.100000 else p.pan = -0.200000 else p.pan = -0.300000 else p.pan = -0.400000 else p.pan = -0.500000 else p.pan = -0.600000 else p.pan = -0.700000 else p.pan = -0.800000 else p.pan = -0.900000 else p.pan = -1.000000 else p.pan = -1.000000 if p.pan = -0.900000
if p.pan = -0.800000 if p.pan = -0.700000 if p.pan = -0.600000 if p.pan = -0.500000 if p.pan = -0.400000
------------------------------ *Van:* chuck-users-bounces@lists.cs.princeton.edu < chuck-users-bounces@lists.cs.princeton.edu> namens Michael Heuer < heuermh@gmail.com> *Verzonden:* woensdag 5 februari 2020 15:42 *Aan:* ChucK Users Mailing List
*Onderwerp:* Re: [chuck-users] Create a pause of e.g. 2 seconds between notes or samples to be played Hello Herman,
ChucK supports advancing time by chucking a duration to now, e.g.
note.play(); 2::second => now; note.play();
LiCK (a Library for ChucK) https://github.com/heuermh/lick has a TimeSignature class, which provides static durations
TimeSignature.common(120) @=> TimeSignature ts;
note.play(); ts.q => now; note.play();
and those that are dynamic to tempo changes, with anticipation and delay humanization
TimeSignature.common(120) @=> TimeSignature ts; ts.quarterProvider() @=> QuarterProvider q; 0.1 => q.anticipation; 0.0 => q.delay;
while (true) { note.play(); q.get() => now; ts.tempo() - 1 => ts.tempo; }
Cheers!
michael
On Feb 5, 2020, at 9:24 AM, herman verbaeten
wrote: Hi,
I've only recentely started studiing ChucK and i'm looking for an easy way to integrate a pause between notes to be played in a "while()" loop. Could someone tell me in what direction to look for a solution? thanks in advance!
Herman _______________________________________________ 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
_______________________________________________ chuck-users mailing list chuck-users@lists.cs.princeton.edu https://lists.cs.princeton.edu/mailman/listinfo/chuck-users

I didn't realize there were other Michael's LOL, to answer just the editor question: Visual Studio has a ChucK extension. That paired with the "revert save" option under the file tab works pretty well!
Best regards,
Michael Pierluissi
________________________________
From: chuck-users-bounces@lists.cs.princeton.edu
participants (4)
-
herman verbaeten
-
Michael Heuer
-
Michael Pierluissi
-
Tom Lieber