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

## 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 ] [...]

    gir ftgen ifn, itime, isize, igen, iarray

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

iarray -- un tableau unidimensionnel contenant les arguments de la table de fonction. Correspond de p5 à pn de l'instruction f de la partition.

## Exécution

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

| 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
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 385. 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 386. Exemple de l'opcode ftgen.

Cet exemple interroge un fichier sur sa longueur afin de créer une ftable 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

Précédent | Niveau supérieur | Suivant
ftfree | Sommaire | ftgenonce