ftgenonce — Génère une table de fonction depuis la définition d'un instrument, sans duplication de données.
Opcode du greffon signalflowgraph.
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.
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 | |
---|---|
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. |
Voici un exemple de l'opcode ftgenonce. Il utilise le fichier ftgenonce.csd.
Exemple 391. 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>