Galeria Java para sonidos

Publicado en 'Programación' por iora88, 18 Jul 2010.





  1. iora88

    iora88 Miembro frecuente

    Registro:
    15 Abr 2009
    Mensajes:
    82
    Likes:
    8




    Buenas,

    Bueno, soy alumno de cibertec actualmente terminando el primer ciclo, y pues, como algunos egresados o que pasaron por este instituto, estoy en toda la onda de mi proyecto final de algoritmia en Java (JLE Creator), y pues, todo va bien, pero hace poco vi un proyecto, creo yo, de un ciclo avanzado, pero éste tenía una particularidad, que cada vez que se presionaba un botón, aparte de la accion de cargar un nuevo panel, cargaba un archivo de musica, como una especie de sonido, y pues, me despertó la curiosidad.

    Y bien, fuí a la biblioteca para buscar un libro que me pueda ayudar, pero me dí con la noticia que todos los libros ya estaban pedidos y reservados para hasta fin de ciclo (no me sorprendía la verdad). Y buscando en internet encuentro información muy vaga y me dicen que debo jalarlo de una libreria nueva de java, pero no me dicen de cual :plop:.

    En fin, espero su ayuda, y a ver si no salen esos comentarios que me dieron algunos amigos de que "oye, eso no es de nuestro ciclo, no te hagas bolas", sino que quiero aprender y sorprender en mi sustentación de proyecto :hi:.
     


  2. BLake

    BLake Miembro frecuente

    Registro:
    6 Mar 2009
    Mensajes:
    192
    Likes:
    17
    Pues tengo un codigo antiguito pero que funciona a la perfeccion, use netbeans por eso la parte visual se crea practicamente sola prueba copiando todo el codigo y las canciones deben estar en la raiz del proyecto (en el caso de netbeans a la misma altura que src), si deseas puedes armar tu propia interfaz en JCreator y copiar la parte logica del codigo.
    Cualquier duda me avisas
    PD: uso dos canciones "Tokio Hotel" y "Rocky IV"

    Aqui el codigo
    package com.john.audio;


    import java.io.IOException;
    import java.util.logging.Level;
    import java.util.logging.Logger;
    import javax.sound.sampled.AudioSystem;
    import javax.sound.sampled.Clip;
    import javax.sound.sampled.LineUnavailableException;
    import java.io.File;
    import javax.sound.sampled.UnsupportedAudioFileException;
    import javax.swing.UIManager;
    import javax.swing.UnsupportedLookAndFeelException;
    /**
    *
    * @author John
    */
    public class Principal extends javax.swing.JFrame {


    private Clip sonido;
    private String archivo1;
    private String archivo2;
    private String sonido_actual;


    /** Creates new form Principal */
    public Principal() {
    initComponents();
    cargarSonidos();

    }


    private void cargarSonidos(){
    try {
    sonido = AudioSystem.getClip();
    // Se carga con un fichero wav
    archivo1 = "Tokio Hotel - Monsoon.wav";
    archivo2 = "Rocky IV- No easy way out.wav";
    sonido_actual = archivo1;
    sonido.open(AudioSystem.getAudioInputStream(new File(sonido_actual)));
    } catch (UnsupportedAudioFileException ex) {
    Logger.getLogger(Principal.class.getName()).log(Level.SEVERE, null, ex);
    } catch (IOException ex) {
    Logger.getLogger(Principal.class.getName()).log(Level.SEVERE, null, ex);
    } catch (LineUnavailableException ex) {
    Logger.getLogger(Principal.class.getName()).log(Level.SEVERE, null, ex);
    }
    }

    /** This method is called from within the constructor to
    * initialize the form.
    * WARNING: Do NOT modify this code. The content of this method is
    * always regenerated by the Form Editor.
    */
    @SuppressWarnings("unchecked")
    // <editor-fold defaultstate="collapsed" desc="Generated Code">//GEN-BEGIN:initComponents
    private void initComponents() {

    jPanel1 = new javax.swing.JPanel();
    jComboBox1 = new javax.swing.JComboBox();
    jLabel1 = new javax.swing.JLabel();
    jButton1 = new javax.swing.JButton();
    jButton2 = new javax.swing.JButton();
    jButton3 = new javax.swing.JButton();
    jButton4 = new javax.swing.JButton();

    setDefaultCloseOperation(javax.swing.WindowConstants.EXIT_ON_CLOSE);
    setTitle("Arquitectura de Computadoras");

    jPanel1.setBorder(javax.swing.BorderFactory.createTitledBorder("Sonidos en Java"));

    jComboBox1.setModel(new javax.swing.DefaultComboBoxModel(new String[] { "Tokio Hotel", "Rocky IV" }));
    jComboBox1.addItemListener(new java.awt.event.ItemListener() {
    public void itemStateChanged(java.awt.event.ItemEvent evt) {
    jComboBox1ItemStateChanged(evt);
    }
    });

    jLabel1.setForeground(new java.awt.Color(51, 102, 255));
    jLabel1.setText("Elija la cancion:");

    jButton1.setText("Play");
    jButton1.addActionListener(new java.awt.event.ActionListener() {
    public void actionPerformed(java.awt.event.ActionEvent evt) {
    jButton1ActionPerformed(evt);
    }
    });

    jButton2.setText("Pausa");
    jButton2.addActionListener(new java.awt.event.ActionListener() {
    public void actionPerformed(java.awt.event.ActionEvent evt) {
    jButton2ActionPerformed(evt);
    }
    });

    jButton3.setText("Continuar");
    jButton3.addActionListener(new java.awt.event.ActionListener() {
    public void actionPerformed(java.awt.event.ActionEvent evt) {
    jButton3ActionPerformed(evt);
    }
    });

    jButton4.setText("Salir");
    jButton4.addActionListener(new java.awt.event.ActionListener() {
    public void actionPerformed(java.awt.event.ActionEvent evt) {
    jButton4ActionPerformed(evt);
    }
    });

    javax.swing.GroupLayout jPanel1Layout = new javax.swing.GroupLayout(jPanel1);
    jPanel1.setLayout(jPanel1Layout);
    jPanel1Layout.setHorizontalGroup(
    jPanel1Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
    .addGroup(jPanel1Layout.createSequentialGroup()
    .addGap(21, 21, 21)
    .addGroup(jPanel1Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
    .addComponent(jLabel1)
    .addGroup(jPanel1Layout.createSequentialGroup()
    .addComponent(jComboBox1, javax.swing.GroupLayout.PREFERRED_SIZE, 104, javax.swing.GroupLayout.PREFERRED_SIZE)
    .addGap(33, 33, 33)
    .addGroup(jPanel1Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING, false)
    .addComponent(jButton3, javax.swing.GroupLayout.Alignment.TRAILING, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE)
    .addComponent(jButton1, javax.swing.GroupLayout.Alignment.TRAILING, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE))
    .addGroup(jPanel1Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING, false)
    .addGroup(jPanel1Layout.createSequentialGroup()
    .addGap(22, 22, 22)
    .addComponent(jButton2))
    .addGroup(jPanel1Layout.createSequentialGroup()
    .addGap(18, 18, 18)
    .addComponent(jButton4, 0, 0, Short.MAX_VALUE)))))
    .addContainerGap(87, Short.MAX_VALUE))
    );
    jPanel1Layout.setVerticalGroup(
    jPanel1Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
    .addGroup(jPanel1Layout.createSequentialGroup()
    .addGap(12, 12, 12)
    .addComponent(jLabel1)
    .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED)
    .addGroup(jPanel1Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.BASELINE)
    .addComponent(jComboBox1, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE)
    .addComponent(jButton1)
    .addComponent(jButton2))
    .addGap(18, 18, 18)
    .addGroup(jPanel1Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.BASELINE)
    .addComponent(jButton3)
    .addComponent(jButton4))
    .addContainerGap(147, Short.MAX_VALUE))
    );

    javax.swing.GroupLayout layout = new javax.swing.GroupLayout(getContentPane());
    getContentPane().setLayout(layout);
    layout.setHorizontalGroup(
    layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
    .addComponent(jPanel1, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE)
    );
    layout.setVerticalGroup(
    layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
    .addComponent(jPanel1, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE)
    );

    java.awt.Dimension screenSize = java.awt.Toolkit.getDefaultToolkit().getScreenSize();
    setBounds((screenSize.width-435)/2, (screenSize.height-308)/2, 435, 308);
    }// </editor-fold>//GEN-END:initComponents

    private void jButton1ActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_jButton1ActionPerformed
    // TODO add your handling code here:
    sonido.start();
    }//GEN-LAST:event_jButton1ActionPerformed

    private void jButton2ActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_jButton2ActionPerformed
    // TODO add your handling code here:
    sonido.stop();
    }//GEN-LAST:event_jButton2ActionPerformed

    private void jComboBox1ItemStateChanged(java.awt.event.ItemEvent evt) {//GEN-FIRST:event_jComboBox1ItemStateChanged
    try {
    sonido_actual = jComboBox1.getSelectedIndex() == 0 ? archivo1 : archivo2;
    sonido.close();
    sonido.open(AudioSystem.getAudioInputStream(new File(sonido_actual)));
    // TODO add your handling code here:
    } catch (UnsupportedAudioFileException ex) {
    Logger.getLogger(Principal.class.getName()).log(Level.SEVERE, null, ex);
    } catch (LineUnavailableException ex) {
    Logger.getLogger(Principal.class.getName()).log(Level.SEVERE, null, ex);
    } catch (IOException ex) {
    Logger.getLogger(Principal.class.getName()).log(Level.SEVERE, null, ex);
    }
    }//GEN-LAST:event_jComboBox1ItemStateChanged

    private void jButton3ActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_jButton3ActionPerformed
    // TODO add your handling code here:
    sonido.loop(Clip.LOOP_CONTINUOUSLY);
    }//GEN-LAST:event_jButton3ActionPerformed

    private void jButton4ActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_jButton4ActionPerformed
    // TODO add your handling code here:
    System.exit(0);
    }//GEN-LAST:event_jButton4ActionPerformed

    /**
    * @param args the command line arguments
    */
    public static void main(String args[]) {
    java.awt.EventQueue.invokeLater(new Runnable() {

    public void run() {
    try {
    UIManager.setLookAndFeel(new com.nilo.plaf.nimrod.NimRODLookAndFeel());
    } catch (UnsupportedLookAndFeelException ex) {
    Logger.getLogger(Principal.class.getName()).log(Level.SEVERE, null, ex);
    }
    new Principal().setVisible(true);
    }
    });
    }

    // Variables declaration - do not modify//GEN-BEGIN:variables
    private javax.swing.JButton jButton1;
    private javax.swing.JButton jButton2;
    private javax.swing.JButton jButton3;
    private javax.swing.JButton jButton4;
    private javax.swing.JComboBox jComboBox1;
    private javax.swing.JLabel jLabel1;
    private javax.swing.JPanel jPanel1;
    // End of variables declaration//GEN-END:variables

    }
     
    Última edición: 18 Jul 2010
  3. Zir KrloZ

    Zir KrloZ Miembro nuevo

    Registro:
    18 Oct 2007
    Mensajes:
    19
    Likes:
    0
    Mi estimado, ya acabo el ciclo y espero que haigas solucionado tu problema, en caso de que no te envio unos links tutoriales:

    javazoom

    (no me dejan poner linkes :( )

    Con la info de esa web me hize un mini reproductor. Espero sea de tu ayuda.

    Saludos

    Pör cierto soy egresado de Cibertec- !^^!
     
  4. iora88

    iora88 Miembro frecuente

    Registro:
    15 Abr 2009
    Mensajes:
    82
    Likes:
    8
    sip, bueno, no me anime a hacerlo porq al final con las justas me alcanzo el tiempo para hacerlo XD

    (jamas hagas grupo con chicos q saben menos :(), en fin, ya lo voy entendiendo, gracias totales.
     
  5. jyn30

    jyn30 Miembro maestro

    Registro:
    15 Ago 2010
    Mensajes:
    896
    Likes:
    68
    Me parece correcta la iniciativa que tienes de siempre hacer un plus, yo se programacion en java, dejame ver si te capte la idea de lo que buscabas, querias que al dar click sobre un jbutton u otro componente emita un sonido no quieres que se escuche toda la cancion sino solo el sonido, si fuera asi lo unico que tendrias que haber hecho es crear una clase sonido que llame a cualquier sonido que esta en tu proyecto al momento que ocurra un evento del componente que tu eligas.