国产探花免费观看_亚洲丰满少妇自慰呻吟_97日韩有码在线_资源在线日韩欧美_一区二区精品毛片,辰东完美世界有声小说,欢乐颂第一季,yy玄幻小说排行榜完本

首頁 > 學院 > 開發設計 > 正文

教你如何使用javax.sound.midi包

2019-11-18 15:07:17
字體:
來源:轉載
供稿:網友

  package lookbook.midi;
import javax.sound.midi.*;
import java.io.*;
import java.net.*;
/**
* <p>Title: </p>
* <p>Description: how to use java midi from javax.sound.midi´s Package</p>
* <p>Copyright: Copyright (c) 2003</p>
* <p>Company: </p>
* @author lookbook
* @version 1.0
*/

public class MidiMain {
PRivate static String midiFile = "town.mid";
private static String midiURI = "http://hostname/midifile";
private Sequence sequence =null;
public MidiMain() {
this.loadAndPlay();
}
public void loadAndPlay(){
try {
// From file
sequence = MidiSystem.getSequence(new File(midiFile));

// From URL
// sequence = MidiSystem.getSequence(new URL("http://hostname/midifile"));

// Create a sequencer for the sequence
Sequencer sequencer = MidiSystem.getSequencer();
sequencer.open();
sequencer.setSequence(sequence);

//Determining the Duration of a Midi Audio File
double durationInSecs = sequencer.getMicrosecondLength() / 1000000.0;
System.out.println("the duration of this audio is "+durationInSecs+"secs.");

//Determining the Position of a Midi Sequencer
double seconds = sequencer.getMicrosecondPosition() / 1000000.0;
System.out.println("the Position of this audio is "+seconds+"secs.");

//Setting the Volume of Playing Midi Audio
if (sequencer instanceof Synthesizer) {
Synthesizer synthesizer = (Synthesizer)sequencer;
MidiChannel[] channels = synthesizer.getChannels();

// gain is a value between 0 and 1 (loudest)
double gain = 0.9D;
for (int i=0; i<channels.length; i++) {
channels[i].controlChange(7, (int)(gain * 127.0));
}
}

// Start playing
sequencer.start();

//Determining the Position of a Midi Sequencer
Thread.currentThread().sleep(5000);
seconds = sequencer.getMicrosecondPosition() / 1000000.0;
System.out.println("the Position of this audio is "+seconds+"secs.");

//Add a listener for meta message events
sequencer.addMetaEventListener(
new MetaEventListener() {
public void meta(MetaMessage event) {
// Sequencer is done playing
if (event.getType() == 47) {
System.out.println("Sequencer is done playing.");
}
}
});
}catch (MalformedURLException e) {
}catch (IOException e) {
}catch (MidiUnavailableException e) {
}catch (InvalidMidiDataException e) {
}catch (InterruptedException e){
}
}

public static void main(String[] args) {
MidiMain midi = new MidiMain();

}

}

發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
主站蜘蛛池模板: 上杭县| 曲靖市| 奉贤区| 宁陕县| 台东市| 额尔古纳市| 文山县| 长宁县| 兴安盟| 平远县| 鱼台县| 斗六市| 凤山县| 杂多县| 阳高县| 五大连池市| 白河县| 兴宁市| 微山县| 栾城县| 乃东县| 天长市| 昌黎县| 文登市| 石棉县| 麟游县| 阳西县| 宁远县| 育儿| 浦江县| 岳池县| 南雄市| 达州市| 那坡县| 青冈县| 深泽县| 铁岭市| 南充市| 鹿泉市| 友谊县| 台南县|