Jouer un son wav java

Soyez le premier à donner votre avis sur cette source.

Snippet vu 43 757 fois - Téléchargée 35 fois

Contenu du snippet

Voici une class qui permet de lire un son wav. Ceci s adresse au gens qui font de java du Felini (donc un certain chao), mais ils sont nombreux, Dieu merci.
Voilà juste remplacer le fichier.wav part le votre et c est tout !!!

Source / Exemple :


import java.io.*;
import javax.sound.sampled.*;

public class sound {
	
	private AudioFormat format;
	private byte[] samples;
	
	public sound(String filename){
		try{
			AudioInputStream stream = AudioSystem.getAudioInputStream(new File(filename));
			format = stream.getFormat();
			samples = getSamples(stream);
		}
		catch (UnsupportedAudioFileException e){
			e.printStackTrace();
	}
	catch (IOException e){
			e.printStackTrace();
		}
	}
	
	public byte[] getSamples(){
		return samples;
	}
	
	public byte[] getSamples(AudioInputStream stream){
		int length = (int)(stream.getFrameLength() * format.getFrameSize());
		byte[] samples = new byte[length];
		DataInputStream in = new DataInputStream(stream);
		try{
			in.readFully(samples);
		}
		catch (IOException e){
			e.printStackTrace();
		}
		return samples;
	}
	

	public void play(InputStream source){
		// 100 ms buffer for real time change to the sound stream
		int bufferSize = format.getFrameSize() * Math.round(format.getSampleRate() / 10);
		byte[] buffer = new byte[bufferSize];
		SourceDataLine line;
		try{
			DataLine.Info info = new DataLine.Info(SourceDataLine.class, format);
			line = (SourceDataLine)AudioSystem.getLine(info);
			line.open(format, bufferSize);
		}
		catch (LineUnavailableException e){
			e.printStackTrace();
			return;
		}
		line.start();
		try{
			int numBytesRead = 0;
			while (numBytesRead != -1){
				numBytesRead = source.read(buffer, 0, buffer.length);
				if (numBytesRead != -1)
					line.write(buffer, 0, numBytesRead);
			}
		}
		catch (IOException e){
			e.printStackTrace();
		}
		line.drain();
		line.close();
	}
	
	public static void main(String[] args){
		sound player = new sound("beep.wav");
		InputStream stream = new ByteArrayInputStream(player.getSamples());
		player.play(stream);
		System.exit(0);
	}
}

Conclusion :


elle est pas de moi, mais comme beaucoup de gens (débutant) pose la question...
et que j'aime le partage... Robins des bois???

A voir également

Ajouter un commentaire Commentaires
Messages postés
1
Date d'inscription
vendredi 20 mai 2011
Statut
Membre
Dernière intervention
20 mai 2011

Alors Chapeau bas pour le code, parce que le seul code source que j'ai trouvé pour lire un WAV était explosé en 6 fichiers et le paramètre "fichier.wav" ne fonctionnait pas...

Féliciations et Merci !
Messages postés
1
Date d'inscription
samedi 2 octobre 2010
Statut
Membre
Dernière intervention
3 octobre 2010

Bonjour ^^
Je suis débutant en Java, et j'aurai besoin d'aide.
Pour utiliser cette classe sound dans un autre projet, il faut faire un applet non ?
Parce que quand je la colle directement dans le projet en question, j'ai une erreur au niveau du static void main, que j'utilise déja pour créer ma fenêtre. Si quelqu'un pourrait m'apporter des précisions ou me montrer où m'informer sur ce point, ce serait sympa. Merci !
Messages postés
1
Date d'inscription
samedi 15 août 2009
Statut
Membre
Dernière intervention
19 août 2009

Merci beaucoup pour cette classe ^^!!!
Messages postés
23
Date d'inscription
dimanche 15 juin 2003
Statut
Membre
Dernière intervention
25 juin 2010

Bonjour,
bien votre classe, comment faite pour modifier le volume du son et arrêter en cours de lecture (je suis débutant
merci
AHaile
Messages postés
132
Date d'inscription
mardi 21 juin 2005
Statut
Membre
Dernière intervention
18 juin 2009

Bonjour tous le monde,

Je suis actuellement entrain de créer une application qui doit me générer un spectogramme ou audiogramme d'un fichier wav sous forme d'image.
Seulement je n'arrive pas à extraire les amplitudes d'un fichier wav... Est-on obligé de lire le fichier wav (lire dans le sens audible pour l'homme) pour récupérer les amplitudes ?
Merci d'avance pour vos précisions si vous en avez :)

StimL
Afficher les 13 commentaires

Vous n'êtes pas encore membre ?

inscrivez-vous, c'est gratuit et ça prend moins d'une minute !

Les membres obtiennent plus de réponses que les utilisateurs anonymes.

Le fait d'être membre vous permet d'avoir un suivi détaillé de vos demandes et codes sources.

Le fait d'être membre vous permet d'avoir des options supplémentaires.