Di seguito riporto una parte del codice,suppongo la piu'significativa in merito alla questione.....se ne serve altro ditemi e postero'.
//questo e'il codice del listener per lo Jslider nella classe LettoreGUI assegnato al volume:
volume.addChangeListener(new ChangeListener(){
public void stateChanged(ChangeEvent e){
//player e'oggetto di classe Lettore
player.setVolume(volume.getValue());
}
});
//questi sono gli attributi della classe Lettore:
private Sequence midiData;
private MidiChannel canali[];
private Sequencer lettore;
private Synthesizer sintetizzatore;
private final double gain=0.9D;
//questo e'il metodo play nella classe Lettore:
public synchronized void play(){
try{
sintetizzatore.open();
if(sintetizzatore.isOpen())
canali=sintetizzatore.getChannels();
lettore.open();
if(lettore.isOpen()){
lettore.setSequence(midiData);
lettore.start();
//System.out.println(sintetizzatore);
System.out.println(lettore);
System.out.println(midiData.toString());
}
else
System.out.println("Errore di caricamento risorse!");
}
catch(MidiUnavailableException e){
e.printStackTrace();
}
catch(InvalidMidiDataException x){
x.printStackTrace();
}
}
//questo il metodo "provvisorio" setVolume della classe Lettore:
public void setVolume(int volume){
canali=sintetizzatore.getChannels();
for(int i=0;i<canali.length;i++)
canali[i].controlChange(7,(int)(gain*volume));
}