lpreson

lpreson — Resynthétise un signal à partir des données passées en interne par un lpread précédent.

Description

Resynthétise un signal à partir des données passées en interne par un lpread précédent.

Syntaxe

ares lpreson asig

Exécution

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

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 dont les formants sont décalés. Son argument 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érallement, 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 lpreson. Il utilise le fichier lpreson.csd.

Exemple 480. Exemple de l'opcode lpreson.

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

sr = 44100
ksmps = 32
nchnls = 2
0dbfs  = 1
; works with or without -a option when analyzing "fox.wav" from the manual
;both options sound a little different
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_poles.lpc"

krmso = krmso*.00001			; low volume
asig  buzz krmso, kcps, int(sr/2/kcps), 1 ; max harmonics without aliasing
aout  lpreson asig
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

Voici un autre exemple de l'opcode lpreson. Il utilise le fichier lpreson-2.csd.

Exemple 481. Un autre exemple de l'opcode lpreson.

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

sr = 44100
ksmps = 32
nchnls = 2
0dbfs  = 1
; works with or without -a option when analyzing "fox.wav" from the manual
;both options sound a little different
instr 1

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

ktime  line 0, p3, ilen
krmsr,krmso,kerr,kcps lpread ktime,"fox_nopoles.lpc"
asig   diskin2	"flute.aiff", 1
aout   lpreson asig
ares   balance aout, asig
       outs ares, ares

endin
</CsInstruments>
<CsScore>

i 1 0 2.8
e
</CsScore>
</CsoundSynthesizer>


Voir aussi

lpfreson, lpread