1 package com.bitwig.extension.api.util.midi;
3 import java.nio.charset.StandardCharsets;
4 import java.util.Arrays;
8 private final static int MAX_LENGTH = 512;
10 public static SysexBuilder fromHex(
final String hexString)
17 mData[mLength++] = (byte) (value & 0x7f);
21 public SysexBuilder addString(
final String
string,
final int length)
23 byte[] ascii =
string.getBytes(StandardCharsets.US_ASCII);
25 for(
int i=0; i<length; i++)
29 mData[mLength++] = ascii[i];
33 mData[mLength++] = 32;
42 for (
int i = 0; i < bytes.length; i++)
44 mData[mLength++] = bytes[i];
52 String sysexMessage = hex.replace(
" ",
"");
53 sysexMessage = sysexMessage.toUpperCase();
55 if ((sysexMessage.length() & 1) != 0)
57 throw new IllegalArgumentException(
"Invalid sysex string");
60 final int bytes = sysexMessage.length() / 2;
62 for(
int i=0; i<bytes; i++)
64 mData[mLength++] = Integer.valueOf(sysexMessage.substring(i*2, i*2+2), 16).byteValue();
70 public byte[] terminate()
78 return Arrays.copyOfRange(mData, 0, mLength);
81 private byte[] mData =
new byte[MAX_LENGTH];