如何设置MIDI声音平移?

时间:2011-08-04 21:21:41

标签: java javasound

任何人都可以建议我如何设置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);`

我非常感谢任何帮助。 非常感谢!

1 个答案:

答案 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) {
    }
}