-

- — Opérateur de soustraction.

Description

Les opérateurs arithmétiques réalisent les opérations de changement de signe (négation), de conservation de signe, le ET et le OU logiques, l'addition, la soustraction, la multiplication et la division. A noter qu'une valeur ou une expression peut se trouver entre deux de ces opérateurs, pour lesquels elle sera l'argument de gauche ou l'argument de droite comme dans

a + b * c.

Dans de tels cas trois règles s'appliquent :

1. * et / s'appliquent à leurs voisins plus fortement que + et −. Ainsi l'expression ci-dessus est interprétée comme

a + (b * c)

avec * s'appliquant à b et à c et ensuite + s'appliquant à a et à b * c.

2. + et sont prioritaires par rapport à &&, qui est lui-même prioritaire par rapport à ||:

a && b - c || d

est interprété comme

(a && (b - c)) || d

3. Lorsque deux opérateurs ont le même rang de priorité, les opérations s'enchaînent de gauche à droite :

a - b - c

est interprété comme

(a - b) - c

On peut utiliser des parenthèses comme ci-dessus pour forcer un groupement particulier.

Syntaxe

a  (pas de restriction de taux)
a  b  (pas de restriction de taux)

où les arguments a and b peuvent être des expressions.

Arguments

Les arguments de − peuvent être des valeurs scalaires ou des tableaux (vecteurs) unidimensionnels de taux-k, ou n'importe quelle combinaison des deux. Si l'un des arguments est un tableau, la valeur retournée le sera également.

Exemples

Voici un exemple de l'opérateur −. Il utilise le fichier subtracts.csd.

Exemple 25. 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
; Audio out   Audio in    No messages
-odac    ;;;realtime audio I/O
; For Non-realtime ouput leave only the line below:
; -o -.wav -W ;;; for file output any platform
</CsOptions>
<CsInstruments>

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

instr 1

idur = p3
iatt = p4
idec = p5
isus = p3-iatt-idec				;calculate sustain time from subtracting attack and decay
printf_i "sutain time= note duration - attack - decay --> %.1f-%.1f-%.1f = %.1f\n", 1, idur, iatt, idec, isus

kenv expseg 0.01, iatt, 1, isus, 1, idec, 0.01	;envelope
asig poscil 1*kenv, 200, 1
     outs asig, asig

endin
</CsInstruments>
<CsScore>
f 1 0 4096 10 1	;sine wave
;      attack decay
i 1 0 3 .1     .2
i 1 4 3 .5    1.5
i 1 8 5  4     .5

e
</CsScore>
</CsoundSynthesizer>


Sa sortie contiendra des lignes comme celles-ci :

sutain time= note duration - attack - decay --> 3.0-0.1-0.2 = 2.7
sutain time= note duration - attack - decay --> 3.0-0.5-1.5 = 1.0
sutain time= note duration - attack - decay --> 5.0-4.0-0.5 = 0.5

Voir aussi

+, &&, ||, *, /, ^, %

Crédits

L'arithmétique sur les vecteurs est nouvelle dans le version 6.00