^

^ — Opérateur d'élévation à une puissance.

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.

L'opérateur ^ élève a à la puissance b. b ne doit pas être de taux audio. A utiliser avec précaution car les règles de précédence peuvent ne pas fonctionner correctement. Voir pow. (Nouveau dans la version 3.493 de Csound.)

Syntaxe

a ^ b  (b pas de taux audio)

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

Exemples

Voici un exemple de l'opérateur ^. Il utilise le fichier raises.csd.

Exemple 30. 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 RT audio input is needed too
; For Non-realtime ouput leave only the line below:
;-o ^.wav        ; output to audio file
</CsOptions>
<CsInstruments>

sr = 44100
ksmps = 32
nchnls = 2
0dbfs  = 1
  
instr 1	; Lo-Fi sound

kpow	  = 10						;exponent
kbase	  line 1, p3, 2.2				;vary the base
kQuantize = kbase^kpow
kQuantize = kQuantize*0.5				;half the number of steps for each side of a bipolar signal
printk2	  kQuantize
asig	  diskin2 "fox.wav", 1, 0, 1			;loop the fox
asig	  = round(asig * kQuantize) / kQuantize		;quantize and scale audio signal
	  outs asig, asig  

endin
</CsInstruments>
<CsScore>

i1 0 19.2

e
</CsScore>
</CsoundSynthesizer>


Sa sortie contiendra des lignes comme celles-ci :

 i1     0.50000
 i1     0.50021
 i1     0.50042
......
 i1  1327.49320
 i1  1327.74465

Voir aussi

-, +, &&, ||, *, /, %