atTime


this is an argument for many methods.

it specifies when the bundle or event should occur


Nil :  immediately


Float : that many seconds from now

if time is greater than server latency,

it will be scheded in sclang and only sent close to the time


// start in 4.5 seconds

(

Patch({ arg tempo;

Impulse.ar( tempo )

},[

TempoPlayer.new

]).play(atTime: 4.5)

)


Integer : according to TempoClock on the next 

1 bar

2 half bar

4 beat

8 8th note

16 16th note

etc.


execute the following several times.  they will each start at the start of the next bar.

(

Patch({ arg tempo;

Impulse.ar( tempo )

},[

TempoPlayer.new

]).play(atTime: 1)

)


Date : at that time on that date if in the future

Date has to have raw seconds set to work !

use Date.localtime or Date.getDate to create a Date object with the raw seconds set.

and then make relative changes to that date.

ie. you can't make a Date.new(year,month ....) and expect that to work.

note:   a getRawSeconds primitive would solve this problem.


(

d = Date.getDate;

// 10 seconds in the future

d.rawSeconds = d.rawSeconds + 10;

Patch({ arg tempo;

Impulse.ar( tempo )

},[

TempoPlayer.new

]).play(atTime: d)

)