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

## xscans

xscans — Générateur rapide de forme d'onde et de la table d'onde de la synthèse par balayage.

## Description

Opcode du greffon scansyn.

Version expérimentale de scans. Autorise des matrices bien plus grandes, est plus rapide et plus compact, mais supprime une certaine flexibilité (non utilisée ?). S'il est apprécié, il remplacera l'ancien opcode car sa syntaxe est compatible bien qu'étendue.

## Syntaxe

    ares xscans kamp, kfreq, ifntraj, id [, iorder]

## Initialisation

ifntraj -- table contenant la trajectoire du balayage. C'est une série de nombres qui contiennent les adresses des masses. L'ordre de ces adresses est utilisé comme chemin de balayage. Ne doit pas contenir de valeurs supérieures au nombre de masses, ou des nombres négatifs. Voir l'introduction à la section sur la synthèse par balayage.

id -- s'il est positif, c'est l'ID de l'opcode. Il est utilisé pour relier l'opcode de balayage au bon générateur de forme d'onde. S'il est négatif, sa valeur absolue indique la table d'onde dans laquelle sera écrite la forme d'onde. Cette forme d'onde peut être utilisée par la suite par un autre opcode pour générer du son. Le contenu initial de cette table sera écrasé.

iorder (facultatif, 0 par défaut) -- ordre de l'interpolation utilisée en interne. Peut prendre n'importe quelle valeur comprise entre 1 et 4, et vaut 4 par défaut, qui est l'interpolation quartique. 2 est l'interpolation quadratique et 1 l'interpolation linéaire. Les nombres les plus élevés donnent un traitement plus lent, mais pas nécessairement meilleur.

## Exécution

kamp -- amplitude de la sortie. Noter que l'amplitude résultante dépend aussi des valeurs instantanées de la table d'onde. Ce nombre est en fait la facteur de pondération de la table d'onde.

kfreq -- fréquence de balayage

## Format de Matrice

Le nouveau format de matrice est une liste de connexions, une par ligne reliant le point x au point y. Aucun poids n'est affecté au lien ; il est supposé valoir l'unité. La liste est précédée par la ligne <MATRIX> et se termine par une ligne </MATRIX>

Par exemple, une corde circulaire de 8 sera codée par

    <MATRIX>
    0 1
    1 0
    1 2
    2 1
    2 3
    3 2
    3 4
    4 3
    4 5
    5 4
    5 6
    6 5
    6 7
    7 6
    0 7
    </MATRIX>

## Exemples

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

Exemple 1221. Exemple de l'opcode xscans.

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 xscans.wav -W ;;; for file output any platform
    </CsOptions>
    <CsInstruments>

    sr = 44100
    ksmps = 32
    nchnls = 2
    0dbfs  = 1
    ;the matrices can be found in /manual/examples

    instr 1	; Plain scanned syntnesis

      a0       =           0
               xscanu      1, .01, 6, 2, "128,8-cylinder.XmatrxT", 4, 5, 2, .1, .1, -.01, .1, .5, 0, 0, a0, 0, 0
      a1       xscans      .7, cpspch(p4), 7, 0, 1
               outs        a1, a1
    endin

    instr 2	; Scan synthesis with audio injection and dual scan paths
    	; tap the mic or sing to inject audio into the resonators

      a0,aa    ins
      a0       =           a0/.8
               xscanu      1, .01, 6, 2, "128,8-grid.XmatrxT", 14, 5, 2, .01, .05, -.05, .1, .5, 0, 0, a0, 0, 0
      a1       xscans      .5, cpspch(7.00), 7, 0, 1
      a2       xscans      .5, cpspch(7.001), 77, 0, 1
               outs        a1+a2,a1+a2
    endin

    instr 3	; Vibrating structure with audio injection
    	; Tap the MIC - to inject audio into the resonators

      a0,aa    ins
      a0       =          a0/.8
               xscanu     1, .01, 6, 2, "128-stringcircular.XmatrxT", 14, 5, 2, .01, .05, -.05, .25, .75, 0, 0, a0, 0, 1
    endin

    instr 4	; Modulated scanners

      i1       bexprnd     5
      i2       bexprnd     1
      ko       oscil       i1, i2, 9
      ka1      oscili      .5, .15*8, p7
      ka2      oscili      .5, .15*8, p8
      kf       oscili      1, .15, p4
      kf       =           2^(kf/12)*p6*440+ko
      a1       xscans      p9*ka1, kf+i1, 777, 1, 1
      a2       xscans      p9*ka2, (kf+i1)*2.1, 77, 1, 1
               outs        a1+a2, a1+a2
    endin

    </CsInstruments>
    <CsScore>
    ; Initial condition
    f1 0 128 7 0 64 1 64 0
    ; Masses
    f2 0 128 -7 1 128 1
    ; Centering force
    f4  0 128 -7 0 128 2
    f14 0 128 -7 2 64 0 64 2
    ; Damping
    f5 0 128 -7 1 128 1
    ; Initial velocity
    f6 0 128 -7 -.0 128 .0
    ; Trajectories
    f7 0 128 -5 .001 128 128
    f777 0 128 -23 "128-stringcircular" ;??
    f77 0 128 -23 "128-spiral-8,16,128,2,1over2.traj"
    ; Sine
    f9 0 16384 10 1

    ; Pitch tables
    f100 0 1024 -7 +3 128 +3 128 -2 128 -2 128 +0 128 +0 128 -4 128 -4 128 +3
    f101 0 1024 -7 -2 128 -2 128 -2 128 -2 128 -5 128 -5 128 -4 128 -4 128 -2
    f102 0 1024 -7 +3 128 +3 128 +2 128 +2 128 +0 128 +0 128 +0 128 +0 128 +3
    f103 0 1024 -7 +7 128 +7 128 +5 128 +5 128 +3 128 +3 128 +3 128 +3 128 +7

    ; Amplitude tables
    f200 0 1024 7 1 128 0 128 0 127 0 1 1 128 0 128 0 127 0 1 1 128 0 127 0 1 1
    f201 0 1024 7 0 127 0 1 1 127 0 1 1 128 0 127 0 1 1 127 0 1 1 128 0 127 0 1 1 127 0 1 1
    f202 0 1024 7 1 127 0 1 1 127 0 1 1 127 0 1 1 127 0 1 1 127 0 1 1 127 0 1 1 127 0 1 1 127 0 1
    f203 0 1024 7 1 1024 0

    ;----------------------------------

    ; Note list
    i1 0 10 6.00
    s
    i2 1 10
    s
    i3 1 23
    i4 1 23  101 1 .5  200 202 1.5
    i4 . .   102 0 .5  200 201 1
    i4 . .   103 0 .5  200 201 1
    i4 . .   100 0 .25 200 200 2
    e
    </CsScore>
    </CsoundSynthesizer>

Pour des exemples similaires, voir la documentation sur scans.

## Voir aussi

On peut trouver plus d'information sur la synthèse par balayage (de même que d'autres matrices) sur la page Scanned Synthesis du site Csounds.com.

Il y a aussi un article sur ces opcodes : http://www.csounds.com/stevenyi/scanned/yi_scannedSynthesis.html, écrit par Steven Yi.

scans, xscanu

## Crédits

Ecrit par John ffitch.

Nouveau dans la version 4.20

Précédent | Niveau supérieur | Suivant
xscansmap | Sommaire | xscanu