ftgenonce

ftgenonce — Génère une table de fonction depuis la définition d'un instrument, sans duplication de données.

Description

Permet la création de tables de fonction entièrement à l'intérieur des définitions d'instrument, sans duplication de données.

L'opcode ftgenonce est conçu pour simplifier l'écriture des définitions d'instrument qui peuvent être réutilisées dans différents orchestres par un simple #include qui les insère dans un instrument. Il n'est pas nécessaire de définir les tables de fonction dans la partition ou dans l'en-tête de l'orchestre.

L'opcode ftgenonce est semblable à ftgentmp et possède les mêmes arguments. Cependant, les tables de fonctions ne sont ni dupliquées ni effacées. Au lieu de cela, tous les arguments de l'opcode sont assemblés pour former une clé d'accès à une table qui pointe vers le numéro de la table de fonction. Ainsi, chaque invocation de ftgenonce avec les mêmes arguments reçoit la même instance des données de la table de fonction. Chaque changement de valeur d'un des arguments de ftgenonce provoque la création d'une nouvelle table de fonction.

Syntaxe

ifno ftgenonce ip1dummy, ip2dummy, isize, igen, iarga, iargb, ...

Initialisation

ifno -- un numéro de table automatiquement assigné.

ip1 -- le numéro de la table à générer ou 0 si le numéro doit être assigné.

ip2dummy -- ignoré.

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.

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

Exemples

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

Exemple 359. Exemple de l'opcode ftgenonce.

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

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

instr 1 
; Use ftgenonce instead of ftgen, ftgentmp, or f statement
iHz	= p4
isine	ftgenonce 0, 0, 1024, 10, 1 
aoscili	pluck .7, iHz, 100, isine, 1 
aadsr 	adsr 0.015, 0.07, 0.6, 0.3
asig 	= aoscili * aadsr
        outs asig, asig
endin 

</CsInstruments> 
<CsScore> 

i 1 0 1 220 
i 1 2 1 261 
e
</CsScore> 
</CsoundSynthesizer> 


Crédits

Auteur : Michael Gogins
2009