cell
Précédent | Opcodes et opérateurs de l'orchestre | Suivant

## cell

cell — Automate cellulaire

## Description

Automate cellulaire à une dimension. Cet opcode est une version modifiée de vcella par Gabriel Maldonado.

## Syntaxe

    cell ktrig, kreinit, ioutFunc, initStateFunc, iRuleFunc, ielements

## Initialisation

ioutFunc -- numéro de la table dans laquelle l'état de chaque cellule est stocké.

initStateFunc -- numéro de la table contenant l'état initial des cellules.

iRuleFunc -- numéro de la table contenant la règle sur 8 bit.

ielements -- nombre total de cellules dans une ligne.

## Exécution

ktrig -- signal de déclenchement. Chaque fois qu'il est différent de zéro, une nouvelle génération de cellules est évaluée.

kreinit -- signal de réinitialisation. Chaque fois qu'il est différent de zéro, toutes les cellules sont mises dans l'état correspondant de initStateFunc.

cell modélise un automate cellulaire classique à une dimension et stocke l'état de chaque cellule dans une table identifiée par ioutFunc.

initStateFunc est un vecteur d'entrée contenant l'état initial de la ligne de cellules, tandis que iRuleFunc est un vecteur d'entrée contenant la règle choisie dans sa forme binaire (bit de moindre poids en premier).

Une nouvelle génération de cellules est évaluée chaque fois que ktrig contient une valeur non nulle. On peut aussi forcer l'état de toutes les cellules à l'état correspondant dans initStateFunc chaque fois que kreinit contient une valeur non nulle.

Noter que l'on suppose que chaque cellule peut être dans un état parmi deux (1="vivante", 0="morte"), bien que des valeurs fractionnaires peuvent également fonctionner, car elles sont tronquées.

## Exemples

Voici un exemple simple de l'opcode cell. Il utilise le fichier cell.csd.

Exemple 107. Un exemple simple de l'opcode cell.

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           -iadc     ;;;RT audio I/O
    ; For Non-realtime ouput leave only the line below:
    ; -o cell.wav -W ;;; for file output any platform
    </CsOptions>
    <CsInstruments>
    ; cell.csd by Gleb Rogozinsky

    sr        = 44100
    kr        = 4410
    ksmps     = 10
    nchnls    = 1
    0dbfs     = 1

    ; Cellular automaton-driven synthesis in spectral domain
    instr 1

      iatt      = p4                                ; envelope attack time
      isus      = p5                                ; envelope sustain time
      irel      = p6                                ; envelope release time
      ivol      = p7                                ; overall volume

      ; create some white noise
      asig      rand      0.8

      ; spectral analysis of asig
      fsig      pvsanal   asig, 2048, 1024, 2048, 0  ; get a vector of magnitudes

      ; calculate cellular automaton state
      kfreq     line      50, 5, 1                  ; variable CA triggering frequency
      ktrig     metro     kfreq                     ; trigger the CA to update cells
                cell      ktrig, 0, 3, 1, 2, 2048   ; cells are written into ftable 3

      ; use current row of cells in spectral domain
      fmas      pvstencil fsig, 0, 1, 3             ; apply spectral mask
      aout      pvsynth   fmas                      ; reconstruct time signal

      ; apply envelope and out signal
      kenv      expseg    .001, iatt, 1, isus, 1, irel, .001
                out       aout*kenv*ivol
    endin

    </CsInstruments>
    <CsScore>

    ; This example uses one-dimensional cellular automaton
    ; to produce structures in spectral domain

    ; We have to prepare initial row of cells.
    ; One alive cell is enough to produce a simple fractal,
    ; so two alivee cells will make structure more sophisticated
    f1 0 2048 7 0 150 0 0 1 1 1 0 0 45 0 0 1 1 1 0 0

    ; The CA rule is used as follows:
    ; the states (values) of each cell are summed with their neighboring cells.
    ; Each sum is used as an index to read a next state of cell
    ; from the rule table.
    ; Let us try rule # 129 (LSB binary 1 0 0 0 0 0 0 1).
    ; This rule will produce a fractal structure for single active cell
    ; For more rules see http://mathworld.wolfram.com/ElementaryCellularAutomaton.html
    f2 0 8 -2 1 0 0 0 0 0 0 1
    ; Try some different rules i.E. 254 (0 1 1 1 1 1 1 1) or 169 (1 0 0 1 0 1 0 1)

    ; Prepare the output table of ielements size
    f3 0 2048 10 0

    ; Time to make it sound!
    i1 0  13  0.3  7  3  1
    e

    </CsScore>
    </CsoundSynthesizer>

## Crédits

Auteur : Gleb Rogozinsky
Octobre 2011

Nouveau dans la version 5.16.6 de Csound.

Précédent | Niveau supérieur | Suivant
ceil | Sommaire | cent