seqtime2 — Génère un signal de déclenchement suivant les valeurs stockées dans une table.
ktrig_out -- signal de déclenchement en sortie.
ktime_unit -- unité de mesure du temps, par rapport aux secondes.
ktrig_in -- signal de déclenchement en entrée.
kstart -- indice du début de la section en boucle.
kloop -- indice de la fin de la section en boucle.
kinitndx -- indice initial.
Note | |
---|---|
Bien que kinitndx soit renseigné au taux-k, l'accès ne s'y fait qu'au taux d'initialisation. Ainsi, si l'on utilise un argument de taux-k, son affectation doit se faire avec init. |
kfn_times -- numéro de la table contenant une suite de dates.
Cet opcode traite des suites temporelles de groupes de valeurs stockées dans une table.
seqtime2 génère un signal déclencheur (une suite d'impulsions, voir aussi l'opcode trigger), en fonction des valeurs stockées dans la table kfn_times. Cette table doit contenir une suite d'intervalles de temps (c-à-d des durées entre des évènements adjacents). Les unités temporelles stockées dans la table sont exprimées en secondes, mais peuvent être changées d'échelle grâce à l'argument ktime_unit. La table peut être remplie avec GEN02 ou au moyen d'un fichier texte externe contenant des nombres, avec GEN23.
Il est possible de démarrer la séquence depuis une valeur différente de la première, en affectant à kinitndx un indice différent de zéro (qui correspond à la première valeur de la table). Normalement la séquence est bouclée, et le début et la fin de la boucle peuvent être ajustés en modifiant les arguments kstart et kloop. L'utilisateur doit s'assurer que les valeurs de ces arguments (ainsi que celle de kinitndx) correspondent à des indices de table valides, sinon Csound plantera (car il n'y a aucun test sur ces indices).
Il est possible de désactiver la boucle (mode à une passe) en affectant la même valeur aux arguments kstart et kloop. Dans ce cas, le dernier élément lu sera celui correspondant à la valeur de ces arguments. La table peut être lue à l'envers en affectant une valeur négative à kloop. Il est possible de déclencher deux évènements presqu'en même temps (actuellement séparés d'un k-cycle) en donnant la valeur zéro à l'intervalle de temps correspondant. Si l'utiliseur désire envoyer une impulsion de déclenchement, le premier élément de la table doit valoir zéro. L'évènement doit être déclenché sur un instrument de l'orchestre venant immédiatement après l'instrument contenant l'opcode seqtime2.
seqtime2 est semblable à seqtime, la différence étant que lorsque ktrig_in contient une valeur différente de zéro, l'indice courant est réinitialisé à la valeur de kinitndx. kinitndx peut varier pendant l'exécution.
Voici un exemple de l'opcode seqtime2. Il utilise le fichier seqtime2.csd.
Exemple 953. Exemple de l'opcode seqtime2.
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 seqtime2.wav -W ;;; for file output any platform </CsOptions> <CsInstruments> sr = 44100 ksmps = 32 nchnls = 2 0dbfs = 1 gitabMap2 ftgen 57,0,512,-2, 1,1/4,1/4,1/8,1/8,1/8,1/8,1/4,1/4,.5,1/4,1/4,1/16,1/16,1/16,1/16,1/16,1/16,1/16,1/16 gisine ftgen 1,0,512,10, 1 instr 1 ktrigin metro .333333333333 ktrig2 metro 1 schedkwhen ktrig2, 0,0, 2, 0, .1 ; just to set the metronome! kspeed init 1 ; ktime_unit, kstart, kloop, initndx, kfn_times ktrig seqtime2 ktrigin, kspeed, 0, 20, 2, gitabMap2 ;ktrig seqtime kspeed, 0, 20, 0, gitabMap2 ; try with seqtime too... schedkwhen ktrig, 0, 0, 3, 0, ktrig ; the duration is got from seqtime2 output! endin instr 2 a1 line 1,p3,0 aout oscili 0.7*a1,500,gisine outs1 aout endin instr 3 a1 line 1,p3,0 aout oscili 0.7*a1,1000,gisine outs2 aout endin </CsInstruments> <CsScore> i1 0 20 ;f0 3600 </CsScore> </CsoundSynthesizer>