2011-08-04 68 views
3

任何人都可以请建议我如何设置平移MIDI音效。我正在使用java MIDI合成并可以使其发声。但我希望声音能够从左至右平移扬声器。我做了谷歌,但它似乎不是很清楚我?这里我正在使用的代码的示例:如何设置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

根据MIDI spec,平移由控制改变消息编号10控制。这是“粗略”值(7位精度),但显然“精细”14位版本(控制改变42)为likely to be ignored真正的设备。

认识到这一点,你应该能够使用controlChange(int, int)方法在JavaSound MidiChannel API来控制你的平移:

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