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

上传人:s9****2 文档编号:466044346 上传时间:2023-02-11 格式:DOCX 页数:3 大小:9.38KB
返回 下载 相关 举报
为Java程序中添加播放MIDI音乐功能_第1页
第1页 / 共3页
为Java程序中添加播放MIDI音乐功能_第2页
第2页 / 共3页
为Java程序中添加播放MIDI音乐功能_第3页
第3页 / 共3页
亲,该文档总共3页,全部预览完了,如果喜欢就下载吧!
资源描述

《为Java程序中添加播放MIDI音乐功能》由会员分享,可在线阅读,更多相关《为Java程序中添加播放MIDI音乐功能(3页珍藏版)》请在金锄头文库上搜索。

1、为Java程序中添加播放 MIDI音乐功能2007-09-23 10:20作者: 千里冰封 出处: 论坛整理 责任编辑:方舟Java在多媒体处理方面的确优势不大,但是我们在程序中有些时候又需要一些音乐做为点缀,如果播放的音乐是wav等波形音频文件又挺大,所以背景音乐最好就是 MIDI 了,可是网上很多播放 MIDI的教程 都是简单的几句话的例子,并且没有考虑资源的释放问题,如果程序长久运行的话,就会岀现内存越耗越多的情况,以至于最后抛出一个java.Iang.OutOfMemoryError ,整个程序就挂了。在MIDI的播放中,一个类是比较重要的,那就是 MidiSystem类,它负责整个

2、MIDI播放设备等的管理,其实就是Seqencer,它就是一个 MIDI播放设置,用于播放 MIDI序列的,还有一个类叫Seqence,它就是MIDI的序列,MIDI的序列可以自己由程序生成,也可以从文件中或者URL中读取。下面我们来看一个例子吧:/* author hadeslee* Test5.java* Created on 2007-9-22, 11:16:22* To change this template, choose Tools | Templates* and open the template in the editor.*/package test1;import ja

3、va.io.File;import java.io.IOException;import java.io.InputStream;import java.util.Hashtable;import java.util.Map;import java.util.logging.Level;import java.util.logging.Logger;import javax.sound.midi.InvalidMidiDataException;import javax.sound.midi.MidiSystem;import javax.sound.midi.MidiUnavailableE

4、xception;import javax.sound.midi.Sequenee;import javax.sound.midi.Sequencer;private Seque ncer midi;private Stri ng names=1.mid,2.mid,3.mid,4.mid,5.mid;private int i;private MapvStri ng,Seque nce map;public Test5()ini tMap();new Thread(this).start();private void initMap()try map = new HashtablevStri

5、 ng, Seque nce();midi = MidiSystem.getSequencer( false);midi.ope n();for (Str ing s : n ames) try Sequenee si = MidiSystem.getSequence( new File(s);map.put(s, si); catch (InvalidMidiDataException ex) Logger.getLogger(Test5. class.getName().log(Level.SEVERE,null, ex); catch (lOException ex) Logger.ge

6、tLogger(Test5. class.getName().log(Level.SEVERE,null, ex); catch (MidiUnavailableException ex) Logger.getLogger(Test5. class.getName().log(Level.SEVERE,null, ex);private void createPlayer(String name)try Seque nee se=map.get (n ame);midi.setSeque nce(se);midi.start(); catch (InvalidMidiDataException

7、 ex) Logger.getLogger(Test5. class.getName().log(Level.SEVERE, null, ex);try System.out.println(” 换文件了 .+(+i);String name=names( int)(Math.random()*names.length);createPlayer( name);Thread.sleep(IOOOO); catch (InterruptedException ex) Logger.getLogger(Test5. class.getName().log(Level.SEVERE, null ,

8、ex);public static void main(String args) new Test5();*/public class Test5 implements Runnablepublic void run()while (true)在这里有很重要的一点,那就是在程序运行的时候,只要一个Seqencer就可以了,我以前在程序里面每次播放的时候都生成了一个Seqencer,因为那个时候我想,我都调用它的close()方法了,它还能被打开吗?其实它还可以再度被打开的,就是这样一种惯性思维使得程序最终因内存溢岀而崩溃。现在按我这种方式播,哪怕10毫秒换一次MIDI都可以,换个几万次内存一点都没有加,呵呵,真是防不胜防啊。查看关于Java多媒体的更多文档

展开阅读全文
相关资源
正为您匹配相似的精品文档
相关搜索

最新文档


当前位置:首页 > 办公文档 > 活动策划

电脑版 |金锄头文库版权所有
经营许可证:蜀ICP备13022795号 | 川公网安备 51140202000112号