Bläddra i källkod

Auto stash before merge of "develop" and "origin/develop"

Wilfried Klaas 6 år sedan
förälder
incheckning
c786b7ad74

+ 29 - 2
src/main/java/de/mcs/tools/midicontroller/ConvertJsonData2Hex.java

@@ -30,6 +30,7 @@ import java.io.InputStream;
 import java.io.UnsupportedEncodingException;
 
 import de.mcs.tools.midicontroller.data.ButtonData;
+import de.mcs.tools.midicontroller.data.DataData;
 import de.mcs.tools.midicontroller.data.EventData;
 import de.mcs.tools.midicontroller.data.ProgramData;
 import de.mcs.tools.sps.utils.IntelHex;
@@ -88,16 +89,42 @@ public class ConvertJsonData2Hex {
               eventTyp = 0;
               break;
             case EXPRESSION:
-              eventTyp = 0xE0;
+              eventTyp = 0x70;
               break;
             case BUTTON:
-              eventTyp = 0x20 * (eventData.getValue() + 1);
+              eventTyp = 0x10 * (eventData.getValue() + 1);
               break;
             default:
               break;
             }
             eventTyp = eventTyp | eventData.getEvent().ordinal();
             data[0] = (byte) (eventTyp & 0xFF);
+            DataData[] datas = eventData.getDatas();
+            int pos = 1;
+            for (DataData dataData : datas) {
+              data[pos++] = dataData.getType().getByte();
+              if ((pos + 1) < data.length) { // mindestens 2 noch platz
+                switch (dataData.getType()) {
+                case CC:
+                case NOTE_OFF:
+                case NOTE_ON:
+                  data[pos++] = (byte) dataData.getData1();
+                  data[pos++] = (byte) dataData.getData2();
+                  break;
+                case ALL_NOTE_OFF:
+                  data[pos++] = 0x78;
+                  data[pos++] = 0x00;
+                  break;
+                case PC:
+                  data[pos++] = (byte) dataData.getData1();
+                  break;
+                default:
+                  break;
+                }
+              } else {
+                throw new Exception("not enough memory.");
+              }
+            }
           }
           out.write(data);
         }

+ 77 - 38
src/main/java/de/mcs/tools/midicontroller/data/DataData.java

@@ -28,53 +28,92 @@ package de.mcs.tools.midicontroller.data;
  */
 public class DataData {
 
-	enum CHANNEL {
-		INTERNAL, EXTERNAL
-	}
+  public enum CHANNEL {
+    INTERNAL, EXTERNAL
+  }
 
-	enum TYPE {
-		CC, PC
-	}
+  public enum TYPE {
+    CC {
+      public byte getByte() {
+        return (byte) 0xB0;
+      }
+    },
+    PC {
+      public byte getByte() {
+        return (byte) 0xC0;
+      }
+    },
+    PC_NEXT {
+      public byte getByte() {
+        return (byte) 0xD0;
+      }
+    },
+    PC_PREV {
+      public byte getByte() {
+        return (byte) 0xD1;
+      }
+    },
+    NOTE_ON {
+      public byte getByte() {
+        return (byte) 0x90;
+      }
+    },
+    NOTE_OFF {
+      public byte getByte() {
+        return (byte) 0x80;
+      }
+    },
+    ALL_NOTE_OFF {
+      public byte getByte() {
+        return (byte) 0xB0;
+      }
+    };
 
-	private CHANNEL channel;
-	private TYPE type;
-	private int data1;
-	private int data2;
+    public byte getByte() {
+      return 0;
+    }
+  }
 
-	public CHANNEL getChannel() {
-		return channel;
-	}
+  private CHANNEL channel;
+  private TYPE type;
+  private int data1;
+  private int data2;
 
-	public void setChannel(CHANNEL channel) {
-		this.channel = channel;
-	}
+  public CHANNEL getChannel() {
+    return channel;
+  }
 
-	public TYPE getType() {
-		return type;
-	}
+  public void setChannel(CHANNEL channel) {
+    this.channel = channel;
+  }
 
-	public void setType(TYPE type) {
-		this.type = type;
-	}
+  public TYPE getType() {
+    return type;
+  }
 
-	public int getData1() {
-		return data1;
-	}
+  public void setType(TYPE type) {
+    this.type = type;
+  }
 
-	public void setData1(int data1) {
-		this.data1 = data1;
-	}
+  public int getData1() {
+    return data1;
+  }
 
-	public int getData2() {
-		return data2;
-	}
+  public void setData1(int data1) {
+    this.data1 = data1;
+  }
 
-	public void setData2(int data2) {
-		this.data2 = data2;
-	}
+  public int getData2() {
+    return data2;
+  }
 
-	@Override
-	public String toString() {
-		return String.format("data[channel: %s, type: %s, data1: %d, data2: %d]", channel.name(), type.name(), data1, data2);
-	}
+  public void setData2(int data2) {
+    this.data2 = data2;
+  }
+
+  @Override
+  public String toString() {
+    return String.format("data[channel: %s, type: %s, data1: %d, data2: %d]", channel.name(), type.name(), data1,
+        data2);
+  }
 }

+ 0 - 4
src/main/java/de/mcs/tools/sps/SPSAssembler.java

