GEN42
Prev | Instructions de partition et routines GEN | Next

## GEN42

GEN42 — Génère une distribution aléatoire d'intervalles discrets de valeurs.

## Description

Génère une fonction de distribution aléatoire d'intervalles discrets de valeurs en donnant une liste de groupes de trois nombres.

## Syntaxe

    f # date taille -42  min1 max1 prob1 min2 max2 prob2 min3 max3 prob3 ...  minN maxN probN

## Exécution

Le premier nombre de chaque groupe est la valeur minimum de l'intervalle, le second est la valeur maximum et le troisième est la probabilité qu'un élément appartenant à cet intervalle de valeurs soit choisi par un algorithme aléatoire. La probabilité pour un intervalle doit être une fraction de 1, et la somme des probabilités pour tous les intervalles doit être égale à 1.

Ce sous-programme est prévu pour être utilisé avec les opcodes duserrnd et urd (voir duserrnd pour plus d'information). Comme ni duserrnd ni urd n'utilisent l'interpolation, il est suggéré de donner une taille raisonnablement grande.

## Exemples

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

Example 1128. Exemple de l'opcode GEN42.

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

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

    instr 1

    ktab  = 1			;ftable 1
    kurd  = urd(ktab)
    ktrig metro 5			;triggers 5 times per second
    kres  samphold kurd, ktrig	;sample and hold value of kurd
          printk2 kres		;print it
    asig  poscil .5, 220+kres, 2
          outs asig, asig
    endin

    instr 2

    seed 0	;every run new values

    ktab  = 1 			;ftable 1
    kurd  = urd(ktab)
    ktrig metro 5			;triggers 5 times per second
    kres  samphold kurd, ktrig	;sample and hold value of kurd
          printk2 kres		;print it
    asig  poscil .5, 220+kres, 2
          outs asig, asig

    endin
    </CsInstruments>
    <CsScore>
    f1 0 -20 -42  10 20 .3 100 200 .7 ;30% choose between 10 and 20 and 70% between 100 and 200
    f2 0 8192 10 1			  ;sine wave

    i 1 0 5
    i 2 6 5
    e
    </CsScore>
    </CsoundSynthesizer>

Sa sortie contiendra des lignes comme celles-ci :

     i1   184.61538
     i1   130.76923
     i1   169.23077
     i1    12.00000
    .......

    WARNING: Seeding from current time 3751086165

     i2   138.46154
     i2    12.00000
     i2   123.07692
     i2   161.53846
     i2   123.07692
     i2   153.84615
    ......

Voici le diagramme de la forme d'onde de la routine GEN42 utilisée dans l'exemple :

f 1 0 -20 -42 10 20 .3 100 200 .7

## Crédits

Auteur : Gabriel Maldonado

Prev | Up | Next
GEN41 | Home | GEN43