Skip to content

times

Read absolute time, in seconds, since the start of the performance.

Syntax

ires = times()
kres = times()
ires times
kres times

Performance

Time in seconds is available with times. This would return 0.5 after half a second.

times can both produce a k-rate variable for output. There are no input parameters.

times can also operate at the start of the instance of the instrument. It produces an i-rate variable (starting with i or gi) as its output.

Examples

Here is an example of the times opcode. It uses the file times_complex.csd.

Example of the times opcode.
<CsoundSynthesizer> 
<CsOptions> 
; Select audio/midi flags here according to platform 
-odac     ;;;realtime audio out 
;-iadc    ;;;uncomment -iadc if realtime audio input is needed too 
; For Non-realtime ouput leave only the line below: 
; -o times_complex.wav -W ;;; for file output any platform 
</CsOptions> 
<CsInstruments> 
;by joachim heintz and rory walsh 
sr = 44100 
ksmps = 32 
nchnls = 2 
0dbfs = 1 

giWave   ftgen      0, 0, 1024, 10, 1, .5, .25 

instr again 

instance =          p4 
 ;reset the duration of this instance 
iDur     rnd31      5, 3                                ;shorter values are more probable 
iDur     =          abs(iDur) + 0.2 
p3       =          iDur 
 ;trigger the effect instrument of this instance 
         event_i    "i", "fx_processor", 0, iDur, instance 
 ;print the status quo 
kTime    times 
         prints     "instance = %d, start = %f, duration = %f\n", instance, i(kTime), iDur 
 ;make sound 
iamp     active     1                                   ;scale amplitudes 
iOct     random     5, 10                               ;find pitch 
aEnv     transeg    0, 0.02, 0, 1/iamp, p3-0.02, -6, 0  ;output envelope 
aSend    poscil     aEnv, cpsoct(iOct), giWave          ;audio signal 
 ;send signal to effect instrument 
Sbus     sprintf    "audio_%d", instance                ;create unique software bus 
         chnset     aSend/2, Sbus                       ;send audio on this bus 
 ;get the last k-cycle of this instance and trigger the successor in it 
kLast    release 
         schedkwhen kLast, 0, 0, "again", 0, 1, instance+1 
endin 

instr fx_processor 
 ;apply feedback delay to the above instrument 
iwhich    =         p4                                  ;receive instance number ... 
Sbus      sprintf   "audio_%d", iwhich                  ; ... and related software bus 
audio     chnget    Sbus                                ;receive audio on this bus 
irvbtim   random    1, 5                                ;find reverb time 
p3        =         p3+irvbtim                          ;adjust instrument duration 
iltptmL   random    .1, .5                              ;find looptime left ... 
iltptmR   random    .1, .5                              ;...and right 
ipan      random    0, 1                                ; pan and ... 
imix      random    0, 1                                ;... mix audio 
aL,aR     pan2      audio, ipan                         ;create stereo 
awetL     comb      aL, irvbtim, iltptmL                ;comb filter 
awetR     comb      aR, irvbtim, iltptmR 
aoutL     ntrpol    aL, awetL, imix                     ;wet-dry mix 
aoutR     ntrpol    aR, awetR, imix 
          outs      aoutL/2, aoutR/2 
endin 

</CsInstruments> 
<CsScore> 
i "again" 0 1 1 

e 3600 
</CsScore> 
</CsoundSynthesizer>

Its output should include lines like these:

new alloc for instr again:
instance = 1, start = 0.000000, duration = 0.650439
new alloc for instr fx_processor:
instance = 2, start = 0.650884, duration = 0.411043
new alloc for instr fx_processor:
instance = 3, start = 1.061587, duration = 0.231085
new alloc for instr fx_processor:
instance = 4, start = 1.292336, duration = 0.543473
new alloc for instr fx_processor:
instance = 5, start = 1.835828, duration = 1.777097

See also

Time Reading

Credits

Author: Robin Whittle
Australia
May 1997