oscilikt — 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.
ares oscilikt xamp, xcps, kfn [, iphs] [, istor]
kres oscilikt kamp, kcps, kfn [, iphs] [, istor]
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 file oscilikt.csd.
Example 294. Example of the oscilikt opcode.
See the sections Real-time Audio and Command Line Flags for more information on using command line flags.
<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 = 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 </CsInstruments> <CsScore> ; 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 </CsScore> </CsoundSynthesizer>