ftgen

ftgen — Génère une table de fonction de partition depuis l'orchestre.

Description

Génère une table de fonction de partition depuis l'orchestre.

Syntaxe

gir ftgen ifn, itime, isize, igen, iarga [, iargb ] [...]

Initialisation

gir -- un numéro de table soit demandé soir assigné automatiquement supérieur à 100.

ifn -- numéro de table demandé. Si ifn vaut zéro, le numéro est assigné automatiquement et sa valeur est placée dans gir. Toute autre valeur est utilisée comme le numéro de la table.

itime -- est ignoré, mais il correspond cependant au p2 de l'instruction f de partition.

isize -- taille de la table. Correspond au p3 de l'instruction f de partition.

igen -- routine GEN de la table de fonction. Correspond au p4 de l'instruction f de partition.

iarga, iargb, ... -- arguments de la table de fonction. Correspondent de p5 à pn de l'instruction f de partition.

Exécution

Equivalent à la génération de table dans la partition au moyen de l'instruction f.

[Note] Note

A l'origine, Csound était conçu pour ne supporter que les tables dont la taille était une puissance de deux. Bien que ceci ait changé dans les versions récentes (on peut utiliser n'importe quelle taille en donnant un nombre négatif), de nombreux opcodes ne les accepteront pas.

[Avertissement] Avertissement

Bien que Csound ne proteste pas si ftgen est utilisé à l'intérieur d'une paire d'instructions instr-endin, ce n'est pas une utilisation attendue ni supportée, et celle-ci doit être traitée avec prudence car elle a des effets globaux. En particulier, une taille différente conduit habituellement à une réallocation de la table, ce qui peut causer un plantage ou un comportement erratique.

Exmples

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

Exemple 348. Exemple de l'opcode ftgen.

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

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

gisine   ftgen 1, 0, 16384, 10, 1	;sine wave
gisquare ftgen 2, 0, 16384, 10, 1, 0 , .33, 0, .2 , 0, .14, 0 , .11, 0, .09 ;odd harmonics
gisaw    ftgen 3, 0, 16384, 10, 0, .2, 0, .4, 0, .6, 0, .8, 0, 1, 0, .8, 0, .6, 0, .4, 0,.2 ;even harmonics

instr 1

ifn = p4
asig poscil .6, 200, ifn
     outs asig, asig

endin
</CsInstruments>
<CsScore>

i 1 0 2 1 ;sine wave
i 1 3 2 2 ;odd harmonics
i 1 6 2 3 ;even harmonics
e
</CsScore>
</CsoundSynthesizer>


Voici un autre exemple de l'opcode ftgen. Il utilise le fichier ftgen-2.csd.

Exemple 349. Exemple de l'opcode ftgen.

Cet exemple interroge un fichier sur sa longueur afin de créer une f-table de la taille appropriée.

<CsoundSynthesizer>
<CsOptions>
; Select audio/midi flags here according to platform
; Audio out   Audio in
-odac           -iadc    ;;;RT audio I/O
; For Non-realtime ouput leave only the line below:
; -o ftgen-2.wav -W ;;; for file output any platform
</CsOptions>
<CsInstruments>

  sr	    =  48000
  ksmps	    =  16
  nchnls    =  2

;Example by Jonathan Murphy 2007

  0dbfs	    =  1

    instr 1

  Sfile	    =    "beats.wav"

  ilen	    filelen   Sfile  ; Find length
  isr	    filesr    Sfile  ; Find sample rate

  isamps    =  ilen * isr  ; Total number of samples
  isize	    init      1

loop:
  isize	    =  isize * 2
; Loop until isize is greater than number of samples
if (isize < isamps) igoto loop

  itab	    ftgen     0, 0, isize, 1, Sfile, 0, 0, 0
	    print     isize
	    print     isamps

  turnoff
    endin

</CsInstruments>
<CsScore>
i1 0 10
e
</CsScore>
</CsoundSynthesizer>


Voir aussi

Routines GEN, ftgentmp

Crédits

Auteur : Barry L. Vercoe
M.I.T., Cambridge, Mass
1997

Avertissement ajouté en Avril 2002 par Rasmus Ekman