playshortmidi.java
来自「《精通JAVA手机游戏与应用程序设计》随书光盘」· Java 代码 · 共 88 行
JAVA
88 行
import javax.microedition.midlet.*;
import javax.microedition.lcdui.*;
import javax.microedition.media.*;
import javax.microedition.media.control.*;
public class PlayShortMIDI extends MIDlet implements CommandListener {
private Player mp;
private Display display;
private List list;
private Command exitCommand = new Command("Exit", Command.EXIT, 2);
private Command playCommand = new Command("Play", Command.ITEM, 1);
private byte[] niceChord = new byte[] { 0x2B, 0x40, 0x44, 0x4C, 0x53, 0x58,
0x23, 0x3B, 0x32, 0x1F };
public PlayShortMIDI() {
display = Display.getDisplay(this);
list = new List("MIDI例子", List.IMPLICIT);
}
public void startApp() {
list.addCommand(exitCommand);
list.addCommand(playCommand);
list.setCommandListener(this);
list.append("播放单个音符", null);
display.setCurrent(list);
}
public void destroyApp(boolean unconditional) {
}
public void pauseApp() {
}
public void commandAction(Command c, Displayable s) {
if (c == exitCommand) {
destroyApp(false);
notifyDestroyed();
}
if (c == playCommand) {
midiShort();
}
}
private void midiShort() {
try {
MIDIControl mc = getMIDIControl();
// some notes on channel 0
// 0x90: Note On
for (int i = 0; i < niceChord.length; i++) {
// Note On, note number, velocity
mc.shortMidiEvent(0x90, niceChord[i], 127);
}
// some drums on channel 9
mc.shortMidiEvent(0x99, 35, 127); // bass drum
mc.shortMidiEvent(0x99, 35, 0);
mc.shortMidiEvent(0x99, 58, 127); // vibraslap
mc.shortMidiEvent(0x99, 58, 0);
mc.shortMidiEvent(0x99, 57, 127); // crash cymbal
mc.shortMidiEvent(0x99, 57, 0);
Thread.sleep(200);
// 关闭所有音符 ,第3个参数传递0表示关闭音符
for (int i = 0; i < niceChord.length; i++) {
mc.shortMidiEvent(0x90, niceChord[i], 0);
}
} catch (Exception ex) {
}
}
MIDIControl getMIDIControl() throws Exception {
if (mp == null) {
mp = Manager.createPlayer(Manager.MIDI_DEVICE_LOCATOR);
mp.prefetch();
}
return (MIDIControl) mp
.getControl("javax.microedition.media.control.MIDIControl");
}
}
⌨️ 快捷键说明
复制代码Ctrl + C
搜索代码Ctrl + F
全屏模式F11
增大字号Ctrl + =
减小字号Ctrl + -
显示快捷键?