import com.leff.midi.event.meta.Tempo; //导入方法依赖的package包/类

private void createMidiFile(String filename) {

// 1. Create some MidiTracks

MidiTrack tempoTrack = new MidiTrack();

MidiTrack noteTrack = new MidiTrack();

// 2. Add events to the tracks

// 2a. Track 0 is typically the tempo map

TimeSignature ts = new TimeSignature();

ts.setTimeSignature(4, 4, TimeSignature.DEFAULT_METER,

TimeSignature.DEFAULT_DIVISION);

Tempo t = new Tempo();

t.setBpm(228);

tempoTrack.insertEvent(ts);

tempoTrack.insertEvent(t);

// 2b. Track 1 will have some notes in it

// for (int i = 0; i < 80; i++) {

final SheetMusic sheetMusic = mSheetMusicView.getSheetMusic();

final Staff staff = sheetMusic.getPart().getStaff();

int channel = 0;

int pitch = NoteScale.ToNumber(NoteScale.C, 5);

int velocity = 100;

for (MusicalFigure musicalFigure : staff.getMusicalFigures()) {

if (musicalFigure instanceof Measure) {

for (DurationFigure durationFigure : ((Measure) musicalFigure)

.getDurationFigures()) {

final Note note = (Note) durationFigure;

pitch = NoteScale.ToNumber(

Note.Step.getNoteScale(note.getStep()),

note.getOctave());

noteTrack.insertNote(channel, pitch + 1, velocity,

pitch + 1, 480 * durationFigure.getDuration());

}

}

}

// NoteOn on = new NoteOn(i * 480, channel, pitch, velocity);

// NoteOff off = new NoteOff(i * 480 + 120, channel, pitch, 0);

//

// noteTrack.insertEvent(on);

// noteTrack.insertEvent(off);

// There is also a utility function for notes that you should use

// instead of the above.

// noteTrack.insertNote(channel, pitch, velocity, i, 480 * 4);

// }

// It's best not to manually insert EndOfTrack events; MidiTrack will

// call closeTrack() on itself before writing itself to a file

// 3. Create a MidiFile with the tracks we created

ArrayList tracks = new ArrayList();

tracks.add(tempoTrack);

tracks.add(noteTrack);

MidiFile midi = new MidiFile(MidiFile.DEFAULT_RESOLUTION, tracks);

// 4. Write the MIDI data to a file

File output = new File(MusicFileManager.DEFAULT_STORAGE_DIRECTORY

+ filename);

try {

output.createNewFile();

//File output = File.createTempFile(filename, "", new File(

//MusicFileManager.DEFAULT_STORAGE_DIRECTORY));

midi.writeToFile(output);

} catch (IOException e) {

System.err.println(e);

}

}

java音乐bpm,Java Tempo.setBpm方法代码示例相关推荐

  1. java secretkey用法_Java SecretKeyFactory.generateSecret方法代码示例

    本文整理汇总了Java中javax.crypto.SecretKeyFactory.generateSecret方法的典型用法代码示例.如果您正苦于以下问题:Java SecretKeyFactory ...

  2. java polygon 用法_Java Polygon.getBounds方法代码示例

    import java.awt.Polygon; //导入方法依赖的package包/类 private SelectionShape translatePointsToRealSize(Select ...

  3. java makedir用法_Java Files.makeDir方法代码示例

    import org.nutz.lang.Files; //导入方法依赖的package包/类 protected void download(String openid, String media_ ...

  4. java args包_Java Args.positive方法代码示例

    import org.apache.http.util.Args; //导入方法依赖的package包/类 /** * Creates new instance of BHttpConnectionB ...

  5. java shape用法_Java PShape.scale方法代码示例

    import processing.core.PShape; //导入方法依赖的package包/类 public void updateAnim(){ if(pg_src_small == null ...

  6. java round指令_Java PApplet.round方法代码示例

    import processing.core.PApplet; //导入方法依赖的package包/类 public static final void updatePos() { if(follow ...

  7. Java 怎么 get char_Java KeyCharacterMap.getDeadChar方法代码示例

    import android.view.KeyCharacterMap; //导入方法依赖的package包/类 @Override public boolean onKeyDown(int keyC ...

  8. java gettext用法_Java Context.getText方法代码示例

    import android.content.Context; //导入方法依赖的package包/类 /** * Song Details * * @param context * @param t ...

  9. java soap封装_Java SOAPMessage.writeTo方法代码示例

    import javax.xml.soap.SOAPMessage; //导入方法依赖的package包/类 private byte[] createProbeXML() throws SOAPEx ...

  10. java set的first_Java Pair.setFirst方法代码示例

    import org.apache.hadoop.hbase.util.Pair; //导入方法依赖的package包/类 /** * Checks whether cell contains any ...

最新文章

  1. 企业网络推广方法之网站内容链接SEO该怎么做?
  2. 【学习笔记】线段树的数组大小下限及证明
  3. 猎豹浏览器怎么不能设置背景着颜色护眼?
  4. cmake Debug模式和Release模式
  5. 一名全栈工程师的必备“百宝箱”
  6. java实现动态验证码源代码——jsp页面
  7. linux删除mysql临时文件_linux下mysql自动备份数据库与自动删除临时文件_MySQL
  8. 计算字符串距离(信息学奥赛一本通-T1298)
  9. Using dispatch_async
  10. wpf messagebox.show()点击其他地方会闪烁_定时、童锁、故障查询,线控器上的这些功能你会用吗?...
  11. guestfish修改镜像内容
  12. Slog86_使用Sketch 设计ArthurSlog网站主页原型
  13. 记一次网络访问故障排查
  14. IndoorGML 介绍
  15. c语言中的圆方程,圆的方程练习题及答案
  16. 云计算给IT产业结构带来的影响
  17. 制作路由器openwrt安装及配置
  18. 无头浏览器和抓取-解决方案
  19. 计算机PPT中项目编号怎么弄,电脑技巧收藏家电脑基础设置幻灯片格式:项目符号和编号...
  20. DASH标准ABR算法介绍

热门文章

  1. HDU-1728-逃离迷宫
  2. VB6+Mo图层顺序的调整(MoveToTop、MoveTo、MoveToBottom )
  3. 数据库驱动加载失败问题
  4. Elasticsearch 集群报错 master not discovered yet
  5. 如何用淘宝客为淘宝店铺引流
  6. 计算机微课课件评比活动总结,教学大赛总结.doc
  7. 奶爸日记2 - 鑫鑫感动了婆婆
  8. Mac 电脑系统重装(详细流程,包含 Intel、Apple M系列)
  9. 服务器2003系统安装时蓝屏,安装2003server操作系统蓝屏是怎么回事?
  10. GAPS-银行综合前置系统