@@ -137,20 +137,16 @@ public class SPSAssembler {
    */
   public static void main(String[] args) {
     try {
-      System.out.println("1");
       destination = HARDWARE.HOLTEK;
 
-      System.out.println("2");
       CommandlineProcessor.processCommandline(SPSAssembler.class, args);
 
-      System.out.println("3");
       try {
         destination = HARDWARE.valueOf((destinationStr.toUpperCase()));
       } catch (IllegalArgumentException e) {
         throw new HardwareException(String.format("Hardware %s unknow for this assembler", destinationStr));
       }
 
-      System.out.println("4");
       registerAllOutputter();
 
       if ((source == null) || (!source.exists())) {

+ 95 - 46
src/main/resources/programdata.json

@@ -1,117 +1,166 @@
-[{
+[
+	{
 		"name": "Rock",
 		"prgNumber": 100,
-		"internalMidi" : 0,
-		"externalMidi" : 1,
-		"buttons": [{
+		"internalMidi": 0,
+		"externalMidi": 1,
+		"buttons": [
+			{
 				"name": "EQ0",
 				"type": "SWITCH"
-			}, {
+			},
+			{
 				"name": "Drv0",
 				"type": "SWITCH"
-			}, {
+			},
+			{
 				"name": "Chr0",
 				"type": "MOMENTARY"
-			}, {
+			},
+			{
 				"type": "SWITCH"
-			}, {
+			},
+			{
 				"type": "SWITCH"
-			}, {
+			},
+			{
 				"type": "MOMENTARY"
 			}
 		],
-		"events": [{
+		"events": [
+			{
 				"type": "INTERNAL",
 				"event": "START",
-				"datas": [{
+				"datas": [
+					{
 						"channel": "INTERNAL",
 						"type": "CC",
 						"data1": 8,
-                        "data2" : 1
-					},{
+						"data2": 1
+					},
+					{
 						"channel": "INTERNAL",
 						"type": "CC",
 						"data1": 9,
-                        "data2" : 2
-					},{
+						"data2": 2
+					},
+					{
 						"channel": "INTERNAL",
 						"type": "CC",
-						"data1": 10,
-                        "data2" : 3
+						"data1": 11,
+						"data2": 3
 					}
 				]
-			},{
+			},
+			{
 				"type": "BUTTON",
-                "value": 1,
+				"value": 1,
 				"event": "CLICK",
-				"datas": [{
+				"datas": [
+					{
 						"channel": "EXTERNAL",
 						"type": "CC",
 						"data1": 9,
-                        "data2" : 127
-					},{
+						"data2": 127
+					},
+					{
 						"channel": "EXTERNAL",
 						"type": "CC",
-						"data1": 10,
-                        "data2" : 0
+						"data1": 11,
+						"data2": 0
 					}
 				]
-			},{
+			},
+			{
 				"type": "BUTTON",
-                "value": 2,
+				"value": 2,
 				"event": "PUSH",
-				"datas": [{
+				"datas": [
+					{
 						"channel": "EXTERNAL",
 						"type": "CC",
 						"data1": 9,
-                        "data2" : 127
-					},{
+						"data2": 127
+					},
+					{
 						"channel": "EXTERNAL",
 						"type": "CC",
-						"data1": 10,
-                        "data2" : 0
+						"data1": 11,
+						"data2": 0
 					}
 				]
-			},{
+			},
+			{
+				"type": "BUTTON",
+				"value": 4,
+				"event": "CLICK",
+				"datas": [
+					{
+						"channel": "INTERNAL",
+						"type": "PC_PREV"
+					}
+				]
+			},
+			{
+				"type": "BUTTON",
+				"value": 5,
+				"event": "CLICK",
+				"datas": [
+					{
+						"channel": "INTERNAL",
+						"type": "PC_NEXT"
+					}
+				]
+			},
+			{
 				"type": "EXPRESSION",
 				"event": "VALUECHANGE",
-				"datas": [{
+				"datas": [
+					{
 						"channel": "EXTERNAL",
 						"type": "CC",
 						"data1": 30,
-                        "data2" : 127
+						"data2": 127
 					}
 				]
 			}
 		]
-	}, {
+	},
+	{
 		"name": "Pop",
 		"prgNumber": 0,
-		"internalMidi" : 0,
-		"externalMidi" : 1,
-		"buttons": [{
+		"internalMidi": 0,
+		"externalMidi": 1,
+		"buttons": [
+			{
 				"name": "EQ0",
 				"type": "SWITCH"
-			}, {
+			},
+			{
 				"name": "Drv0",
 				"type": "MOMENTARY"
-			}, {
+			},
+			{
 				"name": "Chr0",
 				"type": "SWITCH"
 			}
 		]
-	}, {
+	},
+	{
 		"name": "Soul",
 		"prgNumber": -1,
-		"internalMidi" : 0,
-		"externalMidi" : 1,
-		"buttons": [{
+		"internalMidi": 0,
+		"externalMidi": 1,
+		"buttons": [
+			{
 				"name": "EQ0",
 				"type": "MOMENTARY"
-			}, {
+			},
+			{
 				"name": "Drv0",
 				"type": "SWITCH"
-			}, {
+			},
+			{
 				"name": "Chr0",
 				"type": "SWITCH"
 			}