tab

tab — Fast table opcodes.

Description

Fast table opcodes. Faster than table and tablew because don't allow wrap-around and limit and don't check index validity. Have been implemented in order to provide fast access to arrays. Support non-power of two tables (can be generated by any GEN function by giving a negative length value).

Syntax

ir tab_i indx, ifn[, ixmode]
kr tab kndx, ifn[, ixmode]
ar tab xndx, ifn[, ixmode]
tabw_i isig, indx, ifn [,ixmode]
tabw ksig, kndx, ifn [,ixmode]
tabw asig, andx, ifn [,ixmode]

Initialization

ifn -- table number

ixmode -- defaults to zero. If zero xndx and ixoff ranges match the length of the table; if non zero xndx and ixoff have a 0 to 1 range.

isig -- input value to write.

indx -- table index

Performance

asig, ksig -- input signal to write.

andx, kndx -- table index.

tab and tabw opcodes are similar to table and tablew, but are faster and support tables having non-power-of-two length.

Special care of index value must be taken into account. Index values out of the table allocated space will crash Csound.

Examples

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

Example 866. Example of the tab 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
-odac    ;;;realtime audio out
;-iadc    ;;;uncomment -iadc if realtime audio input is needed too
; For Non-realtime ouput leave only the line below:
; -o tab.wav -W ;;; for file output any platform
</CsOptions>
<CsInstruments>

sr = 44100
ksmps = 32
nchnls = 2
0dbfs  = 1

gifn1 ftgen 1, 0, 0, 1, "flute.aiff", 0, 4, 0	;deferred-size table

instr 1 

atab  init 0 
isize tableng 1					;length of table?
print isize
andx  phasor 1 / (isize / sr) 
asig  tab andx, 1, 1				;has a 0 to 1 range
      outs asig, asig

endin 
</CsInstruments>
<CsScore>
 

i 1 0 2.3
e
</CsScore>
</CsoundSynthesizer>


Credits

Written by Gabriel Maldonado.