Bonjour,
Je réalise un petit jeu en java et je voudrais lui faire jouer un midi en fond sonore. Jusque là tout va bien, j'ai suivi ce qui est écrit dans
http://javaalmanac.com/egs/javax.sound.midi/Load.html.
Probleme : j'aimerai pouvoir modifier le volume sonore, car ca hurle. Toujours sur le meme site :
http://javaalmanac.com/egs/javax.s [...] olume.html
Mais là ca ne marche pas. D'apres leur exemple, j'ai mis gain à 0, 1, 0.5 et je ne percois aucune difference de volume sonore... M'y suis-je mal pris, ou bien y'a t'il autre chose à faire ?
Voici mon bout de code pour lire le fichier :
try {
Sequence sequence = MidiSystem.getSequence(new File("midi/dn3d.mid" ));
Sequencer sequencer = MidiSystem.getSequencer();
sequencer.open();
sequencer.setSequence(sequence);
sequencer.start();
} catch (Exception e) {}
// ok !
et celui censé modifier le volume :
if (sequencer instanceof Synthesizer) {
Synthesizer synthesizer = (Synthesizer)sequencer;
MidiChannel[] channels = synthesizer.getChannels();
double gain = 0.1D;
for (int i=0; i<channels.length; i++)
channels[i].controlChange(7, (int)(gain * 127.0));
}
Je l'ai mis à l'intérieur du try, et j'ai essayé un peu partout, avant open, avant setSequence, avant Start... ca ne fait rien.