Como executar aquivos de som (wav, mp3, etc) numa aplicação java?

Como executar arquivos de som no java? (*.wav. *.mp3, *.mid, etc…)???
Valeu!

Já pelo menos procuraste? A resposta não é tão difícil de achar procurando num mecanismo de busca por “java mp3” ou “java media”.

Até!

AudioClip clip = Applet.newAudioClip(urlDoSom);
clip.start();//toca só uma vez
clip.loop();//toca o som repetidamente
clip.stop();//para de tocar
acho que não funciona com mp3… mas já serve

Para tocar mp3:
http://www.javazoom.net/index.shtml

Para tocar MID, use a classe Sequencer.
Para tocar WAV (se for desktop), use a classe DataLine e AudioSystem.

Se for em applets, use o AudioClip.

Veja o artigo:

1 curtida

[quote=ViniGodoy]Para tocar mp3:
http://www.javazoom.net/index.shtml

Para tocar MID, use a classe Sequencer.
Para tocar WAV (se for desktop), use a classe DataLine e AudioSystem.

Se for em applets, use o AudioClip.

Veja o artigo:

ViniGodoy…
é a segunda vez k mandas um link pra javazoom…vou la é me perco todo…
tenho um codigo k toca midi usei o sequencer…para mp3 tens de implementar uma classe para mp3 e fazer o import do java.io.File e mais umas cenas…tb ando na peskisa…pra por no meu player

Então olha isso aqui também:
http://www.javalobby.org/java/forums/t18465.html

Eu usei para tocar uns sons num jogo que eu fiz. Para mim foi relativamente fácil, pq por lá eu já tocava MP3 usando o DataLine. E bastou aproveitar os streams do javazoom.

Ah, quase me esqueço. Um colega do GUJ também postou informações sobre a javazoom:
http://dcbasso.blogspot.com/

[quote=ViniGodoy]Então olha isso aqui também:
http://www.javalobby.org/java/forums/t18465.html

Eu usei para tocar uns sons num jogo que eu fiz. Para mim foi relativamente fácil, pq por lá eu já tocava MP3 usando o DataLine. E bastou aproveitar os streams do javazoom.[/quote]

Mestre ViniGodoy
nao tenho nada contra sua excelencia …apenas keria k fosses mais explicativo…e peço desculpa por ser mal educado no post anterior…

[quote=Alkamavo]
Mestre ViniGodoy
nao tenho nada contra sua excelencia …apenas keria k fosses mais explicativo…e peço desculpa por ser mal educado no post anterior…[/quote]

Você foi grosso? Juro que nem pareceu (ou pelo menos nem notei)! hehehehehehe
Não era a minha idéia ser também, se pareceu, não era a intenção… rs

O duro de texto é que não tem entonação de voz.

pois é…devia ter uma app aki no forum para post de voz…hehehehj

[quote=ViniGodoy]Ah, quase me esqueço. Um colega do GUJ também postou informações sobre a javazoom:
http://dcbasso.blogspot.com/[/quote]

Valeu VinyGodoy…este cara tirou minha hora do almoço…tenho de matutar nas cenas dele a esta hora…este java faz.me mal…tira-me até o apetite de tanta curiosidade.

[quote=ViniGodoy]Ah, quase me esqueço. Um colega do GUJ também postou informações sobre a javazoom:
http://dcbasso.blogspot.com/[/quote]

Aqui tem um tópico que ele criou sobre o assunto

http://www.guj.com.br/posts/list/71782.java

[quote=Mark_Ameba][quote=ViniGodoy]Ah, quase me esqueço. Um colega do GUJ também postou informações sobre a javazoom:
http://dcbasso.blogspot.com/[/quote]

Aqui tem um tópico que ele criou sobre o assunto

http://www.guj.com.br/posts/list/71782.java[/quote]

Obrigadão…Mark_ameba

Cara, se estiver te incomodando é só não me responder…
Aliás, você nem respondeu…
Esse site é para ajudar a comu e não para ofender e criticar…
Parece que não enchergou o seu lugar ainda…

Valeu, ViniGodoy!!!
Vou dar uma estudada… Mas não pretendo me aprofundar tanto… Só preciso de um alerta sonoro, que não seja o beep, rsrsrs, para soar a um determinado momento… Sakas?
Valeu mesmo!
T+

Ah, se é só um beep, use a classe Toolkit da AWT:

Toolkit.getDefaultToolkit().beep();

será q alguém poderia postar um exemplo de reprodução de mp3 em java??

