pvslpc — Analyse par prédiction linéaire sur un flux.
Cet opcode réalise l'analyse par prédiction linéaire sur un flux à partir d'un signal en entrée et produit un fsig qui peut être utilisé par d'autres opcodes pvs.
idftsiz -- taille d'une trame d'entrée lpc en échantillons et d'une trame d'analyse fsig. Doit être une puissance de deux.
iord -- ordre du prédicteur linéaire.
ihop -- taille du saut d'analyse.
iwin -- numéro d'une table de fonction de fenêtrage (facultatif).
Cet opcode fait partie d'une suite d'opcodes de prédiction linéaire sur un flux. Il analyse un signal d'entrée et produit un ensemble de coefficients LPC pour un filtre tout-pôle qui modélise l'enveloppe spectrale du signal. La fonction de transfert de ce filtre est ensuite calculée et son spectre d'amplitudes est sorti sous la forme d'un flux de vocodeur de phase.
Les paramètres d'analyse fondamentaux sont la taille de trame en entrée et l'ordre du filtre. Des trames d'entrée plus longues produiront un résultat plus précis en termes de résolution en fréquence, mais induiront aussi plus de calculs. Ceci est dû au calcul de la fontion d'autocorrélation, qui est utilisée ensuite dans le calcul des coefficients. Cette partie est plus efficace et dépend seulement de l'ordre de la prédiction linéaire. qui est aussi le nombre de coefficients calculés. Les ordres typiques de lp peuvent aller de 30 à 100 coefficients, mais on peut utiliser de plus grandes valeurs.
Les analyses sont produites tous les ihop échantillons. Une fois le signal extrait de l'entrée audio il peut être facultativement fenêtré si une table de fonction est fournie. Bien que ce soit facultatif, c'est une procédure recommandée (GEN20 peut fournir les fenêtres les plus communes). Le signal est ensuite analysé et les coefficients sont produits. Le fsig produit par cet opcode est donné dans le format AMP-FREQ. Les amplitudes contiennent l'enveloppe spectrale du signal d'entrée, et les fréquences sont dérivées de l'estimation d'une fréquence fondamentale calculée à partir de la fonction d'autocorrélation. Elles ne représent pas les fréquences dans le signal d'entrée à n'importe quel degré de précision ; ce sont seulement des espaces réservés.
Voici un exemple de l'opcode pvslpc qui utilise un signal d'entrée audio comme source lpc. Il utilise le fichier pvslpc.csd.
Exemple 843. Exemple de l'opcode pvslpc.
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 pvslpc.wav -W ;;; for file output any platform </CsOptions> <CsInstruments> ; by Menno Knevel 2021 sr = 44100 ksmps = 32 nchnls = 2 0dbfs = 1 gifw ftgen 0, 0, 1024, 20, 2, 1 ; Hanning window instr 1 iswap = p4 ; decide which sample goes to pvslpc if iswap == 1 then a1 diskin "MSjungleMid.wav", 1, 0, 1 ; first the jungle a2 diskin "fox.wav", 1, 0, 1 prints "\n--**the jungle...**--\n" else a1 diskin "fox.wav", 1, 0, 1 ; then the fox a2 diskin "MSjungleMid.wav", 1, 0, 1 prints "\n--**and the fox...**--\n" endif iorder = p5 fenv pvslpc a1, 1024, 128, p5, gifw fsig pvscale fenv, 1.5 ; convert lpc to pvs, for a3 pvsynth fsig ; scaling basic frequency 1.5 times a3 dcblock a3 outs a3*.1, a3*.1 endin </CsInstruments> <CsScore> ; jungle order i1 0 10 1 10 i1 11 10 1 150 s i1 2 10 0 10 i1 13 10 0 150 e </CsScore> </CsoundSynthesizer>