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.
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.
Voici un exemple de l'opcode tableshuffle. Il utilise le fichier farey7shuffled.csd.
Exemple 1003. 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>