Vous êtes sur la page 1sur 26

Cours n°

n° 3
Synthèse de formes acoustiques
Introduction à Java Sound
Sommaire
1. Synthèse de formes acoustiques
1.1. Synthèse du timbre
1.1.1. Synthèse additive
1.1.2. Synthèse non-linéaire
1.1.3. Synthèse soustractive
1.1.4. Autres méthodes
1.2. Synthèse de la temporalité
1.2.1. Générateur d’enveloppe
1.2.2. Modulation basse fréquence

2. Introduction à Java Sound


2.1. Package javax.sound.sample
2.2. Restitution sonore

Année 2008 - 2009 M1 – Conception Audio – Marie-José Caraty / David Janiszek 2


Références bibliographiques
 Synthèse de formes acoustiques

 D. Mercier, Le livre des techniques du son (tome 2), Dunod,


2004.

 I. Waugh, Quick guide to analogue synthesis, PC Publishing ,


2000.

 T. Thomas, Sound Synthesis: Analog and Digital Techniques,


Tab books, 1990.

 Java Sound
 java.sun.com/j2se/1.5.0/docs/guide/sound/index.html

 J.-M. Farinone, Java et le multimédia, Dunod, 2003.

Année 2008 - 2009 M1 – Conception Audio – Marie-José Caraty / David Janiszek 3


1. Synthèse de formes acoustiques

Année 2008 - 2009 M1 – Conception Audio – Marie-José Caraty / David Janiszek 4


1. SYNTHESE DE FORMES ACOUSTIQUES
Historique

1897 Thelarmonium ou dynamorphone [Cahill]


Synthétiseur polyphonique (oscillations produites par l’alternateur d’un moteur
électrique) 200 tonnes
1920 Théréminvox [Termin]
Synthétiseur monophonique (interférences entre deux hautes fréquences, une fixe et
l’autre variant en fonction de la position de la main)
1928 Ondes musicales [Martenot] Amélioration du théréminvox
Ajout d’un clavier, possibilité de vibrato et de glissando, modification du timbre
Succès auprès des compositeurs (A. Honegger, P. Boulez, E. Varese, O.Messian)
1930 Trautonium [Trautweun]
Synthétiseur à lampe monophonique puis diphonique (synthèse soustractive)
Cris des oiseaux dans la bande sonore du film "Les oiseaux" d'Hitchcock.
1954 RCA Mark 1 [Olsen & Belar]
Premier synthétiseur programmable (forme d’onde sur papier perforé)
1700 tubes (6 mètres de long, 2 mètres de haut)
1983 Sortie du DX 7 par Yamaha
M1 – Conception Audio – Marie-José Caraty
Année 2008 - 2009 / David Janiszek 5
1.1 SYNTHESE DU TIMBRE
Définition

Timbre d'un instrument (ou couleur)

Définition perceptive
Couleur d’un instrument (signature discriminante d’un type d’instrument),
Différence perceptible entre la note « la » (440 Hz) d’un piano et la même note
jouée sur une harpe

Définition mathématique
Sons périodiques mais pas de sons purs (sinusoïdes),
Note de hauteur f0 = Son périodique de fréquence f0 (fondamental)
+ Sons périodiques de fréquence n.f0 (harmoniques)

Pour une note donnée, pour un type d’instrument donné


Agencement unique des harmoniques

M1 – Conception Audio – Marie-José Caraty


Année 2008 - 2009 / David Janiszek 6
1.1.1 SYNTHESE ADDITIVE
Principes

Addition de formes d’ondes élémentaires périodiques


Synthèse de Fourier (superposition de signaux sinusoïdaux d’amplitude et de
fréquence différentes),
Approximation d’une forme complexe par analyse-synthèse des harmoniques

Coût de calcul important


20-30 harmoniques pour une note d’un
instrument à vent,
Plus de 150 harmoniques pour une note
de piano,
Polyphonie à 32 voies -> Addition et contrôle
de plusieurs milliers de signaux sinusoïdaux

Synthétiseur RMI (Harmonic-synthetiser)


Année 2008 - 2009 M1 – Conception Audio – Marie-José Caraty / David Janiszek 7
1.1.1 SYNTHESE ADDITIVE
Exemple

Synthèse d’une note « do »


Son de fréquence fondamentale 261.6 Hz (do), 4 harmoniques d’énergie
décroissante

