pvoc — Implémente une reconstruction de signal au moyen d'un vocoder de phase basé sur la TFR.
ifilcod -- entier ou chaîne de caractères dénotant un fichier de contrôle dérivé de l'analyse d'un signal audio. Un entier dénote le suffixe d'un fichier pvoc.m ; une chaîne de caractères (entre guillemets) donne un nom de fichier, optionnellement un nom de chemin complet. Si ce n'est pas un nom de chemin complet, le fichier est d'abord cherché dans le répertoire courant, ensuite dans celui donné par la variable d'environnement SADIR (si elle est définie). Le contrôle pvoc contient des valeurs d'enveloppes d'amplitude et de fréquence définies par points, organisées pour une resynthèse par TFR. L'utilisation de la mémoire dépend de la taille des fichiers impliqués, qui sont lus et maintenus entièrement dans la mémoire durant les calculs, mais sont partagés par les appels multiples (voir aussi lpread).
ispecwp (facultatif) -- s'il est différent de zéro, l'opcode tente de préserver l'enveloppe spectrale tandis que le contenu fréquentiel est varié par kfmod. Vaut zéro par défaut.
iextractmode (facultatif) -- détermine s'il faut effectuer l'extraction spectrale et, dans ce cas, quels composants ayant des variations de fréquence sous ifreqlim ou au-dessus de ifreqlim seront écartés. Si iextractmode vaut 1, pvoc ne synthétise que les composants pour lesquels la différence de fréquence entre les trames d'analyse est plus grande que ifreqlim. Si iextractmode vaut 2, pvoc ne synthétise que les composants pour lesquels la différence de fréquence entre trames est plus petite que ifreqlim. iextractmode et ifreqlim valent 0 par défaut, ce qui provoque une simple resynthèse. Les exemples de la notice de pvadd montrent comment utiliser l'extraction spectrale.
igatefn (facultatif) -- le numéro d'une fonction stockée à appliquer aux amplitudes des bins de l'analyse avant la resynthèse. Si igatefn est supérieur à 0, les amplitudes de chaque bin seront modifiées par igatefn par un procédé simple de correspondance. D'abord, les amplitudes de tous les bins dans toutes les trames de l'ensemble du fichier d'analyse sont comparées pour déterminer la valeur de l'amplitude maximale. Cette valeur est ensuite utilisée pour créer des amplitudes normalisées comme indices dans la fonction stockée igatefn. L'amplitude maximale correspond au dernier point dans la fonction. Une amplitude nulle correspond au premier point dans la fonction. Les valeurs entre 0 et 1 sont mises en correspondance avec les points tout au long de la table de fonction. Les exemples de la notice de pvadd montrent comment utiliser le mappage d'amplitude.
ktimpnt -- l'écoulement du temps en secondes dans le fichier d'analyse. ktimpnt doit toujours être positif, mais il peut avancer ou reculer, rester stationnaire ou être discontinu, comme pointeur dans le fichier d'analyse.
kfmod -- un facteur de transposition au taux-k : une valeur de 1 signifie pas de transposition, 1.5 transpose vers le haut d'une quinte parfaite et 0.5 transpose vers le bas d'une octave.
pvoc implémente une reconstruction de signal au moyen d'un vocoder de phase basé sur la TFR. Les données de contrôle proviennent d'un fichier d'analyse précompilé avec un taux de trame connu.
Cette implémentation de pvoc a été écrite à l'origine par Dan Ellis. Elle est basée en partie sur le système de Mark Dolson, mais le concept de pré-analyse est nouveau. L'extraction spectrale et le mappage d'amplitude (nouveau dans la version 3.56 de Csound) ont été ajoutés par Richard Karpen en se basant sur les fonctions dans SoundHack par Tom Erbe.
Voici un exemple de l'opcode pvoc. Il utilise le fichier pvoc.csd.
Exemple 802. Exemple de l'opcode pvoc.
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 -odac -m0 --limiter=.95 ;;;realtime audio out, with limiter protection ; For Non-realtime ouput leave only the line below: ; -o pvoc.wav -W ;;; for file output any platform </CsOptions> <CsInstruments> sr = 44100 ksmps = 32 nchnls = 2 0dbfs = 1 ; by Menno Knevel 2021 gilen filelen "fox.wav" ; get length of impulse soundfile ; analyze sound file and output result to pvoc-ex file ires system_i 1,{{ pvanal fox.wav fox1.pvx }} ; default settings instr 1 ; untreated signal asig diskin2 "fox.wav", 1 prints "\n---***YOU NOW HEAR THE UNTREATED SOUND SAMPLE***---\n" outs asig*.8, asig*.8 endin instr 2 prints "\n---***YOU NOW HEAR THE RESULT OF THIS ANALYZED FILE:***---\n" ktime line 0, p3, gilen ; timepointer over the entire sample asig pvoc ktime, p4, "fox1.pvx", 1 outs asig*.6, asig*.6 endin </CsInstruments> <CsScore> i1 0 2.76 ; original sample i2 5 2.76 1 ; no change so original sample is played i2 10 2 1 ; played faster i2 15 10 1 ; slowed down, same pitch & i2 25 10 1.2; slowed down and higher pitch e </CsScore> </CsoundSynthesizer>