⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 playb.cpp

📁 控制主板小喇叭播生日快乐歌,H标记高八度,L标记第八度,*n表n拍
💻 CPP
字号:
#define A 1.059463
#include<windows.h>
#include<math.h>

void main(){
	char note[]="5/2 5/2 6 5 1H 7*2 5/2 5/2 6 5 2H 1H*2 5/2 5/2 5H 3H 1H 1H 7 6*2 4H/2 4H/2"
				" 3H 1H 2H 1H*3";
	char durstr[5];
	int unit,i,j,k,l;
	long freq,dur;
	long getf(char,char);
	unit=800;
	for(i=0;note[i]!='\0';)
	{
		if(note[i]==' ')
		{
			i++;continue;
		}
		if(note[i+1]=='H')
		{
			freq=getf(note[i],'H');
			j=i+2;
		}else if(note[i+1]=='L')
		{
			freq=getf(note[i],'L');
			j=i+2;
		}else
		{
			freq=getf(note[i],' ');
			j=i+1;
		}
		k=j;
		if(note[j]=='/'||note[j]=='*')
		{
			for(k=j+1,l=0;note[k]!=' '&&note[k]!='\0';k++,l++)
				durstr[l]=note[k];
		}
		durstr[l]='\0';
		dur=unit;
		if(note[j]=='/') dur /= atof(durstr);
		
		if(note[j]=='*') dur *= atof(durstr);
		i=k;
		Beep(freq,dur);
	}
	
}
			
long getf(char c,char f){
	int f0=400;
	double fr;
	switch(c)
	{
	case '1':
		fr=pow(A,0)*f0;break;
	case '2':
		fr=pow(A,2)*f0;break;
	case '3':
		fr=pow(A,4)*f0;break;
	case '4':
		fr=pow(A,5)*f0;break;
	case '5':
		fr=pow(A,7)*f0;break;
	case '6':
		fr=pow(A,9)*f0;break;
	case '7':
		fr=pow(A,11)*f0;
	}
	switch(f)
	{
	case 'H':
		fr *= pow(A,12);break;
	case 'L':
		fr *= pow(A,-12);
	}
	return(fr);
}



⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -