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] 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 1121. 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