网站首页
JSP空间
动态资讯
开源项目
技术文档
资源下载
J2EE资源
客户论坛
在线支付
 
  技术文档>>JAVA>>新手入门>>基础入门>查看文档  
  教你如何使用javax.sound.midi包     
  文章作者:未知  文章来源:水木森林  
  查看:124次  录入:管理员--2007-11-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();

}

}
 
 
上一篇: 交易,提交以及安全性    下一篇: 21种代码的“坏味道”
  相关文档
进阶:怎样使用ajax进行web应用程序开发 03-06
连接池用法 11-17
分布式编程模式中的租约、事务和分布式事件机制 11-17
高手为你解读j2ee开发过程中的异常处理 11-16
java servlet和jsp教程(8) 11-17
新手学堂:几个著名java开源缓存框架介绍 06-16
eclipse3.1中的新特性及各插件详细介绍 11-16
j2se综合--对于log4j的深层次的理解 03-03
细说web应用开发的一致框架tapestry 11-17
看junit中metedata的巧妙应用 11-17
java 图形用户界面设计(上) 11-17
扩展eclipse的java开发工具(三) 11-17
ejb 3.0开发指南之多表映射 11-16
java中通过代理服务器(proxy)访问网络 11-17
j2ee应用服务器jonas发布4.4.2 rc版 11-16
java程序中用jfreechart制作图形报表 11-16
用jsp,读远程文件,保存到本地 11-17
使用java swing 创建一个xml编辑器(一) 11-17
vtk在java2中的使用 11-17
将注释转为代码 03-25
返回首页 | 关于我们 | J网章程 | JSP空间合租 | 客服中心 | 免责声明 | 常见问题 | 参观机房
本站主机空间代理至厦门市华众网络科技有限公司
《中华人民共和国增值电信业务经营许可证》
编号:闽B2-20050079
@2005-2008福建JSP技术网 版权所有 闽ICP备05000928号
技术电话:13616026886
邮箱:admin@fjjsp.com 站长QQ,点击这里给我发消息