The Alternative Csound Reference Manual
Previous |  | Next

# loopseg

loopseg -- Generate control signal consisting of linear segments delimited by two or more specified points.

## Description

Generate control signal consisting of linear segments delimited by two or more specified points. The entire envelope is looped at kfreq rate. Each parameter can be varied at k-rate.

## Syntax

ksig loopseg kfreq, ktrig, ktime0, kvalue0 [, ktime1] [, kvalue1] [, ktime2] [, kvalue2] [...]

## Performance

ksig -- Output signal

kfreq -- Repeat rate in Hz or fraction of Hz

ktrig -- If non-zero, retriggers the envelope from start (see trigger opcode), before the envelope cycle is completed.

ktime0...ktimeN -- Times of points; expressed in fraction of a cycle.

kvalue0...kvalueN -- Values of points

loopseg opcode is similar to linseg, but the entire envelope is looped at kfreq rate. Notice that times are not expressed in seconds but in fraction of a cycle. Actually each duration represent is proportional to the other, and the entire cycle duration is proportional to the sum of all duration values.

The sum of all duration is then rescaled according to kfreq argument. For example, considering an envelope made up of 3 segments, each segment having 100 as duration value, their sum will be 300. This value represents the total duration of the envelope, and is actually divided into 3 equal parts, a part for each segment.

Actually, the real envelope duration in seconds is determined by kfreq. Again, if the envelope is made up of 3 segments, but this time the first and last segments have a duration of 50, whereas the central segment has a duration of 100 again, their sum will be 200. This time 200 represent the total duration of the 3 segments, so the central segment will be twice as long as the other segments.

All parameters can be varied at k-rate. Negative frequency values are allowed, reading the envelope backward. ktime0 should always be set to 0, except if the user wants some special effect.

## Examples

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

Example 1. Example of the loopseg opcode.

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

    ; Instrument #1
    instr 1
      kfreq line 1, p3, 20

      klp loopseg kfreq, 0, 0, 0, 0.5, 30000, 1, 0

      a1 oscil klp, 440, 1
      out a1
    endin
    /* loopseg.orc */

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

    ; Play Instrument #1 for five seconds.
    i 1 0 5
    e
    /* loopseg.sco */

## See Also

lpshold

## Credits

Author: Gabriel Maldonado

New in Version 4.13

Previous | Home | Next
logbtwo | Up | lorenz