📄 playb.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]!=' '&¬e[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 + -