用c++做电子键盘——【S神】~苏嘉亿

最近闲在家里,有事没事就发篇博文
希望你能给点赞

好的,进入主题——如何用C++制作电子键盘呢?
相信大家也和我一样有着刨根问底的精神,和浓厚的好奇心想要跟我一探究竟
很简单,这是我们主要的一个头文件:
#include<windows.h>
它包含了我们的主角——Beep

从do到si

音高表:
| 音符 | 对应音高 |
do 523
#do 554
re 578
#re 622
mi 659
fa 698
#fa 740
so 784
#so 831
la 880
#la 932
si 988
注:#代表将原音符音高升高半音
说真的这应该让音乐老师告诉你们

OK,源代码奉上:

#include<conio.h>
using namespace std;

void color(int a){
    SetConsoleTextAttribute(GetStdHandle(STD_OUTPUT_HANDLE),a);
}

int main(){
	SetConsoleTitle("电子琴");
    char p;
    int i=0,a=523,ab=554,b=578,bc=622,c=659,d=698,de=740,e=784,ef=831,f=880,fg=932,g=988;
	color(11);
    printf("Input 1,2,3,4,5,6,7,w(up),s(down)\n");
	color(10);
	printf("Space to exit\n");
	color(14);
	printf("Shift up a half step");
	color(12);
	printf("(only 1,2,4,5,6)\n");
	color(15);
    while(i<100){
        p=getch();
        switch(p){
	        case '1':
	            Beep(a,250);
	            break;
	        case '!':
	        	Beep(ab,250);
	            break;
	        case '2':
	            Beep(b,250);
	            break;
	        case '@':
	            Beep(bc,250);
	            break;
	        case '3':
	            Beep(c,250);
	            break;
	        case '4':
	            Beep(d,250);
	            break;
	        case '$':
	            Beep(de,250);
	            break;
	        case '5':
	            Beep(e,250);
	            break;
	        case '%':
	            Beep(ef,250);
	            break;
	        case '6':
	            Beep(f,250);
	            break;
	        case '^':
	            Beep(fg,250);
	            break;
	        case '7':
	            Beep(g,250);
	            break;
	        case 'w':
	        	a*=2;ab*=2;b*=2;bc*=2;c*=2;d*=2;de*=2;e*=2;ef*=2;f*=2;fg*=2;g*=2;
	        	break;
	        case 's':
	        	a/=2;ab/=2;b/=2;bc/=2;c/=2;d/=2;de/=2;e/=2;ef/=2;f/=2;fg/=2;g/=2;
	        	break;
	        case ' ':
	        	return 0;break;
	        default:
	            break;
	    }
    }
    return 0;
}
  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值