diff --git a/PlayWallNative/libNativeAudio.dylib b/PlayWallNative/libNativeAudio.dylib index 5bd4c2fe1271def3fefe42a31d62917ae8226a54..fc1f2851992daee95ab3d3a81e050014735ddc5c 100644 Binary files a/PlayWallNative/libNativeAudio.dylib and b/PlayWallNative/libNativeAudio.dylib differ diff --git a/PlayWallNative/src/de/tobias/playpad/Waveform.java b/PlayWallNative/src/de/tobias/playpad/Waveform.java index 16cd9ee899a2f98f81f050b851adfaaa94451422..f01873a01df7c0f3e1eb998941e3bd73b63519f6 100644 --- a/PlayWallNative/src/de/tobias/playpad/Waveform.java +++ b/PlayWallNative/src/de/tobias/playpad/Waveform.java @@ -2,25 +2,6 @@ package de.tobias.playpad; public class Waveform { - public static native void initialize(); - - public static native void createWaveform(String path); + public static native float[] createWaveform(String path); - private static WaveformDelegate delegate; - - private static void sampleProcessed(float[] data) { - if (delegate != null) { - delegate.sampleProcessed(data); - } - } - - public static void setDelegate(WaveformDelegate delegate) { - Waveform.delegate = delegate; - } - - public interface WaveformDelegate { - - public void sampleProcessed(float[] data); - - } } diff --git a/PlayWallNative/src/de/tobias/playpad/view/WaveformView.java b/PlayWallNative/src/de/tobias/playpad/view/WaveformView.java index 4d0294371b7455172e0b8889f07d9e39799fa1ab..2e77bdd1b3f213d7ee02a6da62248558ae02d4aa 100644 --- a/PlayWallNative/src/de/tobias/playpad/view/WaveformView.java +++ b/PlayWallNative/src/de/tobias/playpad/view/WaveformView.java @@ -1,5 +1,6 @@ package de.tobias.playpad.view; +import javafx.scene.paint.Color; import javafx.scene.shape.LineTo; import javafx.scene.shape.MoveTo; import javafx.scene.shape.Path; @@ -9,21 +10,27 @@ public class WaveformView extends Path { public WaveformView(float[] data) { getElements().add(new MoveTo(0, 0)); - for (int i = 0; i < data.length; i++) { - LineTo lineTo = new LineTo(i, data[i] * 50.0); - MoveTo moveTo = new MoveTo(i, data[i] * 50.0); + double width = data.length / 1200.0; + + int i = 0; + for (i = 0; i < data.length; i+=1000) { + if (i < data.length) { + LineTo lineTo = new LineTo(i/width, data[i] * 50.0); + MoveTo moveTo = new MoveTo(i/width, data[i] * 50.0); - getElements().addAll(lineTo, moveTo); + getElements().addAll(lineTo, moveTo); + } } - for (int i = data.length - 1; i >= 0; i--) { - LineTo lineTo = new LineTo(i, -data[i] * 50.0); - MoveTo moveTo = new MoveTo(i, -data[i] * 50.0); + for (; i >= 0; i-=1000) { + if (i >= 0 && i < data.length) { + LineTo lineTo = new LineTo(i/width, -data[i] * 50.0); + MoveTo moveTo = new MoveTo(i/width, -data[i] * 50.0); - getElements().addAll(lineTo, moveTo); + getElements().addAll(lineTo, moveTo); + } } getElements().add(new LineTo(0, 0)); getElements().add(new MoveTo(0, 0)); - setScaleX(0.5); - + setFill(Color.BLACK); } } diff --git a/PlayWallNative/test/de/tobias/playpad/WaveformTest.java b/PlayWallNative/test/de/tobias/playpad/WaveformTest.java index 33d856e693155de925f4c476a268db32c5070df3..20944d3ba1d5232527e26a0c1b1fe07ef073c9ff 100644 --- a/PlayWallNative/test/de/tobias/playpad/WaveformTest.java +++ b/PlayWallNative/test/de/tobias/playpad/WaveformTest.java @@ -1,58 +1,35 @@ package de.tobias.playpad; -import de.tobias.playpad.Waveform.WaveformDelegate; import de.tobias.playpad.view.WaveformView; import javafx.application.Application; -import javafx.geometry.Insets; import javafx.scene.Scene; +import javafx.scene.image.ImageView; +import javafx.scene.image.WritableImage; import javafx.scene.layout.VBox; import javafx.stage.Stage; public class WaveformTest extends Application { - private static float[] data; - public static void main(String[] args) { System.load("/Users/tobias/Documents/Programmieren/Java/git/PlayWall/PlayWallNative/libNativeAudio.dylib"); - WaveformTest.data = new Test().data; - launch(args); } @Override public void start(Stage primaryStage) throws Exception { - WaveformView view = new WaveformView(WaveformTest.data); - VBox root = new VBox(view); +// float[] data = Waveform.createWaveform("/Users/tobias/Music/iTunes/iTunes Media/Music/Coldplay/Mylo Xyloto/04 Charlie Brown.mp3"); + float[] data = Waveform.createWaveform("/Users/tobias/Downloads/TNT-Loop.wav"); + WaveformView view = new WaveformView(data); + + WritableImage image = new WritableImage(1200, 150); + view.snapshot(null, image ); + + VBox root = new VBox(new ImageView(image)); Scene scene = new Scene(root); primaryStage.setScene(scene); primaryStage.show(); } - public static class Test implements WaveformDelegate { - public Test() { - Waveform.initialize(); - Waveform.setDelegate(this); - Waveform.createWaveform("/Users/tobias/Downloads/03%20Hymn%20for%20the%20Weekend.mp3.wav"); - - synchronized (this) { - try { - wait(); - } catch (InterruptedException e) { - e.printStackTrace(); - } - } - } - - float[] data; - - @Override - public void sampleProcessed(float[] data) { - this.data = data; - synchronized (this) { - notify(); - } - } - } }