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

## xyscale

xyscale — Interpolation linéaire 2D.

## Description

Opcode du greffon emugens.

Interpolation linéaire 2D entre quatre points à (0,0), (1,0), (0,1) et (1,1)

## Syntaxe

    kout xyscale kx, ky, k00, k10, k01, k11

## Exécution

kx, ky -- Coordonnées pour évaluer l'interpolation. Valeurs entre 0 et 1, où :

k00 -- valeur du point de coordonnées (x=0, y=0)

k10 -- valeur du point de coordonnées (x=1, y=0)

k01 -- valeur du point de coordonnées (x=0, y=1)

k11 -- valeur du point de coordonnées (x=1, y=1)

          (0,1)      (1,1)

          (0,0)      (1,0)

Etant données quatre valeurs placées aux sommets d'un carré, la valeur interpolée au point (x, y) est trouvée, où x et y sont compris entre 0 et 1.

## Examples

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

Exemple 1226. Exemple de l'opcode xyscale.

    <CsoundSynthesizer>
    <CsOptions>
    ; Select audio/midi flags here according to platform
    -odac     ;;;RT audio out
    ;-iadc    ;;;uncomment -iadc if RT audio input is needed too
    ; For Non-realtime ouput leave only the line below:
    ; -o xyscale.wav -W ;;; for file output any platform

    ; By Stefano Cucchi 2020

    </CsOptions>
    <CsInstruments>

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

    instr 1
    ; In the instr 1  using f1 and f2 you reach the 4 corners (values)
    k00 = p4
    k10 = p5
    k01 = p6
    k11 = p7

    kx oscil 1, p8, p9
    ky oscil 1, p10, p11

    kout1 xyscale kx, ky, k00, k10, k01, k11
    kout2 xyscale kx, ky, k00*3/2, k10*4/3, k01*5/4, k11*6/5

    a1 buzz 0.2, kout1, 8, 3
    a2 buzz 0.2, kout2, 4, 3

    outs a1, a2

    endin

    instr 2
    ; In the instr 2 setting the first value to 0 or 1 (p8 & p9) you can start from the corner  (value) you want

    k00 = p4
    k10 = p5
    k01 = p6
    k11 = p7

    kx randomh 0, 1, 2, 2, p8 ; p8 is the X starting value
    ky randomh 0, 1, 2, 2, p9 ; p9 is the Y starting value

    kout1 xyscale kx, ky, k00, k10, k01, k11
    kout2 xyscale kx, ky, k00*3/2, k10*4/3, k01*5/4, k11*6/5

    a1 buzz 0.2, kout1, 8, 3
    a2 buzz 0.2, kout2, 4, 3

    outs a1, a2

    endin

    </CsInstruments>
    <CsScore>

    f1 0 1024 -7 0 400 0 100 1 400 1 124 0
    f2 0 1024 -7 0 200 0 100 1 400 1 100 0 224 1
    f3 0 1024 10 1

    i1 0 10 300 400 500 600 0.3 1 0.2 2
    i2 10 10 300 410 520 630 0 0

    e

    </CsScore>
    </CsoundSynthesizer>

Voici un autre exemple de l'opcode xyscale. Il utilise le fichier xyscale-FLTK.csd.

Exemple 1227. Exemple avancé de l'opcode xyscale.

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           -iadc     -d     ;;;RT audio I/O
    </CsOptions>
    <CsInstruments>

    ksmps=128
    nchnls=2

    giwidth = 400
    giheight = 300
    FLpanel "FLmouse", giwidth, giheight, 10, 10
    FLpanelEnd

    FLrun

    0dbfs = 1

    instr 1
      ; We define four chords for bottom-left, bottom-right, top-left and top-right
      ; Use the mouse to interpolate between them
      ibl[] fillarray ntom:i("4C"), ntom:i("4Eb"), ntom:i("4G")
      itl[] fillarray ntom:i("4E"), ntom:i("4G#"), ntom:i("4B")
      ibr[] fillarray ntom:i("4G"), ntom:i("4A"), ntom:i("4B")
      itr[] fillarray ntom:i("4Eb"), ntom:i("4Eb+"), ntom:i("4F")

      kmousex, kmousey, kb1, kb2, kb3    FLmouse 2
      kx = limit(kmousex/giwidth, 0, 1)
      ky = 1 - limit(kmousey/giheight, 0, 1)

      printf "x: %f   y: %f \n", changed(kx, ky), kx, ky

      iamp = 0.1
      a0 oscili iamp, mtof(xyscale(kx, ky, ibl[0], itl[0], ibr[0], itr[0]))
      a1 oscili iamp, mtof(xyscale(kx, ky, ibl[1], itl[1], ibr[1], itr[1]))
      a2 oscili iamp, mtof(xyscale(kx, ky, ibl[2], itl[2], ibr[2], itr[2]))
      aout = sum(a0, a1, a2)
      outs aout, aout
    endin

    </CsInstruments>
    <CsScore>
    i 1 0 120

    </CsScore>
    </CsoundSynthesizer>

## Voir aussi

scale, ntrpol, linlin

## Crédits

Par : Eduardo Moguillansky 2017

Précédent | Niveau supérieur | Suivant
xyin | Sommaire | zacl