vexp — Performs power-of operations between a vector and a scalar
kval - scalar operand to be processed
kelements - number of elements of the vector
kdstoffset - index offset for the destination table (Optional, default = 0)
kverbose - Selects whether or not warnings are printed (Default=0)
vexp rises kval to each element contained in a vector from table ifn,starting from table index kdstoffset. This enables you to process a specific section of a table by specifying the offset and the number of elements to be processed. Offset is counted starting from 0, so if no offset is specified (or set to 0), the table will be modified from the beginning.
Note that this opcode runs at k-rate so the value of kval is processed every control period. Use with care or you will end up with very large (or small) numbers (or use vexp_i).
These opcodes (vadd, vmult, vpow and vexp) perform numeric operations between a vectorial control signal (hosted by the table ifn), and a scalar signal (kval). Result is a new vector that overrides old values of ifn. All these opcodes work at k-rate.
Negative values for kdstoffset are valid. Elements from the vector that are outside the table, will be discarded, and they will not wrap around the table.
If the optional kverbose argument is different to 0, the opcode will print warning messages every k-pass if table lengths are exceeded.
In all these opcodes, the resulting vectors are stored in ifn, overriding the intial vectors. If you want to keep initial vector, use vcopy or vcopy_i to copy it in another table. All these operators are designed to be used together with other opcodes that operate with vectorial signals such as vcella, adsynt, adsynt2, etc. They can also be useful in conjunction with the spectral opcodes pvsftw and pvsftr.
Note | |
---|---|
Please note that the elements argument has changed in version 5.03 from i-rate to k-rate. This will change the opcode's behavior in the unusual cases where the i-rate variable ielements is changed inside the instrument, for example in: instr 1 ielements = 10 vadd 1, 1, ielements ielements = 20 vadd 2, 1, ielements turnoff endin
|
Here is an example of the vexp opcode. It uses the file vexp.csd.
Example 998. Example of the vexp 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 cigoto.wav -W ;;; for file output any platform </CsOptions> <CsInstruments> sr=44100 ksmps=128 nchnls=2 instr 1 ifn1 = p4 ival = p5 ielements = p6 idstoffset = p7 kval init 25 vexp ifn1, ival, ielements, idstoffset, 1 endin instr 2 ;Printtable itable = p4 isize = ftlen(itable) kcount init 0 kval table kcount, itable printk2 kval if (kcount == isize) then turnoff endif kcount = kcount + 1 endin </CsInstruments> <CsScore> f 1 0 16 -7 1 16 17 i2 0.0 0.2 1 i1 0.4 0.01 1 2 3 4 i2 0.8 0.2 1 i1 1.0 0.01 1 0.5 5 -3 i2 1.2 0.2 1 i1 1.4 0.01 1 1.5 10 12 i2 1.6 0.2 1 e </CsScore> </CsoundSynthesizer>