active — Returns the number of active instances of an instrument.
Returns the number of active instances of an instrument with options to ignore releasing instances.
ir active insnum [,iopt [,inorel]]
ir active Sinsname [,iopt [,inorel]]
kres active kinsnum [,iopt [,inorel]]
insnum -- number or string name of the instrument to be reported
Sinsname -- instrument name
iopt -- select currently active (zero, default), or all every active (non zero)
inorel -- if non-zero ignore instruments in release phase (zero, default), only valid if iopts is zero.
kinsnum -- number or string name of the instrument to be reported
active returns the number of active instances of instrument number insnum/kinsnum (or named instrument Sinsname). As of Csound 4.17 the output is updated at k-rate (if input arg is k-rate), to allow running count of instr instances.
As of Csound 5.17 if the instrument number is given as zero then all instruments are counted.
Here is a simple example of the active opcode. It uses the file active.csd.
Example 40. Simple example of the active opcode.
See the sections Real-time Audio and Command Line Flags for more information on using command line flags.
<CsoundSynthesizer> <CsOptions> ; Select audio/midi flags here according to platform ; Audio out Audio in -odac -iadc ;;;RT audio I/O ; For Non-realtime ouput leave only the line below: ; -o active.wav -W ;;; for file output any platform </CsOptions> <CsInstruments> ; Initialize the global variables. sr = 44100 kr = 4410 ksmps = 10 nchnls = 1 ; Instrument #1 - a noisy waveform. instr 1 ; Generate a really noisy waveform. anoisy rand 44100 ; Turn down its amplitude. aoutput gain anoisy, 2500 ; Send it to the output. out aoutput endin ; Instrument #2 - counts active instruments. instr 2 ; Count the active instances of Instrument #1. icount active 1 ; Print the number of active instances. print icount endin </CsInstruments> <CsScore> ; Start the first instance of Instrument #1 at 0:00 seconds. i 1 0.0 3.0 ; Start the second instance of Instrument #1 at 0:015 seconds. i 1 1.5 1.5 ; Play Instrument #2 at 0:01 seconds, when we have only ; one active instance of Instrument #1. i 2 1.0 0.1 ; Play Instrument #2 at 0:02 seconds, when we have ; two active instances of Instrument #1. i 2 2.0 0.1 e </CsScore> </CsoundSynthesizer>
Its output should include lines like this:
instr 2: icount = 1.000 instr 2: icount = 2.000
Here is a more advanced example of the active opcode. It displays the results of the active opcode at k-rate instead of i-rate. It uses the file active_k.csd.
Example 41. Example of the active opcode at k-rate.
<CsoundSynthesizer> <CsOptions> ; Select audio/midi flags here according to platform ; Audio out Audio in -odac -iadc ;;;RT audio I/O ; For Non-realtime ouput leave only the line below: ; -o active_k.wav -W ;;; for file output any platform </CsOptions> <CsInstruments> ; Initialize the global variables. sr = 44100 kr = 4410 ksmps = 10 nchnls = 1 ; Instrument #1 - a noisy waveform. instr 1 ; Generate a really noisy waveform. anoisy rand 44100 ; Turn down its amplitude. aoutput gain anoisy, 2500 ; Send it to the output. out aoutput endin ; Instrument #2 - counts active instruments at k-rate. instr 2 ; Count the active instances of Instrument #1. kcount active 1 ; Print the number of active instances. printk2 kcount endin </CsInstruments> <CsScore> ; Start the first instance of Instrument #1 at 0:00 seconds. i 1 0.0 3.0 ; Start the second instance of Instrument #1 at 0:015 seconds. i 1 1.5 1.5 ; Play Instrument #2 at 0:01 seconds, when we have only ; one active instance of Instrument #1. i 2 1.0 0.1 ; Play Instrument #2 at 0:02 seconds, when we have ; two active instances of Instrument #1. i 2 2.0 0.1 e </CsScore> </CsoundSynthesizer>
Its output should include lines like:
i2 1.00000 i2 2.00000
Here is another example of the active opcode, using the number of instances to calculate gain. It uses the file active_scale.csd.
Example 42. Example of the active opcode at k-rate.
<CsoundSynthesizer> <CsOptions> ; Select audio/midi flags here according to platform ; Audio out Audio in No messages -odac -d ;;;RT audio I/O ; For Non-realtime ouput leave only the line below: ; -o atone.wav -W ;;; for file output any platform </CsOptions> <CsInstruments> sr= 44100 ksmps = 64 nchnls = 1 0dbfs = 1 ;by Victor Lazzarini 2008 instr 1 kscal active 1 kamp port 1/kscal, 0.01 asig oscili kamp, p4, 1 kenv linseg 0, 0.1,1,p3-0.2,1,0.1, 0 out asig*kenv endin </CsInstruments> <CsScore> f1 0 16384 10 1 i1 0 10 440 i1 1 3 220 i1 2 5 350 i1 4 3 700 e </CsScore> </CsoundSynthesizer>