oscilikt is very similar to oscili, but allows changing the table number at k-rate. It is slightly slower than oscili (especially with high control rate), although also more accurate as it uses a 31-bit phase accumulator, as opposed to the 24-bit one used by oscili.
iphs (optional, defaults to 0) -- initial phase in the range 0 to 1. Other values are wrapped to the allowed range.
istor (optional, defaults to 0) -- skip initialization.
kamp, xamp -- amplitude.
kcps, xcps -- frequency in Hz. Zero and negative values are allowed. However, the absolute value must be less than sr (and recommended to be less than sr/2).
kfn -- function table number. Can be varied at control rate (useful to "morph" waveforms, or select from a set of band-limited tables generated by GEN30).
Here is an example of the oscilikt opcode. It uses the files oscilikt.orc and oscilikt.sco.
Example 1. Example of the oscilikt opcode.
/* oscilikt.orc */
/* Written by Kevin Conder */
; Initialize the global variables.
sr = 44100
kr = 4410
ksmps = 10
nchnls = 1
; Instrument #1.
instr 1
; Generate a uni-polar (0-1) square wave.
kamp1 init 1
kcps1 init 2
itype = 3
ksquare lfo kamp1, kcps1, itype
; Use the square wave to switch between Tables #1 and #2.
kamp2 init 20000
kcps2 init 220
kfn = ksquare + 1
a1 oscilikt kamp2, kcps2, kfn
out a1
endin
/* oscilikt.orc */
/* oscilikt.sco */
/* Written by Kevin Conder */
; Table #1, a sine waveform.
f 1 0 4096 10 0 1
; Table #2: a sawtooth wave
f 2 0 3 -2 1 0 -1
; Play Instrument #1 for two seconds.
i 1 0 2
/* oscilikt.sco */