l’API Java Sound

Contrôles et Mixer

Afin de réaliser un lecteur plus élaboré avec ajout de contrôles (volume, balance, ...), il est nécessaire d’introduire le lien entre les Mixer et les contrôles.

Les contrôles

les contrôles
Les contrôles sont de trois types de base :

Mixer et lignes associées

Tous les contrôles ne sont pas supportés par toutes les lignes et il est nécessaire de connaître celles qui supportent ces contrôles pour réaliser un lecteur audio avancé. Ces lignes étant dépendantes d’un Mixer, il est également important de connaître les Mixer sur lesquelles elles sont "branchées". Afin de connaître l’ensemble des lignes et Mixer proposées par le système on peut exécuter le code suivant :


import javax.sound.sampled.AudioSystem;
import javax.sound.sampled.Control;
import javax.sound.sampled.Line;
import javax.sound.sampled.LineUnavailableException;
import javax.sound.sampled.Mixer;

public class TestMixer {

	
  public static void main(String[] args) {
   try {

    //Recupération de la liste des Mixers à partir du système
    Mixer.Info[] mixerInfo = AudioSystem.getMixerInfo();

    //pour chaque mixer on va regarder ses caracteristiques
    for(Mixer.Info a:mixerInfo){

      System.out.println("\n\n"+a+" Description:"+a.getDescription());

      System.out.println("--------------------------------");
			  
      Mixer mix=AudioSystem.getMixer(a);
			 
      //Visualisation dex controles supportés par chaque Mixer
      for(Control c:mix.getControls()){
        System.out.println("Controls supported by Mixer:");
        System.out.println("\t"+c);
      }
			  
      //Visualisation des SourceLine disponibles pour ce Mixer
      for(Line.Info i :mix.getSourceLineInfo()){
        System.out.println("\n"+i);
				  
        //Visualisation dex controles supportés par cette Line
        System.out.println("Controls supported by Source Line:");
        for(Control c:AudioSystem.getLine(i).getControls()){
          System.out.println("\t"+c);
        }
       }
			  //Visualisation des TargetLine disponibles pour ce Mixer
       for(Line.Info i :mix.getTargetLineInfo()){
         System.out.println("\n"+i);
				  
         //Visualisation dex controles supportés par cette Line
         System.out.println("Controls supported by Target Line:");
         for(Control c:AudioSystem.getLine(i).getControls()){
           System.out.println("\t"+c);
         }
        }
      }

    } catch (LineUnavailableException e) {
       e.printStackTrace();
    }
 }
}

Voici un extrait de la sortie :



Java Sound Audio Engine, version 1.0 Description:Software mixer and synthesizer
--------------------------------
Controls supported by Mixer:
	Reverb with current value: Acoustic Lab, early reflection delay 2000 ns, 
	early reflection intensity -2.0 dB,late deflection delay 8000 ns,
	late reflection intensity -3.0 dB, decay time 280000

interface SourceDataLine supporting 8 audio formats
Controls supported by Source Line:
	Master Gain with current value: 0.0 dB (range: -80.0 - 13.9794)
	Mute Control with current value: False
	Pan with current value: 0.0  (range: -1.0 - 1.0)
	Sample Rate with current value: 44100.0 FPS (range: 0.0 - 48000.0)

interface Clip supporting 8 audio formats, and buffers of 0 to 4194304 bytes
Controls supported by Source Line:
	Master Gain with current value: 0.0 dB (range: -80.0 - 13.9794)
	Mute Control with current value: False
	Pan with current value: 0.0  (range: -1.0 - 1.0)
	Sample Rate with current value: 44100.0 FPS (range: 0.0 - 48000.0)


Les Mixer peuvent être de deux types : Ici on remarque que le Mixer logiciel "Java Sound Engine" dispose d’un contrôle Reverb ainsi qu’une ligne de type SourceDataLine disposant d’un certain nombre d’effets intéressants. C’est sur l’exploitation de ce Mixer que portera l’exemple décrit dans la section Ajout de contrôles en lecture

Valid XHTML 1.0!