2011-11-25 60 views
4

嗨我在Windows上编程Java,并且对于使用MIDI接口非常新。如何将Java midi连接到其他应用程序

我设法获取Java播放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) 
    } 
} 

回答

3

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

+0

非常感谢。我们最终使用loopbe。 –

+0

是否有可能在本地java中引入“loopbe”或“midi yoke”的行为?什么秘密? 谢谢 – user547064

+0

@ user547064可能不是。 “秘密”是写一个MIDI驱动程序,并将消息路由到虚拟内部。但是,直接与操作系统连接并不是Java的强大套件。 –

相关问题