ifnout - number of table hosting output vectorial signal
ifn1 - starting vector
ifn2,ifn3,etc. - vector after idurx seconds
idur1 - duration in seconds of first segment.
dur2, idur3, etc. - duration in seconds of subsequent segments.
ielements - number of elements of vectors.
These opcodes are similar to linseg and expseg, but operate with vectorial signals instead of with scalar signals.
Output is a vectorial control signal hosted by ifnout (that must be previously allocated), while each break-point of the envelope is actually a vector of values. All break-points must contain the same number of elements (ielements).
All these operators are designed to be used together with other opcodes that operate with vectorial signals such as bmscan, vcella, adsynt, adsynt2 etc.
Here is an example of the vexpseg opcode. It uses the files vexpseg.csd.
Example 407. Example of the vexpseg opcode.
<CsoundSynthesizer>
<CsOptions>
-odac -B441 -b441
</CsOptions>
<CsInstruments>
sr=44100
ksmps=10
nchnls=2
gilen init 32
gitable1 ftgen 0, 0, gilen, 10, 1
gitable2 ftgen 0, 0, gilen, 10, 1
gitable3 ftgen 0, 0, gilen, -7, 30, gilen, 35
gitable4 ftgen 0, 0, gilen, -7, 400, gilen, 450
gitable5 ftgen 0, 0, gilen, -7, 5000, gilen, 5500
instr 1
vcopy gitable2, gitable1, gilen
turnoff
endin
instr 2
vexpseg gitable2, 16, gitable3, 2, gitable4, 2, gitable5
endin
instr 3
kcount init 0
if kcount < 16 then
kval table kcount, gitable2
printk 0,kval
kcount = kcount +1
else
turnoff
endif
endin
</CsInstruments>
<CsScore>
i1 0 1
s
i2 0 10
i3 0 1
i3 1 1
i3 1.5 1
i3 2 1
i3 2.5 1
i3 3 1
i3 3.5 1
i3 4 1
i3 4.5 1
</CsScore>
</CsoundSynthesizer>