GEN43 — Charge un fichier PVOCEX contenant une analyse VP.
Ce sous-programme charge un fichier PVOCEX contenant l'analyse VP (amp-fréq) d'un fichier son et calcule les magnitudes moyennes de toutes les trames d'analyse d'un ou de tous les canaux audio. Il crée ensuite une table avec ces magnitudes pour chaque bin VP.
taille -- nombre de points dans la table, puissance de deux ou puissance-de-deux plus 1. GEN43 ne fait aucune distinction entre ces deux tailles, mais la table doit avoir pour taille au moins la moitié de celle de la tfr. Les bins VP couvrent le spectre positif de 0 Hz (index 0 de la table) à la fréquence de Nyquist (index tailletfr/2+1 de la table) par incréments réguliers (de taille sr/tailletfr).
codfic -- un fichier pvocex (qui peut être généré par pvanal).
canal -- numéro du canal audio duquel les magnitudes seront extraites ; un 0 donnera la moyenne des magnitudes de tous les canaux.
La lecture s'arrête à la fin du fichier.
Note | |
---|---|
Si p4 est positif, la table sera post-normalisée. Un p4 négatif empêchera la post-normalisation. |
Voici un exemple de la routine GEN43. Il utilise le fichier gen43.csd.
Note: dans cet exemple, le .csd utilise l'opcode system_i pour lancer et exécuter l'utilitaire pvanal et analyser une section du fichier son, finneganswake1.flac, dans laquelle il y a un peu de reverb et de bruit. La sélection 'reverbnoise' dure 0.8 seconde (-d0.8) que l'on trouve après 1.04 seconde (-b1.04) dans la source et ainsi pvanal crée le fichier pvocex que l'on utilise dans l'instrument 3 pour supprimer de l'original ce bruit et cette reverb avec l'opcode pvstencil.
Exemple 1309. Exemple de la routine GEN43.
<CsoundSynthesizer> <CsOptions> ; Select audio/midi flags here according to platform -odac ;;;realtime audio out ;-iadc ;;;uncomment -iadc if realtime audio input is needed too ; For Non-realtime ouput leave only the line below: ; -o GEN43.wav -W ;;; for file output any platform </CsOptions> <CsInstruments> ; by Menno Knevel 2021 sr = 44100 ksmps = 32 nchnls = 2 0dbfs = 1 ; Audacity shows the selection of reverb and noise- see image above instr 1 ; analyze this selection and output result to pvx file ires system_i 1,{{ pvanal -b1.04 -d0.8 finneganswake1.flac reverbnoise.pvx }} endin instr 2 ; untreated signal, contains some reverb and noise asig diskin2 "finneganswake1.flac", 1 outs asig, asig endin instr 3 ; use .pvx file from instr. 1 to remove reverb and noise ; pvanal created 1 frame of size 1024, so size of table for GEN 43 = 512 (fftsize/2) ipvx ftgen 1, 0, 512, -43, "reverbnoise.pvx", 0 ; can be found in examples folder asig diskin2 "finneganswake1.flac", 1 fsig pvsanal asig, 1024, 256, 1024, 1 fclean pvstencil fsig, 0, 1, ipvx ; maximum cleaning aclean pvsynth fclean outs aclean, aclean endin </CsInstruments> <CsScore> i1 0 2 ; first analyze i2 5 12.7 ; untreated signal i3 20 12.7 ; denoised gignal e </CsScore> </CsoundSynthesizer>
On peut utiliser ces tables comme tables de masquage pour pvstencil et pvsmaska.
f1 0 512 43 "viola.pvx" 1 f1 0 -1024 -43 "noiseprint.pvx" 0
Le premier exemple utilise un fichier d'analyse de vocodeur de phase par TFR à 1024 points duquel on utilise le premier canal. Le second utilise tous les canaux d'un fichier de 2048 points, sans post-normalisation. Pour les applications à la réduction de bruit avec pvstencil, il est plus facile de ne pas normaliser la table (code GEN négatif).