我有这个代码:

Synthesizer synthesizer = MidiSystem.getSynthesizer();
synthesizer.open();
Instrument[] instrument = synthesizer.getDefaultSoundbank().getInstruments();
synthesizer.loadInstrument(instrument[29]);
MidiChannel[] channels = synthesizer.getChannels();
MidiChannel channel = channels[1];
channel.programChange(29);
channel.noteOn(noteNumber, 127);
Teszthang.sleep(2000);
channel.noteOff(noteNumber);

因此,此示例以最大音量(127)播放2秒钟为例。但我想控制频道的音量,例如2秒钟后,音量会在另外2秒钟内逐渐消失。我该怎么办?我知道这些方法:
channel.controlChange(controller, value);
channel.setPolyPressure(noteNumber, pressure);

但是这些不会改变任何音量!我不知道如何使用这些方法。在播放noteOn()之后,如何更改频道的音量?

最佳答案

您可以使用CC 7设置通道音量。

channel.controlChange(7, value);

请参阅:http://improv.sapp.org/doc/class/MidiOutput/controllers/controllers.html

07-27 21:06