【问题标题】:How to interface Java midi to other applications如何将 Java midi 连接到其他应用程序
【发布时间】:2012-01-06 07:09:48
【问题描述】:

您好,我正在 Windows 上编写 Java,并且对使用 MIDI 接口非常陌生。

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

有谁知道我将如何着手解决这个问题。我已经在 Google 上查看过这方面的内容,但总是以相同的 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)
    }
}

【问题讨论】:

    标签: java midi synthesis sound-synthesis


    【解决方案1】:

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

    【讨论】:

    • 是否可以在原生 java 中实现“loopbe”或“midi yoke”的行为?秘诀是什么?谢谢
    • @user547064 可能不会。 “秘密”是编写一个 MIDI 驱动程序并在其中虚拟地路由消息。然而,直接与操作系统交互并不是 Java 真正的强项。
    猜你喜欢
    • 1970-01-01
    • 2020-07-26
    • 1970-01-01
    • 1970-01-01
    • 2011-09-24
    • 1970-01-01
    • 1970-01-01
    • 2016-09-30
    • 2019-08-04
    相关资源
    最近更新 更多