The Alternative Csound Reference Manual
Previous |  | Next

# linsegr

linsegr -- Trace a series of line segments between specified points including a release segment.

## Description

Trace a series of line segments between specified points including a release segment.

## Syntax

ar linsegr ia, idur1, ib [, idur2] [, ic] [...], irel, iz

kr linsegr ia, idur1, ib [, idur2] [, ic] [...], irel, iz

## Initialization

ia -- starting value. Zero is illegal for exponentials.

ib, ic, etc. -- value after dur1 seconds, etc. For exponentials, must be non-zero and must agree in sign with ia.

idur1 -- duration in seconds of first segment. A zero or negative value will cause all initialization to be skipped.

idur2, idur3, etc. -- duration in seconds of subsequent segments. A zero or negative value will terminate the initialization process with the preceding point, permitting the last-defined line or curve to be continued indefinitely in performance. The default is zero.

irel, iz -- duration in seconds and final value of a note releasing segment.

Please note that the release time cannot be longer than 32767/kr seconds.

## Performance

These units generate control or audio signals whose values can pass through 2 or more specified points. The sum of dur values may or may not equal the instrument's performance time: a shorter performance will truncate the specified pattern, while a longer one will cause the last-defined segment to continue on in the same direction.

linsegr is amongst the Csound "r" units that contain a note-off sensor and release time extender. When each senses an event termination or MIDI noteoff, it immediately extends the performance time of the current instrument by irel seconds, and sets out to reach the value iz by the end of that period (no matter which segment the unit is in). "r" units can also be modified by MIDI noteoff velocities. For two or more extenders in an instrument, extension is by the greatest period.

## Examples

Here is an example of the linsegr opcode. It uses the files linsegr.orc and linsegr.sco.

Example 1. Example of the linsegr opcode.

    /* linsegr.orc */
    ; Initialize the global variables.
    sr = 44100
    kr = 4410
    ksmps = 10
    nchnls = 1

    ; Instrument #1.
    instr 1
      ; p4 = frequency in pitch-class notation.
      kcps = cpspch(p4)

      ; Use an amplitude envelope with second-long release.
      kenv linsegr 1, p3, 0.25, 1, 0
      kamp = kenv * 30000

      a1 oscil kamp, kcps, 1
      out a1
    endin
    /* linsegr.orc */

    /* linsegr.sco */
    ; Table #1, a sine wave.
    f 1 0 16384 10 1

    ; Make sure the score lasts for four seconds.
    f 0 4

    ; p4 = frequency (in pitch-class notation).
    ; Play Instrument #1 for a half-second, p4=8.00
    i 1 0 0.5 8.00
    ; Play Instrument #1 for a half-second, p4=8.01
    i 1 1 0.5 8.01
    ; Play Instrument #1 for a half-second, p4=8.02
    i 1 2 0.5 8.02
    ; Play Instrument #1 for a half-second, p4=8.03
    i 1 3 0.5 8.03
    e
    /* linsegr.sco */

## See Also

expon, expseg, expsegr, line, linseg

## Credits

Author: Barry L. Vercoe

Example written by Kevin Conder.

December 2002. Thanks to Istvan Varga, added documentation about the maximum release time.

New in Csound 3.47

Previous | Home | Next
linseg | Up | locsend