pvslpc

pvslpc — Analyse par prédiction linéaire sur un flux.

Description

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.

Syntaxe

fsig pvslpc asrc, idftsiz, ihop, iord[,iwin] 

Initialisation

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

Exécution

fsig -- fsig en sortie.

asrc -- signal source pour l'analyse lpc.

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.

Exemples

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>


Voir aussi

lpcfilter, allpole