OBTENTION DE MODELES

DE RESONANCE

(VERSION EN C)

Pierre-François Baisnée

Ircam - novembre 1990

Documentation en cours d'ecriture. Ircam - mars 1999

 

 

 

1. Documents consultables

2. Machines utilisables

3. Documentation on-line

4. Formats des modèles et utilitaires de changement de format

5. Resynthèse d'un modèle

6. Préparation des sons

7. Conduite d'une analyse

7.1. Rappel du principe

7.2. Appel de la commande d'analyse

7.2.1. Contrôle des entrées-sorties et des resynthèses

7.2.2. Contrôle de l'estimation spectrale

7.2.3. Contrôle de l'extraction de pics

7.2.4. Contrôle de l'appariement des pics

7.2.5.Contrôle de l'appariement des résonances

7.3. Choix des paramètres et enchaînement des étapes successives

7.4. Retour en arrière

7.5. Lancement d'une analyse en mode non interactif

7.6. Edition d'un modèle

8. Réduction de données

8.1. Principe

8.2. Appel de la commande de réduction

8.3. Utilisation

 

 

 

Documents consultables

Le travail de recherche autour des modèles de résonance a été mené à l'IRCAM en 1985 et 1986 par Yves Potard, Pierre-François Baisnée, et Jean-Baptiste Barrière. Des outils ont été développés en LISP dans l'environnement CHANT-FORMES pour l'obtention et l'utilisation de modèles.

