seqtime

seqtime — Génère un signal de déclenchement suivant les valeurs stockées dans une table.

Description

Génère un signal de déclenchement suivant les valeurs stockées dans une table.

Syntaxe

ktrig_out seqtime ktime_unit, kstart, kloop, kinitndx, kfn_times

Exécution

ktrig_out -- signal de déclenchement en sortie.

ktime_unit -- unité de mesure du temps, par rapport aux secondes.

kstart -- indice du début de la section en boucle.

kloop -- indice de la fin de la section en boucle.

kinitndx -- indice initial.

[Note] 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.

seqtime 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.

[Note] Note

Noter que l'indice kloop marque la limite de la boucle et n'est PAS inclus dans les élements de la boucle. Si l'on veut boucler sur les quatre premiers éléments, il faut fixer kstart à 0 et kloop à 4.

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 seqtime.

Exemples

Voici un exemple de l'opcode seqtime. Il utilise le fichier seqtime.csd.

Exemple 832. Exemple de l'opcode seqtime.

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
; Audio out   Audio in
-odac           -iadc    ;;;RT audio I/O
; For Non-realtime ouput leave only the line below:
; -o seqtime.wav -W ;;; for file output any platform
</CsOptions>
<CsInstruments>

 sr = 44100
 ksmps = 64
 nchnls = 1

; By Tim Mortimer and Andres Cabrera 2007

0dbfs = 1

gisine         ftgen    0, 0, 8192, 10,    1
;;; table defining an integer pitch set
gipset    ftgen     0, 0, 4, -2, 8.00, 8.04, 8.07, 8.10
;;;DELTA times for seqtime
gidelta    ftgen    0, 0, 4, -2, .5, 1, .25, 1.25


  instr 1

kndx init 0
ktrigger init 0

ktime_unit init 1
kstart init p4
kloop init p5
kinitndx init 0
kfn_times init gidelta

ktrigger seqtime ktime_unit, kstart, kloop, kinitndx, kfn_times

printk2 ktrigger


if (ktrigger > 0) then
   kpitch table kndx, gipset
   event "i", 2, 0, 1, kpitch
   kndx = kndx + 1
   kndx = kndx % kloop
endif

  endin


  instr 2
icps = cpspch (p4)
a1    buzz    1, icps, 7, gisine
aamp expseg    0.00003,.02,1,p3-.02,0.00003

a1 = a1 * aamp * 0.5

out a1
  endin

</CsInstruments>
<CsScore>
;      start    dur   kstart  kloop
i 1	0	7	0	4
i 1	8	10	0	3
i 1	19	10	4	4

</CsScore>
</CsoundSynthesizer>


Voir aussi

GEN02, GEN23, trigseq seqtime2

Crédits

Auteur : Gabriel Maldonado

Novembre 2002. Note sur le paramètre kinitndx ajoutée grâce à Rasmus Ekman.

Nouveau dans la version 4.06

Exemple par Tim Mortimer et Andrés Cabrera, 2007