!= — Détermine si une valeur n'est pas égale à l'autre.
(a != b ? v1 : v2)
où a, b, v1 et v2 peuvent être des expressions, mais a, b pas de taux audio.
Dans l'expression conditionnelle ci-dessus, a et b sont d'abord comparés. Si la relation indiquée est vraie (a n'est pas égal à b), alors l'expression conditionnelle prend la valeur de v1 ; si la relation est fausse, l'expression prend la valeur de v2.
Nota Bene : Si v1 ou v2 sont des expressions, elles seront évaluées avant que l'expression conditionnelle ne soit déterminée.
En termes de précédence, tous les opérateurs conditionnels (c-à-d. les opérateurs relationnels (<, etc.), et ?, et : ) sont plus faibles que les opérateurs arithmétiques et logiques (+, -, *, /, && et ||).
Ce sont des opérateurs pas des opcodes. C'est pourquoi on peut les utiliser dans les instructions de l'orchestre, mais ils ne forment pas des instructions complètes par eux-mêmes.
Voici un exemple de l'opérateur !=. Il utilise le fichier notequal.csd.
Exemple 8. Exemple de l'opérateur !=.
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 notequal.wav -W ;;; for file output any platform </CsOptions> <CsInstruments> sr = 44100 ksmps = 32 nchnls = 2 0dbfs = 1 instr 1 ipch = cpspch(p4) iprint = p5 if (iprint != 1) goto skipPrint print ipch asig vco .7, ipch, 2, 0.5, 1 outs asig, asig skipPrint: endin </CsInstruments> <CsScore> f 1 0 65536 10 1 ;sine wave i1 0 .5 8.00 0 i1 + .5 8.01 1 ; this note will print it's ipch value and only this one will be played i1 + .5 8.02 2 e </CsScore> </CsoundSynthesizer>
Sa sortie contiendra une ligne comme celle-ci :
instr 1: ipch = 277.167