GEN43

GEN43 — Charge un fichier PVOCEX contenant une analyse VP.

Description

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.

Syntaxe

f # date taille 43 codfic canal

Initialisation

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] Note

Si p4 est positif, la table sera post-normalisée. Un p4 négatif empêchera la post-normalisation.

Exemples

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).

Crédits

Auteur : Victor Lazzarini