Как связать Java MIDI с другими приложениями - PullRequest
4 голосов
/ 25 ноября 2011

Привет, я программирую Java на Windows и очень плохо знаком с работой с MIDI-интерфейсами.

Мне удалось получить Java для воспроизведения миди-звуков через объекты синтезатора, изначально через динамик компьютера, однако я хочу отправитьMIDI-сообщения на лету в отдельное приложение для синтеза, а именно FLStudio.Я думаю, что я должен сделать интерфейс Java похожим на аппаратное устройство MIDI, но я не знаю, как это сделать.Я также думаю, что это может иметь какое-то отношение к Transmitter или MidiDevice, но я не уверен.

Кто-нибудь знает, как я мог бы начать это делать.Я просмотрел весь Google по этому поводу, но всегда получаю те же 2 документа:

http://www.jsresources.org/faq_midi.html и http://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 Ответ

3 голосов
/ 25 ноября 2011

Вы можете использовать программу типа MidiOx для создания виртуальной конечной точки MIDI, в которую вы можете отправлять MIDI-сообщения.Затем в вашем секвенсоре вы просто указываете ему принимать MIDI-сообщения с выхода этого устройства и можете использовать его как транзитный канал.

...