技术小谈|java没用的知识又增长了

59 阅读1分钟

Demo展示

        以下是一个简单的Java程序,演示如何使用javax.sound.midi库来播放一些基本音符。通过这个Demo,你可以看到如何轻松实现音符的生成与播放。

  1. import javax.sound.midi.*; // 导入MIDI相关的类

  2. public class SimpleMusicDemo {

  3. public static void main(String[] args) {
    
  4.     try {
    
  5.         // 获取MIDI合成器
    
  6.         Synthesizer synthesizer = MidiSystem.getSynthesizer();
    
  7.         synthesizer.open(); // 打开合成器以便使用
    
  8.         // 获取合成器的通道
    
  9.         MidiChannel[] channels = synthesizer.getChannels();
    
  10.         channels[0].programChange(5); // 选择音色(例如:钢琴,音色索引为5)
    
  11.         // 播放音符(C4, E4, G4)
    
  12.         playNote(channels[0], 60); // 播放C4(音符编号为60)
    
  13.         Thread.sleep(500); // 暂停500毫秒,以便听到音符
    
  14.         playNote(channels[0], 64); // 播放E4(音符编号为64)
    
  15.         Thread.sleep(500); // 暂停500毫秒
    
  16.         playNote(channels[0], 67); // 播放G4(音符编号为67)
    
  17.         Thread.sleep(500); // 暂停500毫秒
    
  18.         synthesizer.close(); // 关闭合成器
    
  19.     } catch (MidiUnavailableException | InterruptedException e) {
    
  20.         e.printStackTrace(); // 捕获异常并打印错误信息
    
  21.     }
    
  22. }
    
  23. // 播放指定音符的方法
    
  24. private static void playNote(MidiChannel channel, int note) {
    
  25.     channel.noteOn(note, 100); // 播放音符,音量为100
    
  26.     try {
    
  27.         Thread.sleep(300); // 音符持续300毫秒
    
  28.     } catch (InterruptedException e) {
    
  29.         e.printStackTrace(); // 捕获异常并打印错误信息
    
  30.     }
    
  31.     channel.noteOff(note); // 停止播放音符
    
  32. }
    
  33. } 代码解析 在这个程序中,我们首先获取MIDI合成器并打开它。通过合成器的通道设置乐器音色,然后依次播放C4、E4和G4这三个音符。每个音符之间有一定的延时,这样可以使旋律更加流畅。