trigseq
Précédent | Opcodes et opérateurs de l'orchestre | Suivant

## trigseq

trigseq — Accepte un signal déclencheur en entrée et retourne un groupe de valeurs.

## Description

Accepte un signal déclencheur en entrée et retourne un groupe de valeurs.

## Syntaxe

    trigseq ktrig_in, kstart, kloop, kinitndx, kfn_values, kout1 [, kout2] [...]

## Exécution

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_values -- numéro d'une table contenant une suite de groupes de valeurs.

kout1 -- valeurs retournées

kout2, ... (facultatif) -- plus de valeurs retournées

Cet opcode traite des suites temporelles de groupes de valeurs stockées dans une table.

trigseq accepte un signal déclencheur (ktrig_in) en entrée et retourne un groupe de valeurs (contenues dans la table kfn_values) chaque fois que ktrig_in admet une valeur différente de zéro. Chaque fois qu'un groupe de valeurs est déclenché, le pointeur de la table est avancé du nombre de positions correspondant au nombre d'éléments de ce groupe, afin de pointer vers le groupe suivant de valeurs. Le nombre d'éléments des groupes est déterminé par le nombre d'arguments koutX.

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.

trigseq est conçu pour être utilisé avec les opcodes seqtime ou trigger.

## Exemples

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

Exemple 980. Exemple de l'opcode trigseq.

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 RT audio input is needed too
    ; For Non-realtime ouput leave only the line below:
    ; -o trigseq.wav -W ;;; for file output any platform
    </CsOptions>
    <CsInstruments>

    sr = 44100
    ksmps = 32
    nchnls = 2
    0dbfs  = 1

    giTimes	ftgen	91, 0, 128, -2,     1, 1/2, 1/2, 1/8, 1/8, 1/2,1/2, 1/16, 1/16, 1/16, 1/16, 1/16, 1/16, 1/16, 1/16; times
    giSeq	ftgen 	90, 0, 128, -2,     1, 2,     .5, 3,    .25, 4,      .10, 5,       .05, 6 ;** sequence amplitude and freq-ratio bins

    instr	1

    icps	init	p4
    iamp	init	.3

    kloop	init	p5
    initndx	init	p6
    kloop2	init	p7
    initndx2 init	p8
    kdur	init	p9
    iminTime init	p10
    imaxTime init	p11
    kampratio init  1
    kfreqratio init 1

    ktime_unit expseg iminTime,p3/8,iminTime,p3* 3/4,imaxTime,p3/8,imaxTime

    ;**ktrig	seqtime	ktime_unit, kstart, kloop, initndx, kfn_times
    ;ktrig	seqtime	1/ktime_unit, 0,      15, 0,      giTimes

    ktrig	metro	ktime_unit

    ;****	trigseq	ktrig_in,  kstart,  kloop, initndx,  kfn_values, kout1 [, kout2, kout3, ....,  koutN]
    	trigseq	ktrig, 	0, 	kloop2,initndx2,   giSeq,      kampratio, kfreqratio

    ;atrig	= ktrig*10000
    	schedkwhen ktrig, -1, -1, 3, 0, kdur, kampratio*iamp, kfreqratio*icps
    ;	schedkwhen ktrig, -1, -1, 2, 0, ktrig, kampratio*iamp, kfreqratio*icps
    	endin

    instr	2

    icps	init	p4
    iamp	init .2

    kloop	init	p5
    initndx	init	p6
    kloop2	init	p7
    initndx2 init	p8
    kdur	init	p9
    iminTime init	p10
    imaxTime init	p11
    kampratio init  1
    kfreqratio init 1

    ktime_unit expseg iminTime,p3/8,iminTime,p3* 3/4,imaxTime,p3/8,imaxTime

    ;**ktrig	seqtime	ktime_unit, kstart, kloop, initndx, kfn_times
    ktrig	seqtime	1/ktime_unit, 0,      15, 0,      giTimes

    ;ktrig	metro	ktime_unit

    ;****	trigseq	ktrig_in,  kstart,  kloop, initndx,  kfn_values, kout1 [, kout2, kout3, ....,  koutN]
    	trigseq	ktrig,      0, 	   kloop2, initndx2,   giSeq,    kampratio, kfreqratio
    printk2 ktrig
    ;atrig	= ktrig*10000
    ;	schedkwhen ktrig, -1, -1, 2, 0, kdur, kampratio*iamp, kfreqratio*icps
    	schedkwhen ktrig, -1, -1, 3, 0, ktrig, kampratio*iamp, kfreqratio*icps
    endin

    instr	3

    print p3
    kenv	expseg	 1.04, p3,.04
    a1	foscili	p4*a(kenv-0.04), p5,1,1,kenv*5, 2
    	outs	a1, a1
    endin

    </CsInstruments>
    <CsScore>
    f2 0 8192 10 1

    ;	icps	unused	unused	kloop2	initndx2 kdur iminTime	imaxTime

    s

    i1 0  6	100	0	0	5	0	.2	3	15
    i1 8  6	150	0	0	4	1	.1	4	30
    i1 16 6	200	0	0	5	3	.25	8	50
    i1 24 6	300	0	0	3	0	.1	1	30

    i2 32 6	100	0	0	5	0	.2	1	1
    i2 40 6 150	0	0	4	1	.1	.5	.5
    i2 48 6	200	0	0	5	3	.25	3	.5
    i2 56 6	300	0	0	5	0	.1	1	8

    e
    </CsScore>
    </CsoundSynthesizer>

## Voir aussi

seqtime, trigger

## Crédits

Auteur : Gabriel Maldonado

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

Janvier 2003. J'ai corrigé les crédits grâce à une note de Øyvind Brandtsegg.

Nouveau dans la version 4.06

Précédent | Niveau supérieur | Suivant
trigger | Sommaire | trirand