2012-05-19 16 views
6

soy bastante nuevo en java ... me gustaría trazar un gráfico de frecuencia/tiempo o una imagen de muestra desde un archivo wav. para empezar Estoy luchando para obtener el conjunto de datos brutos del archivo Wav utilizando AudioInputStream, que también hace referencia al Reading wav file in Java. También probé la clase WavFile refiriéndome a http://www.labbookpages.co.uk/audio/javaWavFiles.html pero al probar, no pude encontrar los paquetes correctos para satisfacer el error "WavFile" - "no se puede encontrar el símbolo". la importación suministrada java.io. *; para esa muestra no satisfizo esto ...Graficando/Trazando un archivo Wav java

para reiterar deseo obtener los datos brutos en formato de matriz de un archivo Wav.

Me encantaría cualquier pequeño ejemplo de esto, ya que aprendo de ejemplos mucho más fácil! gracias por su tiempo

+0

¿Todavía necesita la solución? tengo una respuesta completa. – Mihir

Respuesta

3

Omitir primeros 44 bytes del archivo wav (cabecera), a continuación, leer datos utilizando esta función:

private static double readLEShort(RandomAccessFile f) { 
try { 
    byte b1 = (byte) f.read(); 
    byte b2 = (byte) f.read(); 
    return (double) (b2 << 8 | b1 & 0xFF)/32767.0; 
} catch (IOException e) { 
    e.printStackTrace(); 
} 
return 0; 
} 

un valor para cada canal. Esto le dará un número entre -1 y 1, que puede dibujar en su gráfico. Espero que pueda funcionar

+0

El OP todavía necesita convertir eso en frecuencias. Para eso, este enlace podría ser útil - http://stackoverflow.com/questions/636686/signal-processing-library-in-java –

+0

No entiendo muy bien, ¿dices cómo usar la función con tu ¿archivo? –

+0

@Andfoy esto es bastante útil, aunque no tengo ni idea de cómo poner eso en una matriz ... – Mitchb

0

En mi Java DSP collection hay un programa de prueba llamado TestSignalPlot.java que puede mostrar archivos WAV. Utiliza AudioIo.loadWavFile() para cargar el contenido del archivo WAV en la memoria y la clase SignalPlot para mostrar la señal de audio. Todas las clases son parte de la colección de código abierto.

Cuestiones relacionadas