日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當(dāng)前位置: 首頁 > 编程语言 > java >内容正文

java

Java 添加播放MIDI音乐

發(fā)布時間:2025/3/19 java 44 豆豆
生活随笔 收集整理的這篇文章主要介紹了 Java 添加播放MIDI音乐 小編覺得挺不錯的,現(xiàn)在分享給大家,幫大家做個參考.

? ? ?Java?在多媒體處理方面的確優(yōu)勢不大,但是我們在程序中有些時候又需要一些音樂。

? ? 如果播放的音樂是wav等波形音頻文件,又很大的話,所以背景音樂最好就是MIDI了。

? ? 網(wǎng)上很多播放MIDI的教程都是簡單的幾句話的例子。

? ? 沒有考慮資源的釋放問題,如果程序長久運(yùn)行的話,就會出現(xiàn)內(nèi)存越耗越多的情況,最后會拋出一個?java.lang.OutOfMemoryError

  在MIDI的播放中,一個類是比較重要的,那就是?MidiSystem?類。

? ? 負(fù)責(zé)整個MIDI播放設(shè)備等的管理,其實就是?Seqencer,它就是一個MIDI播放設(shè)置,用于播放MIDI序列的。

? ? 另外還有一個類叫?Seqence,它就是MIDI的序列,MIDI的序列可以自己由程序生成,也可以從文件中或者URL中讀取。

package test1;import java.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.MidiUnavailableException; import javax.sound.midi.Sequence; import javax.sound.midi.Sequencer; public class Test5 implements Runnable{private Sequencer midi;private String[] names={"1.mid","2.mid","3.mid","4.mid","5.mid"};private int i;private Map<String,Sequence> map;public Test5(){initMap();new Thread(this).start();}private void initMap(){try {map = new Hashtable<String, Sequence>();midi = MidiSystem.getSequencer(false);midi.open();for (String s : names) {try {Sequence s1 = MidiSystem.getSequence(new File(s));map.put(s, s1);} catch (InvalidMidiDataException ex) {Logger.getLogger(Test5.class.getName()).log(Level.SEVERE, null, ex);} catch (IOException ex) {Logger.getLogger(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 {Sequence se=map.get(name);midi.setSequence(se);midi.start();}catch (InvalidMidiDataException ex) {Logger.getLogger(Test5.class.getName()).log(Level.SEVERE, null, ex);}}public void run(){while(true){try {System.out.println("換文件了."+(++i));String name=names[(int)(Math.random()*names.length)];createPlayer(name);Thread.sleep(10000);} catch (InterruptedException ex) {Logger.getLogger(Test5.class.getName()).log(Level.SEVERE, null, ex);}}}public static void main(String[] args) {new Test5();} }

? ? 在這里有很重要的一點,那就是在程序運(yùn)行的時候,只要一個?Seqencer?就可以。

? ? 我以前在程序里面每次播放的時候都生成了一個Seqencer,我都調(diào)用它的?close()?方法了,它還能被打開嗎?

? ? 其實它還可以再度被打開的,就是這樣一種思維使得程序最終因內(nèi)存溢出而崩潰。

?本文轉(zhuǎn)自O(shè)rson博客園博客,原文鏈接:http://www.cnblogs.com/java-class/archive/2013/04/16/3023800.html,如需轉(zhuǎn)載請自行聯(lián)系原作者

總結(jié)

以上是生活随笔為你收集整理的Java 添加播放MIDI音乐的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網(wǎng)站內(nèi)容還不錯,歡迎將生活随笔推薦給好友。

主站蜘蛛池模板: 欧美日韩国产专区 | 久久久av片 | 亚洲国产日韩一区无码精品久久久 | 狠狠干2018| 撸久久| 波多野结衣乳巨码无在线观看 | 在线日韩精品视频 | 超黄av | 公妇借种乱htp109cc | 成人欧美一区二区三区黑人免费 | 婷婷六月天在线 | 毛片基地在线播放 | 高h视频在线观看 | 香蕉人妻av久久久久天天 | 国模无码大尺度一区二区三区 | 极品久久久 | 国产白拍| 黄色片网站在线 | 亚洲五月花| 91资源在线视频 | 婷婷激情五月综合 | 中国黄色大片 | 美女污软件 | 亚洲香蕉在线视频 | 国产精品久久久久久人 | 国产自偷自拍视频 | 免费看黄色aaaaaa 片 | 在线观看成人动漫 | 浪漫樱花在线观看高清动漫 | 国产精品果冻传媒潘 | 最新av网址在线观看 | 日韩午夜网站 | 波多野结衣中文在线 | 日本伦理一区 | 国产日产欧美一区二区三区 | 欧美色乱 | 免费看毛片网站 | 中文字幕蜜桃 | 伊人色影院 | 亚洲中文字幕无码一区 | 国产熟妇与子伦hd | 欧美日韩网 | 亚洲av无码乱码国产精品fc2 | 亚洲国产精彩视频 | 欧美日本在线播放 | 日韩国产精品久久 | 久久久精品国产sm调教 | 成片免费观看视频大全 | 国产在线视频网 | 一级网站在线观看 | 伊人久久久久久久久久久久 | 亚洲天堂999 | 国产性―交―乱―色―情人 | 久久久久久久久免费视频 | 91久久精品国产 | 国产精品久久伊人 | 日本免费一区二区三区四区 | 成人亚洲天堂 | cao久久 | 国产黄色在线 | 久久中文字幕一区二区 | 在线观看www视频 | 无码熟妇αⅴ人妻又粗又大 | 国产乱子一区二区 | 免费人成在线观看网站 | 成人国产在线 | 成人在线视频观看 | 九九自拍偷拍 | 亚洲国产日韩一区二区 | 亚洲激情自拍偷拍 | 免费爱爱视频网站 | 男人的天堂影院 | 亚洲情射| 男女午夜激情视频 | 成人午夜看片 | 女性裸体无遮挡胸 | 亚洲国产成人精品女人久久久 | 淫片一级国产 | 好看的国产精品 | 欧美日韩在线观看一区 | 久久亚洲激情 | 动漫同人高h啪啪爽文 | zzjj国产精品一区二区 | 久久久久人妻一区 | 美女被猛网站 | 成年网站在线播放 | 五月天亚洲综合 | 国产av成人一区二区三区高清 | 国产一区二区三区中文字幕 | 姐姐的秘密韩剧免费观看全集中文 | 调教奶奴 | 欧美xxxxx自由摘花 | 国产在线播放一区 | 日本欧美色 | 精品久久久在线观看 | 夜间福利在线观看 | 亚洲欧洲久久久 | 美脚の诱脚舐め脚视频播放 | 亚洲视频欧洲视频 |