如何将Java midi与其他应用程序连接

时间:2011-11-25 11:33:33

标签: java midi synthesis sound-synthesis

您好,我正在使用Windows编程Java,对使用MIDI接口来说还是一个新手。

我已经设法让java通过Synthesizer对象播放midi声音,本机通过计算机扬声器,但我希望将midi消息动态发送到单独的综合应用程序,即FLStudio。我想我必须让java界面看起来像硬件midi设备,但我不知道如何做到这一点。我也认为它可能与Transmitter或MidiDevice有关,但我不确定。

有谁知道我将如何开始这样做。我已经看过谷歌关于这一点,但总是最终得到相同的2个文件,

http://www.jsresources.org/faq_midi.htmlhttp://www.ibm.com/developerworks/library/it/it-0801art38/

很抱歉,如果之前已经提出这个问题,但我找不到它。

这是我到目前为止所拥有的。任何帮助将不胜感激。

import javax.sound.midi.*;

public class Midi
{
    public static final void main(String args[]) throws Exception
    {
        //create and open synthesizer
        Synthesizer syn = MidiSystem.getSynthesizer();
        syn.open();

        //open midi channels (we'll use channel 5)
        final MidiChannel[] mc = syn.getChannels();

        //set instruments
        Instrument[] instr = syn.getDefaultSoundbank().getInstruments();

        //Possible ways to send midi to FLStudio, rather than inbuilt
        //javax.sound.midi.Transmitter?
        //javax.sound.midi.MidiDevice?

        // change instrument, using midi codes
        mc[5].programChange(instr[0].getPatch().getProgram());

        // Play note
        mc[5].noteOn(50,1000); //(noteNumber, velocity)
    }
}

1 个答案:

答案 0 :(得分:3)

您可以使用MidiOx之类的程序创建一个可以发送MIDI信息的虚拟MIDI端点。然后,在您的音序器中,您只需告诉它接受来自该设备输出的MIDI消息,您就可以将其用作直通管道。