食用方法:打开idea,运行testNumber ,提前打开freepiano
《The truth that you leave》
testNumber文件
package piano;
import java.awt.*;
public class testNumber {
public static void main(String[] args) throws AWTException, InterruptedException {
Thread thread1 = new Thread(new Runnable() {
@Override
public void run() {
String s =
"5,6-,1,5,5,6-,1,5," +
"5,6-,1,5,5,6-,y,1," +
"0,1,y,1,y,1,y,1," +
"0,2,y,3,y,4,y,6," +
"5+,6,1+,5+,5+,6,1+,5," +
"5+,6,1+,5+,5+,6,3+,4+," +
"0,5+,y,y,y,1,6-,1," +
"0,0,0,0,0,3,6-,y," +
//9
"0,1,1,1,1,2,2,2," +
"0,7-,7-,7-,7-,2,3,4," +
"0,3,y,y,y,3,y,7-," +
"0,0,0,0,1,3,y,6-," +
//13
"0,1,1,1,1,2,2,2," +
"0,7-,7-,7-,7-,2,3,4," +
"0,5,y,y,1,2,3,4," +
"0,0,0,0,6-,7-,1,5," +
//17
"0,0,0,0,0,4,3,2," +
"2,y,y,y,y,y,y,0," +
"3,y,4,3,3,2,y,1," +
"1,y,y,y,y,y,y,0," +
//21
"0,1,1,1,1,2,2,2," +
"0,7-,7-,7-,7-,2,3,4," +
"0,3,y,y,1,4,6,7," +
"1+,y,y,y,y,y,y,0," +
// 25
"0,1+,1+,1+,1+,2+,2+,2+," +
"0,7,7,7,7,2+,3+,4+," +
"0,3+,y,y,1,3,6,7," +
"7,1+,7,6,3,1,2,y," +
"0,1+,1+,1+,1+,2+,2+,2+," +
"0,7,7,7,7,2+,3+,4+," +
"0,5+,y,y,y,y,y,1+," +
"0,1+,y,y,6,7,1+,5+," +
"1+,y,y,y,0,4+,3+,2+," +
"2+,y,y,y,y,y,y,y," +
"3+,y,3+,2+,2+,3+,y,2+," +
"2+,y,y,1+,1+,y,y,0," +
"0,1+,1+,1+,1+,2+,2+,2+," +
"0,7,7,7,7,2+,3+,5+," +
"0,3+,y,0,1,3,6,1+," +
"3+,y,y,y,y,y,y,0,";
String[] split = s.split(",");
try {
pianoToolsV3.start(split,"11111111");
} catch (AWTException e) {
throw new RuntimeException(e);
}
}
});
Thread thread2 = new Thread(new Runnable() {
@Override
public void run() {
// String s = "0,0,3+,1++,7+,6+,5+,6+,y,6+,6+,6+,5+,3+,6+," +
// "5+,y,2+,y,3+,5+,5+,3+,5+,y,5+,5+,3+,5+,5+,2+";
// String s = "1,1,5,5,6,6,5,y,4,4,3,3,2,2,1,y," +
// "5,5,4,4,3,3,2,y,5,5,4,4,3,3,2,y";
String s =
"4--,y,y,y,y,y,y,y," +
"5--,y,y,y,y,y,y,y," +
"6--,y,6-,y,y,y,6-,y," +
"6--,y,3-,y,6--,y,5--,y," +
"4--,y,y,y,1-,y,y,y," +
"5--,y,y,y,2-,y,y,y," +
"6--,3-,6-,7-,7-,y,y,y," +
"6--,3-,6-,2,2,y,y,y," +
//9
"4--,1-,4-,y,y,y,y,y," +
"5--,2-,5-,y,y,y,y,y," +
"6--,3-,6-,7-,7-,y,y,y," +
"6--,3-,6-,7-,7-,y,y,y," +
"4--,1-,4-,y,y,y,y,0," +
"5--,2-,5-,y,y,y,y,0," +
"6--,3-,6-,7-,7-,y,y,y," +
"6--,3-,6-,7-,7-,4--,y,y,"+
//17
"2--,6--,2-,3-,4-,y,2-,y," +
"5--,2-,5-,6-,7-,y,5-,y," +
"3--,7--,3-,y,5--,2-,5-,y," +
"6--,3-,6-,7-,7-,1,6--," +
//21
"4--,1-,4-,y,y,y,y,0," +
"5--,2-,5-,y,y,y,y,0," +
"6--,3-,6-,7-,7-,y,y,0," +
"6--,y,y,y,y,y,y,y,0," +
//25
"4--,1-,4-,1-,4-,y,4--,y," +
"5--,2-,5-,2-,5-,y,5--,y," +
"6--,3-,6-,7-,7-,y,y,y," +
"6--,3-,6-,7-,7-,y,y,y,"+
//29
"4--,1-,4-,1-,4-,y,4--,y," +
"5--,2-,5-,2-,5-,y,5--,y," +
"6--,3-,6-,7-,7-,3,1,y," +
"6--,3-,6-,7-,7-,y,4--,y," +
"" +
"2--,6--,2-,3-,4-,y,2-,y," +
"5--,2-,5-,6-,7-,y,5-,y," +
"3--,7--,3-,y,5--,2-,5-,y," +
"6--,3-,6-,7-,7-,1,6--,y," +
"4--,1-,4-,1-,4-,y,4--,y," +
"5--,2-,5-,2-,5-,y,5--,y," +
"6--,3-,6-,7-,7-,y,y,0," +
"6--,y,y,y,y,y,y,0,";
String[] split = s.split(",");
try {
pianoToolsV3.start(split,"22222222");
} catch (AWTException e) {
throw new RuntimeException(e);
}
}
});
Thread thread3 = new Thread(new Runnable() {
@Override
public void run() {
// String s = "0,0,3+,1++,7+,6+,5+,6+,y,6+,6+,6+,5+,3+,6+," +
// "5+,y,2+,y,3+,5+,5+,3+,5+,y,5+,5+,3+,5+,5+,2+";
// String s = "1,1,5,5,6,6,5,y,4,4,3,3,2,2,1,y," +
// "5,5,4,4,3,3,2,y,5,5,4,4,3,3,2,y";
String s =
"0,0,0,0,0,0,0,0," +
"0,0,0,0,0,0,0,0," +
"0,0,0,0,0,0,0,0," +
"0,0,0,0,0,0,0,0," +
"0,0,0,0,0,0,0,0," +
"0,0,0,0,0,0,0,0," +
"0,0,0,0,0,0,0,0," +
"0,0,0,0,0,0,0,0," +
"0,5,5,5,5,y,y,0," +
"0,5,5,5,5,y,y,0," +
"0,0,0,0,0,0,0,0," +
"0,0,0,0,0,0,0,0," +
//13
"0,5,5,5,5,y,0,0," +
"0,5,5,5,5,y,0,0," +
"0,0,0,0,0,0,0,0," +
"0,0,0,0,0,0,0,0," +
//17
"0,0,0,0,0,0,0,0," +
"0,0,0,0,0,0,0,0," +
"0,0,0,0,0,0,0,0," +
"0,0,0,0,0,0,0,0," +
//21
"0,5,5,5,5,y,y,y," +
"0,5,5,5,5,y,y,y," +
"0,0,0,0,0,0,0,0," +
"0,0,0,0,0,0,0,0," +
//25
"0,5+,5+,5+,5+,y,y,y," +
"0,5+,5+,5+,5+,y,y,y," +
"0,0,0,0,0,0,0,0," +
"0,0,0,0,0,0,0,0," +
"0,5+,5+,5+,5+,y,y,y," +
"0,5+,5+,5+,5+,y,y,y," +
"0,0,0,0,0,0,0,3+," +
"0,4+,0,3+,0,0,0,0," +
"5+,0,0,0,0,0,0,0," +
"0,0,0,0,0,0,0,0," +
"7+,0,0,0,0,0,0,0," +
"0,0,0,0,0,0,0,0," +
"0,5+,5+,5+,5+,y,y,y," +
"0,5+,5+,5+,5+,y,y,y," +
"0,6+,y,y,y,y,0,0," +
"6+,y,y,y,y,y,y,0," ;
String[] split = s.split(",");
try {
pianoToolsV3.start(split,"44444444");
} catch (AWTException e) {
throw new RuntimeException(e);
}
}
});
Thread thread4 = new Thread(new Runnable() {
@Override
public void run() {
String s =
"0,0,0,0,0,0,0,0," +
"0,0,0,0,0,0,0,0," +
"0,0,0,0,0,0,0,0," +
"0,0,0,0,0,0,0,0," +
"0,0,0,0,0,0,0,0," +
"0,0,0,0,0,0,0,0," +
"0,0,0,0,0,0,0,0," +
"0,0,0,0,0,0,0,0," +
"0,0,0,0,0,0,0,0," +
"0,0,0,0,0,0,0,0," +
"0,0,0,0,0,0,0,0," +
"0,0,0,0,0,0,0,0," +
//13
"0,0,0,0,0,0,0,0," +
"0,0,0,0,0,0,0,0," +
"0,0,0,0,0,0,0,0," +
"0,0,0,0,0,0,0,0," +
//17
"0,0,0,0,0,0,0,0," +
"0,0,0,0,0,0,0,0," +
"0,0,0,0,0,0,0,0," +
"0,0,0,0,0,0,0,0," +
//21
"0,0,0,0,0,0,0,0," +
"0,0,0,0,0,0,0,0," +
"0,0,0,0,0,0,0,0," +
"0,0,0,0,0,0,0,0," +
//25
"0,0,0,0,0,0,0,0," +
"0,0,0,0,0,0,0,0," +
"0,0,0,0,0,0,0,0," +
"0,0,0,0,0,0,0,0," +
"0,0,0,0,0,0,0,0," +
"0,0,0,0,0,0,0,0," +
"0,0,0,0,0,0,0,0," +
"0,0,0,0,0,0,4-,0," +
"0,0,0,0,0,0,0,0," +
"0,0,0,0,0,0,0,0," +
"0,0,0,0,0,0,0,0," +
"0,0,0,0,0,0,0,0," +
"0,0,0,0,0,0,0,0," +
"0,0,0,0,0,0,0,0," +
"0,0,0,0,0,0,0,0," +
"3-,y,y,y,y,y,y,0," ;
String[] split = s.split(",");
try {
pianoToolsV3.start(split,"33333333");
} catch (AWTException e) {
throw new RuntimeException(e);
}
}
});
Thread.sleep(5000);
thread1.start();
thread2.start();
thread3.start();
thread4.start();
}
}
工具类
package piano;
import java.awt.*;
public class pianoToolsV3 {
public static int speed = 60000/140/2;
public static void start(String[] line,String name) throws AWTException {
Robot robot = new Robot();
robot.keyPress(WordChange.getKey(line[0]));
robot.delay(speed);
// System.out.println("开启"+line[0]);
for (int i = 1; i < line.length; i++) {
// System.out.println(name)
if ( "y".equals(line[i]) ) {
robot.delay(speed);
// System.out.println("延迟");
} else if ( "0".equals(line[i]) ) { //是1,0,0
if (!"0".equals(line[i-1])){
for (int h=i-1;h>-1;h--){
if (!"y".equals(line[h])){
robot.keyRelease(WordChange.getKey(line[h]));
// System.out.println("关闭"+line[h]);
break;
}
}
robot.keyPress(WordChange.getKey("0"));
// System.out.println("开启0");
robot.delay(speed);
}else {
robot.keyRelease(WordChange.getKey("0"));
// System.out.println("关闭0");
robot.keyPress(WordChange.getKey("0"));
// System.out.println("开启0");
robot.delay(speed);
}
}else {
for (int j = i - 1; j >-1; j--) {
if (!"y".equals(line[j]) ) {
robot.keyRelease(WordChange.getKey(line[j]));
// System.out.println("关闭"+line[j]);
break;
}
}
robot.keyPress(WordChange.getKey(line[i]));
// System.out.println("开启"+line[i]);
robot.delay(speed);
}
}
}
}
WordChange
package piano;
import java.awt.event.KeyEvent;
public class WordChange {
public static int getKey(String word) {
switch (word){
case "0":
return KeyEvent.VK_SPACE;
case "1":
return KeyEvent.VK_Q;
case "2":
return KeyEvent.VK_W;
case "3":
return KeyEvent.VK_E;
case "4":
return KeyEvent.VK_R;
case "5":
return KeyEvent.VK_T;
case "6":
return KeyEvent.VK_Y;
case "7":
return KeyEvent.VK_U;
case "1+":
return KeyEvent.VK_1;
case "2+":
return KeyEvent.VK_2;
case "3+":
return KeyEvent.VK_3;
case "4+":
return KeyEvent.VK_4;
case "5+":
return KeyEvent.VK_5;
case "6+":
return KeyEvent.VK_6;
case "7+":
return KeyEvent.VK_7;
case "1++":
return KeyEvent.VK_8;
case "2++":
return KeyEvent.VK_9;
case "3++":
return KeyEvent.VK_0;
case "4++":
return KeyEvent.VK_I;
case "5++":
return KeyEvent.VK_O;
case "6++":
return KeyEvent.VK_P;
case "7++":
return KeyEvent.VK_NUMPAD7;
case "1-":
return KeyEvent.VK_A;
case "2-":
return KeyEvent.VK_S;
case "3-":
return KeyEvent.VK_D;
case "4-":
return KeyEvent.VK_F;
case "5-":
return KeyEvent.VK_G;
case "6-":
return KeyEvent.VK_H;
case "7-":
return KeyEvent.VK_J;
case "1--":
return KeyEvent.VK_Z;
case "2--":
return KeyEvent.VK_X;
case "3--":
return KeyEvent.VK_C;
case "4--":
return KeyEvent.VK_V;
case "5--":
return KeyEvent.VK_B;
case "6--":
return KeyEvent.VK_N;
case "7--":
return KeyEvent.VK_M;
}
return 1;
}
}