Questo sito utilizza cookies solo per scopi di autenticazione sul sito e nient'altro. Nessuna informazione personale viene tracciata. Leggi l'informativa sui cookies.
Username: Password: oppure
Java - java audio.AIUTO simulazione di una semplice drum machine.
Forum - Java - java audio.AIUTO simulazione di una semplice drum machine.

Avatar
tekdu (Normal User)
Rookie


Messaggi: 45
Iscritto: 07/04/2010

Segnala al moderatore
Postato alle 13:42
Mercoledì, 07/04/2010
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.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

PM Quote