Quote:
Originally posted by "etzocri"
ma non ho capito..
scrivendo
Sequence sequence = MidiSystem.getSequence(suono= new File ("can1.mid"));
Sequencer sequencer = MidiSystem.getSequencer();
sequencer.open();
sequencer.setSequence(sequence);
sequencer.start();
non si sta creando un oggetto di tipo sequence?
poi sequencer è un metodo.. ma come faccio a richiamarlo??
devo scrivere?:
Sequencer sequencer = MidiSystem.getSequencer();
sequencer.open();
sequencer.setSequence(sequence);
sequencer.start();
dentro l'actionlistener del togglebutton???
|
Sia sequence che sequencer sono oggetti, sequence si riferisce al brano musicale e sequencer è un oggetto che si riferisce alla piattaforma midi del sistema.
Può darsi che dica cose che già conosci, ma senza il codice è un po' difficile capire dove può essere l'errore o la difficoltà.
Diciamo che a te potrebbe interessare un riferimento di classe (in pratica la possibilità di richiamare uno stesso oggetto in qualunque parte del codice) solo per sequencer (ad esempio vuoi richiamare play e stop in due metodi diversi oppure in una parte di codice esterna al blocco in cui hai dichiarato il tuo sequencer come il metodo actionPerformed). Per farlo devi dichiarare ed assegnare un valore all'oggetto Sequencer in un'area a visibilità di classe.
Ad esempio:
class MiaClasse {
Sequencer sequencer=null;
L'assegnamento (in questo caso a null) è necessario perchè Java non ammette riferimenti a variabili non inizializzate (il compilatore genera un errore "bla bla... not initialized")
Ora che hai un oggetto Sequencer a cui puoi riferirti in ogni dove, non ti resta che dirottarlo dove ti serve:
sequencer= MidiSystem.getSequencer();
...ecc.
questo lo puoi fare in qualunque parte del codice, diciamo nel costruttore del tuo oggetto.
Seguendo le nebulose spiegazioni qui sopra adesso dovresti poter usare "sequencer.play()" e "sequencer.stop()" nel metodo actionPerformed.
Naturalmente se ho azzeccato il problema...
Ciao.