lpanal — Effectue une analyse par prédiction linéaire et par détection de hauteur sur un fichier son.
Analyse par prédiction linéaire pour les opcodes de Csound Resynthèse par Codage Prédictif Linéaire (LPC).
csound -U lpanal [options] nomfichier_entree nomfichier_sortie
lpanal [options] nomfichier_entree nomfichier_sortie
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.
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.
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>