C语言音乐程序设计
main ( )
{
int n;
int frequency=262;
int duration=16;
sound(frequency);
n=duration+clock();
while(n>clock());
nosound();
}
函数sound()带有一个参数,这个参数就是发音频率,即音高。在C语言中,音高数据可以用枚举类型来定义。各音符定义如下:
enum SONG
{
C01=131,D01=147,
E01=165,F01=175,
G01=196,A01=220,
B01=247,C0=262,
D0=296,E0=330,
F0=349,G0=392,
A0=440,B0=494,
C1=523,D1=587,
E1=659,F1=698,
G1=784,A1=880,
B1=988,C2=1047,
D2=1175,E2=1319,
F2=1397,G2=1568,
A2=1760,B2=1976
}
SONG类型中的C0是中央C调,这包含了四个八度音程,音长分为全音符、半音符、4分音符、8分音符、16分音符,音长用宏定义更方便一些。
#defineL148
/*全音符*/
#defineL2L1/2
/*半音符*/
#defineL4L1/4
/*4分音符*/
#defineL8L1/8
/*8分音符*/
#defineL16L1/16
/*16分音符*/
根据以上定义,我们可以把音乐中各音符的音高、音长放在一个数组中,形成一段旋律,供程序调用。(湖北吕涛)