#ifdef — Lecture de code conditionnelle.
Les macros sont des substitutions de texte qui sont faites dans l'orchestre lors de sa lecture. Le système de macro de l'orchestre de Csound est très simple, et il utilise les caractères # et $ pour définir et appeler les macros. Il permet d'économiser de la frappe et peut conduire à une structure cohérente dans un style consistant. Il est similaire, tout en étant indépendant, au système de macros du langage de partition.
Si une macro est définie alors #ifdef peut incorporer du texte dans un orchestre jusqu'au prochain #end.
Voici un exemple simple de cette insertion conditionnelle.
Exemple 12. Exemple simple de la forme #ifdef.
#define debug ## instr 1 #ifdef debug print "calling oscil" #end a1 oscil 32000,440,1 out a1 endin
Voici un autre exemple de l'insertion conditionnelle #ifdef. Il utilise le fichier ifdef.csd.
Exemple 13. Exemple détaillé de la forme #ifdef.
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 oscil.wav -W ;;; for file output any platform </CsOptions> <CsInstruments> sr = 44100 ksmps = 10 nchnls = 2 0dbfs = 1 ; Determines which instrument outputs debug statements with defines: ; Change which one is commented out to alter behavior before execution #define debug1 ## ; #define debug2 ## instr 1 iFreq = p4 ; Outputs text if debug1 is defined ; This one should print by default #ifdef debug1 prints "instr 1 debug called\n" #end a1 vco2 .25, iFreq outs a1, a1 endin instr 2 iFreq = p4 ; Outputs text if debug2 is defined ; This one should not print by default #ifdef debug2 prints "instr 2 debug called\n" #end a1 vco2 .25, iFreq outs a1, a1 endin </CsInstruments> <CsScore> i1 0 2 440 i2 0 2 660 </CsScore> </CsoundSynthesizer>