ptable — Accède aux valeurs d'une table par indexation directe.
ares ptable andx, ifn [, ixmode] [, ixoff] [, iwrap]
ires ptable indx, ifn [, ixmode] [, ixoff] [, iwrap]
kres ptable 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.
ptable invoque une lecture de table avec des indices au taux d'initialisation, au taux de contrôle ou au taux audio. Ces indices peuvent être des entrées brutes (0, 1, 2, ..., taille-1) ou des valeurs normalisées (0 à 1). Les indices sont d'abord modifiés par la valeur de décalage puis leur appartenance à l'intervalle valide est testée avant la lecture dans la table (voir iwrap). Si l'indice varie sur toute l'échelle, ou si on utilise l'interpolation, la table doit avoir un point de garde. ptable indexé par un phaseur périodique (voir phasor) simulera un oscillateur.
Voici un exemple de l'opcode ptable. Il utilise le fichier ptable.csd.
Exemple 1336. Exemple de l'opcode ptable.
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 ; Audio out Audio in No messages -odac -iadc -d ;;;RT audio I/O ; For Non-realtime ouput leave only the line below: ; -o table.wav -W ;;; for file output any platform </CsOptions> <CsInstruments> ; Initialize the global variables. sr = 44100 kr = 4410 ksmps = 10 nchnls = 1 ; Instrument #1. instr 1 ; Vary our index linearly from 0 to 1. kndx line 0, p3, 1 ; Read Table #1 with our index. ifn = 1 ixmode = 1 kfreq ptable kndx, ifn, ixmode ; Generate a sine waveform, use our table values ; to vary its frequency. a1 oscil 20000, kfreq, 2 out a1 endin </CsInstruments> <CsScore> ; Table #1, a line from 200 to 2,000. f 1 0 1025 -7 200 1024 2000 ; Table #2, a sine wave. f 2 0 16384 10 1 ; Play Instrument #1 for 2 seconds. i 1 0 2 e </CsScore> </CsoundSynthesizer>