pvsbufread2

pvsbufread2 — Lit un tampon circulaire de signaux-f (signaux PV en flot), avec des retards de bin additionnels.

Description

Cet opcode lit à partir d'un tampon circulaire de longueur ilen (secondes), prenant un identificateur pour le tampon et un pointeur temporel qui conserve la position de lecture courante (aussi en secondes). Il est utilisé en conjonction avec un opcode pvsbuffer. La lecture est circulaire avec repliement à la fin du tampon. Des retards temporels supplémentaires proviennent d'une table de fonction, chaque point définissant un retard temporel en secondes affectant le bin correspondant.

Syntaxe

fsig pvsbufread2  ktime, khandle, ift1, ift2 

Initialisation

ift1 -- table de fonction d'au moins (taille de TFR)/2+1 points dans laquelle les délais (en secondes) pour les amplitudes de bin sont fixés (les positions dans la table de fonction sont équivalentes aux numéros de bin).

ift2 -- table de fonction d'au moins (taille de TFR)/2+1 points dans laquelle les délais (en secondes) pour les fréquences de bin sont fixés (les positions dans la table de fonction sont équivalentes aux numéros de bin).

Exécution

fsig -- flot pv en sortie.

ktime -- position temporelle du pointeur de lecture (en secondes).

khandle -- identifiant du tampon à lire. Lorsque l'on utilise des identifiants de taux-k, il est important d'initialiser la variable de taux-k avec un identifiant existant. Lorsque l'on change de tampon, les différents tampons de fsig doivent être compatibles (même format de fsig).

Avec cet opcode et pvsbuffer, il est possible entre autres de:

  • étirer/compresser dans le temps un flot fsig, en le lisant à différentes vitesses
  • retarder un fsig ou certaines de ses parties.
  • "brasser" deux ou plusieurs fsigs en alternant les tampons, car les identifiants de lecture sont de taux-k. Noter que lorsque l'on utilise des identifiants de taux-k, il est important d'initialiser la variable de taux-k avec un identifiant donné (afin que l'initialisation du fsig puisse avoir lieu) et on ne peut changer d'identifiant qu'entre des tampons de fsig compatibles (avec les mêmes taille de TFR et de recouvrement).

[Note] Note

Il est important que la valeur de l'identifant passé à pvsbufread2 soit celle d'un identifiant valide créé par pvsbuffer. Avec des identifiants non valides, Csound plantera.

Exemples

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

Exemple 816. Exemple de l'opcode pvsbufread2.

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
-odac    ;;;RT audio I/O
; For Non-realtime ouput leave only the line below:
; -o pvsbufread2.wav -W ;;; for file output any platform
</CsOptions>
<CsInstruments>

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

instr 1
kcnt     init         0
ifftsize =            2048
ihop     =            ifftsize/4

a1       diskin2      "beats.wav", 1, 0, 1
fsig1    pvsanal      a1*.5, ifftsize, ihop, ifftsize, 1
ih, kt   pvsbuffer    fsig1, 2

fsig2    pvsbufread2  kt, ih, 1, 1
fsig3    pvsbufread2  kt, ih, 2, 2

a2       pvsynth      fsig3
a3       pvsynth      fsig2
         outs         a2, a3
endin
</CsInstruments>

<CsScore>
f1 0 2048 -7 0 128 1.1 128 0.5  256 1.8 512 1.1 1024 0.1
f2 0 2048 -7 1 128 0.2 128 0.05 256 0.5 512 0.9 1024 0.1

i1 0 30
</CsScore>
</CsoundSynthesizer>


Voir aussi

pvsanal, pvsynth, pvsbuffer, pvsadsyn

Crédits

Auteur: Victor Lazzarini
Juillet 2011