seqtime
Prev | Orchestra Opcodes and Operators | Next

## seqtime

seqtime — Generates a trigger signal according to the values stored in a table.

## Description

Generates a trigger signal according to the values stored in a table.

## Syntax

    ktrig_out seqtime ktime_unit, kstart, kloop, kinitndx, kfn_times

## Performance

ktrig_out -- output trigger signal

ktime_unit -- unit of measure of time, related to seconds.

kstart -- start index of looped section

kloop -- end index of looped section

kinitndx -- initial index

| Note
Although kinitndx is listed as k-rate, it is in fact accessed only at init-time. So if you are using a k-rate argument, it must be assigned with init.

kfn_times -- number of table containing a sequence of times

This opcode handles timed-sequences of groups of values stored into a table.

seqtime generates a trigger signal (a sequence of impulses, see also trigger opcode), according to the values stored in the kfn_times table. This table should contain a series of delta-times (i.e. times beetween to adjacent events). The time units stored into table are expressed in seconds, but can be rescaled by means of ktime_unit argument. The table can be filled with GEN02 or by means of an external text-file containing numbers, with GEN23.

| Note
Note that the kloop index marks the loop boundary and is NOT included in the looped elements. If you want to loop the first four elements, you would set kstart to 0 and kloop to 4.

It is possible to start the sequence from a value different than the first, by assigning to kinitndx an index different than zero (which corresponds to the first value of the table). Normally the sequence is looped, and the start and end of loop can be adjusted by modifying kstart and kloop arguments. User must be sure that values of these arguments (as well as kinitndx) correspond to valid table numbers, otherwise Csound will crash (because no range-checking is implementeted).

It is possible to disable loop (one-shot mode) by assigning the same value both to kstart and kloop arguments. In this case, the last read element will be the one corresponding to the value of such arguments. Table can be read backward by assigning a negative kloop value. It is possible to trigger two events almost at the same time (actually separated by a k-cycle) by giving a zero value to the corresponding delta-time. First element contained in the table should be zero, if the user intends to send a trigger impulse, it should come immediately after the orchestra instrument containing seqtime opcode.

## Examples

Here is an example of the seqtime opcode. It uses the file seqtime.csd.

Example 958. Example of the seqtime opcode.

See the sections Real-time Audio and Command Line Flags for more information on using command line flags.

    <CsoundSynthesizer>

    <CsOptions>
    ; Select audio/midi flags here according to platform
    ; Audio out   Audio in
    -odac           -iadc    ;;;RT audio I/O
    ; For Non-realtime ouput leave only the line below:
    ; -o seqtime.wav -W ;;; for file output any platform
    </CsOptions>

    <CsInstruments>

     sr = 44100
     ksmps = 64
     nchnls = 1

    ; By Tim Mortimer and Andres Cabrera 2007

    0dbfs = 1

    gisine         ftgen    0, 0, 8192, 10,    1
    ;;; table defining an integer pitch set
    gipset    ftgen     0, 0, 4, -2, 8.00, 8.04, 8.07, 8.10
    ;;;DELTA times for seqtime
    gidelta    ftgen    0, 0, 4, -2, .5, 1, .25, 1.25

      instr 1

    kndx init 0
    ktrigger init 0

    ktime_unit init 1
    kstart init p4
    kloop init p5
    kinitndx init 0
    kfn_times init gidelta

    ktrigger seqtime ktime_unit, kstart, kloop, kinitndx, kfn_times

    printk2 ktrigger

    if (ktrigger > 0) then
       kpitch table kndx, gipset
       event "i", 2, 0, 1, kpitch
       kndx = kndx + 1
       kndx = kndx % kloop
    endif

      endin

      instr 2
    icps = cpspch (p4)
    a1    buzz    1, icps, 7, gisine
    aamp expseg    0.00003,.02,1,p3-.02,0.00003

    a1 = a1 * aamp * 0.5

    out a1
      endin

    </CsInstruments>

    <CsScore>
    ;      start    dur   kstart  kloop
    i 1	0	7	0	4
    i 1	8	10	0	3
    i 1	19	10	4	4

    </CsScore>

    </CsoundSynthesizer>

## See also

Sensing and Control: Tempo and Sequencing

## Credits

Author: Gabriel Maldonado

November 2002. Added a note about the kinitndx parameter, thanks to Rasmus Ekman.

New in version 4.06

Example by: Tim Mortimer and Andres Cabrera 2007

Prev | Up | Next
seqtime2 | Home | setcol