3

谁能建议我如何设置 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);`

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

4

1 回答 1

1

根据MIDI 规范,平移由控制更改消息编号 10 控制。这是“粗略”值(7 位精度)但显然“精细”14 位版本(控制更改 42)可能会被忽略真实设备。

知道了这一点,您应该能够使用JavaSound MidiChannel APIcontrolChange(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) {
    }
}
于 2011-10-11T00:22:40.607 回答