pvsadsyn
Précédent | Opcodes et opérateurs de l'orchestre | Suivant

## pvsadsyn

pvsadsyn — Resynthèse au moyen d'un banc d'oscillateurs rapide.

## Description

Resynthèse au moyen d'un banc d'oscillateurs rapide.

## Syntaxe

    ares pvsadsyn fsrc, inoscs, kfmod [, ibinoffset] [, ibinincr] [, iinit]

## Initialisation

inoscs -- Le nombre de bins d'analyse à synthétiser. Ne peut pas être supérieur à la taille de fsrc (voir pvsinfo), par exemple comme celui créé par pvsanal. Le temps de traitement est directement proportionnel à inoscs.

ibinoffset (facultatif, 0 par défaut) -- Le premier bin (le plus bas) à resynthétiser, en comptant à partir de 0 (la valeur par défaut est 0).

ibinincr (facultatif) -- En partant du bin ibinoffset, l'intervalle entre les bins resynthétisés vaut ibinincr.

iinit (facultatif) -- Ignore la réinitialisation. N'est actuellement implémenté dans aucun de ces opcodes, et il reste à décider s'il serait de quelque utilité.

## Exécution

kfmod -- Facteur de multiplication pour toutes les fréquences. 1.0 = pas de changement, 2 = une octave vers l'aigu.

pvsadsyn est expérimental. Il implémente le banc d'oscillateurs en utilisant une méthode de calcul directe, plutôt qu'une table de consultation. On tire ainsi avantage du fait empirique que pour les taux d'analyse généralement pratiqués, (et en supposant que l'analyse se fait avec pvsanal, où les fréquences dans un bin ne changent que légèrement entre les trames), il n'est pas nécessaire d'interpoler les fréquences entre les trames, seulement les amplitudes. Une synthèse précise est souvent liée à l'utilisation de pvsanal avec iwinsize = ifftsize*2.

Cet opcode changera très probablement ou sera bien étendu, selon le retour et les avis des utilisateurs. Il est probable qu'une méthode entièrement basée sur une table avec interpolation sera ajoutée, via un futur argument facultatif iarg. La liste des paramètres de pvsadsyn est calquée sur celle de pvadd, mais exclut l'extraction spectrale.

## Exemples

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

Exemple 792. Exemple de l'opcode pvsadsyn.

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

    sr = 44100
    ksmps = 16
    nchnls = 1
    0dbfs = 1

    ;; example written by joachim heintz 2009

    opcode FileToPvsBuf, iik, Siiii
    ;;writes an audio file at the first k-cycle to a fft-buffer (via pvsbuffer)
    Sfile, ifftsize, ioverlap, iwinsize, iwinshape xin
    ktimek		timeinstk
    if ktimek == 1 then
    ilen		filelen	Sfile
    kcycles	=		ilen * kr; number of k-cycles to write the fft-buffer
    kcount		init		0
    loop:
    ain		soundin	Sfile
    fftin		pvsanal	ain, ifftsize, ioverlap, iwinsize, iwinshape
    ibuf, ktim	pvsbuffer	fftin, ilen + (ifftsize / sr)
    		loop_lt	kcount, 1, kcycles, loop
    		xout		ibuf, ilen, ktim
    endif
    endop

    instr 1
    istretch	=		p4; time stretching factor
    ifftsize	=		1024
    ioverlap	=		ifftsize / 4
    iwinsize	=		ifftsize
    iwinshape	=		1; von-Hann window
    ibuffer, ilen, k0		FileToPvsBuf	"fox.wav", ifftsize, ioverlap, iwinsize, iwinshape
    p3		=		istretch * ilen; set p3 to the correct value
    ktmpnt		linseg		0, p3, ilen; time pointer
    fread 		pvsbufread  	ktmpnt, ibuffer; read the buffer
    aout		pvsadsyn	fread, 10, 1; resynthesis with the first 10 bins
    		out		aout
    endin

    </CsInstruments>
    <CsScore>
    i 1 0 1 20
    e
    </CsScore>
    </CsoundSynthesizer>

## Voir aussi

pvsanal, pvsynth, pvsadsyn

## Crédits

Auteur : Richard Dobson
Août 2001

Nouveau dans la version 4.13

Précédent | Niveau supérieur | Suivant
pvread | Sommaire | pvsanal