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

## cmp

cmp — Compare des signaux audio ou des tableaux.

## Description

Opcode du greffon emugens.

Compare des signaux audio ou des tableaux, échantillon par échantillon ou valeur par valeur. Toutes les comparaisons sont possibles : `< `<=, >, >=, ==, !=.

Un signal audio peut être comparé à un autre signal audio, ou à un scalaire (valeur de taux-i ou -k).

            aout cmp aL, ">", aR
            aOut cmp aIn, ">=", 0.5
            aOut cmp aIn, "`<=", kthreshold

Un tableau peut être comparé à un autre tableau, à un scalaire, ou testé s'il appartient à un intervalle entre deux scalaires. Toutes ces opérations sont valables pour les tableaux-i et -k.

            kOut[] cmp kIn[], ">=", kx
            kOut[] cmp kA[], "==", kB[]
            kOut[] cmp 0.5, "`<", kIn[], "`<=", 1

## Syntaxe

    aout cmp a1, S_operator, a2

    aout cmp a1, S_operator, kb

    kOut[] cmp kA[], S_operator, kb

    kOut[] cmp kA[], S_operator, kB[]

    kOut[] cmp k1, S_operator1, kIn[], S_operator2, k2

## Initialisation

S_operator -- un opérateur mathématique parmi ">", ">=", "<", "<=", "=="

## Exécution

a1 / a2 -- Signaux en entrée.

kb / ib -- Terme scalaire.

kA[] / kB[] -- Tableaux en entrée.

Quelques exemples d'utilisation :

            aout cmp aL, ">", aR     ; aout = aL > aR pour chaque échantillon
            aout cmp aL, ">=", aR
            aout cmp aL, "`<", aR
            aout cmp aL, "`<=", aR
            aout cmp aL, "==", aR
            kOut[] cmp kA, ">=", kb   ; kA est un tableau

## Exemples

Voici un exemple de l'opcode cmp. Il utilise le fichier cmp.csd.

Exemple 145. Exemple de l'opcode cmp.

    <CsoundSynthesizer>
    <CsOptions>
    </CsOptions>
    <CsInstruments>

    sr = 44100
    ksmps = 128
    nchnls = 5
    0dbfs = 1.0

    ; this is the example file for 'cmp'

    /*

    cmp

    compare audio or arrays, value by value

    Audio:
      * compare audio signals, sample by sample, against another signal or scalar
      * compara audio singal, sample by sample, within a range:
        aout cmp klo, "<", ain, "<=", khi

    Arrays:
      * compare arrays value by value or against a scalar
      * compare array value by value within a range:
        kout[] = klo < kin[] <= khi   ->   kout[] cmp klo, "<", kin[], "<=", khi

    aout cmp a1, Sop, a2                 : aout cmp ain, "<", acmp
    aout cmp a1, Sop, kval               : aout cmp ain, ">=", 0.1
    kout[] cmp k1[], Sop, k2[]           : kout[] cmp kxs, "<", kys
    iout[] cmp i1[], Sop, i2[]           : iout[] cmp ixs, "<", iys
    kout[] cmp k1[], Sop, k              : kout[] cmp kxs, "<", 0.5
    iout[] cmp i1[], Sop, i              : iout[] cmp ixs, "<", 0.5
    kout[] cmp klo, Sop, kx[], Sop, khi  : kout[] cmp 0, "<", kxs, "<=", 1
    iout[] cmp ilo, Sop, ix[], Sop, ihi  : iout[] cmp 0, "<", ixs, "<=", 1

    TODO: implement array operations for multidim. arrays
          (at the time, array operations work only for 1D-arrays)

    */

    ; for audio operations, render this to a soundfile and open in an editor
    ; to check the results

    instr 1
      a0 linseg 0, p3, 1
      a1 linseg 1, p3, 0
      aout1 cmp a0, "<", a1
      aout2 cmp a0, "<=", 0.5
      aout3 cmp a0, ">", 0.5
      outch 1, a0
      outch 2, a1
      outch 3, aout1
      outch 4, aout2
      outch 5, aout3
    endin

    instr 4
      ; cmp with arrays
      ixs[] fillarray 0, 1, 2, 3, 4, 5
      iys[] cmp ixs, ">=", 3
      printarray iys, "", "instr 4, iys"

      kxs[] fillarray 0, 1, 2, 3, 4, 5
      kys[] cmp kxs, ">=", 3
      printarray kys, 1, "", "instr 4, kys"
      turnoff
    endin

    instr 5
      ; range
      ixs[] fillarray 0, 1, 2, 3, 4, 5
      iys[] cmp 1, "<", ixs, "<=", 4
      printarray iys, "", "instr 5, iys"

      kxs[] fillarray 0, 1, 2, 3, 4, 5
      kys[] cmp 1, "<", kxs, "<=", 4
      printarray kys, 1, "", "instr 5, kys"
      turnoff
    endin

    </CsInstruments>
    <CsScore>
    i 1 0 2
    i 4 0 1
    i 5 0 1
    </CsScore>
    </CsoundSynthesizer>

## Voir aussi

max, min.

## Crédits

Par : Eduardo Moguillansky 2017

Précédent | Niveau supérieur | Suivant
clockon | Sommaire | cmplxprod