eu sempre me perco nesse negocio, soh consigo toca wav!!

O site do Javazoom ali atrás tem exemplos.

Veja também: http://www.javalobby.org/java/forums/t18465.html

Já passei por isso também, é complicado, nessa área precisamos de auxílio e tem gente que ainda atrapalha…

Se alguém ainda estiver precisando, fiz uma aplicação bem simples que executa um arquivo mp3 utilizando as APIS do javazoom.

Tudo que vc precisa antes de começar é baixar os MP3SPI no site do http://www.javazoom.net/index.shtml.
Adicionar ao classpath os jars jl1.0.1.jar, mp3spi1.9.5.jar e tritonus_share.jar e dar os devidos imports.

segue o código:

Classe musica (crio um objeto vinculado ao arquivo MP3)

import java.io.File;
import javax.sound.sampled.AudioFormat;
import javax.sound.sampled.AudioInputStream;
import javax.sound.sampled.AudioSystem;
import javax.sound.sampled.DataLine;
import javax.sound.sampled.SourceDataLine;

public class Music {

    private File track;
    private SourceDataLine line;
    private AudioInputStream din;
    private AudioFormat decodeFormat;
    public Music()
    {
        this.track = null;
        this.line = null;
        this.din = null;
    }

    public Music(File music)
    {
        try
        {
            //abre arquivo de audio
            this.track = music;
            //cria um strem de entrada do arquivo
            AudioInputStream ais = AudioSystem.getAudioInputStream(this.track);
            //seleciona o formato do arquivo de audio
            AudioFormat baseFormat = ais.getFormat();
            //configura a decodificação
            decodeFormat = new AudioFormat(
                AudioFormat.Encoding.PCM_SIGNED, // Encoding to use
                baseFormat.getSampleRate(),	  // sample rate (same as base format)
                16,				  // sample size in bits (thx to Javazoom)
                baseFormat.getChannels(),	  // # of Channels
                baseFormat.getChannels()*2,	  // Frame Size
                baseFormat.getSampleRate(),	  // Frame Rate
                false				  // Big Endian
            );

            din = AudioSystem.getAudioInputStream(decodeFormat, ais);
            DataLine.Info info = new DataLine.Info(SourceDataLine.class, getDecodeFormat());
	    this.line = (SourceDataLine) AudioSystem.getLine(info);
        }
        catch(Exception e){}
    }
...geters e seters.

A classe Play (é runnable pois executo a musica em uma Thread… em caso de duvidas aqui no fórum tem vários exemplos de Thread)

import javax.sound.sampled.AudioFormat;
import javax.sound.sampled.AudioInputStream;
import javax.sound.sampled.SourceDataLine;
import javax.swing.JOptionPane;

/**
 *
 * @author lucas
 */
public class Play implements Runnable {

    private boolean waiting = false;
    private SourceDataLine line;
    private AudioInputStream din;
    private AudioFormat decodeFormat;

    public Play (Music track)
    {
        this.line = track.getLine();
        this.din = track.getDin();
        this.decodeFormat = track.getDecodeFormat();

    }

    //metodo para pausar a thread.. a propria thread deve se parar, e não uma thread externa
    public synchronized void aguardar() {
        waiting = true;
    }

    //metodo para reiniciar uma thread
    public void continuar() {
        waiting = false;
        synchronized(this) {
            this.notify();
        }
    }
    
     //aqui executa a musica
    public void run() {
        try
        {
            if(line != null)
            {
		line.open(decodeFormat);
		byte[] data = new byte[4096];
		// Start
		line.start();
        	int nBytesRead;
               //toca enquanto a musica não acaba
		while ((nBytesRead = din.read(data, 0, data.length)) != -1)
                {
                    //se for solicitado para para  a propria thread para
                    while (waiting) {
                        synchronized (this) {
                            wait(); //Note que essa thread mesmo chama o wait
                        }
                    }
                    line.write(data, 0, nBytesRead);
		}
		// Stop
		line.drain();
		line.stop();
		line.close();
		din.close();
            }
        }
        catch(Exception e)
        {
            JOptionPane.showMessageDialog(null,"Erro:"+e.getMessage());
        }
    }
}

e para executar basta fazer assim :

Music track = new Music("/home/lucas/Music/eric clapton-layla.mp3"); //no windows seria C:\\diretório em que a musica se encontra\\eric clapton-layla.mp3
Play play = new Play(track);
Thread newThrd = new Thread(play);
newThrd.start();

Só…

Abraço galera