lastcycle — Indique si un évènement est dans son dernier cycle d'exécution.
Fournit un moyen de savoir si un évènement est dans son dernier cycle d'exécution. Qu'un évènement ait une durée finie (p3 > 0) ou qu'une note soit rallongée via un opcode de prolongement de la durée (comme « linsegr » ou « xtratim »), cet opcode retourne 1 si l'évènement est dans son dernier cycle-k. La seule situation dans laquelle « lastcycle » ne détecte pas qu'un évènement ne continuera pas durant un autre cycle est lorsque la note est arrêtée par un autre évènement (en utilisant « turnoff2 ») sans avoir la possibilité de passer par l'étape de relâchement (en utilisant « turnoff2 instrnum, imode, 0 »).
kflag -- indique si la note est dans son « dernier cycle ». (1 si c'est le dernier cycle, 0 sinon)
Cet opcode est utile pour faire des actions de nettoyage, en signalant aux autres évènements que cet évènement se termine, etc. Il ne fonctionne que durant l'exécution.
Voici un exemple de l'opcode lastcycle. Il utilise le fichier lastcycle.csd.
Exemple 497. Exemple de l'opcode lastcycle.
<CsoundSynthesizer> <CsOptions> ; Select audio/midi flags here according to platform ; Audio out Audio in Silent MIDI in -odac -d </CsOptions> <CsInstruments> sr = 44100 ksmps = 64 nchnls = 2 0dbfs = 1 instr 1 aenv linsegr 0, 0.1, 1, 0.1, 0 asig = oscili(0.1, 1000) asig += oscili(0.1, 1012) asig *= aenv if lastcycle() == 1 then schedulek p1, 0, p3 endif outs asig, asig endin </CsInstruments> <CsScore> i 1 0 0.5 f 0 3600 </CsScore> </CsoundSynthesizer>