pvsadsyn — Resynthèse au moyen d'un banc d'oscillateurs rapide.
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é.
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.
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>