16

我对Java的MIDI功能不是很了解。事实上,它完全让我感到困惑。然而,我想做的只是构建一个可以播放一个音符的简单应用程序。

如何使用 Java Sound 播放单个 MIDI 音符?

网络上对此的支持几乎不存在,我完全不知所措。

4

2 回答 2

25

我知道这是一个非常老的问题,但是,作为一个新手程序员,我很难弄清楚如何做到这一点,所以我想我会分享以下 hello-world 风格的程序,它可以让 Java 播放单曲midi note 以帮助其他人入门。

import javax.sound.midi.*;

public class MidiTest{

    public static void main(String[] args) { 
      try{
        /* Create a new Sythesizer and open it. Most of 
         * the methods you will want to use to expand on this 
         * example can be found in the Java documentation here: 
         * https://docs.oracle.com/javase/7/docs/api/javax/sound/midi/Synthesizer.html
         */
        Synthesizer midiSynth = MidiSystem.getSynthesizer(); 
        midiSynth.open();
    
        //get and load default instrument and channel lists
        Instrument[] instr = midiSynth.getDefaultSoundbank().getInstruments();
        MidiChannel[] mChannels = midiSynth.getChannels();
        
        midiSynth.loadInstrument(instr[0]);//load an instrument
    
    
        mChannels[0].noteOn(60, 100);//On channel 0, play note number 60 with velocity 100 
        try { Thread.sleep(1000); // wait time in milliseconds to control duration
        } catch( InterruptedException e ) {
            e.printStackTrace();
        }
        mChannels[0].noteOff(60);//turn of the note
    
    
      } catch (MidiUnavailableException e) {
         e.printStackTrace();
      }
   }

}    

上面的代码主要是通过剪切、粘贴和修改几个在线教程中的代码来创建的。以下是我发现的最有用的教程:

http://www.ibm.com/developerworks/library/it/it-0801art38/

这是一个很棒的教程,可能有你想要的一切;但是,一开始可能有点压倒性。

http://patater.com/gbaguy/javamidi.htm

具有由 15 岁编写的非工作代码。这是 - 令人惊讶的是 - 我发现的最有用的东西。

于 2016-04-07T04:31:43.437 回答
4

干得好 :

stackoverflow 上的MIDI 标签信息

  1. 了解 MIDI
  2. 甲骨文教程
  3. 访问 MIDI
  4. MIDI合成
于 2013-05-09T13:33:23.850 回答