日韩性视频-久久久蜜桃-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)容還不錯,歡迎將生活随笔推薦給好友。

主站蜘蛛池模板: 日韩在线高清视频 | 一区二区视频免费在线观看 | 国产高清一区二区三区四区 | 亚洲美女在线播放 | 国产精品亚洲五月天丁香 | 96毛片| 九九热在线精品视频 | 在线三区 | av在线一| 99热一区二区三区 | 亚洲国产精品久久久久婷蜜芽 | 日韩成人区 | 一起草最新网址 | www九九九| 视频国产精品 | 成人免费区一区二区三区 | 激情高潮呻吟抽搐喷水 | 国产高清视频在线 | 天堂一二三区 | 成人羞羞国产免费动态 | 影音先锋黄色网址 | 亚洲精品男人的天堂 | 精品视频在线免费观看 | 久久福利网站 | 色婷婷av一区二区三 | 精品视频免费 | 午夜影视网| julia一区二区三区在线观看 | 国产一级片播放 | 精品在线免费播放 | 撕开少妇裙子猛然进入 | 亚洲欧洲免费视频 | 黑人巨大猛交丰满少妇 | 成人免费毛片入口 | 高清日韩一区 | 亚洲清纯唯美 | 777中文字幕| 国产爆乳无码一区二区麻豆 | 一区二区三区在线免费视频 | 巨乳美女在线 | 天天操天天操天天干 | 韩国伦理片在线观看 | 亚欧美视频 | 一级黄色性视频 | 国产毛片毛片毛片毛片 | 久久久99精品免费观看 | 亚洲产国偷v产偷v自拍涩爱 | 91爱国产 | 超碰美女在线 | 日韩在线观看一区 | 欧美日韩精品电影 | 一本色道久久综合无码人妻 | 精品一区二区精品 | 免费久久精品视频 | 亚洲综合色一区二区 | 成人福利视频在线观看 | 欧美老熟妇又粗又大 | 亚洲va韩国va欧美va | 日韩成人高清视频在线观看 | 少妇av片| 亚洲第一伊人 | bl动漫在线观看 | 日本久久视频 | 好吊日免费视频 | 亚洲精品h | 国产五月婷婷 | 三上悠亚 电影 | 国产123在线 | xxxxx毛片| 日韩欧美国产一区二区 | av在线免费观看不卡 | 久久久久亚洲精品中文字幕 | 国产免费资源 | 一级片aaaaa 国产又黄又粗又猛又爽 | 国产欧美精品一区二区 | h片免费观看 | 东方av在线免费观看 | 精品国偷自产在线 | 求av网址| 国产精品一级视频 | 国产原创视频在线观看 | 久久久久久美女 | 99ri在线观看| 国产日韩一区二区在线观看 | 国产福利精品视频 | 91视频播放 | 国产成人免费视频 | 在线看片网址 | 日本精品久久久久中文字幕 | 国产亚洲一区二区不卡 | 韩日精品在线观看 | 色一五月| 中文字幕在线播放一区 | 原创少妇半推半就88av | 亚洲黄色激情 | 欧美老熟 | 制服丝袜快播 | 国产女同91疯狂高潮互磨 | 91av片|