MIDI новичок - нужно сыграть одну ноту
Я не очень много знаю о функции MIDI в Java. На самом деле, это совершенно сбивает с толку меня. однако я хотел бы просто создать простое приложение, которое будет играть одну ноту.
Как воспроизвести одну MIDI-ноту с помощью Java Sound?
Поддержка этого в сети практически отсутствует, и я в полном недоумении.
2 ответа
Я знаю, что это действительно старый вопрос, но, как начинающему программисту, мне было очень трудно понять, как это сделать, поэтому я подумал, что поделюсь следующей программой hello-world-style, которая заставляет Java воспроизводить один Midi Note, чтобы помочь кому-либо еще начать.
import javax.sound.midi.*;
public class MidiTest{
public static void main(String[] args) {
try{
/* Create a new Sythesizer and open it. Most of
* the methods you will want to use to expand on this
* example can be found in the Java documentation here:
* https://docs.oracle.com/javase/7/docs/api/javax/sound/midi/Synthesizer.html
*/
Synthesizer midiSynth = MidiSystem.getSynthesizer();
midiSynth.open();
//get and load default instrument and channel lists
Instrument[] instr = midiSynth.getDefaultSoundbank().getInstruments();
MidiChannel[] mChannels = midiSynth.getChannels();
midiSynth.loadInstrument(instr[0]);//load an instrument
mChannels[0].noteOn(60, 100);//On channel 0, play note number 60 with velocity 100
try { Thread.sleep(1000); // wait time in milliseconds to control duration
} catch( InterruptedException e ) { }
mChannels[0].noteOff(60);//turn of the note
} catch (MidiUnavailableException e) {}
}
}
Приведенный выше код был в основном создан путем вырезания, вставки и возни с кодом, найденным в нескольких онлайн-учебниках. Вот самые полезные уроки, которые я нашел:
http://www.ibm.com/developerworks/library/it/it-0801art38/ Это отличный учебник и, вероятно, содержит все, что вы ищете; однако, это может быть немного подавляющим вначале.
http://patater.com/gbaguy/javamidi.htm Особенности неработающего кода, написанного 15-летним. Это было - удивительно - самое полезное, что я нашел.
Удачи вам. Приветствия.