Dans cette fiche...

Description de l'applet

Difficulté : Résultat
La gestion des sons en Java est proche de celle des images.
C'est parti !
      Votre navigateur n'est pas compatible Java !

Important :
Pour être correctement lu par Java, un fichier son doit être au format Sun (.au, µlaw), échantillonné à 8000 Hz.
Si vous venez du monde PC, vous pouvez utiliser un logiciel comme GoldWave pour transformer un son WAV en son AU.

 

Listing de l'applet

// --------------------------------------------------
// MANIPULATION DES SONS
// --------------------------------------------------
import java.applet.*;
import java.awt.*;
public class Son extends Applet
{
	String s;
	AudioClip ac;
	public void init()
	{
		// Couleur de fond de l'applet
		setBackground(Color.black);
		// Lire le paramètre SON, de type chaîne
		s = getParameter("SON");
		// Si le paramètre a été défini, le charger
		if (s != null)
		{
			ac = getAudioClip(getDocumentBase(), s);
			// jouer le son
			ac.play();
		}
	}
	// Un petit message pour prévenir !
	public void paint(Graphics g)
	{
		g.setColor(Color.orange);
		g.drawString("Quelqu'un a sonné ?", 10, 20);
	}
}

Télécharger le listingTélécharger le listing

 

Le listing en détail...

AudioClip ac;
On crée un objet de type AudioClip, qui servira à stocker et à manipuler le son.
 
s = getParameter("SON");
ac = getAudioClip(getDocumentBase(), s);
Charger le son dont le nom est donné par la chaîne s, et l'affecter à l'objet ac. (on a vérifié au préalable que la chaîne s était correcte). Pour plus de détails sur le passage de paramètres à une applet, cliquez ici.

Le chemin d'accès au son est donné par la fonction getDocumentBase(), qui renvoie l'adresse Internet de la page HTML.
En clair, getDocumentBase() donne l'endroit (l'URL) où est stockée la page HTML.
Ceci implique donc que le son au format AU a été enregistré au même endroit que la page web.

On aurait pu également enregistrer l'image au même endroit que l'applet.
Dans ce cas, on aurait utilisé la syntaxe suivante :

im = getImage(getCodeBase(), s);

On peut également vouloir charger une image située n'importe où sur le disque (et même n'importe où sur le Web !).
Nous verrons ce cas plus tard.

 
// jouer le son
ac.play();
Faut-il rajouter quelque chose ?
Ah si : vous pouvez aussi jouer le son en boucle, en changeant la ligne ac.play(); par ac.loop();
Mais vous allez rendre vos visiteurs fous !

En passant, pour forcer l'arrêt d'un son : ac.stop();

 

Intégration de l'applet dans la page

Voici le code qui a été utilisé dans cette page HTML pour faire apparaître l'applet :

<applet code="Son.class" width=200 height=50>
<param name="SON" value="dingdong.au">
Votre navigateur n'est pas compatible Java !
</applet>

Pour plus de précisions sur l'intégration d'une applet, cliquez ici.

 

Hit-Parade