GEN11
Prev | GEN Routines | Next

## GEN11

GEN11 — Generates an additive set of cosine partials.

## Description

This subroutine generates an additive set of cosine partials, in the manner of Csound generators buzz and gbuzz.

## Syntax

    f # time size 11 nh [lh] [r]

## Initialization

size -- number of points in the table. Must be a power of 2 or power-of-2 plus 1 (see f statement).

nh -- number of harmonics requested. Must be positive.

lh(optional) -- lowest harmonic partial present. Can be positive, zero or negative. The set of partials can begin at any partial number and proceeds upwards; if lh is negative, all partials below zero will reflect in zero to produce positive partials without phase change (since cosine is an even function), and will add constructively to any positive partials in the set. The default value is 1

r(optional) -- multiplier in an amplitude coefficient series. This is a power series: if the lhth partial has a strength coefficient of A the (lh + n)th partial will have a coefficient of A * rn, i.e. strength values trace an exponential curve. r may be positive, zero or negative, and is not restricted to integers. The default value is 1.

| Note
This subroutine is a non-time-varying version of the CSound buzzand gbuzz generators, and is similarly useful as a complex sound source in subtractive synthesis. With lh and r present it parallels gbuzz; with both absent or equal to 1 it reduces to the simpler buzz (i.e. nh equal-strength harmonic partials beginning with the fundamental). Sampling the stored waveform with an oscillator is more efficient than using the dynamic buzz units. However, the spectral content is invariant and care is necessary, lest the higher partials exceed the Nyquist during sampling to produce fold-over.

## Examples

Here is a simple example of the GEN11 routine. It uses the files gen11.orc and gen11.sco. It will generate a simple cosine wave. Here is its diagram:

Diagram of the waveform generated by GEN11.

Example 13. A simple example of the GEN11 routine.

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

    ; Instrument #1.
    instr 1
      kamp = 30000
      kcps = 440
      ifn = 1

      ; Play the cosine wave stored in Table #1.
      a1 oscil kamp, kcps, ifn
      out a1
    endin
    /* gen11.orc */

    /* gen11.sco */
    ; Table #1: a simple cosine wave (using GEN11).
    f 1 0 16384 11 1 1

    ; Play Instrument #1 for 2 seconds.
    i 1 0 2
    e
    /* gen11.sco */

## See Also

GEN10

## Credits

Example written by Kevin Conder

Prev | Up | Next
GEN10 | Home | GEN12