turnoff2

turnoff2 — Arrête une ou des instances d'autres instruments pendant la phase d'exécution.

Description

Arrête une ou des instances d'autres instruments pendant la phase d'exécution.

Syntaxe

turnoff2 kinsno, kmode, krelease
    

Exécution

kinsno -- instrument à arrêter (peut-être fractionnaire). S'il vaut zéro ou est négatif, aucun instrument n'est arrêté.

kmode -- somme des valeurs suivantes :

  • 0, 1, ou 2 : arrête toutes les instances (0), seulement les plus anciennes (1), ou seulement les plus récentes (2)

  • 4 : n'arrête que les notes dont la partie fractionnaire du numéro d'instrument correspond à kinsno, plutôt que d'ignorer la partie fractionnaire.

  • 8 : n'arrête que les notes dont la durée est indéfinie (p3 < 0 ou MIDI).

krelease -- s'il est non nul, les instances arrêtées peuvent avoir une période d'extinction (release), sinon elles sont désactivées immédiatement (avec possible émission de clics).

Il faut respecter le principe d'arrêter des instruments ayant un numéro plus élevé que celui de l'instrument duquel turnoff2 est appelé, sinon il peut y avoir des problèmes d'initialisation.

Exemples

L'exemple suivant, écrit par Lou Cohen, utilise l'opcode turnoff2.

Exemple 988. Exemple de l'opcode turnoff2.

Voir les sections Audio en temps réel et Options de la ligne de commande pour plus d'information sur l'utilisation des options de la ligne de commande.

<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 sin.wav -W ;;; for file output any platform
</CsOptions>
<CsInstruments>

sr        =          48000    ;samples per second for sound
kr        =        4800
nchnls    =        1
0dbfs    =        32767

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
        out      ar
        print    p4, p5

endin
</CsInstruments>
<CsScore>

i2 0 0.1 
i3 10 0.1
</CsScore>
</CsoundSynthesizer>


Voir aussi

turnoff

Crédits

Auteur : Istvan Varga
2005

Nouveau dans Csound 5.00