2011-08-04 64 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) { 
    } 
}