电子琴源码

#include <windows.h>

#include <stdio.h>

#pragma comment(lib,"winmm.lib")



HMIDIOUT handle;



unsigned long result = midiOutOpen(&handle, 0, 0, 0, CALLBACK_NULL), device = 0; //键盘midi

HANDLE hIn = GetStdHandle(STD_INPUT_HANDLE);//鼠标操作

HANDLE hOut = GetStdHandle(STD_OUTPUT_HANDLE);

DWORD state = 0, res;

INPUT_RECORD mouseRec;



int main()

{

    COORD size = {90, 25};

    SetConsoleScreenBufferSize(hOut, size); // 重新设置缓冲区大小

    SMALL_RECT rc = {0, 0, 90 - 1, 25 - 1}; // 重置窗口位置和大小

    SetConsoleWindowInfo(hOut, true , &rc);

    SetConsoleTextAttribute(hOut, 0xF0);

    char table[] =

        "  █ █ ▕  █ █ █ ▕  █ █ ▕  █ █ █ ▕  █ █ ▕  █ █ █ ▕\n"\

        "  █ █ ▕  █ █ █ ▕  █ █ ▕  █ █ █ ▕  █ █ ▕  █ █ █ ▕\n"\

        "  █ █ ▕  █ █ █ ▕  █ █ ▕  █ █ █ ▕  █ █ ▕  █ █ █ ▕\n"\

        " ▕ ▕ ▕ ▕ ▕ ▕ ▕ ▕ ▕ ▕ ▕ ▕ ▕ ▕ ▕ ▕ ▕ ▕ ▕ ▕ ▕\n"\

        " ▕ ▕ ▕ ▕ ▕ ▕ ▕ ▕ ▕ ▕ ▕ ▕ ▕ ▕ ▕ ▕ ▕ ▕ ▕ ▕ ▕\n"\

        " ▕ ▕ ▕ ▕ ▕ ▕ ▕ ▕ ▕ ▕ ▕ ▕ ▕ ▕ ▕ ▕ ▕ ▕ ▕ ▕ ▕\n"\

        " ▕ ▕ ▕ ▕ ▕ ▕ ▕ ▕ ▕ ▕ ▕ ▕ ▕ ▕ ▕ ▕ ▕ ▕ ▕ ▕ ▕\n"\

        "▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔\n";

    puts(table);

    printf("Q\tW\tE\tR\t\tU\tI\tO \nC2\tD2\tE2\tF2\t\tG2\tA2\tB2\nA\tS\tD\tF\t\tJ\tK\tL \nC1\tD1\tE1\tF1\t\tG1\tA1\tB1\nZ\tX\tC\tV\t\tM\t,\t. \nC0\tD0\tE0\tF0\t\tG0\tA0\tB0\n");

    while(1)

    {

        if(GetAsyncKeyState(65))midiOutShortMsg(handle, 0x00603C90);//A

        if(GetAsyncKeyState(83))midiOutShortMsg(handle, 0x00603E90);//S

        if(GetAsyncKeyState(68))midiOutShortMsg(handle, 0x00604090);//D

        if(GetAsyncKeyState(70))midiOutShortMsg(handle, 0x00604190);//F

        if(GetAsyncKeyState(74))midiOutShortMsg(handle, 0x00604390);//J

        if(GetAsyncKeyState(75))midiOutShortMsg(handle, 0x00604590);//K

        if(GetAsyncKeyState(76))midiOutShortMsg(handle, 0x00604790);//L

        if(GetAsyncKeyState(90))midiOutShortMsg(handle, 0x00603090);//Z

        if(GetAsyncKeyState(88))midiOutShortMsg(handle, 0x00603290);//X

        if(GetAsyncKeyState(67))midiOutShortMsg(handle, 0x00603490);//C

        if(GetAsyncKeyState(86))midiOutShortMsg(handle, 0x00603590);//V

        if(GetAsyncKeyState(77))midiOutShortMsg(handle, 0x00603790);//M

        if(GetAsyncKeyState(188))midiOutShortMsg(handle, 0x00603990);//,

        if(GetAsyncKeyState(190))midiOutShortMsg(handle, 0x00603b90);//.

        if(GetAsyncKeyState(81))midiOutShortMsg(handle, 0x00604890);//Q

        if(GetAsyncKeyState(87))midiOutShortMsg(handle, 0x00604a90);//W

        if(GetAsyncKeyState(69))midiOutShortMsg(handle, 0x00604c90);//E

        if(GetAsyncKeyState(82))midiOutShortMsg(handle, 0x00604d90);//R

        if(GetAsyncKeyState(85))midiOutShortMsg(handle, 0x00604f90);//U

        if(GetAsyncKeyState(73))midiOutShortMsg(handle, 0x00605190);//I

        if(GetAsyncKeyState(79))midiOutShortMsg(handle, 0x00605390);//O



        ReadConsoleInput(hIn, &mouseRec, 1, &res);

        if (mouseRec.Event.MouseEvent.dwMousePosition.Y < 7 && mouseRec.Event.MouseEvent.dwButtonState == FROM_LEFT_1ST_BUTTON_PRESSED) //左键

        {

            switch(mouseRec.Event.MouseEvent.dwMousePosition.X / 4)

            {

            case 7:

                midiOutShortMsg(handle, 0x00603C90);

                break;

            case 8:

                midiOutShortMsg(handle, 0x00603E90);

                break;

            case 9:

                midiOutShortMsg(handle, 0x00604090);

                break;

            case 10:

                midiOutShortMsg(handle, 0x00604190);

                break;

            case 11:

                midiOutShortMsg(handle, 0x00604390);

                break;

            case 12:

                midiOutShortMsg(handle, 0x00604590);

                break;

            case 13:

                midiOutShortMsg(handle, 0x00604790);

                break;

            case 0:

                midiOutShortMsg(handle, 0x00603090);

                break;

            case 1:

                midiOutShortMsg(handle, 0x00603290);

                break;

            case 2:

                midiOutShortMsg(handle, 0x00603490);

                break;

            case 3:

                midiOutShortMsg(handle, 0x00603590);

                break;

            case 4:

                midiOutShortMsg(handle, 0x00603790);

                break;

            case 5:

                midiOutShortMsg(handle, 0x00603990);

                break;

            case 6:

                midiOutShortMsg(handle, 0x00603b90);

                break;

            case 14:

                midiOutShortMsg(handle, 0x00604890);

                break;

            case 15:

                midiOutShortMsg(handle, 0x00604a90);

                break;

            case 16:

                midiOutShortMsg(handle, 0x00604c90);

                break;

            case 17:

                midiOutShortMsg(handle, 0x00604d90);

                break;

            case 18:

                midiOutShortMsg(handle, 0x00604f90);

                break;

            case 19:

                midiOutShortMsg(handle, 0x00605190);

                break;

            case 20:

                midiOutShortMsg(handle, 0x00605390);

                break;

            default:

                break;

            }

        }

    }

    return 0;

}

  

你可能感兴趣的:(源码)