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 108. 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.