bpfcos
Prev | Orchestra Opcodes and Operators | Next

## bpfcos

bpfcos — Break point function with cosine (easy-in/easy-out) interpolation

## Description

Plugin opcode in emugens.

Break-point function with cosine interpolation. Given an x value and a series of pairs (x, y), it returns the corresponding y value in the half cosine curve defined by the pairs. It works both at i- and k- time

## Syntax

    ky bpfcos kx, kx1, ky1, kx2, ..., kxn, kyn

    kys[] bpfcos kxs[], kx1, ky1, kx2, ..., kxn, kyn

## Performance

kx -- Input value. Can also be an array

kxn, kyn -- Defines a breakpoint. Can be changed at krate, but all kxs must be sorted

The points (kx1, ky1), (kx2, ky2), etc, define a cosine interpolated function. This function is evaluated at point kx. This function extends to both -inf and +inf, so if kx < kx1 then ky = ky1 and the same holds true the other end.

| Note
x values need to be sorted. Both x and y values can change but x values must stay sorted.

## Examples

Here is an example of the bpfcos opcode. It uses the file bpfcos.csd.

Example 100. Example of the bpfcos opcode.

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

    ; Example for opcode bpfcos

    /*

      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 half cosine curve defined by the
      pairs

      It works both at i- and k- time

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

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

      See also: bpf, linlin, lincos

    */

    ksmps = 64
    nchnls = 1
    0dbfs = 1

    instr 1
      kx line -1, p3, 2.5
      ky bpfcos 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 bpfcos ix, 0,0, 0.5,5, 1,10, 1.5,15, 2,20, 2.5,25, 3,30
      print iy
      turnoff
    endin

    instr 3
      ; bpfcos also works with arrays
      kx[] fillarray 0, 0.15, 0.25, 0.35, 0.45, 0.55, 0.6
      ky[] bpfcos kx, 0,0, 0.1,10, 0.2,20, 0.3,30, 0.4,40, 0.5,50
      printarray ky, 1, "", "ky="
      turnoff
    endin

    instr 4
      kpitch bpfcos timeinsts(), 0, 60, 2, 61, 3, 65, 3.5, 60
      a0 oscili 0.5, mtof(kpitch)
      kenv0 linseg 0, 0.5, 1, p3-1, 1, 0.5, 0
      kenv bpfcos kenv0, 0, 0, 0.5, 0.25, 1, 0.7
      a0 *= interp(kenv)
      outch 1, a0
    endin

        </CsInstruments>
    <CsScore>
    i 1 1 3
    i 2 0 -1
    i 3 0 -1
    i 4 0 5

    </CsScore>
    </CsoundSynthesizer>

## See Also

bpf, lincos, cosseg linlin, scale, ntrpol, xyscale

## Credits

By: Eduardo Moguillansky 2018

New plugin in version 6.12

Prev | Up | Next
bpf | Home | bqrez