ptablei

ptablei — Accède aux valeurs d'une table par indexation directe avec interpolation linéaire.

Description

Accède aux valeurs d'une table par indexation directe avec interpolation linéaire.

Syntaxe

ares ptablei andx, ifn [, ixmode] [, ixoff] [, iwrap]
ires ptablei indx, ifn [, ixmode] [, ixoff] [, iwrap]
kres ptablei kndx, ifn [, ixmode] [, ixoff] [, iwrap]

Initialisation

ifn -- numéro de la table de fonction.

ixmode (facultatif) -- mode d'indexation. La valeur par défaut est 0.

  • 0 = indexation brute

  • 1 = indexation normalisée (0 à 1)

ixoff (facultatif) -- décalage de l'index. Pour une table dont l'origine est centrée, on utilise taille-de-la-table/2 (indexation brute) ou 0.5 (indexation normalisée). La valeur par défaut est 0.

iwrap (facultatif) -- indicateur d'indexation cyclique. La valeur par défaut est 0.

  • 0 = pas d'enroulement (les index < 0 sont considérés comme nuls ; les index > taille-de-la-table sont bloqués à index=taille-de-la-table)

  • 1 = indexation cyclique.

Exécution

ptablei est un opcode avec interpolation dans lequel la partie fractionnaire de l'index est utilisée pour interpoler entre entrées adjacentes de la table. Le lissage obtenu par interpolation se fait au prix d'une petite durée d'exécution supplémentaire (voir aussi oscili, etc.), sinon les opcodes avec et sans interpolation sont interchangeables.

Exemples

Voici un exemple de l'opcode ptablei. Il utilise le fichier ptablei.csd.

Exemple 726. Exemple de l'opcode ptablei.

Voir les sections Audio en Temps Réel et Options de la Ligne de Commande pour plus d'information sur l'utilisation des options de la ligne de commande.

<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 tablei.wav -W ;;; for file output any platform
</CsOptions>
<CsInstruments>

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

seed 0	;generate new values every time the instr is played

instr 1

ifn = p4
isize = p5
ithresh = 0.5
    
itemp ftgen ifn, 0, isize, 21, 2

iwrite_value = 0
i_index = 0
    
loop_start:
    iread_value ptablei i_index, ifn
    
    if iread_value > ithresh then
         iwrite_value = 1
    else
         iwrite_value = -1
    endif
ptableiw iwrite_value, i_index, ifn
loop_lt i_index, 1, isize, loop_start
    turnoff

endin

instr 2

ifn = p4
isize = ftlen(ifn)    
prints "Index\tValue\n"
    
i_index = 0
loop_start:
    ivalue tablei i_index, ifn
    prints "%d:\t%f\n", i_index, ivalue

  loop_lt i_index, 1, isize, loop_start		;read table 1 with our index

aout oscili .5, 100, ifn			;use table to play the polypulse
     outs   aout, aout

endin
</CsInstruments>
<CsScore>
i 1 0 1 100 16
i 2 0 2 100
e
</CsScore>
</CsoundSynthesizer>


Voir aussi

table, tablei, table3, ptable, ptable3, oscil1, oscil1i, osciln

Plus d'information sur cet opcode : http://www.csoundjournal.com/issue12/genInstruments.html, écrit par Jacob Joaquin.

Crédits

Auteur : John ffitch
Janvier 2012

Nouveau dans la version 5.16 de Csound.