diff --git a/DMXSoftware/Data/DeviceTypes.xml b/DMXSoftware/Data/DeviceTypes.xml
index 25802a6..209c6e0 100644
--- a/DMXSoftware/Data/DeviceTypes.xml
+++ b/DMXSoftware/Data/DeviceTypes.xml
@@ -105,12 +105,12 @@
- "Renkforce RDM Par_10"
+ "Renkforce RDM Par_5"
"Par"
"60"
- "https://www.conrad.de/medias/global/ce/6000_6999/6400/6440/6448/1301624_LB_00_FB.EPS_1000.jpg"
+ ""
-
+
"Red"
@@ -132,7 +132,7 @@
"Renkforce RDM Par_10"
"Par"
"60"
- "Data/Pictures/RenkforceRDM_5.png"
+ "https://www.conrad.de/medias/global/ce/6000_6999/6400/6440/6448/1301624_LB_00_FB.EPS_1000.jpg"
@@ -367,4 +367,146 @@
+
+
+ "Outdoor"
+ "Par"
+ "120"
+ "https://www.thomann.de/pics/bdb/305314/7974151_800.jpg"
+
+
+
+
+
+ "Dimmer"
+
+
+
+
+
+
+
+ "Red"
+
+
+
+
+
+
+
+ "Green"
+
+
+
+
+
+
+
+ "Blue"
+
+
+
+
+
+
+
+ "White"
+
+
+
+
+
+
+
+
+
+ "Cameo"
+ "Par"
+ "144"
+ "http://www.cameolight.com/out/pictures/generated/product/1/1000_1000_80/CLPST64RGBWAU12W_1.jpg"
+
+
+
+
+ "Dimmer"
+
+
+
+
+
+
+
+ "Red"
+
+
+
+
+
+
+
+ "Green"
+
+
+
+
+
+
+
+ "Blue"
+
+
+
+
+
+
+
+ "White"
+
+
+
+
+
+
+
+ "Amber"
+
+
+
+
+
+
+
+ "UV"
+
+
+
+
+
+
+
+ "Macro"
+
+
+ "Macro"
+ "Color Mix"
+ "Red"
+ "Green"
+ "Blue"
+ "White"
+ "Amber"
+ "Violet"
+ "Yellow"
+ "Cyan"
+ "Lavender"
+ "LightGreen"
+ "Magenta"
+ "Turqoise"
+ "Orange"
+ "Cool White"
+ "Warm White"
+
+
+
+
+
\ No newline at end of file
diff --git a/DMXSoftware/Data/Devices.xml b/DMXSoftware/Data/Devices.xml
index 722a3a6..e936135 100644
--- a/DMXSoftware/Data/Devices.xml
+++ b/DMXSoftware/Data/Devices.xml
@@ -5,7 +5,7 @@
"Nicht auf der Deele"
-
+
"Renkforce-Par 1"
"Kuhstall Haus-Seite"
@@ -14,6 +14,21 @@
"Renkforce-Par 2"
"Kuhstall Tor-Seite"
+
+
+ "Outdoor 1"
+ "Deele Haus"
+
+
+
+ "Cameo Par"
+ "Deele Mitte"
+
+
+
+ "Outdoor 2"
+ "Deele Tor"
+
"BAR 1"
@@ -27,11 +42,11 @@
"BAR 3"
- "Kuhstall Haus-Seite Mistfall"
+ "Kuhstall Haus-Seite Deele"
"BAR 4"
- "Kuhstall Haus-Seite Deele"
+ "Kuhstall Haus-Seite Mistfall"
\ No newline at end of file
diff --git a/DMXSoftware/nbactions.xml b/DMXSoftware/nbactions.xml
new file mode 100644
index 0000000..d64ec5c
--- /dev/null
+++ b/DMXSoftware/nbactions.xml
@@ -0,0 +1,17 @@
+
+
+
+ run
+
+ jar
+
+
+ process-classes
+ org.codehaus.mojo:exec-maven-plugin:1.2.1:exec
+
+
+ -classpath %classpath SnowballThrower.dmxsoftware.HelloWorldMain
+ java
+
+
+
diff --git a/DMXSoftware/src/main/java/SnowballThrower/dmxsoftware/Communicate/MidiConnection.java b/DMXSoftware/src/main/java/SnowballThrower/dmxsoftware/Communicate/MidiConnection.java
index 6977e53..25b7bcb 100644
--- a/DMXSoftware/src/main/java/SnowballThrower/dmxsoftware/Communicate/MidiConnection.java
+++ b/DMXSoftware/src/main/java/SnowballThrower/dmxsoftware/Communicate/MidiConnection.java
@@ -10,7 +10,6 @@
import javax.sound.midi.InvalidMidiDataException;
import javax.sound.midi.MidiDevice;
import javax.sound.midi.MidiDevice.Info;
-import javax.sound.midi.MidiMessage;
import javax.sound.midi.MidiSystem;
import javax.sound.midi.MidiUnavailableException;
import javax.sound.midi.ShortMessage;
@@ -27,6 +26,7 @@ public class MidiConnection extends Thread {
private int[] valOld;
int[] valNew;
boolean stop;
+ private long SLEEP = 2;
public MidiConnection() {
stop = false;
@@ -61,8 +61,8 @@ public void change(int channel, int value) {
}
private void send(int channel, int value) {
- System.out.println("Midi send: " + channel + " ," + value / 2);
- System.out.println("Midi send: " + (CONTROL_CHANGE + channel / 128) + " ," + channel % 128 + " ," + value / 2);
+ //System.out.println("Midi send: " + channel + " ," + value / 2);
+ //System.out.println("Midi send: " + (CONTROL_CHANGE + channel / 128) + " ," + channel % 128 + " ," + value / 2);
try {
ShortMessage message = new ShortMessage(CONTROL_CHANGE, channel / 128, channel % 128, value / 2);
try {
@@ -82,11 +82,17 @@ private void send(int channel, int value) {
private void loop() {
int i;
for (i = 0; i < MAX_CH; i++) {
- if (valOld[i] != valNew[i]) {
- send(i, valNew[i]);
- valOld[i] = valNew[i];
+ int valBuff = valNew[i];
+ if (valOld[i] != valBuff) {
+ valOld[i] = valBuff;
+ send(i, valOld[i]);
}
}
+ try {
+ Thread.sleep(SLEEP);
+ } catch (InterruptedException ex) {
+ Logger.getLogger(MidiConnection.class.getName()).log(Level.SEVERE, null, ex);
+ }
}
@Override
diff --git a/DMXSoftware/src/main/java/SnowballThrower/dmxsoftware/Database/Channel.java b/DMXSoftware/src/main/java/SnowballThrower/dmxsoftware/Database/Channel.java
index ac47e94..fdaa256 100644
--- a/DMXSoftware/src/main/java/SnowballThrower/dmxsoftware/Database/Channel.java
+++ b/DMXSoftware/src/main/java/SnowballThrower/dmxsoftware/Database/Channel.java
@@ -6,6 +6,7 @@
package SnowballThrower.dmxsoftware.Database;
import java.util.List;
+import javafx.scene.text.Text;
/**
*
@@ -28,6 +29,15 @@ String getMeaning(int value, int[] values) {
return value + "";
}
+ public String getStandardMeaning(int value) {
+ if (meanings != null) {
+ if (meanings.get(0) != null) {
+ return meanings.get(0).getMeaning(value);
+ }
+ }
+ return null;
+ }
+
public Function getFunction() {
return function;
}
diff --git a/DMXSoftware/src/main/java/SnowballThrower/dmxsoftware/Database/Device.java b/DMXSoftware/src/main/java/SnowballThrower/dmxsoftware/Database/Device.java
index a4ebccf..9e4e893 100644
--- a/DMXSoftware/src/main/java/SnowballThrower/dmxsoftware/Database/Device.java
+++ b/DMXSoftware/src/main/java/SnowballThrower/dmxsoftware/Database/Device.java
@@ -23,11 +23,11 @@ int getValue(int channel) {
return values[channel];
}
- String getMeaning(int channel) {
+ public String getMeaning(int channel) {
return type.getMeaning(channel, values);
}
- String getChannelName(int channel) {
+ public String getChannelName(int channel) {
return type.channels[channel].name;
}
@@ -54,4 +54,8 @@ public String getImagePath() {
public int getStartCh() {
return this.startChannel;
}
+
+ public String getAdditon() {
+ return this.addition;
+ }
}
diff --git a/DMXSoftware/src/main/java/SnowballThrower/dmxsoftware/Processing/Manage.java b/DMXSoftware/src/main/java/SnowballThrower/dmxsoftware/Processing/Manage.java
index 3b71b4f..0652023 100644
--- a/DMXSoftware/src/main/java/SnowballThrower/dmxsoftware/Processing/Manage.java
+++ b/DMXSoftware/src/main/java/SnowballThrower/dmxsoftware/Processing/Manage.java
@@ -24,7 +24,7 @@ public Manage() {
}
public void send(int channel, int value) {
- if (channel < 16 * 12 && channel > 0 && value > 0 && value < 256) {
+ if (channel < 16 * 12 && channel >= 0 && value >= 0 && value < 256) {
mc.change(channel, value);
}
}
@@ -33,12 +33,11 @@ public void handle(String id, int value) {
try {
int ch = Integer.parseInt(id);
if (ch < 1000) {
- System.out.println("Change: " + id + " ," + value);
+ //System.out.println("Change: " + id + " ," + value);
send(ch - 1, value);
- return;
}
} catch (Exception ex) {
-
+ System.out.println("no id: " + id);
}
}
diff --git a/DMXSoftware/src/main/java/SnowballThrower/dmxsoftware/Processing/ValueConverter.java b/DMXSoftware/src/main/java/SnowballThrower/dmxsoftware/Processing/ValueConverter.java
index 0f59593..6b06b26 100644
--- a/DMXSoftware/src/main/java/SnowballThrower/dmxsoftware/Processing/ValueConverter.java
+++ b/DMXSoftware/src/main/java/SnowballThrower/dmxsoftware/Processing/ValueConverter.java
@@ -7,6 +7,7 @@
import SnowballThrower.dmxsoftware.Database.Function;
import java.awt.Color;
+import javafx.scene.paint.Paint;
/**
*
@@ -35,4 +36,10 @@ int getColorFor(int hue, int sat, int vol, Function func) {
return -1;
}
}
+
+ public Color stringToColor(String string){
+ string = string.toUpperCase();
+ Color color = Color.getColor(string, Color.LIGHT_GRAY);
+ return color;
+ }
}
diff --git a/DMXSoftware/src/main/java/SnowballThrower/dmxsoftware/Surface/ControlSurface.java b/DMXSoftware/src/main/java/SnowballThrower/dmxsoftware/Surface/ControlSurface.java
index 2e3fb1a..71e70f2 100644
--- a/DMXSoftware/src/main/java/SnowballThrower/dmxsoftware/Surface/ControlSurface.java
+++ b/DMXSoftware/src/main/java/SnowballThrower/dmxsoftware/Surface/ControlSurface.java
@@ -10,15 +10,22 @@
import SnowballThrower.dmxsoftware.Processing.Manage;
import java.util.List;
import javafx.application.Application;
+import javafx.event.ActionEvent;
+import javafx.event.EventHandler;
import javafx.scene.Group;
+import javafx.scene.Node;
import javafx.scene.Scene;
+import javafx.scene.control.Button;
import javafx.scene.control.ScrollPane;
import javafx.scene.image.Image;
import javafx.scene.image.ImageView;
import javafx.scene.input.InputEvent;
+import javafx.scene.layout.GridPane;
import javafx.scene.layout.StackPane;
import javafx.scene.paint.Color;
import javafx.scene.shape.Rectangle;
+import javafx.scene.text.Font;
+import javafx.scene.text.Text;
import javafx.stage.Stage;
/**
@@ -27,14 +34,15 @@
*/
public class ControlSurface extends Application {
- Scene bars;
+ ScrollPane bars;
Scene faders;
Scene pultRouting;
Scene groups;
- Scene presets;
- Scene deviceScene;
+ Node presets;
+ ScrollPane deviceScene;
Scene device;
Stage stage;
+ StackPane stack;
List devices;
double windowHeight;
double windowWidth;
@@ -43,69 +51,75 @@ public class ControlSurface extends Application {
public ControlSurface(Manage mng, List devices) {
manager = mng;
this.devices = devices;
+ stack = new StackPane();
stage = new Stage();
- ScrollPane pane = allDevs();
- pane.setLayoutY(50);
- Group buttons = new Group();
- StackPane devSceneGroup = new StackPane(pane, buttons);
- faders = new Scene(devSceneGroup, 1000, 800);
+ deviceScene = allDevs();
+ bars = bars();
+ Button btn1 = new Button("Geräte");
+ Button btn2 = new Button("Bars");
+ Button btn3 = new Button("Szenen");
+ Button btn4 = new Button("kompakt");
+ GridPane buttons = new GridPane();
+ buttons.add(btn1, 0, 0);
+ buttons.add(btn2, 1, 0);
+ buttons.add(btn3, 2, 0);
+ buttons.add(btn4, 3, 0);
+ GridPane scenePane = new GridPane();
+ scenePane.add(buttons, 0, 0);
+ scenePane.add(stack, 0, 1);
+
+ btn1.setOnAction(new EventHandler() {
+
+ @Override
+ public void handle(ActionEvent event) {
+ stack.getChildren().clear();
+ stack.getChildren().add(deviceScene);
+ }
+ });
+ btn2.setOnAction(new EventHandler() {
+
+ @Override
+ public void handle(ActionEvent event) {
+ stack.getChildren().clear();
+ stack.getChildren().add(bars);
+ }
+ });
+
+ faders = new Scene(scenePane, 1000, 800);
stage.setScene(faders);
+ stage.setTitle("Control Surface");
//pane.setMaxHeight(stage.getHeight());
stage.show();
}
- ScrollPane allDevs(){
-
+
+ ScrollPane allDevs() {
+
int dev = 0;
double sizeX = 70;
double sizeY = 200;
- double distY = 20;
+ double distY = 50;
ScrollPane pane = new ScrollPane();
pane.setVbarPolicy(ScrollPane.ScrollBarPolicy.ALWAYS);
- pane.addEventFilter(InputEvent.ANY, (event) -> {
- if (event.getEventType().toString().contains("SCROLL")) {
- //System.out.println(event.getEventType());
- event.consume();
- }
- });
- FaderListener fl = new FaderListener(manager);
- Group faderGroup = new Group();
+
+ Group deviceGroup = new Group();
for (Device device : devices) {
- Group picture;
- System.out.println(device.getImagePath());
- try {
- Image image = new Image(device.getImagePath());
- ImageView imV = new ImageView(image);
- imV.setFitHeight(2 * sizeX);
- imV.setFitWidth(2 * sizeX);
- imV.setLayoutY(dev * (sizeY + distY));
- picture = new Group(imV);
- } catch (Exception ex) {
- System.out.println(ex);
- Rectangle rect = new Rectangle(0, dev * (sizeY + distY), sizeX * 2, sizeX * 2);
- rect.setFill(Color.WHITE);
- picture = new Group(rect);
- }
- faderGroup.getChildren().add(picture);
- int ch = 2;
- System.out.println(device.getName());
- for (Channel channel : device.getType().getChannels()) {
- if (channel != null) {
- Fader fader = new Fader("" + (device.getStartCh() + ch - 2),
- ch * sizeX, dev * (sizeY + distY), sizeX, sizeY, channel);
- fl.addFader(fader);
- faderGroup.getChildren().add(fader.getFader());
- }
- ch++;
- }
+ Group fG = faderGroup(sizeX, sizeY, device);
+ fG.setLayoutY(0.5 * distY + dev * (sizeY + distY));
+
dev++;
+ deviceGroup.getChildren().add(fG);
}
- Group group = new Group(faderGroup);
+ /*deviceGroup.getChildren().add(new Line(
+ 0, dev * (sizeY + distY),
+ 2000, dev * (sizeY + distY)));
+ deviceGroup.getChildren().add(new Line(
+ 0, 0,
+ 2000, 0)); */
+ Group group = new Group(deviceGroup);
pane.setContent(group);
- group.setOnMouseClicked(fl);
- group.setOnMousePressed(fl);
- group.setOnMouseDragged(fl);
return pane;
}
+
@Override
public void start(Stage primaryStage) throws Exception {
System.out.println("Start");
@@ -118,4 +132,70 @@ public void setManager(Manage mng) {
public void send(int channel, int value) {
}
+
+ Group deviceImage(Device device, double sizeX, double sizeY) {
+ Group picture;
+ System.out.println(device.getImagePath());
+ Rectangle rect = new Rectangle(0, 0, sizeX * 2, sizeY);
+ rect.setFill(Color.WHITE);
+ picture = new Group(rect);
+ try {
+ Image image = new Image(device.getImagePath());
+ ImageView imV = new ImageView(image);
+ imV.setPreserveRatio(true);
+ imV.setFitHeight(2 * sizeX);
+
+ picture.getChildren().add(imV);
+ } catch (Exception ex) {
+ System.out.println(ex);
+ }
+ Font font = new Font(sizeY/12);
+ Text type = new Text(device.getType().getName());
+ type.setLayoutY(sizeY / 8 * 6);
+ type.setFont(font);
+ Text name = new Text(device.getName());
+ name.setLayoutY(sizeY / 8 * 7);
+ name.setFont(font);
+ Text place = new Text(device.getAdditon());
+ place.setLayoutY(sizeY);
+ place.setFont(font);
+ Group texts = new Group(picture, name, place, type);
+ return new Group(picture, texts);
+ }
+
+ ScrollPane bars() {
+ ScrollPane pane = new ScrollPane();
+ pane.setContent(new Rectangle(100, 100));
+ return pane;
+ }
+
+ Group faderGroup(double sizeX, double sizeY, Device device) {
+
+ FaderListener fl = new FaderListener(manager);
+ Group faderGroup = new Group();
+ faderGroup.getChildren().add(deviceImage(device, sizeX, sizeY));
+ int ch = 2;
+ System.out.println(device.getName());
+ for (Channel channel : device.getType().getChannels()) {
+ if (channel != null) {
+ Fader fader = new Fader("" + (device.getStartCh() + ch - 2),
+ ch * sizeX, 0, sizeX, sizeY, channel);
+ fl.addFader(fader);
+ Group fade = fader.getFader();
+ fade.addEventFilter(InputEvent.ANY, (event) -> {
+ if (event.getEventType().toString().contains("SCROLL")) {
+ //System.out.println(event.getEventType());
+
+ event.consume();
+ }
+ });
+ faderGroup.getChildren().add(fade);
+ }
+ ch++;
+ }
+ faderGroup.setOnMouseClicked(fl);
+ faderGroup.setOnMousePressed(fl);
+ faderGroup.setOnMouseDragged(fl);
+ return faderGroup;
+ }
}
diff --git a/DMXSoftware/src/main/java/SnowballThrower/dmxsoftware/Surface/Fader.java b/DMXSoftware/src/main/java/SnowballThrower/dmxsoftware/Surface/Fader.java
index a010ee4..bab5a8d 100644
--- a/DMXSoftware/src/main/java/SnowballThrower/dmxsoftware/Surface/Fader.java
+++ b/DMXSoftware/src/main/java/SnowballThrower/dmxsoftware/Surface/Fader.java
@@ -9,6 +9,10 @@
import SnowballThrower.dmxsoftware.Database.Function;
import javafx.scene.Group;
import javafx.scene.paint.Color;
+import javafx.scene.paint.CycleMethod;
+import javafx.scene.paint.LinearGradient;
+import javafx.scene.paint.Paint;
+import javafx.scene.paint.Stop;
import javafx.scene.shape.Line;
import javafx.scene.shape.Rectangle;
@@ -29,6 +33,7 @@ public class Fader {
Group background;
Group head;
Group fader;
+ Channel channel;
int max = 255;
private String Id;
@@ -38,7 +43,8 @@ public Fader(String id, double posX, double posY, double width, double height, C
this.height = height;
this.posX = posX;
this.posY = posY;
- frameY = height / 20;
+ this.channel = channel;
+ frameY = height / 10;
frameX = width / 10;
background = getBackGround();
head = getHead();
@@ -51,7 +57,7 @@ public Fader(String id, double posX, double posY, double width, double height, C
public void setValue(int value) {
this.value = value;
head.setTranslateY(-((height - 2 * frameY) / max) * value);
- System.out.println(value);
+ //System.out.println(value);
}
double getFrameX() {
@@ -83,38 +89,76 @@ void setStyle(int style) {
}
private Group getHead() {
- double vert = height * 0.05;
+ double vert = height * 0.1;
Rectangle rect = new Rectangle(frameX, height - frameY - 0.5 * vert, width - 2 * frameX, vert);
rect.setFill(Color.GREY);
return new Group(rect);
}
private Group getBackGround() {
+ Group backGround = new Group();
Rectangle rect = new Rectangle(0, 0, width, height);
rect.setFill(Color.LIGHTGRAY);
rect.setStroke(Color.BLACK);
+ backGround.getChildren().add(rect);
+
+ Stop[] stops = new Stop[]{new Stop(0, Color.LIGHTGREY), new Stop(1, Color.LIGHTGREY)};
+ boolean gradient = true;
switch (function) {
case Red:
- rect.setFill(Color.RED);
+ stops = new Stop[]{new Stop(0, Color.WHITE), new Stop(1, Color.RED)};
break;
case Green:
- rect.setFill(Color.LIMEGREEN);
+ stops = new Stop[]{new Stop(0, Color.WHITE), new Stop(1, Color.LIMEGREEN)};
break;
case Blue:
- rect.setFill(Color.BLUE);
+ stops = new Stop[]{new Stop(0, Color.WHITE), new Stop(1, Color.BLUE)};
break;
case White:
- rect.setFill(Color.WHITESMOKE);
+ stops = new Stop[]{new Stop(0, Color.WHITE), new Stop(1, Color.WHITESMOKE)};
break;
case Amber:
- rect.setFill(Color.GOLD);
+ stops = new Stop[]{new Stop(0, Color.WHITE), new Stop(1, Color.GOLD)};
break;
case UV:
- rect.setFill(Color.BLUEVIOLET);
+ stops = new Stop[]{new Stop(0, Color.WHITE), new Stop(1, Color.BLUEVIOLET)};
+ break;
+ case Dimmer:
+ stops = new Stop[]{new Stop(0, Color.BLACK), new Stop(1, Color.WHITE)};
break;
+ default:
+ gradient = false;
}
+ if (gradient) {
+ LinearGradient lg1 = new LinearGradient(0, 1, 0, 0, true, CycleMethod.NO_CYCLE, stops);
+ rect.setFill(lg1);
+ }
+ switch (function) {
+ case Macro:
+ for (int i = 0; i < max; i++) {
+ Rectangle mac = new Rectangle(
+ 0, height - frameY - ((height - 2 * frameY) / max) * i,
+ width, (height - 2 * frameY) / max + 1);
+
+ String string = channel.getStandardMeaning(i);
+ System.out.println(string);
+ try {
+ string = string.toUpperCase();
+ mac.setFill(Paint.valueOf(string));
+ } catch (Exception ex) {
+ mac.setFill(Color.LIGHTGRAY);
+ }
+ backGround.getChildren().add(mac);
+ }
+ Rectangle bg = new Rectangle(0, 0, width, height);
+ bg.setFill(null);
+ bg.setStroke(Color.BLACK);
+ backGround.getChildren().add(bg);
+ break;
+ }
+
Line line = new Line(width * 0.5, frameY, width * 0.5, height - frameY);
- return new Group(rect, line);
+ return new Group(backGround, line);
}
double getWidth() {
diff --git a/DMXSoftware/src/main/java/SnowballThrower/dmxsoftware/Surface/FaderListener.java b/DMXSoftware/src/main/java/SnowballThrower/dmxsoftware/Surface/FaderListener.java
index 40e86d2..467dd28 100644
--- a/DMXSoftware/src/main/java/SnowballThrower/dmxsoftware/Surface/FaderListener.java
+++ b/DMXSoftware/src/main/java/SnowballThrower/dmxsoftware/Surface/FaderListener.java
@@ -45,10 +45,11 @@ public void mouseClicked(MouseEvent e) {
&& e.getX() <= fader.getPosX() + fader.getWidth() - fader.getFrameX()
&& e.getY() >= fader.getPosY()
&& e.getY() <= fader.getPosY() + fader.getHeight()) {
- fader.setValue(constrain((int) ((fader.getHeight() - fader.getFrameY()
+ int value = constrain((int) ((fader.getHeight() - fader.getFrameY()
- e.getY() + fader.getPosY())
- * 255 / (fader.getHeight() - 2 * fader.getFrameY()))));
- manager.handle(fader.getID(), fader.getValue());
+ * 255 / (fader.getHeight() - 2 * fader.getFrameY())));
+ manager.handle(fader.getID(), value);
+ fader.setValue(value);
}
}
}