Visualizzazione dei risultati da 1 a 4 su 4

Discussione: Registrare audio

  1. #1
    Utente di HTML.it
    Registrato dal
    Jul 2011
    Messaggi
    5

    Registrare audio

    Salve a tutti!

    Mi sono appena iscritto al forum per avere un vostro aiuto. Tra due giorni devo portare un progetto in java per un esame universitario. Navigando in rete ho capito che il livello a cui siamo arrivati finito il corso è abbastanza scarso, per cui perdonatemi eventuali deficit XD

    Ho realizzato una semplice tastiera musicale che suona con il click del mouse o tramite i tasti. Il suono delle note l'ho inserito con un semplice codice, ma la funzione fondamentale del programma è registrate le note.

    È proprio qui che non riesco ad andare avanti: ho letto varie guide che però fanno uso di classi/metodi a me sconosciuti e davvero complicati da studiare da solo. Per questo motivo ho pensato di registrare in modo "casareccio" le note, salvandole in un vettore e riproducendole alla spinta del tasto play. Ovviamente però con questo metodo le note, registrate correttamente, vengono riprodotte non tenendo conto del tempo con cui vengono suonate!

    Come potrei fare per riprodurre fedelmente il suono? Ho provato a usare i thread ma non ne sono venuto a capo...

    Spero in un vostro aiuto!

  2. #2
    Utente di HTML.it
    Registrato dal
    Aug 2002
    Messaggi
    8,013
    Ciao e benvenuto.
    non vedendo codie è un po' difficile darti una mano. Mi pare di capire che il tuo problema comunque non sia di acquisizione (ovvero non devi registrare da una sorgente esterna)

    Mi viene in mente che potresti aggiungere, se non c'è, un campo "durata" alla classe che modellizza la nota (immagino tu abbia un paio di eventi attaccati a ciascun tasto della tastiera, per registrarne la pressione e rilascio, sfrutta quelli con System.currentTimeMillis).

    Quando vai a salvare, salvi anche la durata dentro l'oggetto Nota (avrai un Vector o altra collection di oggetti Nota). Per il salvataggio, potresti serializzare il tutto (guardati la serializzazione in java - interfaccia Serializable- , argomento ampiamente trattato anche in diversi thread qui sul forum)
    <´¯)(¯`¤._)(¯`»ANDREA«´¯)(_.¤´¯)(¯`>
    "The answer to your question is: welcome to tomorrow"

  3. #3
    Utente di HTML.it
    Registrato dal
    Jul 2011
    Messaggi
    5
    Il codice è molto semplice, uso soltanto una classe.

    Con questo metodo suono una nota:
    codice:
    public static void playNote(int n){
    	try {
    		clip = AudioSystem.getClip();
    		clip.open(AudioSystem.getAudioInputStream(note[n]));
    		clip.start();
    	}catch (Exception er){}
    }
    Mentre con questo le registro:
    codice:
    public static void registraNota(int n){
    	if(recON){
    		salvataggio.add(n);
    	}
    }
    ...e le riproduco:
    codice:
    public static void riproduciRegistrazione(Vector s){
    	for(int i=0; i<s.size(); i++){
    		int numNota = (Integer) s.elementAt(i);
    		playNote(numNota);
    	}
    }
    Le note sono salvate in un array di file. In questo modo elementare tutto funziona correttamente, ma come puoi vedere nell'ultimo metodo ovviamente le note vengono riprodotte con la velocità della for.

    Non conosco l'interfaccia Serializable e credo di non riuscirla ad applicare in un giorno...c'è un modo più semplice anche se "rozzo"?

  4. #4
    Utente di HTML.it
    Registrato dal
    Jul 2011
    Messaggi
    5
    UP ...ragazzi scusate ma ho poco tempo e non ne sono venuto ancora a capo. Spero che qualcuno di voi mi illumini!

Permessi di invio

  • Non puoi inserire discussioni
  • Non puoi inserire repliche
  • Non puoi inserire allegati
  • Non puoi modificare i tuoi messaggi
  •  
Powered by vBulletin® Version 4.2.1
Copyright © 2025 vBulletin Solutions, Inc. All rights reserved.