Como tocar um som?

como faço para tocar um som em java?? Tem como controlar o volume???
Alguem sabe onde posso procurar?

Valeu !!!

OBS: Se possivel sem utilizar um Applet e sim um frame.
Diego Coronel Cavalcante

DiegoCoronel, tem um exemplo pra quem instala o JMF na máquina, se estudar alguns código da sun vc vai ver um tal de Player.getControlPanelComponent() que retorna controle de volume e coisas desse tipo.

da uma pesquisada em “getControlPanelComponent()” que eu acho que vc vai encontrar o que vc quer !

Abraço,
Maicon

tipo, vc pode utilizar som em um Frame do mesmo jeito q em um applet, pois o metodo getAudioClip(URL url) de Applet eh estatico, entaum vc pode fazer:

File f = new File("arquivo");
AudioClip ac = Applet.getAudioClip(f.toURL());
ac.play();

basta vc importar o pacote java.applet… o problema eh q desse jeito, se tem poucos recursos, vc soh pode tocar, parar e mandar ficar repetindo…

agora se vc quiser, vc pode usar JavaSound, q fornece um pouco mais de recursos para som (n sei como se faz, mas provavelmente deve dar pra controlar o volume)…

um ex simples de java sound:

import javax.sound.sampled.*;
public class Toca implements LineListener{
 private File arquivo;
 private Clip clip;
 public Toca(String arq){
  arquivo = new File(arq);
 }
 public void toca(){
  AudioInputStream soundStream = null;
  AudioFormat audioFormat = null;
  DataLine.Info dataLineInfo = null;
  try{
   soundStream = AudioSystem.getAudioInputStream(arquivo);
   audioFormat = soundStream.getFormat();
   dataLineInfo = new DataLine.Info(Clip.class,
    AudioSystem.getTargetFormats(AudioFormat.Encoding.PCM_SIGNED, audioFormat),
    audioFormat.getFrameSize(),
    audioFormat.getFrameSize() * 2);
   if (!AudioSystem.isLineSupported(dataLineInfo)) throw new Exception("Formato nao suportado!");
   clip = (Clip)AudioSystem.getLine(dataLineInfo);
   clip.addLineListener(this);
   clip.open(soundStream);
   clip.start();
  }
  catch (Exception erro){
   JOptionPane.showMessageDialog(null, erro, "Erro!", JOptionPane.ERROR_MESSAGE);
  }
 }
 public void update(LineEvent e){ // metodo para tratar eventos da linha
  if (e.getType() == LineEvent.Type.STOP){
   // essa parte eh executada qndo para de tocar
   clip.close();
  }
 }
}