ptablei — Accède aux valeurs d'une table par indexation directe avec interpolation linéaire.
ares ptablei andx, ifn [, ixmode] [, ixoff] [, iwrap]
ires ptablei indx, ifn [, ixmode] [, ixoff] [, iwrap]
kres ptablei kndx, ifn [, ixmode] [, ixoff] [, iwrap]
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.
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.
Voici un exemple de l'opcode ptablei. Il utilise le fichier ptablei.csd.
Exemple 1337. 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>