M1 – Conception Audio – Marie-José Caraty


Année 2008 - 2009 / David Janiszek 8
1.1.2 SYNTHESE NON-
NON-LINEAIRE
Principes

Génération de formes d’ondes complexes


Opérateurs non-linéaires sur des formes d’ondes élémentaires périodiques

Synthèse à modulation de fréquence [Chowning 73]


Soient deux formes d’ondes élémentaires périodiques :
Forme d’onde modulante Fm et forme d’onde porteuse Fp

F FM
(t , fp, fm) = F p (t , fp + F m (t , fm))
Les fréquences fp et fm sont du même ordre de grandeur et généralement dans un
rapport simple (1:1, 1:2, 1:4, ...).

Son riche en harmoniques sans correspondance avec un instrument précis


Circuit Yamaha OPL2, OPL3, OPL4 Synthétiseur DX7

Année 2008 - 2009 M1 – Conception Audio – Marie-José Caraty / David Janiszek 9


1.1.2 SYNTHESE NON-
NON-LINEAIRE
Exemple de synthèse FM

Synthèse d’une note « do »


Forme d’onde porteuse de fréquence 261.6 Hz (do) modulée par une forme
d’onde modulante de fréquence triple

Année 2008 - 2009 M1 – Conception Audio – Marie-José Caraty / David Janiszek 10


1.1.3 SYNTHESE SOUSTRACTIVE
Principes

Génération d’un son périodique de spectre complexe

Soustraction d’harmoniques par un


ou plusieurs filtres résonnants

Sons périodiques riches en harmoniques


Triangle (harmoniques paires)décroissance forte (12 dB/octave)
Carré (harmoniques paires) décroissance faible (6 dB/octave)
Dent de scie (harmoniques paires et impaires) décroissance faible (6 dB/octave)
Impulsions, trapèze, double sinus, … Synthétiseur Moog, ARP, Elka, Roland, …

Année 2008 - 2009 M1 – Conception Audio – Marie-José Caraty / David Janiszek 11


1.1.3 SYNTHESE SOUSTRACTIVE
Exemples de synthèse soustractive (1/3)

Synthèse d’une note « do »


Forme d’onde en triangle de fréquence 261.6 Hz (do) filtrée à 1500 Hz

Année 2008 - 2009 M1 – Conception Audio – Marie-José Caraty / David Janiszek 12


1.1.3 SYNTHESE SOUSTRACTIVE
Exemples de synthèse soustractive (2/3)

Synthèse d’une note « do »


Forme d’onde en carré de fréquence 261.6 Hz (do) filtrée à 1500 Hz

Année 2008 - 2009 M1 – Conception Audio – Marie-José Caraty / David Janiszek 13


1.1.3 SYNTHESE SOUSTRACTIVE
Exemples de synthèse soustractive (3/3)

Synthèse d’une note « do »


Forme d’onde en dent de scie de fréquence 261.6 Hz (do) filtrée à 1500 Hz

Année 2008 - 2009 M1 – Conception Audio – Marie-José Caraty / David Janiszek 14


1.1.4 AUTRES METHODES DE SYNTHESE

Synthèse à table d'ondes


Table contenant un ensemble de formes d’ondes préenregistrées ou synthétiques
(stockage d’une ou de plusieurs périodes)
Synthétiseurs PPG (Wave), Korg (WWavestation), Waldorf (Wave)

Synthèse granulaire
Construction du son à partir d’une grande quantité de signaux audio de faible
durée (50 ms)
Synthétiseurs PropellerHeads (Maelström), Native Instrument (Reaktor)

Synthèse par fonction d’onde formantique


Extension de la synthèse granulaire au domaine fréquentiel
Synthétiseurs Yamaha (FS1R), Roland (JP8080)

Synthèse par modélisation physique


Modèle mathématique décrivant les propriétés physico-acoustique d’un instrument
de musique
Synthétiseurs Korg (Prophecy), Yamaha (série VL)
Année 2008 - 2009 M1 – Conception Audio – Marie-José Caraty / David Janiszek 15
1.2 SYNTHESE DE LA TEMPORALITE
Définitions

Evolution temporelle des paramètres d’un son


Hauteur, Intensité, Timbre

Organisation supra-segmentale
Cadence de succession et durée des notes (rythme, tempo, temps),
Structures temporelles imbriquées décrites dans la partition

Organisation infra-segmentale
Description de la structure temporelle d’une note et des liaisons avec les notes
adjacentes
Evolution temporelle de l’intensité d’une note
enveloppe, tremolo
Evolution temporelle de la hauteur d’une note
vibrato, glissando

Année 2008 - 2009 M1 – Conception Audio – Marie-José Caraty / David Janiszek 16


1.2.1 GENERATEUR D’ENVELOPPE
Principe

Modèle d’évolution temporelle de l’intensité d’un signal


musical

Modèle d’évolution ADSR


Transitoire d’attaque (Attack),
Décroissance (Decay),
Tenue (Sustain),
Relâchement (Release)
Adapté à la majorité des instruments de musique

Modèle d’évolution analytique (synthétiseur virtuel)


Description par une suite de segments
niveau de départ et d’arrivée, pente
Lien avec l’évolution de la hauteur

Année 2008 - 2009 M1 – Conception Audio – Marie-José Caraty / David Janiszek 17


1.2.2 MODULATEUR BASSE-
BASSE-FREQUENCE
Principe

Générateur de fréquence inférieure aux fréquences


audibles (20 Hz)
Low Frequency Oscillator (LFO),
Fréquence réglable,
Formes d’ondes usuelles (sinus, triangle, carré, dent de scie, …)

Production d’un effet trémolo


Variation par rapport à la valeur initiale de l’amplitude du son en fonction de
l’amplitude de la forme d'onde du LFO

Production d’un effet vibrato


Variation par rapport à la valeur initiale de la hauteur du son en fonction de
l’amplitude de la forme d'onde du LFO

Année 2008 - 2009 M1 – Conception Audio – Marie-José Caraty / David Janiszek 18


2. Introduction à Java Sound

Année 2008 - 2009 M1 – Conception Audio – Marie-José Caraty / David Janiszek 19


2. INTRODUCTION A JAVA SOUND
Généralités

1995 Sortie de Java


Exécution de fichiers sons de format MIC dans des applets

2001 Sortie de Java 1.3


Intégration de l’API Java Sound,
• Format multiples de fichiers sons (AIFF, AU and WAV ),
• Formats multiples de son (échantillonnage 8 kHz à 48 kHz, quantification sur 8 et
16 bits, mono et stéréo)
• Format multiples de codage (PCM, MIC),
• Formats multiples de fichiers musicaux (MIDI type 0 et 1, RMF)
Quatre paquetages de classes
• javax.sound.sample
• javax.sound.midi
• javax.sound.sampled.spi
• javax.sound.midi.spi

Année 2008 - 2009 M1 – Conception Audio – Marie-José Caraty / David Janiszek 20


2.1 PAQUETAGE JAVAX.SOUND.SAMPLE
Description et exemples (1/5)

Interfaces (8) et classes (24) pour acquérir, traiter et


restituer des sons échantillonnés

Classe AudioSystem (point d’entrée du paquetage)


Pas de constructeur, un ensemble de méthodes statiques donnant accès aux
ressources audio de la machine et à la gestion des fichiers sons
Accès aux ressources audio
Line getLine(Line.Info info)
Accès à une ressource audio (entrée audio, sortie audio, mixer)
Caractéristiques, ouverture et sauvegarde d’un fichier son
AudioFileFormat getAudioFileFormat(File fich) descripteur audio d’un fichier son
AudioInputStream getAudioInputStream(File fich) flot audio d’un fichier son
AudioInputStream getAudioInputStream(InputStream flot) flot audio d’un flot
int write(AudioInputStream stream, AudioFileFormat.Type fileType, File out)
Ecriture d’un flot d’octet provenant d’un flot audio dans un fichier son
Année 2008 - 2009 M1 – Conception Audio – Marie-José Caraty / David Janiszek 21
2.1 PAQUETAGE JAVAX.SOUND.SAMPLE
Description et exemples (2/5)

Classe AudioFormat (gestion des formats audio)

deux constructeurs
AudioFormat(AudioFormat.Encoding
AudioFormat encoding, float sampleRate,
int sampleSizeInBits, int channels, int frameSize, float frameRate,
boolean bigEndian)
Format audio dans les codages prédéfinis

AudioFormat(float sampleRate, int sampleSizeInBits, int channels, boolean signed,


boolean bigEndian)
Format audio de codage PCM (linéaire)

Exemple d’utilisation
float fe = 44100.0;
AudioFormat format = new AudioFormat(fe, 16, 1, true, false);

Son monophonique de fréquence d’échantillonnage 44.1 kHz, quantifié sur 16 bits

Année 2008 - 2009 M1 – Conception Audio – Marie-José Caraty / David Janiszek 22


2.1 PAQUETAGE JAVAX.SOUND.SAMPLE
Description et exemples (3/5)

Interface Line et classe Line.info (Gestion des ressources audio)


Trois types de ressources audio
SourceDataLine sortie audio
void open(AudioFormat
open format) ouverture d’une sortie audio d’un format donné
void open(AudioFormat
open format, int bufferSize) avec buffer
int write(byte[]
write b, int off, int len) envoi du tableau d’échantillons à la sortie audio
void start() void stop() void drain() void close() restitution du son

TargetDataLine entrée audio


Mixer amplification et traitement du son (entrée et sortie)

Exemple d’utilisation
DataLine.Info info = new DataLine.Info(SourceDataLine.class, format);
SourceDataLine line = (SourceDataLine)AudioSystem.getLine(info);
line.open(format); line.start();
line.write (samples[], 0, samples.length);
Restitution du son contenu dans le tableau samples
Année 2008 - 2009 M1 – Conception Audio – Marie-José Caraty / David Janiszek 23
2.1 PAQUETAGE JAVAX.SOUND.SAMPLE
Description et exemples (4/5)

Classe AudioFileFormat (gestion des descripteurs audio)

Un constructeur
AudioFileFormat(AudioFileFormat.Type type, AudioFormat format, int Nech)
Création d’un descripteur de fichier son

Quatre accesseurs
int getByteLength() Taille en octet du fichier son
AudioFormat getFormat() Format audio du fichier son
int getFrameLength() Nombre d’échantillons du fichier son
AudioFileFormat.Type getType() Format du fichier son

Exemple d’utilisation
AudioFileFormat dsca = AudioSystem.getAudioFileFormat(new File(nomfich));
AudioFormat format = dsca.getFormat();

Année 2008 - 2009 M1 – Conception Audio – Marie-José Caraty / David Janiszek 24


2.1 PAQUETAGE JAVAX.SOUND.SAMPLE
Description et exemples (5/5)

Classe AudioInputStream (gestion des flots audio)

Deux constructeurs
AudioInputStream(InputStream
AudioInputStream stream, AudioFormat format, long length)
Construction d’un flot audio d’un format donné à partir d’un flot (fichier)
AudioInputStream(TargetDataLine
AudioInputStream line)
Construction d’un flot audio à partir d’une entrée audio (ligne, microphone)

Trois méthodes principales


AudioFormat getFormat()
getFormat format audio du flot audio
long getFrameLength()
getFrameLength taille du flot audio en échantillons
int read()
read int read(byte[]
read b) int read(byte[]
read b, int off, int len)
Lecture du flot audio en octet

Année 2008 - 2009 M1 – Conception Audio – Marie-José Caraty / David Janiszek 25


2.2 RESTITUTION SONORE
Exemple de programme
// Lecture des caractéristiques du fichier son
AudioFormat format = null; AudioInputStream aisf = null; SourceDataLine line = null;
try {
aisf = AudioSystem.getAudioInputStream(new File("Atelier1/Scherzo.wav"));
format = aisf.getFormat();
} catch (IOException e) {
} catch (UnsupportedAudioFileException e) {}
int taille = (int)(aisf.getFrameLength() * format.getFrameSize());

// Création du tableau et lecture des échantillons


byte[] samples = new byte[taille];
DataInputStream in = new DataInputStream(aisf);
try { in.readFully(samples); } catch (IOException e) {}*

// Réservation de la sortie audio, début de la restitution, envoi du tableau


DataLine.Info info = new DataLine.Info(SourceDataLine.class, format);
try { line = (SourceDataLine)AudioSystem.getLine(info); line.open(format); }
catch (LineUnavailableException e){}
line.start();
line.write(samples, 0, samples.length);

Année 2008 - 2009 M1 – Conception Audio – Marie-José Caraty / David Janiszek 26