lpread

lpread — Lit un fichier de contrôle contenant des trames d'information ordonnées dans le temps.

Description

Lit un fichier de contrôle contenant des trames d'information ordonnées dans le temps.

Syntaxe

krmsr, krmso, kerr, kcps lpread ktimpnt, ifilcod [, inpoles] [, ifrmrate]

Initialisation

ifilcod -- entier ou chaîne de caractères dénotant un fichier de contrôle (coefficients de réflexion et quatre valeurs de paramètre) provenant de l'analyse spectrale par prédiction linéaire à n pôles d'une source audio. Un entier dénote le suffixe d'un fichier lp.m ; une chaîne de caractères (entre guillemets) donne un nom de fichier, optionnellement un nom de chemin complet. Si ce n'est pas un nom de chemin complet, le fichier est d'abord cherché dans le répertoire courant, ensuite dans celui donné par la variable d'environnement SADIR (si elle est définie). L'utilisation de la mémoire dépend de la taille du fichier, qui est maintenu entièrement dans la mémoire durant les calculs mais reste partagé par des appels multiples (voir aussi adsyn et pvoc).

inpoles (facultatif, 0 par défaut) -- nombre de pôles dans l'analyse par prédiction linéaire. Nécessaire seulement si le fichier de contrôle n'a pas d'en-tête ; ignoré si un en-tête est détecté.

ifrmrate (facultatif, 0 par défaut) -- taux de trames par seconde dans l'analyse par prédiction linéaire. Nécessaire seulement si le fichier de contrôle n'a pas d'en-tête ; ignoré si un en-tête est détecté.

Exécution

lpread accède à un fichier de contrôle constitué de trames d'information ordonnées dans le temps, chacune d'entre elles contenant les coefficients d'un filtre à n pôles, provenant de l'analyse par prédiction linéaire d'un signal source à intervalles fixes (par exemple 1/100 de seconde), plus quatre valeurs de paramètres :

krmsr -- moyenne quadratique du résidu de l'analyse

krmso -- moyenne quadratique du signal original

kerr -- le signal d'erreur normalisé

kcps -- hauteur en Hz

ktimpnt -- l'écoulement du temps en secondes dans le fichier d'analyse. ktimpnt doit toujours être positif, mais il peut avancer ou reculer, rester stationnaire ou être discontinu, comme pointeur dans le fichier d'analyse.

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 des paramètres (présentés 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 la position des formants décalés 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 lpread. Il utilise le fichier lpread.csd.

Exemple 479. Exemple de l'opcode lpread.

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

sr = 44100
ksmps = 32
nchnls = 2
0dbfs  = 1

instr 1
; works with or without -a option when analyzing "fox.wav" from the manual
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*.00007			; low volume
aout  buzz krmso, kcps, 15, 1
krmsr = krmsr*.0001			; low volume
asig  rand krmsr
      outs (aout*2)+asig, (aout*2)+asig	; mix buzz and rand

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

lpfreson, lpreson, LPANAL