oscili
Prev | Orchestra Opcodes and Operators | Next

## oscili

oscili — A simple oscillator with linear interpolation.

## Description

Table ifn is incrementally sampled modulo the table length and the value obtained is multiplied by amp.

## Syntax

    ares oscili xamp, xcps, ifn [, iphs]

    kres oscili kamp, kcps, ifn [, iphs]

## Initialization

ifn -- function table number. Requires a wrap-around guard point.

iphs (optional) -- initial phase of sampling, expressed as a fraction of a cycle (0 to 1). A negative value will cause phase initialization to be skipped. The default value is 0.

## Performance

kamp, xamp -- amplitude

kcps, xcps -- frequency in cycles per second.

oscili differs from oscil in that the standard procedure of using a truncated phase as a sampling index is here replaced by a process that interpolates between two successive lookups. Interpolating generators will produce a noticeably cleaner output signal, but they may take as much as twice as long to run. Adequate accuracy can also be gained without the time cost of interpolation by using large stored function tables of 2K, 4K or 8K points if the space is available.

## Examples

Here is an example of the oscili opcode. It uses the files oscili.orc and oscili.sco.

Example 250. Example of the oscili opcode.

    /* oscili.orc */
    ; Initialize the global variables.
    sr = 44100
    kr = 4410
    ksmps = 10
    nchnls = 1

    ; Instrument #1 - a basic oscillator.
    instr 1
      kamp = 10000
      kcps = 220
      ifn = 1

      a1 oscil kamp, kcps, ifn
      out a1
    endin

    ; Instrument #2 - the basic oscillator with extra interpolation.
    instr 2
      kamp = 10000
      kcps = 220
      ifn = 1

      a1 oscili kamp, kcps, ifn
      out a1
    endin
    /* oscili.orc */

    /* oscili.sco */
    ; Table #1, a sine wave table with a small amount of data.
    f 1 0 32 10 0 1

    ; Play Instrument #1, the basic oscillator, for
    ; two seconds. This should sound relatively rough.
    i 1 0 2

    ; Play Instrument #2, the interpolated oscillator, for
    ; two seconds. This should sound relatively smooth.
    i 2 2 2
    e
    /* oscili.sco */

## See Also

oscil, oscil3

## Credits

Example written by Kevin Conder.

Prev | Up | Next
oscil3 | Home | oscilikt