!
Précédent | Opcodes et opérateurs de l'orchestre | Suivant

## !

! — Opérateur NON logique.

## Description

Les opérateurs arithmétiques réalisent les opérations de changement de signe (négation), de signe inchangé, ET logique, OU logique, addition, soustraction, multiplication et division. Notez qu'une valeur ou une expression peut être placée entre deux de ces opérateurs, lesquels peuvent la prendre comme opérande de gauche ou de droite, comme dans

a + b * c.

Trois règles s'appliquent dans de tels cas :

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

a + (b * c)

avec * prenant b et c puis + prenant a et b * c.

2. + et − sont prioritaires sur &&, qui devance lui-même || :

a && b - c || d

est interprété comme

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

3. Quand deux opérateurs sont d'égale importance, les opérations ont lieu de gauche à droite :

a - b - c

est interprété comme

(a - b) - c

On peut utiliser des parenthèses pour forcer un groupement particulier.

## Syntaxe

    ! a  (NON logique ; pas de taux audio)

où l'argument a peuvent être une expression.

## Exemples

Voici un exemple de l'opérateur NON logique. Il utilise le fichier opnot.csd.

Exemple 32. Exemple de l'opcode opnot.

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 opand.wav -W ;;; for file output any platform
    </CsOptions>
    <CsInstruments>

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

    instr 1

    kval    randomh 0, 1.2, 20		;choose between 0 and 1.2
    if !(kval >0 && kval<=.5) then		;3 possible outcomes
    	kval = 1
    elseif !(kval >.5 && kval<=1) then
    	kval =2
    elseif !(kval >1) then
    	kval =3
    endif

    printk2 kval				;print value when it changes
    asig    poscil .7, 440*kval, 1
            outs asig, asig

    endin
    </CsInstruments>
    <CsScore>
    f1 0 16384 10 1

    i 1 0 5
    e
    </CsScore>
    </CsoundSynthesizer>

Sa sortie contiendra des lignes comme celles-ci :

     i1     1.00000
     i1     2.00000
     i1     1.00000
     i1     2.00000
     i1     1.00000
     i1     2.00000
     i1     1.00000
    .....

## Voir aussi

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

Précédent | Niveau supérieur | Suivant
|| | Sommaire | 0dbfs