A linearly interpolated oscillator that allows changing the table number at k-rate.
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.
Performance
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).
Examples
Here is an example of the oscilikt opcode. It uses the file oscilikt.csd.
<CsoundSynthesizer><CsOptions>; Select audio/midi flags here according to platform; Audio out Audio in No messages-odac-iadc-d;;;RT audio I/O; For Non-realtime ouput leave only the line below:; -o oscilikt.wav -W ;;; for file output any platform</CsOptions><CsInstruments>; Initialize the global variables.sr=44100kr=4410ksmps=10nchnls=1; Instrument #1.instr1; Generate a uni-polar (0-1) square wave.kamp1init1kcps1init2itype=3ksquarelfokamp1,kcps1,itype; Use the square wave to switch between Tables #1 and #2.kamp2init20000kcps2init220kfn=ksquare+1a1osciliktkamp2,kcps2,kfnouta1endin</CsInstruments><CsScore>; Table #1, a sine waveform.f1040961001; Table #2: a sawtooth wavef203-210-1; Play Instrument #1 for two seconds.i102</CsScore></CsoundSynthesizer>