foscili
Prev | Orchestra Opcodes and Operators | Next

## foscili

foscili — Basic frequency modulated oscillator with linear interpolation.

## Description

Basic frequency modulated oscillator with linear interpolation.

## Syntax

    ares foscili xamp, kcps, xcar, xmod, kndx, ifn [, iphs]

## Initialization

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

iphs (optional, default=0) -- initial phase of waveform in table ifn, 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

xamp -- the amplitude of the output signal.

kcps -- the frequency of the output signal measured in cycles per second.

xcar -- the carrier frequency.

xmod -- the modulating frequency.

kndx -- the modulation index.

foscili differs from foscil 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 foscili opcode. It uses the files foscili.orc and foscili.sco.

Example 156. Example of the foscili opcode.

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

    ; Instrument #1 - a basic FM waveform.
    instr 1
      kamp = 10000
      kcps = 440
      kcar = 600
      kmod = 210
      kndx = 2
      ifn = 1

      a1 foscil kamp, kcps, kcar, kmod, kndx, ifn
      out a1
    endin

    ; Instrument #2 - the basic FM waveform with extra interpolation.
    instr 2
      kamp = 10000
      kcps = 440
      kcar = 600
      kmod = 210
      kndx = 2
      ifn = 1

      a1 foscili kamp, kcps, kcar, kmod, kndx, ifn
      out a1
    endin
    /* foscili.orc */

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

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

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

## Credits

Example written by Kevin Conder.

Prev | Up | Next
foscil | Home | fout