Oppure

Loading
07/04/10 11:42
tekdu
inizio dicendo che qst è il mio primo post, quindi mi presento.
Mi chiamo duccio e sono uno studente dell'università di informatica di firenze.
mi sono imbattuto in una serie di problemi cercando di realizzare una drum machine (se conoscete Reason intendo una redrum semplificata) in java.
l'app. è composta da alcuni JButton (play/stop,load,+ e - per impostare i bpm (beats per minute), da una JLabel che visualizza i bpm impostati e da una serie di pulsanti (che estendono Canvas) che rappresentano i sedicesimi.

il problema è il seguente:
quando si preme play il suono viene riprodotto nelle "posizioni" giuste ma il tempo non è corretto (devo /4) probabilmente perché il metodo è sbagliato, ed inoltre l'applicazione si blocca nel senso che dopo il play non si riesce piu' ad interagirvi (ad esempio premere stop) e devo terminarla dal debug di eclipse. il codice del metodo è il seguente:

    public void run(){
        isPlaying=true;
        btn_Play.setIcon(stop);
        Long bpm=60000/time;
        while ((isPlaying)){
            for(int i=0;i<drum_lenght;i++){
                if (!(isPlaying)) break;
                if (drum_button[i].getIsPressed())
                    new P_thread().start();
                try {
                    Thread.sleep(bpm/4);
                } catch (InterruptedException e) {
                    e.printStackTrace();
                }
            }
        }        
    }
dove time è un long che corrisponde al tempo (bpm) impostato e
dove P_thread è un thread fatto così:

public class P_thread extends Thread{

    @Override
        public void run() {
            try {
                AudioPlayer.player.start(new FileInputStream(sound));
            } catch (FileNotFoundException e) {
                e.printStackTrace();
            }
            
        }
        
    }
e sound è il file .wav che ho aperto.

AIUTATEMIIIIIIiiiiiiiiiiiiiiIIIIIIIIIII
aaa