Skip to content
Snippets Groups Projects
Commit 84b156c9 authored by tobias's avatar tobias
Browse files

Update WaveSample

parent e8148508
No related branches found
No related tags found
No related merge requests found
No preview for this file type
......@@ -2,25 +2,6 @@ package de.tobias.playpad;
public class Waveform {
public static native void initialize();
public static native float[] createWaveform(String path);
public static native void 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);
}
}
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);
}
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().add(new LineTo(0, 0));
getElements().add(new MoveTo(0, 0));
setScaleX(0.5);
setFill(Color.BLACK);
}
}
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();
}
}
}
}
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Please register or to comment