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));


}