lpfreson

lpfreson — Resynthétise un signal à partir des données passées en interne par un lpread précédent, en appliquant un décalage de formant.

Description

Resynthétise un signal à partir des données passées en interne par un lpread précédent, en appliquant un décalage de formant.

Syntaxe

ares lpfreson asig, kfrqratio

Exécution

asig -- une fonction audio pour piloter la resynthèse.

kfrqratio -- rapport de fréquence. Doit être supérieur à 0.

lpreson reçoit en interne des valeurs produites par un lpread conducteur. lpread reçoit ses valeurs du fichier de contrôle en fonction de la valeur d'entrée ktimpnt (en secondes). Si ktimpnt évolue au taux de l'analyse, il en résulte une synthèse à déroulement temporel normal ; si l'évolution est plus rapide, plus lente ou à taux variable, le déroulement temporel de la synthèse est déformé. A chaque période-k, lpread fait une interpolation entre trames adjacentes pour déterminer plus précisément les valeurs du paramètre présenté en sortie et le réglage des coefficients du filtre (passés en interne à un lpreson) qui le suit.

Le signal d'erreur kerr (entre 0 et 1) provenant de l'analyse prédictive reflète la nature déterministe/aléatoire de la source analysée. Il paraîtra bas pour un matériau tonal (périodique) et plus important pour un matériau bruiteux. La transition de la parole voisée à la parole non-voisée, par exemple, produit une valeur du signal d'erreur d'environ 0.3. Pendant la synthèse, la valeur du signal d'erreur peut être utilisée pour déterminer la nature de la fonction pilotant lpreson : par exemple en arbitrant entre entrée tonale et non-tonale, ou même en déterminant un mélange des deux. Normalement, dans la resynthèse de la parole, l'entrée tonale de lpreson est un signal périodique à large bande ou un train d'impulsions dérivé d'une unité telle que buzz, et la source non-tonale est habituellement dérivée de rand. Cependant, on peut utiliser n'importe quel signal audio comme fonction pilote, la seule exigence de l'analyse étant qu'il ait une réponse plate.

lpfreson est un lpreson dans lequel kfrqratio est le rapport de décalage de formant par rapport à l'original. Cela permet une synthèse dans laquelle l'objet source modifie sa taille acoustique apparente. lpfreson avec kfrqratio = 1 est équivalent à lpreson.

Généralement, lpreson fournit un moyen de contrôler l'évolution du contenu et de la forme spectrale d'un signal audio composite par le contenu spectral dynamique d'un autre signal. Il peut y avoir n'importe quel nombre de paires lpread/lpreson (ou lpfreson) dans un instrument ou dans un orchestre ; ils peuvent lire depuis le même ou depuis différents fichiers de contrôle indépendamment.

Exemples

Voici un exemple de l'opcode lpfreson. Il utilise le fichier lpfreson.csd.

Exemple 497. Exemple de l'opcode lpfreson.

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 lpfreson.wav -W ;;; for file output any platform
</CsOptions>
<CsInstruments>

sr = 44100
ksmps = 32
nchnls = 2
0dbfs  = 1
;do not use -a option when analyzing "fox.wav" with lpfreson,
;it needs a filter coefficient type of file
instr 1

ilen  filelen "fox.wav"	; length of soundfile
prints "fox.wav = %f seconds\\n",ilen

ktime line 0, p3, p4
krmsr,krmso,kerr,kcps lpread ktime,"fox_nopoles.lpc"
krmso = krmso*.00001			; low volume
asig  buzz krmso, kcps, int(sr/2/kcps), 1 ; max harmonics without aliasing
aout  lpfreson asig, 1.2
asig  clip aout, 0, 1			; prevents distortion
      outs asig, asig

endin
</CsInstruments>
<CsScore>
; sine
f1 0 4096 10 1

i 1 0 2.8 1	; first words only
i 1 4 2.8 2.8	; whole sentence
e
</CsScore>
</CsoundSynthesizer>


Le fichier audio « fox.wav » dure 2.8 secondes. Ainsi la sortie contiendra une ligne comme celle-ci :

fox.wav = 2.756667 seconds

Voir aussi

lpread, lpreson