turnoff2
Turn off instance(s) of other instruments at performance time.
Syntax
turnoff2 kinsno, kmode, krelease
turnoff2_i insno, imode, irelease
Initialization
insno
-- instrument to be turned off (can be fractional) if zero or negative, no instrument is turned off
imode -- sum of the following values:
- 0, 1, or 2: turn off all instances (0), oldest only (1), or newest only (2)
- 4: only turn off notes with exactly matching (fractional) instrument number, rather than ignoring fractional part
- 8: only turn off notes with indefinite duration (p3 < 0 or MIDI)
irelease -- if non-zero, the turned off instances are allowed to release, otherwise are deactivated immediately (possibly resulting in clicks)
kinsno
-- instrument to be turned off (can be fractional) if zero or negative, no instrument is turned off
kmode -- sum of the following values:
- 0, 1, or 2: turn off all instances (0), oldest only (1), or newest only (2)
- 4: only turn off notes with exactly matching (fractional) instrument number, rather than ignoring fractional part
- 8: only turn off notes with indefinite duration (p3 < 0 or MIDI)
krelease -- if non-zero, the turned off instances are allowed to release, otherwise are deactivated immediately (possibly resulting in clicks)
Note
As a rule of thumb, you should turn off instruments with a higher instrument number than the one where turnoff is called, as doing otherwise might cause initialization issues.
Examples
Here is an example of the turnoff2 opcode. It uses the file turnoff2.csd.
Example of the turnoff2 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 turnoff2.wav -W ;;; for file output any platform
</CsOptions>
<CsInstruments>
sr = 44100 ;samples per second for sound
ksmps = 32
nchnls = 2
0dbfs = 1
; example by Lou Cohen
gisine ftgen 1, 0, 131073, 9, 1, 1, 0 ;single sine tone
;-----------------------------------------
instr 2 ;start
ktrigger init 0
if (ktrigger = 0) then
kMultiple = 1.1
kHz = 440
kAmp = (0dbfs/10)
;startup four instances of instrument 200
event "i", 200, 0, 3000, kAmp, kHz
kAmp = kAmp * 0.75
kHz = kHz * kMultiple
event "i", 200, 0, 3000, kAmp, kHz
kAmp = kAmp * 0.75
kHz = kHz * kMultiple
event "i", 200, 0, 3000, kAmp, kHz
kAmp = kAmp * 0.75
kHz = kHz * kMultiple
event "i", 200, 0, 3000, kAmp, kHz
kAmp = kAmp * 0.75
kHz = kHz * kMultiple
ktrigger = 1
endif
endin
;---------------------------------------------
instr 3 ;after 10 seconds, turn off the instruments
ktrigger init 1
if (ktrigger==1) then
turnoff2 200, 1, 1 ;turn off must recently started instrument instance
kactive active 200 ;find out how many are still active
printk2 kactive ;print mainly to show progress
turnoff2 200, 0, 1 ;turn off all the rest of the instruments
kactive active 200 ;find out how many are still active
printk2 kactive, 10 ;print to show progress
endif
endin
;----------------------------------------------------
instr 200 ;play the tone
kEnv linen 1, 0.1, p3, 0.1
ar oscil kEnv*p4, p5, 1
outs ar, ar
print p4, p5
endin
</CsInstruments>
<CsScore>
i2 0 0.1
i3 10 0.1
</CsScore>
</CsoundSynthesizer>
|
See also
Duration Control Statements
Credits
Author: Istvan Varga
2005
New in Csound 5.00