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 804. 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 = 2
0dbfs = 1

;; example written by joachim heintz 2009
; (additions by Menno Knevel 2021)
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
prints  "--**new duration of note = %f seconds**--\n", p3
ktmpnt		linseg		0, p3, ilen; time pointer
fread 		pvsbufread  	ktmpnt, ibuffer; read the buffer
aout		pvsadsyn	fread, 50, 1, p5; resynthesis of 50 bins, with offset p5
aout        *=  .7      ; scale amplitude
		outs		aout, aout
endin

</CsInstruments>
<CsScore>
;         stretch   offset  
i 1  0 1    10        0
i 1 28 1    5        30
e
</CsScore>
</CsoundSynthesizer>


Voir aussi

pvsanal, pvsynth, pvsadsyn

Crédits

Auteur : Richard Dobson
Août 2001

Nouveau dans la version 4.13