#include<stdio.h>
#include<windows.h>
#define K 0//这个频率0,就是不响,作为空拍
//以下的所有表示音符的符号均来自fl studio 14 的fl keys的标注,或许和一般钢琴的标注不一样 。
//只有三个八度的音高频率 ,因为一般人声可以达到的频率大概都会落在这些里面
#define C4 523
#define C#4 554
#define D4 588
#define D#4 623
#define E4 660
#define F4 700
#define F#4 742
#define G4 786
#define G#4 833
#define A4 884
#define A#4 936
#define B4 992
#define C5 1046
#define C#5 1108
#define D5 1176
#define D#5 1246
#define E5 1320
#define F5 1400
#define F#5 1484
#define G5 1572
#define G#5 1666
#define A5 1768
#define A#5 1872
#define B5 1984
#define C6 2092
#define C#6 2216
#define D6 2352
#define D#6 2492
#define E6 2640
#define F6 2800
#define F#6 2968
#define G6 3144
#define G#6 3332
#define A6 3536
#define A#6 3744
#define B6 3968
#define P 125 //折合bpm==120,原bpm为105,此处取了个近似值
typedef struct
{
int frequency;
int duration;
}PU;
//以下谱子,正是《社会主义好》的一段
PU t[]={B5,1,B5,2,B5,1,D6,2,B5,5,A5,2,G5,1,E5,2,G5,1,A5,2,B5,2,K,5,B5,1,B5,2,B5,1,D6,2,E6,4,D6,3,E5,1
,E5,2,E5,1,G5,2,A5,2,K,5,B5,3,A5,1,G5,3,G5,2,E5,1,D5,3,B5,2,D6,1,B5,2,A5,1,G5,2,A5,1,G5,2,A5,2,B5,3,E5,
3,G5,1,D5,2,K,5,B5,2,D6,1,B5,1,D6,2,E6,3,E6,2,D6,1,E6,5,B5,2,A5,3,B5,1,E6,3,D6,3,B5,3,A5,3,K,1,E6,2,D6,
1,B5,2,A5,1,G5,4,K,3,E6,2,D6,1,B5,2,A5,1,G5,4,};
int main()
{
int i;
//结构体数组的长度sizeof(t)/sizeof(PU)得到,总结构体数组大小 / 单个结构体大小
for (i=0; i<sizeof(t)/sizeof(PU); i++)
Beep(t[i].frequency,t[i].duration*P);
}