Игра на нескольких инструментах на мягком синтезаторе одновременно в Java

Я пытался играть более 1 инструмента на мягком синтезаторе, используя javax.sound.midi. пакет. Среди 16 каналов, доступных в синтезаторе, я попытался использовать два из них таким образом.

try { 
    // Locating the default synthesizer
        Synthesizer synth = MidiSystem.getSynthesizer();
    // Opening the synthesizer
        synth.open();
   // Geting the available Midi channels
        MidiChannel channels[] = synth.getChannels();
   // Geting the synth's soundbank where all the sounds are stored
        Soundbank bank = synth.getDefaultSoundbank();
   // Loading all the available instruments
        synth.loadAllInstruments(bank);
   // Geting a list of the available instruments
        Instrument instrs[] = synth.getLoadedInstruments();
        Instrument shanai = null;
        Instrument flute = null;
   // Looping through the instruments
        for (int i=0; i < instrs.length; i++)
        {
            if (instrs[i].getName().equals("Shanai"))
            {
                shanai = instrs[i];    
            }
            else if(instrs[i].getName().equals("Flute"))
            {
                flute=instrs[i];
            }    
        }
  // patch containing the soundbank and program number
     Patch shanaiPatch = shanai.getPatch();
     Patch flutePatch = flute.getPatch();
     channels[0].programChange(shanaiPatch.getBank(),
            shanaiPatch.getProgram());
     channels[1].programChange(flutePatch.getBank(),
            flutePatch.getProgram());
        channels[0].noteOn(32, 127);
        channels[1].noteOn(32, 127);
        Thread.sleep(1500);
        channels[0].noteOff(32);
        channels[1].noteOff(32);
 }   

Проблема здесь в том, что этот код играет на инструменте только на канале 2, а не на канале 1. Возможно, потому что функция ожидания работает после второго noteOn() сообщение. Тогда вопрос в том, как запустить две записки одновременно? Возможно ли это или есть другой подход к игре на нескольких инструментах?

Любое понимание очень ценится. Благодарю.

0 ответов

Другие вопросы по тегам