我打算用Java创建自己的节拍器(木版乐器),可以设置它的bpm,音量等。我已经尝试了从getChannels()
获得的超过16个通道(MIDI 1.0规范)但是有根本没有听到木版块。
以下是从http://www.jsresources.org
中获取的代码 /*
* Turn the note on on MIDI channel 1.
* (Index zero means MIDI channel 1)
*/
MidiChannel[] channels = synth.getChannels();
channels[0].noteOn(nNoteNumber, nVelocity);
/*
* Wait for the specified amount of time
* (the duration of the note).
*/
try
{
Thread.sleep(nDuration);
}
catch (InterruptedException e)
{
}
/*
* Turn the note off.
*/
channels[0].noteOff(nNoteNumber);
任何人都对此有所了解?感谢。
答案 0 :(得分:1)
根据您的合成器,打击乐声音将位于通道10或通道16(阵列中的索引9或15)。木块声音将是音符编号76和77,您可能希望使用音符速度值128(最大音量)。
我没有查看您正在使用的代码,但您可能还需要调用一种方法来打开合成器,然后才能播放任何内容。此外,由于您正在播放打击乐音符,因此可以能够在消息上的音符后立即发送相应的音符消息(因此您无需弄清楚修复的持续时间)打击乐笔记)。我使用的大多数MIDI合成器即使在收到音符关闭消息后也会播放整个打击乐声音。
答案 1 :(得分:0)
答案 2 :(得分:0)
使用(例如)this General MIDI (GM) reference查找补丁。您需要通道10用于GM打击乐,并且需要注释76为Hi Wood Block或77为低木块。
此外,乐器116是全键盘(从1到128的任何音高)木版。我相信这应该适用于任何非打击乐(即不是10个,或可能是16个)的频道。
注意:GM似乎是基于1的,而您的API似乎是基于0的,因此您可能必须从其中一些值中减去一个。