六. 头文件
6.1 music.h
#ifndef _MUSIC_H
#define _MUSIC_H
#include \
// rhythm: quarter note as a meter//持续
时间的长短
#define RHYTHM 36
#define _1 RHYTHM*4 //note
#define _1d RHYTHM*6 //dotted note
#define _2 RHYTHM*2 //halfnote
#define _2d RHYTHM*3 //dotted halfnote
#define _4 RHYTHM*1 //quarter note
#define _4d RHYTHM*3/2 //dotted quarter note
#define _8 RHYTHM*1/2 //eighth note
#define _8d RHYTHM*3/4 //dotted eighth note
#define _16 RHYTHM*1/4 //sixteenth note
#define _16d RHYTHM*3/8 //dotted sixteenth note
#define _32 RHYTHM*1/8 //thirty-second note
//低音
#define _1DO (ALT_CPU_FREQ/131)
#define _1DOr (ALT_CPU_FREQ/139)
#define _1RE (ALT_CPU_FREQ/147)
#define (ALT_CPU_FREQ/155) #define (ALT_CPU_FREQ/165) #define (ALT_CPU_FREQ/175) #define (ALT_CPU_FREQ/185) #define
(ALT_CPU_FREQ/196) #define
(ALT_CPU_FREQ/207) #define
(ALT_CPU_FREQ/220) #define
(ALT_CPU_FREQ/233) #define
(ALT_CPU_FREQ/247)
//中音 #define
(ALT_CPU_FREQ/262) #define
(ALT_CPU_FREQ/277) #define
(ALT_CPU_FREQ/294) #define
(ALT_CPU_FREQ/311) #define
(ALT_CPU_FREQ/330) #define (ALT_CPU_FREQ/349)
#define (ALT_CPU_FREQ/370)
#define (ALT_CPU_FREQ/392)
#define _1REr _1MI _1FA _1FAr _1SOL _1SOLr _1LA _1LAr _1SI _DO _DOr _RE _REr _MI _FA _FAr _SOL _SOLr
11
(ALT_CPU_FREQ/416) //1=G 3/4 #define _LA // 乐曲为一个多行3列的2维数组 (ALT_CPU_FREQ/440) //第1列为音调,第2列为节拍,第3#define _LAr 列音高(高音、低音) (ALT_CPU_FREQ/466) #define _SI (ALT_CPU_FREQ/492) int burro[SONG_SIZE1][3] = { //高音 {_DO,_2, MUTE(_DO)},//1 #define _DO1 {_MI, _32,0}, (ALT_CPU_FREQ/523) #define _DO1r (ALT_CPU_FREQ/554) #define _RE1 (ALT_CPU_FREQ/579) #define _RE1r (ALT_CPU_FREQ/740) #define _MI1 (ALT_CPU_FREQ/651) #define _FA1 (ALT_CPU_FREQ/695) #define _FA1r (ALT_CPU_FREQ/740) #define _SOL1 (ALT_CPU_FREQ/784) #define _SOL1r (ALT_CPU_FREQ/830) #define _LA1 (ALT_CPU_FREQ/880) #define _LAR1r (ALT_CPU_FREQ/932) #define _SI1 (ALT_CPU_FREQ/983) #define SONG_SIZE1 200 #define SONG_SIZE2 200 #define SONG_SIZE3 200 #define SONG_SIZE4 200 #define SONG_SIZE5 200 #define SONG_SIZE6 200 #define MUTE(TONE) (TONE)>>2 //低音为25%占空比 #define LOUD(TONE) (TONE)>>1 //高音为50%占空比
{_DO,_2, MUTE(_DO)},//1 {_MI, _32,0}, {_DO,_2, MUTE(_DO)},//1 {_MI, _32,0}, {_MI,_2, MUTE(_MI)},//3 {_MI, _32,0}, {_SOL,_2, LOUD(_SOL)},//5 {_MI, _32,0}, {_SOL,_2, LOUD(_SOL)},//5 {_MI, _32,0}, {_SOL,_2, LOUD(_SOL)},//5 {_MI, _32,0}, {_SOL,_2, LOUD(_SOL)},//5 {_MI, _32,0}, {_LA,_2, MUTE(_LA)},//6 {_MI, _32,0}, {_LA,_2, MUTE(_LA)},//6 {_MI, _32,0}, {_LA,_2, MUTE(_LA)},//6 {_MI, _32,0}, {_DO1,_2, LOUD(_DO1)},//1 {_MI, _32,0}, {_SOL,_1, LOUD(_SOL)},//5 {_MI, _32,0}, {_FA,_2, MUTE(_FA)},//4 {_MI, _32,0}, {_FA,_2, MUTE(_FA)},//4 {_MI, _32,0}, {_LA,_2, MUTE(_LA)},//6 {_MI, _32,0}, {_LA,_2, MUTE(_LA)},//6 {_MI, _32,0}, {_MI,_2, MUTE(_MI)},//3 {_MI, _32,0}, {_MI,_2, MUTE(_MI)},//3
12
{_MI, _32,0},
{_MI,_2, MUTE(_MI)},//3 {_MI, _32,0},
{_MI,_2, MUTE(_MI)},//3 {_MI, _32,0},
{_RE, _2,MUTE(_RE)}, //2 {_MI, _32,0},
{_RE, _2,MUTE(_RE)}, //2 {_MI, _32,0},
{_RE, _2,MUTE(_RE)}, //2 {_MI, _32,0},
{_RE, _2,MUTE(_RE)}, //2 {_MI, _32,0},
{_SOL,_1, MUTE(_SOL)},//5 {_MI, _32,0},
{_SOL,_4, MUTE(_SOL)},//5 {_DO,_2, MUTE(_DO)},//1 {_MI, _32,0},
{_DO,_2, MUTE(_DO)},//1 {_MI, _32,0},
{_DO,_2, MUTE(_DO)},//1 {_MI, _32,0},
{_MI,_2, MUTE(_MI)},//3 {_MI, _32,0},
{_SOL,_2, MUTE(_SOL)},//5 {_MI, _32,0},
{_SOL,_2, MUTE(_SOL)},//5 {_MI, _32,0},
{_SOL,_2, MUTE(_SOL)},//5 {_MI, _32,0},
{_SOL,_2,MUTE(_SOL)},//5 {_MI, _32,0},
{_LA,_2, MUTE(_LA)},//6 {_MI, _32,0},
{_LA,_2, MUTE(_LA)},//6 {_MI, _32,0},
{_LA,_2, MUTE(_LA)},//6 {_MI, _32,0},
{_DO1,_2, MUTE(_DO1)},//1 {_MI, _32,0},
{_SOL,_1, LOUD(_SOL)},//5 {_FA,_2, LOUD(_FA)},//4 {_MI, _32,0},
{_FA,_2, LOUD(_FA)},//4
{_MI, _32,0},
{_FA,_2, LOUD(_FA)},//4 {_MI, _32,0},
{_LA,_2, MUTE(_LA)},//6 {_MI, _32,0},
{_MI,_2, MUTE(_MI)},//3 {_MI, _32,0},
{_MI,_4, MUTE(_MI)},//3 {_MI, _32,0},
{_MI,_4, MUTE(_MI)},//3 {_MI, _32,0},
{_MI,_2, MUTE(_MI)},//3 {_MI, _32,0},
{_MI,_2, MUTE(_MI)},//3 {_MI, _32,0},
{_RE, _2,LOUD(_RE)}, //2 {_MI, _32,0},
{_RE, _2,LOUD(_RE)}, //2 {_MI, _32,0},
{_RE, _2,LOUD(_RE)}, //2 {_MI, _32,0},
{_MI,_2, MUTE(_MI)},//3 {_MI, _32,0},
{_DO,_1, MUTE(_DO)},//1 };
int dachangjin[SONG_SIZE2][3] = { {_LA, _2, LOUD(_LA)}, //2 {_SI, _2, MUTE(_SI)}, //3 {_SI, _2, MUTE(_SI)}, //3 {_SI, _2d,LOUD(_SI)}, //3. {_LA, _4, MUTE(_LA)}, //2_ {_SOL,_2, MUTE(_SOL)},//1 {_MI, _2, LOUD(_MI)}, //.6 {_SOL,_2, MUTE(_SOL)},//1 {_SOL,_2d, MUTE(_SOL)},//1 {_LA, _16,MUTE(_LA)}, //2__ {_SOL,_1d,MUTE(_SOL)},//1-- {_LA, _2, LOUD(_LA)}, //2 {_SI, _2, MUTE(_SI)}, //3 {_SI, _2, MUTE(_SI)}, //3 {_SI, _2d,LOUD(_SI)}, //3. {_RE1,_4, MUTE(_RE1)},//5
13
{_SI, _2, MUTE(_SI)}, //3 {_SI, _2, MUTE(_SI)}, //3 {_LA, _2, MUTE(_LA)}, //2 {_SI, _2, MUTE(_SI)}, //3 {_SI, _4d,MUTE(_SI)}, //3-- {_RE1,_2, LOUD(_RE1)},//5 {_MI1,_2, MUTE(_MI1)},//6 {_MI1,_2, MUTE(_MI1)},//6 {_MI1,_2d,LOUD(_MI1)},//6 {_RE1,_4, MUTE(_RE1)},//5 {_SI, _2, MUTE(_SI)}, //3 {_SI, _2, MUTE(_SI)}, //3 {_LA, _2, MUTE(_LA)}, //2 {_SI, _2, MUTE(_SI)}, //3 {_SI, _1d,MUTE(_SI)}, //3-- {_RE1,_2, LOUD(_RE1)},//5 {_MI1,_2, MUTE(_MI1)},//6 {_MI1,_2, MUTE(_MI1)},//6 {_RE1,_4, MUTE(_RE1)},//5 {_SI, _2, MUTE(_SI)}, //3 {_SI, _2, LOUD(_SI)}, //3 {_RE1,_2, MUTE(_RE1)},//5 {_MI1,_4, MUTE(_MI1)},//6 {_RE1,_16,MUTE(_RE1)},//5 {_MI1,_16,MUTE(_MI1)},//6 {_RE1,_1d,MUTE(_RE1)},//5 {_LA, _2, LOUD(_LA)}, //2 {_SI, _2, MUTE(_SI)}, //3 {_SI, _2, MUTE(_SI)}, //3 {_LA, _2d,LOUD(_LA)}, //3. {_SI, _4, MUTE(_SI)}, //2 {_SI, _2, MUTE(_SI)}, //3 {_LA, _2, LOUD(_LA)}, //2 {_SI, _2, MUTE(_SI)}, //3 {_MI, _2, LOUD(_MI)}, //.6 {_SOL,_8,MUTE(_SOL)},//1 {_MI, _1d,MUTE(_MI)}, //.6 {_MI, _2,0}, //stop {_LA, _2, LOUD(_LA)}, //2 {_SI, _2, MUTE(_SI)}, //3 {_SI, _2, MUTE(_SI)}, //3 {_SI, _2d,LOUD(_SI)}, //3. {_LA, _4, MUTE(_LA)}, //2_ {_SOL,_2, MUTE(_SOL)},//1 {_MI, _2, LOUD(_MI)}, //.6 {_SOL,_2, MUTE(_SOL)},//1 {_SOL,_8d,MUTE(_SOL)},//1 {_LA, _16,MUTE(_LA)}, //2__ {_SOL,_1d,MUTE(_SOL)},//1-- {_LA, _2, LOUD(_LA)}, //2 {_SI, _2, MUTE(_SI)}, //3 {_SI, _2, MUTE(_SI)}, //3 {_SI, _2d,LOUD(_SI)}, //3.
14
{_MI1,_2d,LOUD(_MI1)},//6 {_RE1,_4, MUTE(_RE1)},//5 {_SI, _2, MUTE(_SI)}, //3 {_SI, _2, LOUD(_SI)}, //3 {_RE1,_2, MUTE(_RE1)},//5 {_MI1,_2, MUTE(_MI1)},//6 {_RE1,_1d,MUTE(_RE1)},//5 {_LA, _2, LOUD(_LA)}, //2 {_SI, _2, MUTE(_SI)}, //3 {_SI, _2, MUTE(_SI)}, //3 {_LA, _2d,LOUD(_LA)}, //3. {_SI, _4, MUTE(_SI)}, //2 {_SI, _2, MUTE(_SI)}, //3 {_LA, _2, LOUD(_LA)}, //2 {_SI, _2, MUTE(_SI)}, //3 {_MI, _2, LOUD(_MI)}, //.6 {_SOL,_8,MUTE(_SOL)},//1 {_MI, _1d,MUTE(_MI)}, //.6-- {_LA, _8,LOUD(_LA)}, //2 {_LA, _8,LOUD(_LA)}, //2 {_LA, _8d,LOUD(_LA)}, //2 {_SOL,_4, MUTE(_SOL)},//1 {_MI, _2, MUTE(_MI)}, //.6 {_LA, _8,LOUD(_LA)}, //2 {_LA, _8,LOUD(_LA)}, //2 {_LA, _8d,LOUD(_LA)}, //2 {_SOL,_4, MUTE(_SOL)},//1 {_MI, _2, MUTE(_MI)}, //.6 {_LA, _2, LOUD(_LA)}, //2 {_SI, _2, MUTE(_SI)}, //3 {_SOL,_2, MUTE(_SOL)},//1 {_LA, _2d,LOUD(_LA)}, //2 {_SI, _4, MUTE(_SI)}, //3 {_RE1,_2, MUTE(_RE1)},//5 {_MI1,_8,LOUD(_MI1)},//6
{_MI1,_8,LOUD(_MI1)},//6 {_MI1,_8d,LOUD(_MI1)},//6 {_RE1,_4, MUTE(_RE1)},//5 {_SI, _2, MUTE(_SI)}, //3 {_LA, _8,LOUD(_LA)}, //2 {_LA, _8,LOUD(_LA)}, //2 {_LA, _8d, LOUD(_LA)}, //2 {_SOL,_4, MUTE(_SOL)},//1 {_MI, _2, MUTE(_MI)}, //.6 {_MI, _2, LOUD(_MI)}, //.6 {_RE, _2, MUTE(_RE)}, //.5 {_MI, _2, MUTE(_MI)}, //.6 {_MI, _1d,MUTE(_MI)}, //.6 {_MI, _2,0}, //stop {_MI, _2,0}, //stop };
/*{_1SOL, _4d, MUTE(_1SOL)}, //.1 {_1LA, _4d, MUTE(_1LA)}, //.2 {_1SI, _4d, MUTE(_1SI)}, //.3 {_DO, _4d, MUTE(_DO)}, //.4 {_RE, _4d, MUTE(_RE)}, //.5 {_MI, _4d, MUTE(_MI)}, //.6 {_FA, _4d, MUTE(_FA)}, //.7 {_SOL, _4d, MUTE(_SOL)}, //1 {_LA, _4d, MUTE(_LA)}, //2 {_SI, _4d, MUTE(_SI)}, //3
{_DO1, _4d, MUTE(_DO1)}, //4 {_RE1, _4d, MUTE(_RE1)}, //5 {_MI1, _4d, MUTE(_MI1)}, //6 {_FA1, _4d, MUTE(_FA1)}, //7 {_SOL1, _4d, MUTE(_SOL1)}, //1. {_LA1, _4d, MUTE(_LA1)}, //2. {_SI1, _4d, MUTE(_SI1)}, //3. */
int xiaoxingxing[SONG_SIZE3][3] = { {_DO,_2, MUTE(_DO)},//1 {_MI, _32,0},
{_DO,_2, MUTE(_DO)},//1 {_MI, _32,0},
{_SOL,_2, MUTE(_SOL)},//5 {_MI, _32,0},
{_SOL,_2, MUTE(_SOL)},//5
{_MI, _32,0},
{_LA,_2, MUTE(_LA)},//6 {_MI, _32,0},
{_LA,_2, MUTE(_LA)},//6 {_SOL,_1, MUTE(_SOL)},//5 {_FA,_2, MUTE(_FA)},//4 {_MI, _32,0},
{_FA,_2, MUTE(_FA)},//4 {_MI, _2, MUTE(_MI)}, //3 {_MI, _32,0},
{_MI, _2, MUTE(_MI)}, //3 {_RE, _2, MUTE(_RE)}, //2 {_MI, _32,0},
{_RE, _2, MUTE(_RE)}, //2 {_DO,_1,MUTE(_DO)},//1-- {_SOL,_2, MUTE(_SOL)},//5 {_MI, _32,0},
{_SOL,_2, MUTE(_SOL)},//5 {_FA,_2, MUTE(_FA)},//4 {_MI, _32,0},
{_FA,_2, MUTE(_FA)},//4 {_MI, _2, MUTE(_MI)}, //3 {_MI, _32,0},
{_MI, 2, MUTE(_MI)}, //3 {_RE, _1, MUTE(_RE)}, //2 {_SOL,_2, MUTE(_SOL)},//5 {_MI, _32,0},
{_SOL,_2, MUTE(_SOL)},//5 {_FA,_2, MUTE(_FA)},//4 {_MI, _32,0},
{_FA,_2, MUTE(_FA)},//4 {_MI, _2, MUTE(_MI)}, //3 {_MI, _32,0},
{_MI, _2, MUTE(_MI)}, //3 {_RE, _1, MUTE(_RE)}, //2
{_DO,_2, MUTE(_DO)},//1 {_MI, _32,0},
{_DO,_2, MUTE(_DO)},//1 {_SOL,_2, MUTE(_SOL)},//5 {_MI, _32,0},
{_SOL,_2, MUTE(_SOL)},//5 {_LA,_2, MUTE(_LA)},//6 {_MI, _32,0},
15