有 Java 编程相关的问题?

你可以在下面搜索框中键入要查询的问题!

java MIDI初学者需要弹奏一个音符

我对Java的MIDI函数知之甚少。事实上,这完全让我困惑。然而,我想做的是创建一个能播放一个音符的简单应用程序

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

网络上几乎不存在对这一点的支持,我完全不知所措


共 (1) 个答案

  1. # 1 楼答案

    我知道这是一个非常古老的问题,但是,作为一个新手程序员,我很难想出如何做到这一点,所以我想我会分享下面的hello world风格的程序,让Java播放一个midi音符,以帮助其他人入门

    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岁的孩子编写的非工作代码。令人惊讶的是,这是我发现的最有用的东西