GEN21

GEN21 — Génère les tables de différentes distributions aléatoires.

Description

Génère les tables de différentes distributions aléatoires. (Voir aussi betarand, bexprnd, cauchy, exprand, gauss, linrand, pcauchy, poisson, trirand, unirand et weibull)

Syntaxe

f # date taille 21 type niveau [arg1  [arg2]]

Initialisation

date et taille sont les arguments habituels des fonctions GEN. niveau définit l'amplitude. Noter que GEN21 n'effectue pas d'auto-normalisation comme le font la plupart des autres fonctions GEN. type définit la distribution à utiliser :

  • 1 = Uniforme (seulement des nombres positifs)

  • 2 = Linéaire (seulement des nombres positifs)

  • 3 = Triangulaire (nombres positifs et négatifs)

  • 4 = Exponentielle (seulement des nombres positifs)

  • 5 = Biexponentielle (nombres positifs et négatifs)

  • 6 = Gaussienne (nombres positifs et négatifs)

  • 7 = Cauchy (nombres positifs et négatifs)

  • 8 = Cauchy Positive (seulement des nombres positifs)

  • 9 = Beta (seulement des nombres positifs)

  • 10 = Weibull (seulement des nombres positifs)

  • 11 = Poisson (seulement des nombres positifs)

De tous ces cas seulement le 9 (Beta) et le 10 (Weibull) ont besoin d'arguments supplémentaires. Beta nécessite deux arguments et Weibull un.

Si type = 6, les nombres aléatoires dans la ftable suivent une distribution normale centrée sur 0 (mu = 0.0) avec une variance (sigma) de level / 3.83. Ainsi plus de 99.99% des valeurs aléatoires générées sont comprises entre -level et +level. La valeur par défaut de level est 1 (sigma = 0.261). Si l'on veut une valeur moyenne différente de 0.0, il faut ajouter cette valeur moyenne aux nombres générés.

Exemples

f1 0 1024 21 1       ; Uniforme (bruit blanc)
f1 0 1024 21 6       ; Gaussienne (mu=0.0, sigma=1/3.83=0.261)
f1 0 1024 21 6 5.745 ; Gaussienne (mu=0.0, sigma=5.745/3.83=1.5)
f1 0 1024 21 9 1 1 2 ; Beta (noter que le niveau précède les arguments)
f1 0 1024 21 10 1 2  ; Weibull

Toutes les additions ci-dessus furent conçus par l'auteur entre mai et décembre 1994, sous la supervision du Dr Richard Boulanger.

Voici un exemple complet de la routine GEN21. Il utilise le fichier gen21.csd.

Exemple 1149. Exemple de la routine GEN21.

Voir les sections Audio en Temps Réel et Options de 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 realtime audio input is needed too
; For Non-realtime ouput leave only the line below:
; -o gen21.wav -W ;;; for file output any platform
</CsOptions>
<CsInstruments>

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

instr 1

ifn    = p4
isize  = ftlen(ifn) 
prints "TABLE NUMBER: %d\n", ifn   
prints "Index\tValue\n"
    
iindex = 0				;start loop
begin_loop:
     ivalue tab_i iindex, ifn
     prints "%d:\t%f\n", iindex, ivalue
     iindex = iindex + 1
  if (iindex < isize) igoto begin_loop
  
;produce sound - and repeat it 10 times so you can hear the patterns:   
aphase phasor 10/10			;play all 32 values 10x over 10 seconds
aphase = aphase*isize			;step through table
afrq   table aphase, p4			;read table number
asig   poscil .5, (afrq*500)+1000,10	;scale values of table 500 times, add 1000 Hz
       outs asig , asig			;so we can distinguish the different tables 
endin

</CsInstruments>
<CsScore>
f1 0 32 21 1		;Uniform (white noise)
f2 0 32 21 6		;Gaussian (mu=0.0, sigma=1/3.83=0.261)
f3 0 32 21 6 5.745	;Gaussian (mu=0.0, sigma=5.745/3.83=1.5)
f4 0 32 21 9 1 1 2	;Beta (note that level precedes arguments)
f5 0 32 21 10 1 2	;Weibull
f10 0 8192 10 1		;Sine wave

i 1  0 10 1
i 1 11 10 2
i 1 22 10 3
i 1 33 10 4
i 1 44 10 5
e
</CsScore>
</CsoundSynthesizer>


Voici les diagrammes des formes d'onde des routines GEN21 utilisées dans l'exemple :

f 1 0 32 21 1 - seulement des nombres positifs

f 1 0 32 21 1 - seulement des nombres positifs

f 2 0 32 21 6

f 2 0 32 21 6

f 3 0 32 21 6 5.745

f 3 0 32 21 6 5.745

f 4 0 32 21 9 1 1 2 - seulement des nombres positifs

f 4 0 32 21 9 1 1 2 - seulement des nombres positifs

f 5 0 32 21 10 1 2 - seulement des nombres positifs

f 5 0 32 21 10 1 2 - seulement des nombres positifs

Crédits

Auteur : Paris Smaragdis
MIT, Cambridge
1995

Auteur : John ffitch
University of Bath/Codemist Ltd.
Bath, UK

Précisions sur mu et sigma ajoutées par François Pinot après une discussion avec Joachim Heintz sur la liste de Csound, Décembre 2010.

Nouveau dans la version 3.2 de Csound