bpf

bpf — Fonction à points charnière avec interpolation linéaire.

Description

Opcode de greffon dans emugens.

Fonction à points charnière avec interpolation linéaire.

Syntaxe

ky bpf kx, kx1, ky1, kx2, ..., kxn, kyn
iy bpf ix, ix1, iy1, ix2, ..., ixn, iyn
kys[] bpf kxs[], kx1, ky1, kx2, ..., kxn, kyn
iys[] bpf ixs[], ix1, iy1, ix2, ..., ixn, iyn

Exécution

kx -- Valeur d'entrée.

kxn, kyn -- Définit un point charnière. Peut changer au taux-k, mais tous les kxs doivent être ordonnés.

Les points (kx1, ky1), (kx2, ky2), etc, définissent une fonction interpolée linéairement. Cette fonction est évaluée au point kx. Cette fonction s'étend à la fois vers -inf et +inf, si bien que si kx < kx1 alors ky = ky1 et pareillement à l'autre extrémité.

Les lignes suivantes sont équivalentes :

      ky bpf kx, 0, 0, 0.5, 10, 1.02, 200

      itab ftgenonce 0, 0, -27, 0, 0, 50, 10, 102, 200
      ky = tablei(limit(kx, 0, 1.02)*100, itab)
    
[Note] Note

Les valeurs x doivent être ordonnées. Les valeurs x et y peuvent changer mais les valeurs x doivent rester ordonnées.

Exemples

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

Exemple 99. Exemple de l'opcode bpf.

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

; Example for opcode bpf

/*

  bpf stands for Break Point Function

  Given an x value and a series of pairs (x, y), it returns
  the corresponding y value in the linear curve defined by the
  pairs

  It works both at i- and k- time

  ky    bpf kx,    kx0, ky0, kx1, ky1, kx2, ky2, ...
  kys[] bpf kxs[], kx0, ky0, kx1, ky1, kx2, ky2, ...

  NB: x values must be ordered (kx0 < kx1 < kx2 etc)

  See also: bpfcos, linlin, lincos
    
*/
  
ksmps = 64
nchnls = 2

instr 1
  kx line -1, p3, 2.5
  ky bpf kx,        \
         0,    0,   \
         1.01, 10,  \
         2,    0.5, \
         2.5,  -1
  printks "kx: %f   ky: %f \n", 0.1, kx, ky
endin

instr 2
  ; test i-time
  ix = 1.2
  iy bpf ix, 0,0, 0.5,5, 1,10, 1.5,15, 2,20, 2.5,25, 3,30
  print iy
  turnoff
endin

instr 3
  ; bpf also works with arrays
  kx[] fillarray 0, 0.15, 0.25, 0.35, 0.45, 0.55, 0.6
  ky[] bpf kx, 0,0, 0.1,10, 0.2,20, 0.3,30, 0.4,40, 0.5,50
  printarray ky, 1, "", "ky="
  turnoff
endin
    
</CsInstruments>
<CsScore>
i 1 1 3 
i 2 0 -1
i 3 0 -1

</CsScore>
</CsoundSynthesizer>


Voir aussi

bpfcos, linlin xyscale, scale, ntrpol,

Crédits

Auteur : Eduardo Moguillansky 2017