limit
Sets the lower and upper limits of the value it processes.
Syntax
ares limit asig, klow, khigh
ires limit isig, ilow, ihigh
kres limit ksig, klow, khigh
ires[] limit isig[], ilow, ihigh
kres[] limit ksig[], klow, khigh
Initialization
isig -- input signal
ilow -- low threshold
ihigh -- high threshold
xsig -- input signal
klow -- low threshold
khigh -- high threshold
limit sets the lower and upper limits on the xsig value it processes. If xhigh is lower than xlow, then the output will be the average of the two - it will not be affected by xsig.
This opcode is useful in several situations, such as table indexing or for clipping and modeling a-rate, i-rate or k-rate signals.
Examples
Here is an example of the limit opcode. It uses the file limit.csd.
Example of the limit opcode. |
---|
| <CsoundSynthesizer>
<CsOptions>
; Select audio/midi flags here according to platform
-odac ;;;realtime audio out
;-iadc ;;;uncomment -iadc if realtime audio input is needed too
; For Non-realtime ouput leave only the line below:
; -o limit.wav -W ;;; for file output any platform
</CsOptions>
<CsInstruments>
sr = 44100
ksmps = 32
0dbfs = 1
nchnls = 2
instr 1 ; Limit / Mirror / Wrap
igain = p4 ;gain
ilevl1 = p5 ; + level
ilevl2 = p6 ; - level
imode = p7 ;1 = limit, 2 = mirror, 3 = wrap
ain soundin "fox.wav"
ain = ain*igain
if imode = 1 goto limit
if imode = 2 goto mirror
asig wrap ain, ilevl2, ilevl1
goto outsignal
limit:
asig limit ain, ilevl2, ilevl1
goto outsignal
mirror:
asig mirror ain, ilevl2, ilevl1
outsignal:
outs asig*.5, asig*.5 ;mind your speakers
endin
</CsInstruments>
<CsScore>
; Gain +Levl -Levl Mode
i1 0 3 4.00 .25 -1.00 1 ;limit
i1 4 3 4.00 .25 -1.00 2 ;mirror
i1 8 3 4.00 .25 -1.00 3 ;wrap
e
</CsScore>
</CsoundSynthesizer>
|
See also
Signal Limiters
Array opcodes
Credits
Author: Robin Whittle
Australia
New in Csound version 3.46