irise -- rise time in seconds. A zero or negative value signifies no rise modification.
idec -- decay time in seconds. Zero means no decay.
iatdec -- attenuation factor by which the closing steady state value is reduced exponentially over the decay period. This value must be positive and is normally of the order of .01. A large or excessively small value is apt to produce a cutoff which is audible. A zero or negative value is illegal.
Performance
kamp, xamp -- input amplitude signal.
linenr is unique within Csound in containing a note-off sensor and release time extender. When it senses either a score event termination or a MIDI noteoff, it will immediately extend the performance time of the current instrument by idec seconds, then execute an exponential decay towards the factor iatdec. For two or more units in an instrument, extension is by the greatest idec.
You can use other pre-made envelopes which start a release segment upon receiving a note off message, like linsegr and expsegr, or you can construct more complex envelopes using xtratim and release. Note that you don't need to use xtratim if you are using linenr, since the time is extended automatically.
These “r” units can also be modified by MIDI noteoff velocities (see veloffs).
Examples
Here is an example of the linenr opcode. It uses the file linenr.csd.
<CsoundSynthesizer><CsOptions>; Select audio/midi flags here according to platform; Audio out Audio in-odac -iadc -M0 ;;;RT audio I/O with MIDI in</CsOptions><CsInstruments>; Example by Jonathan Murphy and Charles Gran 2007sr=44100ksmps=10nchnls=2; new, and important. Make sure that midi note events are only; received by instruments that actually need them.; turn default midi routing offmassign0,0; route note events on channel 1 to instr 1massign1,1; Define your midi controllers#defineC1#21##defineC2#22##defineC3#23#; Initialize MIDI controllersinitc71,21,0.5;delay sendinitc71,22,0.5;delay: time to zeroinitc71,23,0.5;delay: rate gaoscinit0; Define an opcode to "smooth" the MIDI controller signalopcodesmooth,k,kkinxinkportlinseg0,0.0001,0.01,1,0.01kinportkkin,kportxoutkinendopinstr1; Generate a sine wave at the frequency of the MIDI note that triggered the intrumentifqccpsmidiiampampmidi10000aenvlinenriamp,.01,.1,.01;envelopea1oscilaenv,ifqc,1; All sound goes to the global variable gaoscgaosc=gaosc+a1endininstr198; ECHOkcmbsndctrl71,21,0,1;delay sendktimectrl71,22,0.01,6;time loop fades outkloopctrl71,23,0.01,1;loop speed; Receive MIDI controller values and then smooth themkcmbsndsmoothkcmbsndktimesmoothktimekloopsmoothkloopimaxlpt=1;max loop time; Create a variable reverberation (delay) of the gaosc signalacombvcombgaosc,ktime,kloop,imaxlpt,1aout=(acomb*kcmbsnd)+gaosc*(1-kcmbsnd)outsaout,aoutgaosc=0endin</CsInstruments><CsScore>f1016384101i198010000e</CsScore></CsoundSynthesizer>