用Java弹个Freepiano钢琴《The truth that you leave》

用java代码弹奏freePiano

食用方法:打开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;
    }
}


  • 3
    点赞
  • 6
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值