osciliktp allows phase modulation (which is actually implemented as k-rate frequency modulation, by differentiating phase input). The disadvantage is that there is no amplitude control, and frequency can be varied only at the control-rate. This opcode can be faster or slower than oscilikt, depending on the control-rate.
ares -- audio-rate ouptut signal.
kcps -- 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).
kphs -- phase (k-rate), the expected range is 0 to 1. The absolute value of the difference of the current and previous value of kphs must be less than ksmps.
Here is an example of the osciliktp opcode. It uses the files osciliktp.orc and osciliktp.sco.
Example 253. Example of the osciliktp opcode.
/* osciliktp.orc */ ; Initialize the global variables. sr = 44100 kr = 4410 ksmps = 10 nchnls = 1 ; Instrument #1: osciliktp example instr 1 kphs line 0, p3, 4 a1x osciliktp 220.5, 1, 0 a1y osciliktp 220.5, 1, -kphs a1 = a1x - a1y out a1 * 14000 endin /* osciliktp.orc */
/* osciliktp.sco */ ; Table #1: Sawtooth wave f 1 0 3 -2 1 0 -1 ; Play Instrument #1 for four seconds. i 1 0 4 e /* osciliktp.sco */