📄 music.h
字号:
/*
** file name ?music.h
**
*/
#ifndef _MUSIC_H
#define _MUSIC_H
#include "system.h"
// 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 _1REr (ALT_CPU_FREQ/155)
#define _1MI (ALT_CPU_FREQ/165)
#define _1FA (ALT_CPU_FREQ/175)
#define _1FAr (ALT_CPU_FREQ/185)
#define _1SOL (ALT_CPU_FREQ/196)
#define _1SOLr (ALT_CPU_FREQ/207)
#define _1LA (ALT_CPU_FREQ/220)
#define _1LAr (ALT_CPU_FREQ/233)
#define _1SI (ALT_CPU_FREQ/247)
//中音
#define _DO (ALT_CPU_FREQ/262)
#define _DOr (ALT_CPU_FREQ/277)
#define _RE (ALT_CPU_FREQ/294)
#define _REr (ALT_CPU_FREQ/311)
#define _MI (ALT_CPU_FREQ/330)
#define _FA (ALT_CPU_FREQ/349)
#define _FAr (ALT_CPU_FREQ/370)
#define _SOL (ALT_CPU_FREQ/392)
#define _SOLr (ALT_CPU_FREQ/416)
#define _LA (ALT_CPU_FREQ/440)
#define _LAr (ALT_CPU_FREQ/466)
#define _SI (ALT_CPU_FREQ/492)
//高音
#define _DO1 (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_SIZE 150
#define MUTE(TONE) (TONE)>>2 //低音为25%占空比
#define LOUD(TONE) (TONE)>>1 //高音为50%占空比
//1=G 3/4
//乐曲为一个多行3列的2维数组
//第1列为音调,第2列为节拍,第3列音高(高音、低音)
int dachangjin[SONG_SIZE][3] = {
{_LA, _4, LOUD(_LA)}, //2
{_SI, _4, MUTE(_SI)}, //3
{_SI, _4, MUTE(_SI)}, //3
{_SI, _4d,LOUD(_SI)}, //3.
{_LA, _8, MUTE(_LA)}, //2_
{_SOL,_4, MUTE(_SOL)},//1
{_MI, _4, LOUD(_MI)}, //.6
{_SOL,_4, MUTE(_SOL)},//1
{_SOL,_8d, MUTE(_SOL)},//1
{_LA, _32,MUTE(_LA)}, //2__
{_SOL,_2d,MUTE(_SOL)},//1--
{_LA, _4, LOUD(_LA)}, //2
{_SI, _4, MUTE(_SI)}, //3
{_SI, _4, MUTE(_SI)}, //3
{_SI, _4d,LOUD(_SI)}, //3.
{_RE1,_8, MUTE(_RE1)},//5
{_SI, _4, MUTE(_SI)}, //3
{_SI, _4, MUTE(_SI)}, //3
{_LA, _4, MUTE(_LA)}, //2
{_SI, _4, MUTE(_SI)}, //3
{_SI, _2d,MUTE(_SI)}, //3--
{_RE1,_4, LOUD(_RE1)},//5
{_MI1,_4, MUTE(_MI1)},//6
{_MI1,_4, MUTE(_MI1)},//6
{_MI1,_4d,LOUD(_MI1)},//6
{_RE1,_8, MUTE(_RE1)},//5
{_SI, _4, MUTE(_SI)}, //3
{_SI, _4, LOUD(_SI)}, //3
{_RE1,_4, MUTE(_RE1)},//5
{_MI1,_8, MUTE(_MI1)},//6
{_RE1,_32,MUTE(_RE1)},//5
{_MI1,_32,MUTE(_MI1)},//6
{_RE1,_2d,MUTE(_RE1)},//5
{_LA, _4, LOUD(_LA)}, //2
{_SI, _4, MUTE(_SI)}, //3
{_SI, _4, MUTE(_SI)}, //3
{_LA, _4d,LOUD(_LA)}, //3.
{_SI, _8, MUTE(_SI)}, //2
{_SI, _4, MUTE(_SI)}, //3
{_LA, _4, LOUD(_LA)}, //2
{_SI, _4, MUTE(_SI)}, //3
{_MI, _4, LOUD(_MI)}, //.6
{_SOL,_16,MUTE(_SOL)},//1
{_MI, _2d,MUTE(_MI)}, //.6
{_MI, _4,0}, //stop
{_LA, _4, LOUD(_LA)}, //2
{_SI, _4, MUTE(_SI)}, //3
{_SI, _4, MUTE(_SI)}, //3
{_SI, _4d,LOUD(_SI)}, //3.
{_LA, _8, MUTE(_LA)}, //2_
{_SOL,_4, MUTE(_SOL)},//1
{_MI, _4, LOUD(_MI)}, //.6
{_SOL,_4, MUTE(_SOL)},//1
{_SOL,_8d,MUTE(_SOL)},//1
{_LA, _32,MUTE(_LA)}, //2__
{_SOL,_2d,MUTE(_SOL)},//1--
{_LA, _4, LOUD(_LA)}, //2
{_SI, _4, MUTE(_SI)}, //3
{_SI, _4, MUTE(_SI)}, //3
{_SI, _4d,LOUD(_SI)}, //3.
{_RE1,_8, MUTE(_RE1)},//5
{_SI, _4, MUTE(_SI)}, //3
{_SI, _4, MUTE(_SI)}, //3
{_LA, _4, MUTE(_LA)}, //2
{_SI, _4, MUTE(_SI)}, //3
{_SI, _2d,MUTE(_SI)}, //3--
{_RE1,_4, LOUD(_RE1)},//5
{_MI1,_4, MUTE(_MI1)},//6
{_MI1,_4, MUTE(_MI1)},//6
{_MI1,_4d,LOUD(_MI1)},//6
{_RE1,_8, MUTE(_RE1)},//5
{_SI, _4, MUTE(_SI)}, //3
{_SI, _4, LOUD(_SI)}, //3
{_RE1,_4, MUTE(_RE1)},//5
{_MI1,_4, MUTE(_MI1)},//6
{_RE1,_2d,MUTE(_RE1)},//5
{_LA, _4, LOUD(_LA)}, //2
{_SI, _4, MUTE(_SI)}, //3
{_SI, _4, MUTE(_SI)}, //3
{_LA, _4d,LOUD(_LA)}, //3.
{_SI, _8, MUTE(_SI)}, //2
{_SI, _4, MUTE(_SI)}, //3
{_LA, _4, LOUD(_LA)}, //2
{_SI, _4, MUTE(_SI)}, //3
{_MI, _4, LOUD(_MI)}, //.6
{_SOL,_16,MUTE(_SOL)},//1
{_MI, _2d,MUTE(_MI)}, //.6--
{_LA, _16,LOUD(_LA)}, //2
{_LA, _16,LOUD(_LA)}, //2
{_LA, _16d,LOUD(_LA)}, //2
{_SOL,_8, MUTE(_SOL)},//1
{_MI, _4, MUTE(_MI)}, //.6
{_LA, _16,LOUD(_LA)}, //2
{_LA, _16,LOUD(_LA)}, //2
{_LA, _16d,LOUD(_LA)}, //2
{_SOL,_8, MUTE(_SOL)},//1
{_MI, _4, MUTE(_MI)}, //.6
{_LA, _4, LOUD(_LA)}, //2
{_SI, _4, MUTE(_SI)}, //3
{_SOL,_4, MUTE(_SOL)},//1
{_LA, _4d,LOUD(_LA)}, //2
{_SI, _8, MUTE(_SI)}, //3
{_RE1,_4, MUTE(_RE1)},//5
{_MI1,_16,LOUD(_MI1)},//6
{_MI1,_16,LOUD(_MI1)},//6
{_MI1,_16d,LOUD(_MI1)},//6
{_RE1,_8, MUTE(_RE1)},//5
{_SI, _4, MUTE(_SI)}, //3
{_LA, _16,LOUD(_LA)}, //2
{_LA, _16,LOUD(_LA)}, //2
{_LA, _16d, LOUD(_LA)}, //2
{_SOL,_8, MUTE(_SOL)},//1
{_MI, _4, MUTE(_MI)}, //.6
{_MI, _4, LOUD(_MI)}, //.6
{_RE, _4, MUTE(_RE)}, //.5
{_MI, _4, MUTE(_MI)}, //.6
{_MI, _2d,MUTE(_MI)}, //.6
{_MI, _4,0}, //stop
{_MI, _4,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.
*/
#endif
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -