l'API Java Sound
Le paquetage javax.sound.sampled : Format audio
Format Audio
L'API Java Sound utilise deux classes pour la représentation des formats audio :- La classe
AudioFormat
. - La classe
AudioFileFormat
.
La classe AudioFormat
Cette classe représente le format audio brut des sons échantillonnés.
Afin de pouvoir décoder un flux audio binaire il est nécessaire de connaître la manière dont celui-ci a été codé.
La classe AudioFormat contient un certains nombres d'attributs permettant de représenter le flux audio :
-
boolean bigEndian
: Dans le cas d'échantillons dont la taille est supérieure à 1 octet, il est nécessaire de connaître l'ordre des octets d'un échantillon. -
int channels
: le nombre de canaux. -
AudioFormat.Encoding encoding
: le type d'encodage.
L'exemple de la section sur les concepts généraux de la numérisation présente un codage basique à pas de quantification constant. Ce type d'encodage à quantification linéaire est appelé PCM et est le plus couramment utilisé dans la numérisation du son. D'autres techniques à quantification non linéaire sont utilisées dans la téléphonie : les lois de compression Mu-Law et A-Law. La classe interne AudioFormat.Encoding définit les types d'encodage standard évoqués ci-dessus. -
float frameRate
: La fréquence de fenêtre en frame/s. -
int frameSize
: La taille d'une fenêtre en octets. -
float sampleRate
: La fréquence d'échantillonnage. -
int sampleSizeInBits
: La taille d'un échantillon en bits.
La classe AudioFileFormat
Les données audio brutes sont généralement encapsulées dans des fichiers audio.
Ce fichiers vont contenir outre les données audio brutes, des informations diverses (auteur, titre, durée ....) et des en-têtes spécifiques
au format du fichier.La classe AudioFileFormat représente le format de ces fichiers. Il est possible d'associer un objet Map<String,Object>contenant les informations diverses (auteur ...) évoquées ci-dessus. Toutefois l'attribut principal de cette classe est un objet de type AudioFileFormat.Type qui définit un type de fichier audio, et qui dispose d'instances statiques pour les formats audio les plus courants. Parmi ceux-ci on peut citer WAV, AUIFF, AU Le code suivant permet de récupérer simplement les formats audio supportés par le système cible.
import javax.sound.sampled.AudioFileFormat;
import javax.sound.sampled.AudioSystem;
public class TestFileFormat {
public static void main(String[] args) {
//La classe AudioSystem permet d'interagir avec le système
for(AudioFileFormat.Type t:AudioSystem.getAudioFileTypes()){
System.out.println(t);
}
}
}