Demo展示
以下是一个简单的Java程序,演示如何使用javax.sound.midi库来播放一些基本音符。通过这个Demo,你可以看到如何轻松实现音符的生成与播放。
-
import javax.sound.midi.*; // 导入MIDI相关的类
-
public class SimpleMusicDemo {
-
public static void main(String[] args) { -
try { -
// 获取MIDI合成器 -
Synthesizer synthesizer = MidiSystem.getSynthesizer(); -
synthesizer.open(); // 打开合成器以便使用 -
// 获取合成器的通道 -
MidiChannel[] channels = synthesizer.getChannels(); -
channels[0].programChange(5); // 选择音色(例如:钢琴,音色索引为5) -
// 播放音符(C4, E4, G4) -
playNote(channels[0], 60); // 播放C4(音符编号为60) -
Thread.sleep(500); // 暂停500毫秒,以便听到音符 -
playNote(channels[0], 64); // 播放E4(音符编号为64) -
Thread.sleep(500); // 暂停500毫秒 -
playNote(channels[0], 67); // 播放G4(音符编号为67) -
Thread.sleep(500); // 暂停500毫秒 -
synthesizer.close(); // 关闭合成器 -
} catch (MidiUnavailableException | InterruptedException e) { -
e.printStackTrace(); // 捕获异常并打印错误信息 -
} -
} -
// 播放指定音符的方法 -
private static void playNote(MidiChannel channel, int note) { -
channel.noteOn(note, 100); // 播放音符,音量为100 -
try { -
Thread.sleep(300); // 音符持续300毫秒 -
} catch (InterruptedException e) { -
e.printStackTrace(); // 捕获异常并打印错误信息 -
} -
channel.noteOff(note); // 停止播放音符 -
} -
} 代码解析 在这个程序中,我们首先获取MIDI合成器并打开它。通过合成器的通道设置乐器音色,然后依次播放C4、E4和G4这三个音符。每个音符之间有一定的延时,这样可以使旋律更加流畅。