2012-05-19 11 views
6

ich bin ziemlich neu zu Java ... Ich möchte ein Frequenz/Zeit-Diagramm oder Beispielbild aus einer WAV-Datei plotten. zu Beginn ich kämpfe, um die RAW-Daten-Array von der Wav-Datei mit AudioInputStream auch Bezug von Reading wav file in Java. Ich habe auch versucht, die WavFile-Klasse http://www.labbookpages.co.uk/audio/javaWavFiles.html verweisen, aber beim Testen konnte ich nicht die richtigen Pakete zu finden, um die "WavFile" - "Kann nicht finden Symbol" Fehler zu erfüllen. der mitgelieferte Import java.io. *; für dieses Beispiel wurde dies nicht erfüllt ...Graphen/Plotten einer Wav-Datei java

zu wiederholen, ich möchte die Rohdaten im Array-Format einer WAV-Datei erhalten.

Ich würde gerne kleine Beispiele dafür, wie ich aus Beispielen viel einfacher lernen! Dank für Ihre Zeit

+0

brauchen Sie noch die Lösung? Ich habe volle Antwort. – Mihir

Antwort

3

überspringen ersten 44 Bytes aus dem WAV-Datei (Header), dann lesen Sie Daten mit dieser Funktion:

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; 
} 

Ein Wert für jeden Kanal. Dadurch erhalten Sie eine Zahl zwischen -1 und 1, die Sie in Ihrem Diagramm zeichnen können. Ich hoffe das funktioniert

+0

Das OP muss dies immer noch in Frequenzen umwandeln. Dafür könnte dieser Link nützlich sein - http://stackoverflow.com/questions/636686/signal-processing-library-in-java –

+0

Ich verstehe nicht sehr gut, sagen Sie, wie Sie die Funktion mit Ihrem verwenden Datei? –

+0

@Andfoy das ist ziemlich hilfreich, obwohl ich keine Ahnung habe, wie man das in ein Array bringt ... – Mitchb

0

In meinem Java DSP collection gibt es ein Testprogramm namens TestSignalPlot.java, das WAV-Dateien anzeigen kann. Es verwendet AudioIo.loadWavFile(), um den Inhalt der WAV-Datei in den Speicher und die SignalPlot-Klasse zu laden, um das Audiosignal anzuzeigen. Alle Klassen sind Teil der Open-Source-Sammlung.