lpanal

lpanal — Effectue une analyse par prédiction linéaire et par détection de hauteur sur un fichier son.

Description

Analyse par prédiction linéaire pour les opcodes de Csound Resynthèse par Codage Prédictif Linéaire (LPC).

Syntaxe

csound -U lpanal [options] nomfichier_entree nomfichier_sortie
lpanal [options] nomfichier_entree nomfichier_sortie

Initialisation

lpanal effectue à la fois une analyse par lpc et par détection de hauteur sur un fichier son pour produire une suite ordonnée de trames d'information de contrôle appropriée pour la resynthèse avec Csound. L'analyse est conditionnée par les options de contrôle ci-dessous. Un espace est facultatif entre le drapeau et sa valeur.

-a -- [stockage alternatif] demande à lpanal d'écrire un fichier avec les valeurs des pôles du filtre plutôt que les fichiers de coefficients de filtre habituels. Quand lpread / lpreson sont utilisés avec des fichiers de pôles, une stabilisation automatique est effectuée et le filtre ne deviendra pas incontrôlable. (C'est le réglage par défaut dans la GUI Windows) - Changé par Marc Resibois.

-s srate -- taux d'échantillonnage du fichier audio d'entrée. Il remplacera la valeur srate de l'en-tête du fichier audio, qui s'applique autrement. Si aucun des deux n'est présent, la valeur par défaut est 10000.

-c canal -- numéro du canal à traiter. La valeur par défaut est 1.

-b début -- date du début (en secondes) du segment audio à analyser. La valeur par défaut est 0,0

-d durée -- durée (en secondes) du segment audio à analyser. La valeur par défaut de 0,0 signifie jusqu'à la fin du fichier.

-p npoles -- nombres de pôles pour l'analyse. La valeur par défaut est 34, le maximum 50.

-h taillesaut -- taille du saut (en échantillons) entre les trames d'analyse. Détermine le nombre de trames par seconde (srate / taillesaut) dans le fichier de contrôle en sortie. La taille des trames d'analyse est de taillesaut * 2 échantillons. La valeur par défaut est 200, le maximum 500.

-C chaîne -- texte pour le champ commentaire de l'en-tête du fichier lp. La valeur par défaut est une chaîne nulle.

-P mincps -- fréquence la plus basse (en Hz) pour la détection de hauteur. -P0 signifie pas de détection de hauteur.

-Q maxcps -- fréquence la plus haute (en Hz) pour la détection de hauteur. Plus l'intervalle de hauteurs est étroit, plus l'estimation de hauteur est précise. Les valeurs par défaut sont -P70, -Q200.

-v verbosité -- niveau d'information affiché sur le terminal pendant l'analyse.

  • 0 = aucune

  • 1 = verbeux

  • 2 = débogage

La valeur par défaut est 0.

-X -- écrire le fichier d'analyse dans un format indépendant de la machine.

Format de fichier

La sortie est un fichier comprenant un en-tête identifiable suivi d'un ensemble de trames de données d'analyse en virgule flottante. Chaque trame contient quatre valeurs d'information de hauteur et de gain, suivies par les coefficients d'un filtre à n pôles. Le fichier est lisible par l'opcode lpread de Csound.

lpanal est une version très modifiée du programme d'analyse par prédiction linéaire de Paul Lanksy.

Exemples

lpanal -a -p26 -d2.5 -P100 -Q400 fichieraudio.test lpfil22

analysera les premières 2,5 secondes du fichier "fichieraudio.test", produisant srate / 200 trames par seconde, chacune contenant les coefficients d'un filtre à 26 pôles et une estimation de hauteur entre 100 et 400 Hz. La sortie stabilisée (-a) sera placée dans "lpfil22" dans le répertoire courant.

Voici un exemple de l'utilitaire lpanal. Il utilise le fichier lpanal.csd.

Exemple 1354. Exemple de l'utilitaire lpanal.

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     ;;;realtime audio out
;-iadc    ;;;uncomment -iadc if realtime audio input is needed too
; For Non-realtime ouput leave only the line below:
; -o lpanal.wav -W ;;; for file output any platform
</CsOptions>
<CsInstruments>

sr = 44100
ksmps = 32
nchnls = 2
0dbfs  = 1

; by Menno Knevel 2021

ires system_i 1,{{ lpanal -p34 -h200 -P50 -Q500 -v1 finneganswake1.flac finneganswake11.lpc }}       ; filter coefficient file
ires system_i 1,{{ lpanal -a -p50 -h300 -P70 -Q100 -v1 finneganswake1.flac finneganswake12.lpc }}    ; create pole file

instr 1 ; untreated signal
asig    diskin2   "finneganswake1.flac", 1
outs    asig, asig
endin

instr 2
ilen  filelen "finneganswake1.flac"	    ; get length of soundfile
prints "\nfinneganswake1.flac = %f seconds\\n",ilen
prints  "\n---***YOU NOW HEAR THE RESULT OF THIS ANALYZED FILE:***---\n"
ktime line 0, p3, ilen-0.1                  ; timepointer
krmsr,krmso,kerr,kcps lpread ktime, p4
krmso *=.00005			                ; lower volume
aout  foscil krmso, kcps, 1, 10, 1
aout  butlp aout, 5000                  ; filter low pass
krmsr *=.0003			                ; lower volume
asig  rand krmsr                        ; use residual for the noise 
      outs aout+asig, aout+asig	        ; add saw wave and noise

endin
</CsInstruments>
<CsScore>

s
i1 0  12.7       ; original sample
s
i2 0  12.7 "finneganswake11.lpc"	; whole sentence
i2 15 12.7 "finneganswake12.lpc"	; whole sentence, pole file
e
</CsScore>
</CsoundSynthesizer>