Sonido en un Jframe

Me ha pegado la curiosidad de aprender como ponerle un sonido de fondo a una aplicación. pero realmente no se ni de donde empezar . no se hacer eso. ¿No saben de algún blog o algo con lo que pueda aprender? es que los que he encontrado son un poco confusos. ya manejo hilos creo que con esos se puede pero no me quedo muy en claro.

Opciones de visualización de comentarios

Seleccione la forma que prefiera para mostrar los comentarios y haga clic en «Guardar las opciones» para activar los cambios.

Puedes revisar el tutorial

Puedes revisar el tutorial referente a sonido en Java

https://docs.oracle.com/javase/tutorial/sound/index.html

Y buscar sobre la interfaz MIDI

Imagen de Rafael Carrillo

gracias

Ahora solo queda traducir e investigar

Archivo WAV

 

Utiliza la clase java.applet.AudioClip. No requiere librerías externas. Si tienes un archivo WAV en tu proyecto, puedes cargarlo así:

AudioClip clip = Applet.newAudioClip(ClassLoader.getSystemResource("sound.wav"));

Para esta línea en particular, el archivo sound.wav está ubicado en el paquete por defecto (sin paquete de Java). Puedes reproducir el sonido una vez o continuamente. Echa un vistazo a los métodos de la clase mencionada anteriormente. No es necesario crear otro hilo.

He aquí un pequeño ejemplo:

package org.javamexico.app;

import java.applet.Applet;
import java.applet.AudioClip;
import java.awt.FlowLayout;
import java.awt.event.ActionEvent;
import java.net.MalformedURLException;
import java.net.URL;

import javax.swing.AbstractAction;
import javax.swing.JButton;
import javax.swing.JFrame;
import javax.swing.WindowConstants;

public class Main {

    public static void main(String[] args) throws MalformedURLException {
       AudioClip clip = Applet.newAudioClip(new URL("http://www.wavlist.com/soundfx/011/duck-quack1.wav"));
       JFrame frame = new JFrame();
       frame.setDefaultCloseOperation(WindowConstants.EXIT_ON_CLOSE);
       frame.setLayout(new FlowLayout());
       frame.add(new JButton(new AbstractAction("Sound") {
         @Override
         public void actionPerformed(ActionEvent e) {
          clip.loop();
         }
       }));
       frame.add(new JButton(new AbstractAction("No Sound") {
         @Override
         public void actionPerformed(ActionEvent e) {
          clip.stop();
         }
       }));
       frame.pack();
       frame.setLocationRelativeTo(null);
       frame.setVisible(true);
    }

}

img

~~~

Imagen de Rafael Carrillo

y puedo bien

Tomar un sonido metido en un paquete?
Es que quiero que mi app reproduzca un sonido diferente dependiendo de una opción tomada. O tengo que llamarlos externamente desde una carpeta

Imagen de Rafael Carrillo

Tiene que ser un sonido .wav?

O puede ser un .mp3

URL & WAV

... Tomar un sonido metido en un paquete? ... O tengo que llamarlos externamente desde una carpeta

Puede ser un archivo local o remoto. No importa. Sólo necesitas la URL del archivo. Seguro querrás ver Pass a local file in to URL in Java.

O puede ser un .mp3

Sólo soporta:

  • wav
  • au
  • aif

Si deseas reproducir mp3, necesitarás una librería externa o JavaFX (incluido desde Java 8). También puedes convertir tu archivo a WAV utilizando algún software (o tal vez quieras probar Convert audio to WAV).

~~~

Imagen de Rafael Carrillo

Mas o menos asi?

   try{
   AudioClip clip;
   File Url=new File("/Sonido/Sonido.wav");
 
   clip= Applet.newAudioClip(Url.toURI().toURL());
      clip.loop();
     
 
     }catch(Exception ex){
         
     System.err.println(ex+" error");
     
     }