iam trying to change the midi vol using this func
public static void setVolume(int value) {
int CHANGE_VOLUME = 7;
midivol = value;
try {
if (synthesizer.getDefaultSoundbank() == null) {
ShortMessage volumeMessage = new ShortMessage();
for (int i = 0; i < 16; i++) {
volumeMessage.setMessage(ShortMessage.CONTROL_CHANGE, i, CHANGE_VOLUME, midivol);
volumeMessage.setMessage(ShortMessage.CONTROL_CHANGE, i, 39, midivol);
MidiSystem.getReceiver().send(volumeMessage, -1);
}
} else {
MidiChannel[] channels = synthesizer.getChannels();
for (int c = 0; channels != null && c < channels.length; c++) {
channels[c].controlChange(CHANGE_VOLUME, midivol);
channels[c].controlChange(39, midivol);
}
}
} catch (Exception e) {
e.printStackTrace();
}
}
and it wont change so iam asking what is the problem there and what is the range for the value is it from 0-127?
and why there is two of volumemessage and channels[c]
volumeMessage.setMessage(ShortMessage.CONTROL_CHANGE, i, CHANGE_VOLUME, midivol);
volumeMessage.setMessage(ShortMessage.CONTROL_CHANGE, i, 39, midivol);
channels[c].controlChange(CHANGE_VOLUME, midivol);
channels[c].controlChange(39, midivol);