interp
Converts a control signal to an audio signal using linear interpolation.
Syntax
Initialization
iskip (optional, default=0) -- if non zero
skips initialisation of internal save space (see reson).
imode (optional, default=0) -- sets the initial output value to the first k-rate input instead of zero. The following graphs show the output of interp with a constant input value, in the original, when skipping init, and in the new mode:
iskip=0, imode=0
| ________
| /
| /
| /
|/
-+------------
|
iskip=1, imode=0
(prev)
| __________
| /
|/
|
|
-+------------
|
iskip=0, imode=1
|____________
|
|
|
|
-+------------
|
ivalue (optional, default=0) -- initial value if both imode and iskip are zero.
ksig -- input k-rate signal.
interp converts a control signal to an audio signal. It uses linear interpolation between successive kvals.
Examples
Here is an example of the interp opcode. It uses the file interp.csd.
| Example of the interp opcode. |
|---|
| <CsoundSynthesizer>
<CsOptions>
; Select audio/midi flags here according to platform
; Audio out Audio in
-odac ;;;RT audio out
; For Non-realtime ouput leave only the line below:
; -o interp.wav -W ;;; for file output any platform
</CsOptions>
<CsInstruments>
sr = 44100
ksmps = 1024 ; very high, for demonstration purpose
nchnls = 2
0dbfs = 1
instr 1
kamp linseg 0, p3/2, .5, p3/2, 0 ; Create an amplitude envelope.
a1 oscil kamp, 440 ; The amplitude envelope will sound rough because it
outs a1, a1 ; jumps every ksmps period (1024)
endin
instr 2 ; a smoother sounding instrument.
kamp linseg 0, p3/2, .5, p3/2, 0 ; Create an amplitude envelope
aamp interp kamp ; The amplitude envelope will sound smoother due to
a1 oscil aamp, 440 ; linear interpolation at the higher a-rate
outs a1, a1
endin
</CsInstruments>
<CsScore>
i 1 0 2 ; sounds raw
i 2 3 2 ; sounds smooth
e
</CsScore>
</CsoundSynthesizer>
|
See also
Sample Level Operators
More information on this opcode: Csound Journal, issue10 - An Overview of Csound Variable Types, written by Andrés Cabrera
Credits
Updated November 2002, thanks to a note from both Rasmus Ekman and Istvan Varga.