1
Master IPCC
Informatique pour la Perception,
la Cognition
et les Communications
Université Paris Descartes
Université Paris-Sorbonne
M
ASTER
IPCC
1
ÈRE ANNÉE
Conception d’objets audio
Atelier n° 2
Synthétiseur de formes sonores
avec l’API Java Sound
Le but de cet atelier est d’expérimenter les notions théoriques de synthèse de formes sonores à
l’aide de l’API JavaSound. Parmi les notions vues dans ce second atelier : i) Restitution d’un son
en Java, ii) Génération de formes d’onde riches en harmoniques iii) Analyse-Synthèse additive iv)
Génération d’enveloppes temporelles v) Synthèse soustractive. Cet atelier a comme prérequis les
cours 1,2,3 ainsi que l’atelier sur l’acquisition numérique de l’audio.
0. A
TELIER DE DEVELOPPEMENT
E
CLIPSE
L’atelier de développement multi-plateformes Eclipse (open-source) nous servira à écrire et à
tester les programmes en Java. Il est téléchargeable sur www.eclipse.org. Il vous est possible
d’utiliser un autre atelier de développement si vous le souhaitez.
0.1. Lancement de l’atelier
Lancer eclipse.
2
Sélectionner dans le menu Fenêtre, Ouvrir perspective, Java pour choisir la perspective
Java.
Sélectionner dans le menu Fichier, Nouveau, Projet pour créer un projet nommé Conception
des objets audio.
Sélectionner dans le menu Fichier, Nouveau, Paquetage pour créer dans le projet un
paquetage nommé Atelier2.
Ouvrir un navigateur internet à l’adresse java.sun.com/j2se/1.5.0/docs/api/index.html et
sélectionner le paquetage javax.sound.sampled. Cela vous permettra d’accéder à la
documentation de l’API JavaSound.
1. R
ESTITUTION D
UN SON
Le but de cette partie est d’apprendre à utiliser l’API JavaSound pour lire un fichier
contenant des échantillons audio, à visualiser leur valeur et à les écouter.
1.1. Lecture des caractéristiques d’un fichier audio
Recopier le fichier Scherzo.wav dans votre projet. Ecrire une classe CaracAudio.java permettant
de connaître les caractéristiques audio du son contenu dans ce fichier (e.g., fréquence
d’échantillonnage, quantification d’un échantillon, nombre d’échantillons, …).
1.2. Lecture et visualisation des valeurs des échantillons
Ecrire une classe LectAudio.java permettant de lire l’ensemble des échantillons du fichier. Ce
programme devra également permettre de visualiser, sur la console, les valeurs d’une plage
d’échantillons donnée. Il est possible d’utiliser pour les entrées-claviers, les méthodes de la
classe Keyboard.java (fournie).
1.3. Restitution sonore
Ecrire une classe PlayAudioFile.java permettant de restituer le son d’un fichier audio. Ecouter.
2. S
YNTHESE D
UN SON PUR ET SAUVEGARDE DANS UN FICHIER AUDIO
Le but de cette partie est d’apprendre à créer une forme d’onde dans un tableau
d’échantillons et à la sauvegarder dans un fichier audio.
2.1. Création et restitution d’un tableau d’échantillons
Ecrire une classe GenSinus.java créant un tableau d’échantillons représentant une forme
d’onde sinusoïdale d’une fréquence donnée f0. Ecouter.
2.2. Sauvegarde d’un tableau d’échantillons dans un fichier audio
Ecrire une classe EcrAudio.java permettant d’écrire l’ensemble des échantillons d’un tableau
d’échantillons dans un fichier audio de type .wav. Vérifier avec le logiciel Praat la fréquence
f0.
3.
G
ENERATION DE FORMES D
ONDE RICHES EN HARMONIQUES
Le but de cette partie est de générer des formes d’ondes périodiques à une fréquence
donnée riches en harmoniques.
3
3.1. Génération d’une forme d’onde en triangle
Ecrire une classe GenTriangle.java créant un tableau d’échantillons représentant une forme
d’onde en triangle d’une fréquence donnée f0. Ecouter. Calculer à l’aide du logiciel Praat la
position des harmoniques et leur fonction de décroissance pour la note sol.
3.2. Génération d’une forme d’onde en carré
Ecrire une classe GenCarrée.java créant un tableau d’échantillons représentant une forme
d’onde en triangle d’une fréquence donnée f0. Ecouter. Calculer à l’aide du logiciel Praat la
position des harmoniques et leur fonction de décroissance pour la note la.
3.3. Génération d’une forme d’onde en dent de scie
Ecrire une classe GenDentScie.java créant un tableau d’échantillons représentant une forme
d’onde en triangle d’une fréquence donnée f0. Ecouter. Calculer à l’aide du logiciel Praat la
position des harmoniques et leur fonction de décroissance pour la note si.
4.
A
NALYSE
-S
YNTHESE
A
DDITIVE
Le but de cette partie est de synthétiser une note de flûte par une analyse synthèse additive.
4.1. Analyse harmonique d’une note de flûte
Lire à l’aide du logiciel Praat le fichier Flute1.wav. Ecoutez le. Sélectionner le segment
temporel correspondant à la première note. Quelle est cette note ? Sélectionner le
fondamental et les 9 harmoniques les plus importantes. Calculer leurs pondérations
respectives en décibel, en linéaire, et en pourcentage linéaire.
4.2. Synthèse additive
Ecrire une classe SynthAdd.java créant un tableau d’échantillons représentant une forme
d’onde complexe par synthèse additive d’une fréquence donnée f0. Synthétiser le son de
flûte. Ecouter. Vérifier à l’aide du logiciel Praat les pondérations du fondamental et de
chaque harmonique.
5.
G
ENERATION D
ENVELOPPE TEMPORELLE
Le but de cette partie est de synthétiser l’enveloppe temporelle d’une note de flûte à l’aide
d’un suivi d’enveloppe.
5.1. Suivi de l’enveloppe d’une note de flute
Lire à l’aide du logiciel Praat le fichier Flute1.wav. Ecoutez le. Sélectionner le segment
temporel correspondant à la deuxième note. Quelle est cette note ?. A l’aide de la courbe
d’intensité, calculer les paramètres de son enveloppe dans la modélisation ADSR.
5.2. Génération de l’enveloppe
Ecrire une classe GenEnv.java créant une enveloppe de type ADSR de paramètres données.
Générer l’enveloppe synthétique correspondant aux paramètres extraits à la question
précédente.
5.3. Synthèse d’une note
Ecrire une classe SynthAddEnv.java permettant de synthétiser une note donnée de flûte d’une
durée donnée en extrapolant les réponses aux questions 4.2 et 5.2.
4
5.4. Synthèse d’une suite de notes
Créer le fichier audio correspondant à la suite de notes suivantes : fa (1/2 temps) fa (1/2
temps) fa (1/2 temps) - sol (1/2 temps) la (1 temps) sol (1 temps) fa (1/2 temps) la
(1/2 temps) – sol (1/2 temps) – sol (1/2 temps) – fa (2 temps). Ecouter.
6.
S
YNTHESE SOUSTRACTIVE
Le but de cette partie est de synthétiser un son de piano par une synthèse soustractive.
6.1. Gabarit du filtre d’harmoniques
Lire à l’aide du logiciel Praat le fichier Piano.wav. Ecoutez le. Sélectionner le segment
temporel correspondant à la première note. Quelle est cette note ? Quelle est la forme d’onde
la plus proche ? Déterminer le gabarit et le type du filtre d’harmoniques nécessaire.
6.2. Synthèse soustractive
A l’aide de la classe de filtrage FiltreRIF.java (fournie), Ecrire une classe SynthSoustr.java
créant un tableau d’échantillons représentant une forme d’onde complexe par synthèse
soustractive d’une fréquence donnée f0. Synthétiser le son de piano. Ecouter. Vérifier à l’aide
du logiciel Praat les pondérations du fondamental et de chaque harmonique.
1 / 4 100%
La catégorie de ce document est-elle correcte?
Merci pour votre participation!

Faire une suggestion

Avez-vous trouvé des erreurs dans linterface ou les textes ? Ou savez-vous comment améliorer linterface utilisateur de StudyLib ? Nhésitez pas à envoyer vos suggestions. Cest très important pour nous !