ftgen — Génère une table de fonction de partition depuis l'orchestre.
gir ftgen ifn, itime, isize, igen, iarga [, iargb ] [...]
gir ftgen ifn, itime, isize, igen, iarray
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.
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. |
Voici un exemple de l'opcode ftgen. Il utilise le fichier ftgen.csd.
Exemple 389. 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 390. 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>