任何人都可以建议我如何设置MIDI声音的平移。我正在使用java MIDI合成,可以让它听起来。但我希望声音从左到右扬声器平移。我做谷歌但似乎不太清楚我?这是我正在处理的代码示例:
Synthesizer synthesizer = MidiSystem.getSynthesizer();
synthesizer.open();
MidiChannel channel = synthesizer.getChannels()[0];
Soundbank soundbank = synthesizer.getDefaultSoundbank();
synthesizer.loadAllInstruments(soundbank);
channel.programChange(0,instrument);
channel.noteOn(60,200);`
我非常感谢任何帮助。 非常感谢!
答案 0 :(得分:1)
根据MIDI spec,平移由控制变更消息号10控制。这是“粗略”值(7位精度),但显然是“精细”14位版本(控制变更42)是真实设备的likely to be ignored。
了解这一点,您应该可以使用JavaSound MidiChannel API中的controlChange(int, int)
方法来控制平移:
final int PAN_CONTROLLER = 10;
// Pan to Center:
channel.controlChange(PAN_CONTROLLER, 64);
// Pan hard left:
channel.controlChange(PAN_CONTROLLER, 0);
// Pan hard right:
channel.controlChange(PAN_CONTROLLER, 127);
// "Active stereo", Jimi-Hendrix-style
// sweep from almost-full left to almost-full right:
for (int position = 8; position < 127; position += 8) {
channel.controlChange(PAN_CONTROLLER, position);
try {
Thread.sleep(500);
} catch (InterruptedException e) {
}
}