turnoff2

turnoff2 — Turn off instance(s) of other instruments at performance time.

Description

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)

Performance

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] 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 1157. Example of the turnoff2 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
-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