kr phasorbnk kcps, kndx, icnt[, iphs] ar phasorbnk xcps, kndx, icnt[, iphs]
Produce an arbitrary number of normalized moving phase values, accessable by an index.
icnt - maximum number of phasors to be used.
iphs - initial phase, expressed as a fraction of a cycle (0 to 1). If -1 initialization is skipped. If iphas>1 each phasor will be initialized with a random value.
kndx - index value to access individual phasors
For each independent phasor, an internal phase is successively accumulated in accordance with the kcps or xcps frequency to produce a moving phase value, normalized to lie in the range 0 <= phs < 1. Each individual phasor is accessed by index kndx.
This phasor bank can be used inside a k-rate loop to generate multiple independent voices, or together with the adsynt opcode to change parameters in the tables used by adsynt.
Generate multiple voices with independent partials. This example is better with adsynt. See also the example under adsynt, for k-rate use of phasorbnk.
giwave ftgen 1, 0, 1024, 10, 1 ; generate a sinewave table instr 1 icnt = 10 ; generate 10 voices asum = 0 ; empty output buffer kindex = 0 ; reset loop index loop: ; loop executed every k-cycle kcps = (kindex+1)*100 + 30 ; non-harmonic partials aphas phasorbnk kcps, kindex, icnt ; get phase for each voice asig table aphas, giwave, 1 ; and read wave from table asum = asum + asig ; accumulate output kindex = kindex + 1 if (kindex < icnt) kgoto loop ; do loop out asum*3000 endin
Peter Neubäcker
Munich, Germany
August, 1999
New in Csound version 3.58