Java MIDI合成器 - 无法改变乐器
我似乎无法让乐器改变。我切换了仪器的值,但输出没有任何不同。无论我尝试什么价值,我都只能拿钢琴乐器演奏。这是下面的简单代码。有没有人有什么建议?或者我错过了仪器对象的基本原理?
import javax.sound.midi.*;
//import javax.sound.*;
public class Drum {
static int instrument = 45;
static int note = 100;
static int timbre = 0;
static int force = 100;
public static void main(String[] args) {
Synthesizer synth = null;
try {
synth = MidiSystem.getSynthesizer();
synth.open();
}
catch (Exception e) {
System.out.println(e);
}
Soundbank soundbank = synth.getDefaultSoundbank();
Instrument[] instr = soundbank.getInstruments();
synth.loadInstrument(instr[instrument]); //Changing this int (instrument) does nothing
MidiChannel[] mc = synth.getChannels();
mc[4].noteOn(note, force);
try { Thread.sleep(1000); }
catch(InterruptedException e) {}
System.out.println(instr[instrument].getName());
synth.close();
}
}
没有找到相关结果
已邀请:
3 个回复
容淑阔九
这样的东西听起来很有希望。
畦桨存灯
然后你添加它的每一个音符都会敲击打击声。
苏髓骗撩
变量是channel(int)note(int),instrument(int),velocity(int)。 另外,我建议学习midi事件。事件是midi如何演奏音符,停止音符,改变乐器,节奏变化,控制变化等。我花了两年时间使用midi程序。