From 84b156c9657fac8e32459b46039c7932a8fe1876 Mon Sep 17 00:00:00 2001 From: tobias <tobias.ullerich@icloud.com> Date: Tue, 13 Sep 2016 23:17:42 +0200 Subject: [PATCH] Update WaveSample --- PlayWallNative/libNativeAudio.dylib | Bin 65024 -> 56080 bytes .../src/de/tobias/playpad/Waveform.java | 21 +-------- .../de/tobias/playpad/view/WaveformView.java | 27 +++++++---- .../test/de/tobias/playpad/WaveformTest.java | 43 ++++-------------- 4 files changed, 28 insertions(+), 63 deletions(-) diff --git a/PlayWallNative/libNativeAudio.dylib b/PlayWallNative/libNativeAudio.dylib index 5bd4c2fe1271def3fefe42a31d62917ae8226a54..fc1f2851992daee95ab3d3a81e050014735ddc5c 100644 GIT binary patch literal 56080 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 UGz3ONU^E0qLtr!nMp6g>0DUf~hyVZp literal 65024 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 WLtr!nMnhmU1V%$(Gz5l!2mk=65>hPy diff --git a/PlayWallNative/src/de/tobias/playpad/Waveform.java b/PlayWallNative/src/de/tobias/playpad/Waveform.java index 16cd9ee8..f01873a0 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 4d029437..2e77bdd1 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 33d856e6..20944d3b 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(); - } - } - } } -- GitLab