C语言简单钢琴

#include <conio.h>
#include <stdio.h>
#include <windows.h>
#include <time.h>
//低音
#define L1 262
#define L2 294
#define L3 330
#define L4 349
#define L5 392
#define L6 440
#define L7 493
//高音
#define N1 532
#define N2 588
#define N3 660
#define N4 698
#define N5 784
#define N6 880
#define N7 988
//半弦音
#define H1 1046
#define H2 1175
#define H3 1319
#define H4 1397
#define H5 1568
#define H6 1760
#define H7 1976
char mode='N';
void getS(char n)
{
	if(mode=='L')
	{
		switch(n)
		{
			case '1':Beep(L1,200);break;
			case '2':Beep(L2,200);break;
			case '3':Beep(L3,200);break;
			case '4':Beep(L4,200);break;
			case '5':Beep(L5,200);break;
			case '6':Beep(L6,200);break;
			case '7':Beep(L7,200);break;
		}
	}
	else if(mode=='N')
	{
		switch(n)
		{
			case '1':Beep(N1,200);break;
			case '2':Beep(N2,200);break;
			case '3':Beep(N3,200);break;
			case '4':Beep(N4,200);break;
			case '5':Beep(N5,200);break;
			case '6':Beep(N6,200);break;
			case '7':Beep(N7,200);break;
		}
		
	}
	else if(mode=='H')
	{
		switch(n)
		{
			case '1':Beep(H1,200);break;
			case '2':Beep(H2,200);break;
			case '3':Beep(H3,200);break;
			case '4':Beep(H4,200);break;
			case '5':Beep(H5,200);break;
			case '6':Beep(H6,200);break;
			case '7':Beep(H7,200);break;
		}
	}
}
void soundDis(char ch)
{
	switch(ch)
	{
		case '1':
		case '2':
		case '3':
		case '4':
		case '5':
		case '6':
		case '7':getS(ch);break;
		case 'l':case'L':mode='L';break;
		case 'n':case'N':mode='N';break;
		case 'h':case'H':mode='H';break;
	}
	//Sleep(rand()%50);
}

void HideTheCursor()
{
    CONSOLE_CURSOR_INFO cciCursor;
    HANDLE hStdOut = GetStdHandle(STD_OUTPUT_HANDLE);

    if(GetConsoleCursorInfo(hStdOut, &cciCursor)) {
        cciCursor.bVisible = FALSE;
        SetConsoleCursorInfo(hStdOut, &cciCursor);
    }
}
int main()
{
	char ch;
	srand((unsigned)time(0));
	printf("L低音,N正常,H高音\n");
	HideTheCursor();
	while(1)
	{
		ch=getche();
		soundDis(ch);
	}
}

  • 3
    点赞
  • 12
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
### 回答1: 很抱歉,我不是很擅长编程,但是我可以提供一些概念性的建议:1. 首先要熟悉C语言的语法;2. 了解钢琴的基本知识,比如音阶,音调,节拍等等;3. 尝试利用C语言钢琴音乐编码成一系列的数字;4. 编写一个函数,它将数字转换成钢琴音调;5. 用音频播放器播放钢琴音调。 ### 回答2: 用C语言编写钢琴程序可以实现一个简单钢琴模拟器。首先,我们可以定义钢琴的乐符,每个乐符对应一个键位,其中包括音调和持续时间。然后,我们可以使用C语言中的音频库(如Bass、SDL等)来播放钢琴音符。 编写钢琴程序的步骤如下: 1. 导入所需的头文件和库,例如音频库和输入输出流头文件。 2. 定义钢琴乐符的数据结构,包括音调和持续时间等信息。 3. 使用数组或链表等数据结构存储乐谱,即一段乐曲的乐符序列。 4. 通过输入设备(如键盘或鼠标)获取用户的输入,将其转化为对应的钢琴键位。 5. 根据用户输入的键位,在乐谱中查找对应的乐符,并将其传递给音频库进行播放。 6. 按照乐符的持续时间设定延迟,确保音符的时长正确。 7. 通过循环不断接收用户输入,实现钢琴的连续演奏。 此外,为了提升用户体验,还可以添加一些功能,例如音量控制、和弦演奏、实时录制和播放等。 总结起来,使用C语言编写钢琴程序的核心是定义钢琴乐符的数据结构、实现用户输入和音频播放的逻辑,并通过循环实现连续演奏。这样就可以实现一个简单钢琴模拟器,让用户能够像弹奏真实的钢琴一样在计算机上演奏音乐。 ### 回答3: 钢琴程序是一种模拟钢琴乐器的计算机程序。使用C语言编写钢琴程序可以实现以下功能: 1. 初始化钢琴键盘:在C语言中,可以使用数组来表示钢琴键盘。通过一个数组来存储每个键的音符和频率信息,并且使用循环来初始化所有的钢琴键。 2. 执行钢琴按键操作:在C语言中,可以通过监听键盘按键或鼠标点击的方式来模拟钢琴按键操作。可以使用条件语句判断按键,并触发相应的声音输出。 3. 声音输出:在C语言中,可以使用音频库如OpenAL或SDL来实现声音的输出。音频库可以播放预先录制好的钢琴琴音样本,并可以根据需要改变音调和音量。 4. 实现多音同时播放:在C语言中,可以使用多线程或者异步操作来实现多个音符的同时播放。通过管理不同的线程或处理异步任务,可以同时处理多个按键事件,并输出相应的音符。 总结来说,使用C语言编写钢琴程序需要处理如初始化键盘、监听按键、模拟声音等功能。通过运用适当的数据结构和控制流程,就能够实现一个基本的钢琴程序。在实际应用中,还可以添加更多功能如琴声调色、录制和播放乐曲等。

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值