Package kku.cs.fgl

Source Code of kku.cs.fgl.MusicPlayer

/* MidiPlayer.java
* ������Ѻ��Сͺ����͹�Ԫ�  322251 Programming In JAVA
* �� �.Ǫ����ظ ���������  twachi@kku.ac.th
* Created on 5 �.�. 2550
*/
package kku.cs.fgl;

import java.net.URL;
import java.util.Vector;

import jaco.mp3.player.MP3Player;

import javax.sound.midi.MidiSystem;
import javax.sound.midi.MidiUnavailableException;
import javax.sound.midi.Sequence;
import javax.sound.midi.Sequencer;
import javax.sound.sampled.AudioInputStream;
import javax.sound.sampled.AudioSystem;
import javax.sound.sampled.Clip;
import javax.sound.sampled.DataLine;

import org.newdawn.slick.Music;
import org.newdawn.slick.SlickException;
import org.newdawn.slick.util.ResourceLoader;

/**
* @author Wachirawut Thamviset
* @KhonKaen University
*
*/
public class MusicPlayer {
  private static String musicfile;

  private static Sequencer sequencer;

  private static boolean stopFlag;

  private static String musicType = "";

  private static MP3Player mp3;
 
  private static Vector<URL> playList = new Vector<URL>();

  static public void play(String filename) {
    if (filename == null) return;
    // ��Ҫ�������������͹������  stop
    if(musicfile!=null && !musicfile.equals(filename)) stop();
    musicfile = filename;
   
    int p = musicfile.lastIndexOf(".");
    String ext = musicfile.toLowerCase().substring(p);
    if (ext.equals(".mid") || ext.equals(".midi")) {
      playMidi();
    } else if(ext.equals(".mp3")){
      playMp3();
    }else{
      playOpenALMusic();
    }
    stopFlag = false;
  }

  private static Music music = null;
  private static void playOpenALMusic() {
    try {
      musicType = "openal";
      if(music==null) music = new Music(musicfile,true);
      music.loop();
    } catch (SlickException e) {
      e.printStackTrace();
    }   
  }

  static private void playMidi() {
    try {
      if (sequencer == null)
        sequencer = MidiSystem.getSequencer();
      musicType = "midi";
      if(sequencer.isOpen()){
        sequencer.start();
      }else{
         Sequence mySeq = MidiSystem.getSequence(ResourceLoader
          .getResource(musicfile));
         sequencer.open();
         sequencer.setSequence(mySeq);
         sequencer.start();
         sequencer.setLoopCount(Sequencer.LOOP_CONTINUOUSLY);
      }
    } catch (Exception e) {

    }
  }

  /**
   *
   */
  static private void playMp3() {
    try {
      musicType = "mp3";
      mp3 = new MP3Player(ResourceLoader.getResource(musicfile));
      mp3.setRepeat(true);
      mp3.play();
     
    } catch (Exception e) {
      System.out.println("Can not play \"" + musicfile + "\".");
      e.printStackTrace();
    }
  }

  static public void stop() {
    stopFlag = true;
    if (mp3!=null) mp3.stop();
    mp3=null;
    if (music != nullmusic.stop();
    music=null;
    if (musicType.equals("midi")) {
      if (sequencer == null)
        return;
      if (sequencer.isRunning())
        sequencer.stop();
      if (sequencer.isOpen())
        sequencer.close();
    }
  }

  static public void addToPlaylist(String ... musicfiles){
    for(int i=0;i<musicfiles.length;i++){
      URL url = ResourceLoader.getResource(musicfiles[i]);
      if(url!=null){
        playList.add(url);
      }
    }
  }
}
TOP

Related Classes of kku.cs.fgl.MusicPlayer

TOP
Copyright © 2018 www.massapi.com. All rights reserved.
All source code are property of their respective owners. Java is a trademark of Sun Microsystems, Inc and owned by ORACLE Inc. Contact coftware#gmail.com.