En 1989, une version en C de l'analyse comportant quelques améliorations a été écrite par P.-F. Baisnée lors d'un séjour aux Etats-Unis. Cette version a d'abord été adaptée en 1989 pour fonctionner dans le programme Macmix d'Adrian Freed (dans cette version, les modèles peuvent être présentés graphiquement à l'écran, et la synthèse a lieu en temps réel sur une machine développée par A. Freed et Marie-Dominique Baudot -"Reson8"). Elle a ensuite été adaptée à l'IRCAM pour fonctionner dans un environnement UNIX ou MPW.

Le présent document se contente de donner un bref mode d'emploi de cette dernière version.

Le principe général de l'obtention et de l'utilisation de ces modèles a été décrit ailleurs; pour en savoir plus, on peut se reporter aux documents suivants (et notamment aux documents 4 et 6):

(1) P-F. Baisnée, J-B. Barrière, O. Koechlin, M. Puckette & R. Rowe (1986) Real-time interaction between musicians and computer: performance utilizations of the 4X, Proceedings of 1986 International Computer Music Conference, La Haye, Berkeley: Computer Music Association, pp.237-240.

(2) J-B.Barrière, Y. Potard & P-F. Baisnée (1985) Models of Continuity between Synthesis and Processing for the Elaboration and Control of Timbre Structures, Proceedings of 1985 International Computer Music Conference,Vancouver, Berkeley: Computer Music Association, pp.193-198.

(3) Y. Potard, P-F. Baisnée & J-B.Barrière (1986) Experimenting with Models of Resonance Produced by a New Technique for the Analysis of Impulsive Sounds, Proceedings of 1986 International Computer Music Conference, La Haye, Berkeley: Computer Music Association, pp.269-274.

(4) Yves Potard, P-F. Baisnée, J-B. Barrière (1986) Interaction matériau organisation - version préliminaire d'un rapport de recherche, document interne Ircam.

(5) Yves Potard, P-F. Baisnée, J-B. Barrière (1988) Méthodologie de synthèse du timbre: L'exemple des modèles de résonance, A paraître dans le livre rendant compte du séminaire sur le timbre (Ircam 1985) chez Christian Bourgois.

(6) Baisnée P-F. Mode d'emploi des outils développés à l'Ircam

(7) Baisnée P-F. Mode d'emploi de la version Csound

(8) Baisnée, Barrière, Baudot, Freed ....(1989) Texte ICMC 89

Le texte (4) décrit le principe de l'obtention et de l'utilisation des modèles.

Le texte (6) décrit l'utilisation des outils disponibles pour l'analyse et la synthèse dans l'environnement CHANT/FORMES.

 

 

 

 

 

Machines utilisables

L'analyse peut être utilisée sous UNIX, ou bien sur un Macintosh dans l'environnement MPW (les commandes décrites ci-dessous sont des exécutables UNIX dans un cas, ou des "tools" MPW dans l'autre).

Documentation on-line

Toutes les commandes décrites ci-dessous répondent à l'option -h en affichant à l'écran un court mode d'emploi, donnant la liste de tous les arguments possibles de la commande.

Formats des modèles et utilitaires de changement de format

Le format choisi dans la version C pour la sauvegarde des modèles de résonance est un format binaire. Les modèles ne sont donc pas éditables directement.

La commande btoa_model permet de produire, à partir d'un fichier binaire <xxx>, un fichier ascii. <xxx>.a. Il est possible de modifier les valeurs des paramètres des résonances du modèle, puis de repasser à un format binaire en utilisant la commande atob_model.

La commande mk_csound_model produit un fichier ascii au format simplifié utilisé par les modules csound, à partir d'un fichier binaire.

La commande mk_lisp_model produit un fichier ascii au format LISP, à partir d'un fichier binaire (ce fichier est utilisable pour la synthèse et la réduction de données en LISP, mais pas pour poursuivre dans l'environnement CHANT-FORMES une analyse commencée dans l'environnement C).

La commande lisptoc_model permet de lire un modèle au format LISP, et de produire un fichier binaire. La commande csoundtoc_model permet de lire un modèle au format simplifié csound, et de produire un fichier binaire. (NB: ces fichiers ne contiennent pas les informations concernant les étapes de l'analyse, et ne peut donc être utilisé pour poursuivre dans l'environnement C une analyse commencée dans l'environnement LISP).

Voici les options utilisables par ces commandes de conversion de format:

btoa_model -h

Usage: btoa_model -Les_flags_ci_dessous[valeur]

h : pour mode d'emploi

i : nom du fichier a convertir

d : repertoire de lecture du modele binaire [courant]

D : repertoire d'ecriture du modele ascii [-d]

NB: pas de blanc entre signe - et option

NB: <file> -> <file>.a

atob_model -h

Usage: atob_model -Les_flags_ci_dessous[valeur]

h : pour mode d'emploi

i : nom du fichier a convertir

d : repertoire de lecture du modele ascii [courant]

D : repertoire d'ecriture du modele binaire [-d]

NB: pas de blanc entre signe - et option

NB: <file>.a -> <file>

mk_csound_model -h

Usage: mk_csound_model -Les_flags_ci_dessous[valeur]

h : pour mode d'emploi

i : nom du fichier a convertir

d : r epertoire de lecture du modele binaire [courant]

o : nom du fichier en sortie [-i.cs]

D : repertoire d'ecriture du modele ascii format csound [-d]

NB: pas de blanc entre signe - et option

mk_lisp_model -h

Usage: mk_lisp_model -Les_flags_ci_dessous[valeur]

h : pour mode d'emploi

i : nom du fichier a convertir

d : repertoire de lecture du modele binaire [courant]

o : nom du fichier en sortie [-i.ll]

D : repertoire d'ecriture du modele ascii format lisp [-d]

NB: pas de blanc entre signe - et option

lisptoc_model -h

Usage: lisptoc_model -Les_flags_ci_dessous[valeur]

h : pour mode d'emploi

i : nom du fichier a convertir

d : repertoire de lecture du modele lisp ascii [courant]

o : nom du fichier en sortie [-i moins eventuelle extension .ll]

D : repertoire d'ecriture du modele binaire [-d]

NB: pas de blanc entre signe - et option

csoundtoc_model -h

Usage: csoundtoc_model -Les_flags_ci_dessous[valeur]

h : pour mode d'emploi

i : nom du fichier ascii simplifie a convertir

d : repertoire de lecture du modele simplifie [courant]

o : nom du fichier en sortie [-i moins eventuelle extension .cs]

D : repertoire d'ecriture du modele binaire [-d]

NB: pas de blanc entre signe - et option

Resynthèse d'un modèle

Pour synthétiser la réponse à une quasi-impulsion d'un modèle, on peut utiliser la commande synthese.

synthese -h

Usage: synthese -Les_flags_ci_dessous[valeur]

h : pour mode d'emploi

i : nom du fichier binaire du modele a synthetiser

d : repertoire de lecture du modele [courant]

o : nom du son en sortie [-i plus extension .s]

D : repertoire d'ecriture du son [-d]

H : duree de l'excitation [0.00300]

z : duree du son [temps suffisant pour que l'amplitude maximum de chaque resonance atteigne 50.000000dB]

r : taux d'echantillonnage des sons de synthese [f(convertisseur), et plus petit suffisant pour la plus haute frequence]

U : synthetiseur (0: FOFs 1: FILTRES) [1]

v : si positionne, commentaires affiches a l'ecran [non positionne]

NB: pas de blanc entre signe - et option

Préparation des sons

Les sons musicaux analysés doivent se rapprocher d'une "réponse impulsionnelle": pizzicato (sans glissé de hauteur) pour une corde, percussion, slap… Pour les sons très courts, ceux qui comportent des attaques très riches, des effets de couplage, il pourra être difficile d'obtenir un résultat satisfaisant.

- Le son à analyser doit d'abord être numérisé avec un taux d'échantillonage quelconque.

- Il peut ensuite être normalisé en amplitude.

- Enfin, il doit être fenêtré de telle façon que l'attaque soit calée au tout début du fichier de son, sans être cependant amputée (utiliser un éditeur graphique, avec une résolution de l'ordre de l'échantillon).

Le son doit être monophonique.

Dans un environnement UNIX, les sons doivent être au format IRCAM, et au format AIFF dans l'environnement MPW.

Conduite d'une analyse

Rappel du principe

L'analyse est interactive et itérative.

A chaque étape, deux fenêtres sont choisies sur le son; sur les spectre estimés, les pics sont extraits, puis appariés; lorsque l'appariement est possible, on considère que la paire de pics représente un mode de résonance du corps ayant produit le son analysé; de la position en fréquence et de l'évolution en amplitude des pics, on déduit les paramètres du filtre du second ordre devant représenter ce mode de résonance dans le modèle (fréquence, amplitude, taux de décroissance). Cette première opération produit un modèle "élémentaire".

Ce modèle est alors confronté au modèle obtenu lors de la précédente étape d'analyse. Les résonances modélisées sont appariées lorsqu'elles sont suffisamment proches en fréquence, et leur paramètres modifiés en fonction des anciennes et des nouvelles valeurs. Lorsque l'appariement n'est pas possible, les résonances sont conservées ou rajoutées sans modification. Cette deuxième opération produit un modèle "enrichi" qui constitue le produit final de l'étape d'analyse.

L'enchaînement des étapes doit dans la version actuelle de l'analyse répondre au principe suivant:

l'analyse doit commencer avec deux petites fenêtres sur le son; à chaque nouvelle étape, la taille des fenêtres et leur écartement doivent être augmentés, afin de gagner en résolution fréquentielle et d'affiner l'estimation du taux de décroissance des résonances. A chaque étape, l'utilisateur doit fournir un certain nombre de paramètres, et peut écouter le son correspondant à l'analyse élémentaire courante, et celui correspondant au résultat global (le modèle "enrichi") courant. L'analyse est terminée, généralement au bout de 3 à 8 étapes, lorsque le résultat est jugé satisfaisant. A tout moment, il est possible de revenir en arrière en repartant d'une étape antérieure. Les sons de synthèse sont écrit dans le répertoire spécifié par l'option -W, et les modèles dans le répertoire spécifié par l'option -d. Par défaut, les fichiers sont écrits dans le répertoire courant.

figure 1: Principe de l’analyse

 

Appel de la commande d'analyse

L'appel de la commande d'analyse avec l'option -h affiche à l'écran le message suivant, qui décrit brièvement les contrôles dont dispose l'utilisateur:

analyse -h

Usage: analyse -Les_flags_ci_dessous[valeur]

controle des entrees sorties

i : nom du son a analyser

o : racine des noms de fichiers de sortie [entree]

p : modele precedent

d : repertoire de lecture ecriture des modeles [courant]

D : repertoire de lecture des fichiers de sons [-d]

R : taux d'echantillonnage du son analyse

controle des resyntheses

U : synthetiseur (-1:pas de synthese 0:FOFs 1:FILTRES) [1]

W : repertoire d'ecriture des fichiers de sons [-D]

H : duree de l'excitation [0.00300]

r : taux d'echantillonnage des sons de synthese [f(convertisseur), et plus petit suffisant pour la plus haute frequence]

z : duree du son [temps suffisant pour que l'amplitude maximum de chaque resonance atteigne -(-x dB)]

x : pour calculer duree -z si non specifiee [50.00]

controle de l'estimation spectrale

t : temps pour la premiere fenetre[0.0000]

T : temps pour la deuxieme fenetre[temps_1 +taille de la fenetre]

w : taille de la fenetre

Z : type de fenetre (non implemente)[Blackman-Harris 4]

f : taille de la FFT [plus proche puissance de 2 superieure a la fenetre]

F : methode d'estimation spectrale (non implemente)[FFT]

controle de l'extraction de pics

P : methode d'extraction de pics (0:all smaller;1:one smaller;2:mean smaller;a completer)[0]

L : largeur des pics (1 donne tous les maximums) [1]

l : hauteur des pics[3.00dB]

a : amplitude minimum des pics dans la premiere fenetre [-80.00dB]

A : amplitude minimum des pics dans la deuxieme fenetre [-96.00dB]

controle de l'analyse elementaire (appariement des pics)

m : mode d'appariement des pics(0:first match;1:closest match)[1]

s : seuil en Hz. pour l'appariement [-y fois la resolution de l'estimation spectrale]

y : facteur pour calcul de -s si non specifie [2.00]

controle de l'analyse merge (appariement des resonances)

p : modele a apparier au nouveau modele elementaire (si absent, demarrage d'une nouvelle serie)

M : mode d'appariement des resonances(0:first match;1:closest match)[1]

e : flag mode doublement des resonances (0:off,1:utiliser -b seul,2:utiliser -b et -B)[0]

V : flag verification de la largeur de bande des resonances si non retrouvees dans analyse courante[non positionne]

S : seuil en Hz. pour l'appariement [-Y fois la resolution de l'estimation spectrale]

Y : facteur pour calcul de -S si non specifie [2.00]

b : valeur maximum de largeur de bande pour qu'une resonance puisse etre doublee[12.00]

B : changement minimum en pourcentage de la largeur de bande par rapport a l'analyse precedente pour qu'une resonance puisse etre doublee[5.00]

v : si positionne, commentaires affiches a l'ecran [non positionne]

NB: trois flags obligatoires: -i -w -R (et -p pour continuer une analyse

NB: le post-operateur S de carl est utilisable pour specifier les durees en nombre d'echantillons

NB: pas de blanc entre flag et valeur

Les durées sont spécifiées en secondes, ou en nombre d'échantillons lorsque le post-opérateur S est fourni (ex: -w3200S est équivalent à -w.1 pour un son échantillonné à 32000).

Entre crochets figurent les défauts utilisés lorsque l'option n'est pas spécifiée.

Contrôle des entrées-sorties et des resynthèses

i : nom du son a analyser

o : racine des noms de fichiers de sortie [entree]

p : modele precedent

d : repertoire de lecture ecriture des modeles [courant]

D : repertoire de lecture des fichiers de sons [-d]

R : taux d'echantillonnage du son analyse

U : synthetiseur (-1:pas de synthese 0:FOFs 1:FILTRES) [1]

W : repertoire d'ecriture des fichiers de sons [-D]

H : duree de l'excitation [0.00300]

r : taux d'echantillonnage des sons de synthese [f(convertisseur), et plus petit suffisant pour la plus haute frequence]

z : duree du son [temps suffisant pour que l'amplitude maximum de chaque resonance atteigne -(-x dB)]

x : pour calculer duree -z si non specifiee [50.00]

v : si positionne, commentaires affiches a l'ecran [non positionne]

Le premier groupe d'options permet de spécifier les entrées et les sorties de la commande. Les noms des modèles produits par l'analyse sont formés par concaténation de la racine spécifiée par l'option -o (le nom du son par défaut), de ".e" pour un modèle "élémentaire" ou bien de ".m" pour un modèle "enrichi" ("merged"), puis du niveau d'analyse courant (la première étape correspondant au niveau 0).

Lorsque l'option -p (le nom du modèle produit par l'étape précédente) n'est pas spécifiée, le niveau est 0 (on démarre une nouvelle analyse); dans le cas contraire, le niveau est incrémenté de 1 par rapport au niveau du modèle précédent.

L'option -U permet de choisir le synthétiseur utilisé pour calculer la réponse des modèles à des quasi-impulsions. Le taux d'échantillonnage peut être spécifié; s'il ne l'est pas, il est choisi le plus petit possible étant donné le contenu en fréquence des modèles. Si la durée des sons n'est pas spécifiée, elle est calculée de façon à ce que la réponse de chacune des résonances atteignent un certain niveau d'amortissement, spécifié par l'option -x. Les noms des sons produits sont nommés de la même façon que ceux des modèles, et se terminent par "s".

L'enchaînement de 3 étapes sur le son "cloche" produira ainsi les fichiers suivants:

modèle et son élémentaires modèle et son enrichis

étape 0: cloche.e0 cloche.e0s

étape 1: cloche.e1 cloche.e1s cloche.m1 cloche.m1s

étape 2: cloche.e2 cloche.e2s cloche.m2 cloche.m2s

Le taux d'échantillonnage et le nom du son à modéliser et la taille des fenêtres doivent obligatoirement être spécifiés, ainsi que le nom du modèle précédent dans l'enchaînement des étapes d'analyse.

L'option -v ("verbose"), affiche des commentaires sur le déroulement de l'analyse.

NB: attention, le son doit avoir une durée supérieure ou égale à T+w (options précisées ci-dessous). S'il n'est pas assez long, rajouter du silence pour qu'il atteigne la durée désirée.

Contrôle de l'estimation spectrale

t : temps pour la premiere fenetre[0.0000]

T : temps pour la deuxieme fenetre[temps_1 +taille de la fenetre]

w : taille de la fenetre

Z : type de fenetre (non implemente)[Blackman-Harris 4]

f : taille de la FFT [plus proche puissance de 2 superieure a la fenetre]

F : methode d'estimation spectrale (non implemente)[FFT]

Les options -W et -F ne sont pas implémentées (l'analyse utilise la transformée de Fourier rapide, et une fenêtre de type Blackman-Harris 4).

Le temps de début de la première et de la deuxième fenêtre sur le son sont comptés par rapport au début du son.

La taille de la fenêtre (la portion du son prise en compte pour l'estimation spectrale) peut être quelconque. La taille de la FFT peut être quelconque (c'est la plus proche puissance de 2 supérieure ou égale à la taille de la fenêtre et à la taille de la FFT demandée qui est retenue).

 

Contrôle de l'extraction de pics

P : methode d'extraction de pics (0:all smaller;1:one smaller;2:mean smaller;a completer)[0]

L : largeur des pics (1 donne tous les maximums) [1]

l : hauteur des pics[3.00dB]

a : amplitude minimum des pics dans la premiere fenetre [-80.00dB]

A : amplitude minimum des pics dans la deuxieme fenetre [-96.00dB]

Trois variantes sont disponibles pour l'extraction de pics correspondant respectivement aux valeurs 0, 1 et 2 de l'option -P.

L'algorithme considère comme un pic tout maximum dans le spectre, dont l'amplitude est supérieure à -adB pour la première fenêtre, -AdB pour la seconde fenêtre, et qui soit entouré de part et d'autre par -L points d'amplitude inférieure.

Dans la première variante, les amplitudes de ces points (à l'exception des points immédiatement adjacent) doivent être inférieures de -l dB à l'amplitude du maximum.

Dans la deuxième variante, il suffit qu'un seul point (à l'exclusion des points immédiatement adjacent) soit inférieur de -l dB au maximum.

Dans la troisième variante, c'est la moyenne des amplitudes des points (y compris les points immédiatement adjacents) qui doit être inférieure de -l dB au maximum.

Pour les deux premières variantes, une valeur de 1 pour l'option -l revient à retenir tous les maximums supérieurs à -a ou -A dB.

Contrôle de l'appariement des pics

m : mode d'appariement des pics(0:first match;1:closest match)[1]

s : seuil en Hz. pour l'appariement [-y fois la resolution de l'estimation spectrale]

y : facteur pour calcul de -s si non specifie [2.00]

L'appariement des pics est effectué suivant un critère de proximité en fréquence: peuvent être appariés deux pics dont la distance dans le domaine des fréquences est inférieure à -s Hz. Si l'option -s n'est pas spécifiée, le seuil utilisé est égal à -y fois la résolution de l'estimation spectrale.

Les deux jeux de pics sont parcourus par ordre de fréquences croissantes. Pour la valeur 0 de l'option -m, le premier appariement possible est retenu. Pour la valeur 1 de l'option -m, le meilleur appariement possible est recherché (i.e. ce sont les pics les plus proches qui sont appariés). Le mode 0 correspond au fonctionnement de la version LISP de l'analyse, le mode 1 n'existe que dans la version C et doit être préféré.

Contrôle de l'appriement des résonances

controle de l'analyse merge (appariement des resonances)

p : modele a apparier au nouveau modele elementaire (si absent, demarrage d'une nouvelle serie)

M : mode d'appariement des resonances(0:first match;1:closest match)[1]

e : flag mode doublement des resonances (0:off,1:utiliser -b seul,2:utiliser -b et -B)[0]

V : flag verification de la largeur de bande des resonances si non retrouvees dans analyse courante[non positionne]

S : seuil en Hz. pour l'appariement [-Y fois la resolution de l'estimation spectrale]

Y : facteur pour calcul de -S si non specifie [2.00]

b : valeur maximum de largeur de bande pour qu'une resonance puisse etre doublee[12.00]

B : changement minimum en pourcentage de la largeur de bande par rapport a l'analyse precedente pour qu'une resonance puisse etre doublee[5.00]

Les modes d'appariement des résonances sont les mêmes que pour les pics.

Deux options permettent d'activer des modes spéciaux:

- Lorsque l'option -V (vérification du taux de décroissance des résonances) est positionnée, le mécanisme suivant est activé: lorsqu'une résonance modèle produit par l'étape précédente n'est pas retrouvée dans l'analyse élémentaire de l'étape courante, on vérifie que le taux de décroissance de cette résonance est compatible avec la disparition observée. Si elle ne l'est pas, le taux de décroissance est augmenté dans nouveau modèle. Ce mécanisme est délicat d'utilisation (une résonance peut très bien échapper à une étape intermédiaire de l'analyse sans pour autant qu'elle soit "éteinte" dans le son), en particulier lorsqu'on utilise l'option -e.

- Lorsque l'option -e est positionnée, on cherche à modéliser les résonances dans le son dont la décroissance n'est pas exponentielle par deux filtres dont les taux de décroissance diffèrent, suivant le mécanisme suivant: si une résonance du modèle de l'étape précédente est retrouvée dans l'analyse élémentaire de l'étape courante avec un taux de décroissance significativement plus faible, la résonance est "doublée"; une première résonance, plus amortie, représente l'attaque, la deuxième, moins amortie mais d'amplitude plus faible, représente la deuxième partie de la réponse impulsionnelle. Pour que le "doublement" intervienne, deux conditions doivent être remplies: la largeur de bande de la résonance dans l'étape courante (qui mesure le taux d'amortissement) doit être inférieure à une valeur spécifiée par l'option -b, et le changement constaté par rapport à l'étape précédente doit être supérieure en pourcentage à la valeur spécifiée par l'option -B. Ce mécanisme est utile pour certains sons (piano par exemple), mais délicat d'utilisation.

Choix des paramètres et enchaînement des étapes successives

La première fenêtre d'analyse ne doit pas obligatoirement commencer au temps 0, sauf pour la première étape; mais en pratique, cette valeur de 0 amène de meilleurs résultats. L'augmentation de la taille de la fenêtre d'analyse dépend de la durée et de la richesse de l'attaque du son à analyser. On pourra pour commencer doubler la durée à chaque étape. Si les temps de début des fenêtres n'est pas spécifié, la première débute toujours au temps 0, et la deuxième au temps correspondant à la fin de la première fenêtre.

Voici un exemple d'enchaînement:

analyse -icloche -w.01 -R32000

analyse -icloche -w.03 -R32000 -pcloche.e0

analyse -icloche -w.05 -R32000 -pcloche.m1

analyse -icloche -w.10 -R32000 -pcloche.m2

C'est le contrôle auditif qui permet de bien mener les étapes, et la compréhension du principe d'analyse et une certaine expérience est nécessaire. Rappelons simplement ici que les petites fenêtres permettent d'extraire les résonances très amorties de l'attaque (généralement aigües) et les résonances peu amorties les plus fortes, tandis que les grandes fenêtres permettent d'affiner l'estimation des paramètres de ces dernières et d'extraire les résonances peu amorties d'amplitude plus faible, ainsi que de séparer des résonances très proches responsables de battements. La taille maximum pour les fenêtres dépend de la mémoire disponible sur l'hôte. Les fenêtre de plus de 1 seconde ne sont utiles que pour des sons très résonants, pour séparer des résonances très proches (la taille maximum dans la version LISP de l'analyse était de 4 secondes pour un taux d'échantillonnage de 32000).

Une fois l'analyse terminée, les fichiers correspondant aux modèles des étapes intermédiaires peuvent être supprimés; c'est l'un des derniers modèles "enrichis" (suffixe ".m") qui constitue le modèle final.

Les modèles produits comportent une histoire des étapes de l'analyse; on pourra consulter dans la bibliothèque de modèles (LISP ou C), sur les fichiers ascii, les paramètres utilisés pour les différents instruments. Cette histoire permet aussi de répéter une analyse, simplement en exécutant la liste des commandes fournies.

Retour en arrière

Si le résultat de la synthèse de l'analyse courante révèle des erreurs flagrantes, il est possible de revenir en arrière en précisant à l'aide de l'option -p le modèle "enrichi" de étape antérieure dont on souhaite repartir en variant les paramètres de l'analyse.

Lancement d'une analyse en mode non interactif

Le contrôle auditif de chacune des étapes est important pour réussir une analyse. Il est toutefois possible de lancer toute une série d'analyse. Pour cela, il faut créer puis exécuter un fichier de commandes contenant l'enchaînement des commandes élémentaires.

Edition d'un modèle

Voici un exemple de modèle produit par l'analyse, en format ascii.

model_type MODELE_MERGE

son sine4000

date 28/11/90_14:38:34

sample_rate 32000.000000

niveau_analyse 1

niveau 0

t1 0.000000 t2 0.001000 wsize 0.001000 fftsize 0.001000

left_dB_floor -80.000000 right_dB_floor -96.000000 peak_width 1 peak_height 3.000000 peak_mode 0

peak_match_type 1 peak_threshold 1000.000000

double_mode 0 max_d_band 0.000000 min_d_reldeltaT 0.000000 check_mode 0 res_match_type 0 res_threshold 0.000000

psize1 1 psize2 1 ele_model_size 1 model_size 1

niveau 1

t1 0.000000 t2 0.003000 wsize 0.003000 fftsize 0.004000

left_dB_floor -80.000000 right_dB_floor -96.000000 peak_width 1 peak_height 3.000000 peak_mode 0

peak_match_type 1 peak_threshold 250.000000

double_mode 0 max_d_band 12.000000 min_d_reldeltaT 5.000000 check_mode 0 res_match_type 1 res_threshold 250.000000

psize1 1 psize2 1 ele_model_size 1 model_size 1

analyse -isine4000 -R32000.000000 -t0.000000 -T0.001000 -w0.001000 -f0.001000 -P0 -L1 -l3.000000 -a-80.000000 -A-96.000000 -m1 -s1000.000000

analyse -isine4000 -R32000.000000 -t0.000000 -T0.003000 -w0.003000 -f0.004000 -P0 -L1 -l3.000000 -a-80.000000 -A-96.000000 -m1 -s250.000000 -psine4000.e0 -M1 -e0 -S250.000000 -b12.000000 -B5.000000

model_size 1

1 4000.000 -6.017 0.16 0 0

 

On trouve d'abord le type du modèle ("élémentaire" (MODELE_ELE) ou "enrichi" (MODELE_MERGE)), et des informations générales, puis les valeurs des options utilisées à chacun des niveaux d'analyse, puis la liste des commandes permettant de reproduire l'analyse à partir du son (les noms des répertoires d'entrée et de sortie des sons et des modèles ne sont pas conservés).

On trouve ensuite le nombre des résonances du modèle suivi de la liste des paramètres des résonances: numéro de la résonance, fréquence, puissance en dB, largeur de bande. Les deux valeurs suivantes indiquent si la résonance a été doublée suivant le mécanisme décrit plus haut (0 pour une résonance simple, 1 pour une résonance qui a été doublée, -1 pour la résonance "double" qui lui correspond), et si son taux d'amortissement a été vérifié (1 pour vérifiée, 0 pour non vérifiée).

Il est possible de modifier un fichier ascii et de la transformer en fichier binaire pour une utilisation ultérieure (analyse, réduction de données, ou synthèse), à condition de respecter strictement les règles suivantes:

- Les informations ne doivent pas être modifiées (il ne faut rajouter ni supprimer aucune chaîne de caractères)

- Une résonance peut être supprimée ou rajoutée à condition de modifier en conséquence le nombre de résonances du modèle. Si on supprime l'un des éléments d'une résonance double, ne pas oublier de spécifier que l'élément restant devient une résonance simple (en remplaçant le 1 ou le -1 en 0). Le numéro de la résonance n'est indiqué que pour faciliter la lecture, il n'est donc pas nécessaire de mettre à jour la numérotation en cas d'ajout ou de suppression d'une résonance.

La commande btoa_model permet d'obtenir un fichier ascii éditable, la commande atob_model permet d'obtenir un nouveau fichier binaire tenant compte des modifications apportées.

Réduction de données

Une réduction de données peut être appliquée aux modèles produits par l'analyse, en bout de chaîne (un modèle "réduit" ne peut pas être utilisé pour reprendre une analyse).

Principe

La réduction de donnée prend en compte de façon simplifiée les effets de masquage entre résonances. Les caractéristiques du masque sont définies par l'utilisateur, ce qui permet de réduire plus ou moins radicalement les données. L'algorithme de réduction peut être appliqué à différents instants de la réponse (simulée) du modèle à une excitation de type dirac; seules sont alors supprimées les résonances qui sont masquées à chacun des instants choisis. Il peut aussi être appliqué sur l'ensemble de la réponse impulsionnelle (cette variante n'existe pas dans la version LISP).

Le masque est défini par un "offset" (en dB.) et par une pente (en dB. par octave); pour chaque résonance, un masque est calculé, qu'on peut visualiser dans une représentation log-fréquence/dB-amplitude du modèle comme une demi-droite partant du point défini par la fréquence de la résonance et par son amplitude en dB diminuée de "offset" dB, et dont la pente est exprimée en dB par octave. Toute résonance qui "émerge" des masques calculés, c'est -à-dire toutes résonance dont l'amplitude calculée à l'instant choisi est supérieure à la valeur du masque pour la fréquence de la résonance, est retenue. Les autres sont écartées. L'algorithme prend en compte l'effet de masquage de l'aigu par le grave, et du grave par l'aigu (cf. figure no 1). Il ne prend effet qu'au dessus d'un niveau plancher (l'option -P de la commande), c'est-à-dire qu'une résonance masquée en dessous de -(-P) dB est conservée.

Le modèle simplifié est écrit sur le répertoire choisi, et le son correspondant à la resynthèse est calculé, le contrôle auditif du résultat étant essentiel.

Les résonances peuvent aussi être éliminées suivant des critères absolus (fréquences et largeurs de bandes minimales et maximales, amplitude minimale).

Figure no 1: Principe de la réduction de données

 

 

 

 

 

 

Appel de la commande de réduction

L'appel de la commande de réduction de données avec l'option -h affiche à l'écran le message suivant, qui décrit brièvement les contrôles dont dispose l'utilisateur:

reduction -h

Usage: reduire -Les_flags_ci_dessous[valeur]

i : nom du fichier a reduire

o : nom du fichier de sortie [entree.r]

d : repertoire de lecture des modeles [courant]

W : repertoire d'ecriture des modeles [-d]

U : synthetiseur (-1:pas de synthese 0:FOFs 1:FILTRES) [1]

D : repertoire d'ecriture des sons [-W]

H : "duree" de l'excitation [0.00300]

z : duree du son [temps suffisant pour que l'amplitude maximum de chaque resonance atteigne -(-x dB)

x : pour calculer duree -z si non specifiee [50.00]

r : taux d'echantillonnage des sons de synthese [f(convertisseur), et plus petit suffisant pour la plus haute frequence]

M : flag de reduction par effet de masquage

O : offset du masque en dB [20.00]

S : pente du masque en dB/octave [34.00]

P : amplitude minimum pour la reduction en dB [70.00]

t : flag pour mode liste de temps (calcul du masque pour chacun des temps specifies)[off]

l : un temps en secondes a rajouter a liste pour option -t

T : mode continu: calcul du masque sur toute la reponse impulsionnelle a partir du temps specifie [on]

w : un temps en secondes pour flag -T [0.00]

A : flag de reduction suivant criteres absolus

f : frequence minimum (Hz) [20.00]

F : frequence maximum (Hz) [20000.00]

a : amplitude minimum (dB) [70.00]

b : largeur de bande minimum (Hz) [0.00]

B : largeur de bande maximum (Hz) [20000.00]

v : si positionne, commentaires affiches a l'ecran [non positionne]

NB: -t et -T sont exclusifs

NB: pas de blanc entre signe - et option

Les options -M et -A peuvent être utilisées simultanément.

Voici un exemple d'appel de la commande de réduction:

reduction -i:vib-G2 -M -T

Voici un fichier ascii correspondant à une modèle "réduit":

model_type MODELE_REDUIT

original vib-G2

date 28/11/90_14:41:29

abson: 1

min_freq 20.000000

max_freq 20000.000000

min_ampl -70.000000

min_band 0.000000

max_band 20000.000000

maskon: 1

slope 34.000000

offset 20.000000

mask_floor -70.000000

timelistmode: 0

ntimes 1

timelist 0.000000

wt 0.000000

reduire -ivib-G2 -A -f20.000000 -F20000.000000 -a-70.000000 -b0.000000 -B20000.000000 -M -S34.000000 -O20.000000 -P-70.000000 -T -w0.000000

model_size 40

1 27.690 -65.437 0.32 0 0

2 29.806 -66.388 0.362 0 0

3 34.523 -49.554 0.195 0 0

4 41.478 -67.527 0.696 0 0

5 47.591 -43.851 0.182 0 0

6 71.516 -68.833 0.551 0 0

7 90.920 -60.949 1.43 0 0

8 171.160 -49.098 3.39 0 0

9 196.652 -24.250 0.138 0 0

10 393.352 -46.459 0.605 0 0

11 499.694 -68.503 2.73 0 0

12 508.655 -48.197 7.9 0 0

13 552.669 -69.970 2.31 0 0

14 587.700 -64.415 0.344 0 0

15 589.915 -47.352 0.594 0 0

16 786.623 -35.179 0.204 0 0

17 888.321 -51.473 5.65 0 0

18 895.916 -45.162 12.4 0 0

19 967.814 -58.843 1.7 0 0

20 983.133 -61.016 0.254 0 0

21 1581.176 -57.436 0.471 0 0

22 2003.512 -29.321 1.27 0 0

23 2006.710 -9.337 1.21 0 0

24 3046.802 -31.721 0.722 0 0

25 3050.696 -33.223 3.83 0 0

26 3619.364 -49.355 2.51 0 0

27 3623.105 -21.167 4.88 0 0

28 4015.902 -42.213 4.15 0 0

29 4907.378 -24.064 6.26 0 0

30 5686.889 -53.074 5.24 0 0

31 5723.582 -45.190 5.24 0 0

32 6023.894 -57.616 3.42 0 0

33 6820.997 -56.957 7.03 0 0

34 6925.660 -42.997 6.47 0 0

35 8150.777 -64.919 4.87 0 0

36 8213.490 -67.177 3.52 0 0

37 8938.438 -52.730 8.48 0 0

38 8990.316 -44.179 6.85 0 0

39 10119.490 -66.333 7.13 0 0

40 10242.320 -63.332 3.49 0 0

Utilisation

Un offset de 20 dB. et une pente de 34 dB. par octave donnent généralement un résultat qui n'altère pas de façon significative la qualité de la resynthèse. Un offset et une pente plus petits déterminent une réduction de donnée plus radicale.

Avec l'option -t, le premier temps fourni doit généralement correspondre au début de la réponse (temps 0.). Les résonances de l'attaque sont alors conservées, mais les résonances plus faibles qui constituent l'essentiel de la réponse au-delà de l'attaque disparaissent. C'est pourquoi il est indiqué de fournir des arguments optionnels pour d'autres temps de réduction (chacun de ces temps étant spécifiés à l'aide de l'option -l), afin de préserver ces résonances, ou d'effectuer la réduction de données sur l'ensemble de la réponse impulsionnelle (option -T). Avec cette dernière option, les effets de masquage ne sont calculés qu'à partir du temps spécifié par l'option -w de la réponse impulsionnelle du modèle.