电话:0731-83595998
导航

为Java程序中添加播放MIDI音乐功能

来源: 2017-12-22 09:20

 百度广告

 Java在多媒体处理方面的确优势不大,但是我们在程序中有些时候又需要一些音乐做为点缀,如果播放的音乐是wav等波形音频文件,又挺大,所以背景音乐最好就是MIDI了,可是网上很多播放MIDI的教程都是简单的几句话的例子,并且没有考虑资源的释放问题,如果程序长久运行的话,就会出现内存越耗越多的情况,以至于最后抛出一个java.lang.OutOfMemoryError,整个程序就挂了。  在MIDI的播放中,一个类是比较重要的,那就是MidiSystem类,它负责整个MIDI播放设备等的管理,其实就是Seqencer,它就是一个MIDI播放设置,用于播放MIDI序列的,还有一个类叫Seqence,它就是MIDI的序列,MIDI的序列可以自己由程序生成,也可以从文件中或者URL中读取。

  下面我们来看一个例子吧:

/*
 *
 *
 * and open the template in the editor.

package test1;

import java.io.File;
import java.io.InputStream;
import java.util.Map;
import java.util.logging.Logger;
import javax.sound.midi.MidiSystem;
import javax.sound.midi.Sequence;

/**
 * @author hadeslee
public class Test5 implements Runnable{

  private Sequencer midi;
  private int i;
  public Test5(){
    new Thread(this).start();
  private void initMap(){
      map = new Hashtable();
      midi.open();
        try {
          map.put(s, s1);
          Logger.getLogger(Test5.class.getName()).log(Level.SEVERE, null, ex);
          Logger.getLogger(Test5.class.getName()).log(Level.SEVERE, null, ex);
      }
      Logger.getLogger(Test5.class.getName()).log(Level.SEVERE, null, ex);
    
  private void createPlayer(String name){

      Sequence se=map.get(name);

      midi.setSequence(se);

      
      Logger.getLogger(Test5.class.getName()).log(Level.SEVERE, null, ex);
    
  public void run(){
      try {
        String name=names[(int)(Math.random()*names.length)];
        Thread.sleep(10000);
      } catch (InterruptedException ex) {
      }
  }
    new Test5();
}

  现在按我这种方式播,哪怕10毫秒换一次MIDI都可以,换个几万次内存一点都没有加,呵呵,真是防不胜防啊。

编辑推荐:

下载Word文档

温馨提示:因考试政策、内容不断变化与调整,长理培训网站提供的以上信息仅供参考,如有异议,请考生以权威部门公布的内容为准! (责任编辑:长理培训)

网络课程 新人注册送三重礼

已有 22658 名学员学习以下课程通过考试

网友评论(共0条评论)

请自觉遵守互联网相关政策法规,评论内容只代表网友观点!

最新评论

点击加载更多评论>>

精品课程

更多
10781人学习

免费试听更多

相关推荐
图书更多+
  • 电网书籍
  • 财会书籍
  • 其它工学书籍
拼团课程更多+
  • 电气拼团课程
  • 财会拼团课程
  • 其它工学拼团
热门排行

长理培训客户端 资讯,试题,视频一手掌握

去 App Store 免费下载 iOS 客户端