tab

tab — Fast table opcodes.

Description

Fast table opcodes. Faster than table and tablew because it does not allow wrap-around and limit and it does not check index validity. Has been implemented in order to provide fast access to arrays.

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 range matches the length of the table; if non zero xndx has 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.

Examples

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

Example 990. 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, 0, 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.