tableshuffle

tableshuffle — mélange le contenu d'une table de fonction de façon à ce que chaque élément de la table source se trouve dans une position aléatoire différente.

Description

Cet opcode peut être utilisé pour mélanger le contenu de tables de fonction dans un ordre aléatoire mais en conservant tous les élements. Imaginez la battue d'un jeu de cartes. Chaque élément de la table est copié dans une position aléatoire différente. Si cette position est déjà occupée, la position libre suivante est choisie. La longueur de la table reste la même.

Syntaxe

tableshuffle ktablenum
tableshufflei itablenum

Exécution

ktablenum ou itablenum -- le numéro de la table à mélanger.

Exemples

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

Exemple 983. Exemple de l'opcode tableshuffle.

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>
-odac -+rtaudio=alsa --midioutfile=farey7.mid
</CsOptions>
<CsInstruments>
sr=48000
ksmps=10
nchnls=1
0dbfs = 1

gidelta init 100
gimult init 101

;-------- loop and trigger instrument 901 using a Farey Sequence polyrhythm
	  instr 1
kindx init 0
kindx2 init 0
ktrigger init 0
ktime_unit init p6
kstart init p4
kloop init p5
kinitndx init 0
kfn_times init gidelta
knote init 60
kbasenote init p8
ifundam init p7
ktrigger seqtime ktime_unit, kstart, kloop, kinitndx, kfn_times
if (ktrigger > 0 ) then
     kpitch = cpspch(ifundam)
     kmult tab kindx2, gimult
     kpitch = kpitch * kmult
     knote = kbasenote + kmult
     event "i", 901, 0, .4, .1, kpitch, kpitch * .9, .4,  5,   .75, .8,  1.0, .15, .0,  .125, .125, .25, .5,  1.0, .0, .0,  .0,  .0,  .125, .25, .25, .25, knote
     kindx = kindx + 1
     kindx = kindx % kloop
     kindx2 = kindx2 + 1
     kindx2 = kindx2 % kloop
     if (kindx2 == 0) then
     	tableshuffle gimult
     endif
	
endif
	endin ; 1

;------ basic 2 Operators FM algorithm ----------------
	instr 901
inotedur	=		p3
imaxamp		=		p4 ;ampdb(p4)
icarrfreq	=		p5
imodfreq	=		p6
ilowndx		=		p7
indxdiff	=		p8-p7
knote	        =		p27
aampenv		linseg	p9, p14*p3, p10, p15*p3, p11, p16*p3, p12, p17*p3, p13 
adevenv		linseg	p18, p23*p3, p19, p24*p3, p20, p25*p3, p21, p26*p3, p22
amodosc		oscili	(ilowndx+indxdiff*adevenv)*imodfreq, imodfreq, 10 
acarosc		oscili	imaxamp*aampenv, icarrfreq+amodosc, 10 
			out		acarosc 
;------ we also write down a midi track here ----------
midion 1, knote, 100
       	endin ; 901

</CsInstruments>

<CsScore>
f10 0 4096 10 1				
f100 0 -18 "farey" 7 1
f101 0 -18 "farey" 7 2

; p4 kstart  := index offset into the Farey Sequence
; p5 kloop   := end index into Farey Seq.
; p6 timefac := time in seconds for one loop to complete
; p7 fundam  := fundamental of the FM instrument
; p8 basenote:= root pitch of the midi voice output
; note that pitch structures of the midi file output are not equivalent to the
; ones used for the FM real-time synthesis.

;	start		dur		kstart	kloop   timefac	fundam. basenote
i1	0.0		44		0 	18	1	6.05	60
i1	4		40		0 	18	3	7.05	72
i1	10		38		0 	18	1.5	8	84
i1	15		50		0	18	1	5	48
i1	22		75		5	17	1.7	4	36	
e
</CsScore>

</CsoundSynthesizer>


Voir aussi

GEN farey, tablefilter, tablecopy

Crédits

Auteur : Georg Boenn
Université de Glamorgan, UK

Nouveau dans la version 5.13 de Csound.