圣诞音乐贺卡beepMusic_v6d;--铃儿响叮当;
//圣诞音乐贺卡beepMusic_v6d;
本文下载链接:
prj_tst1–圣诞贺卡beepMusic_v6d.exe (调试优化版)
prj_tst1–生日贺卡beepMusic_v5.exe
beepMusic-我和我的祖国_v2.exe
相关链接:
音乐贺卡midiMusic_v0.exe;
/*/重要说明:
1.在版本号v6前加*号可切换到生日快乐歌;
2.程序结构;:
本程序分三部分;
(1)项目自定义;
(2)项目主程序;
(3)项目子函数;
//----------------------------------------------*/
//v5;20201203;"音乐贺卡beepMusic_v5";[src@beepMusic.cpp;]
//升级;--扩展键盘=22键;修改多数宏定义;降低函数耦合;增加简谱音符宏;
//----------------------------------------------*/
//proj用户自定义部分;--可修改部分;包括乐曲数据song[];键盘定义keyb[];
//----------------------------------------------*///v5;定义键盘keyb[];--休止符&键位;[键盘音符常量数组;默认keyb[];*名称不能随意改变;]
const int keyb[] //键盘音阶0,1~7,`1;[小字2组c2~c3;]
={ 131,147,165,175,196,220,247, //c0低音组1~7=>0~6;对应keyb[1~7];262,294,330,349,392,440,494, //c1中音组1~7=>0~6;对应keyb[8~14];523,587,659,698,784,880,988, //c2高音组1~7=>0~6;对应keyb[15~21];1047,
};//v5;定义简谱音符宏;
//换调;--C调d=0;F调d=4;C调低8度d=-7;C调高8度d=7;
//不能任意换调;[要能任意换调,键盘定义keyb必须使用12平均律;]
#define d 7 //如d>0时,则无休止符;
#define l(n) (n-1+0*7+d) //低音组1~7=>0~6;对应keyb[ 1~7 ];
#define m(n) (n-1+1*7+d) //中音组1~7=>0~6;对应keyb[ 8~14];
#define h(n) (n-1+2*7+d) //高音组1~7=>0~6;对应keyb[15~21];//v6;定义歌曲简谱song[];--铃儿响叮当;
#define t 150 //定义歌曲演奏速度;--音符最小延时ms;[默认t=250ms;典型范围100~300ms;]
const int song[] //歌曲的音符数据;--音符频率+时值;[默认歌曲音符数组song[];*名称不能随意改变;]
={// 等效简谱d=G;4/4;|,53 21 ,5-|,53 21 ,6-|,64 32 ,7- |55 42 3- |
// |,53 21 ,5-|,53 21 ,6-|,64 32 55 5|65 42 1- |
// ||:33 3 33 3| 35 12 3-| 44 44 43 3| 1.|32 21 2 5:||
// 2.|55 42 1- || l(5),t, m(3),t, m(2),t, m(1),t, l(5),t*6, l(5),t, m(3),t, m(2),t, m(1),t, l(6),t*6,l(6),t, m(4),t, m(3),t, m(2),t, l(7),t*6, m(5),t, m(5),t, m(4),t, m(2),t, m(3),t*6,l(5),t, m(3),t, m(2),t, m(1),t, l(5),t*6, l(5),t, m(3),t, m(2),t, m(1),t, l(6),t*6,l(6),t, m(4),t, m(3),t, m(2),t, m(5),t, m(5),t, m(5),t*4, m(6),t, m(5),t, m(4),t, m(2),t, m(1),t*6,m(3),t, m(3),t, m(3),t*4, m(3),t, m(3),t, m(3),t*4, m(3),t, m(5),t, m(1),t, m(2),t, m(3),t*6,m(4),t, m(4),t, m(4),t, m(4),t, m(4),t, m(3),t, m(3),t*4, m(3),t, m(2),t, m(2),t, m(1),t, m(2),t*4,m(5),t*4,m(3),t, m(3),t, m(3),t*4, m(3),t, m(3),t, m(3),t*4, m(3),t, m(5),t, m(1),t, m(2),t, m(3),t*6,m(4),t, m(4),t, m(4),t, m(4),t, m(4),t, m(3),t, m(3),t*4, m(5),t, m(5),t, m(4),t, m(2),t, m(1),t*6,l(0),0 //休止符<0;时值=0歌曲结束;--音符时值t*n针对beep优化;
};/*/v5;定义歌曲简谱song[];--祝你生日快乐;
define t 150 //定义歌曲演奏速度;--音符最小延时ms;[默认t=250ms;典型范围100~300ms;]
c#onst int song[] //歌曲的音符数据;--音符频率+时值;[默认歌曲音符数组song[];*名称不能随意改变;]
={
// 等效简谱d=C;3/4;|11 2 1| 4 3- |11 2 1| 5 4- |11 `1 6| 4 3 2| 77 6 4| 5 4- ||
// 等效简谱d=F;3/4;|55 6 5|`1 7- |55 6 5|`2`1- |55 `5 `3|`1 7 6|`4`4 `3 `1|`2 `1- || m(1),t*3/2, m(1),t/2, m(2),t*3, m(1),t*2, m(4),t*2, m(3),t*6,m(1),t*3/2, m(1),t/2, m(2),t*3, m(1),t*2, m(5),t*2, m(4),t*6,m(1),t*3/2, m(1),t/2, h(1),t*3, m(6),t*2, m(4),t*2, m(3),t*2, m(2),t*6,m(7),t*3/2, m(7),t/2, m(6),t*3, m(4),t*2, m(5),t*2, m(4),t*6,l(0),0 //休止符<0;时值=0歌曲结束;--音符时值t*n针对beep优化;
};
/*///v5;定义数据结构隔离宏;--发声参数的计算宏;[源数据@歌曲数据song[]&键盘定义keyb[];]
//[带参数的宏函数;简称带参宏;]
#define kf(p) (keyb[song[p]]) //取音符1=频率Hz;--键盘音高;
#define ms(p) (song[p+1]) //取音符2=时值ms;--音符时长;为0歌曲结束;
#define is(p) (song[p]>=0) //判断is音符;--为假是休止符<0;可用l(0)表示;//----------------------------------------------*/
//proj主程序;
//----------------------------------------------*/
//包含库函数;
#include <stdio.h> //标准I/O库;--包含printf()和scanf();[默认终端窗口console;]
#include <stdlib.h> //标准C库; --包含system()和_sleep();_beep(Hz,ms);[frequency,delay;]
//声明本地函数;
void xcolor(int p); //自动变色子程序;--简谱1~7映射到颜色case 8~14;
void shape(); //形状显示子程序;--图形轮廓曲线s[]=shape;
void noteSound(int p); //音符发声子程序;--音符指针p;//v5;主函数;
int main()
{ system("title 音乐贺卡beepMusic_v6"); //设置cmd窗口标题;system("mode con cols=43 lines=20"); //设置cmd窗口宽高=字符数;while(1) //公式0: for循环次数n=(终值-初值)/步长;[n=(iend-i0)/step;]{int p=0; //定义音符指针;同时赋初值0;--即从0号音符开始播放;while(ms(p)) //判断当前音符时值ms是否为0,就结束播放;{xcolor(p); //自动变色子程序;--简谱1~7映射到颜色case 8~14;shape(); //形状显示子程序;--图形轮廓曲线s=shape;noteSound(p); //音符发声子程序;--音符指针p;[实参&形参可同名;]p=p+2; //让p指向下一个音符;--每个音符占2个单元; }}return 0;
}
//----------------------------------------------*/
//proj本地函数;
//----------------------------------------------*/
//v5;音符发声子程序;[音乐核心函数;]
//函数接口&引用;
//形参; [音符指针p;]
//全局常量; [歌曲数据song[];键盘定义keyb[];最小单位延时t;]
//库函数; [蜂鸣器发声_beep(frequency,delay)@<stdlib.h>;]void noteSound(int p) //音符发声子程序;--音符指针p;
{printf("%4d,%4d",kf(p),ms(p)); //显示printf();--格式串(频率Hz,时值ms);if(is(p))_beep(kf(p),ms(p)); //发声Hz;--频率Hz+时值ms;[如果is(p)为假,则为休止符,不需发声;]_sleep(ms(p)-t/2); //休眠ms;--时值tsleep=(ms(p)-t/2)为提前从sleep醒来;
}
//----------------------------------------------*/
//v6;圣诞树显示子程序;--3级注释;[窗口尺寸43*20;单位是字符;其中,心形尺寸=35字符宽*15行;]
//字符串带格式打印;[函数原型printf(const char *, ...);--变参函数;%和*均可增加参数;]
//printf格式串("%*.*s")=>(tLen(i).sLen(i),a);[*号增加2个参数,%增加1个参数;共4个参数;]
//
//定义常量数组;--圣诞树字串a;树形轮廓数据s;
//const char a[]={"We wish you a Merry Christmas And Happy New Year !"}; //主体字串alpha;[共35字符;]
const char a[]={"Merry Christmas & Happy New Year!"}; //主体字串alpha;[共35字符;]
const int s[]={17,15,13,11,13,11,9,7,9,7,5,3,1,15,15}; //轮廓shape[15];[共15行;]
//定义宏;
#define X0 4 //左边距;--预留4个字符;[命名X0;意为起始x坐标从0开始;]
#define sLen(i) (35-s[i]*2) //宏函数;--计算第i行字符串长度 string Length;[公式1;]
#define tLen(i) (X0+35-s[i]) //宏函数;--计算第i行加左边总长度 total Length;[公式2;]void shape() //形状显示子程序;--图形轮廓曲线s[]=shape;
{// 打印祝福语英文;--从0~14行,依次逐行打印字符图形;
// printf("\n\n%*.*s\n", tLen(0), sLen(0), h); //头部h[];--单独打印第0行;printf("\n\n\n"); //头部空行;--空3行;[为了上下对称,后边文字也留3行;]for(int i=0;i<15;i++) //图形高15行;行数i=0~14;printf("%*.*s\n", tLen(i), sLen(i), a); //主体a[];--循环打印第0~14行;
// 打印祝福语中文;printf("\n恭祝圣诞与新年快乐!\n"); //下部3行;--空1行,文字1行;音符显示预留1行;
}
//----------------------------------------------*/
/*/v5;心形显示子程序;--3级注释;[窗口尺寸45*20;单位是字符;其中,心形尺寸=35字符宽*15行;]
//字符串带格式打印;[函数原型printf(const char *, ...);--变参函数;%和*均可增加参数;]
//printf格式串("%*.*s")=>(tLen(i).sLen(i),a);[*号增加2个参数,%增加1个参数;共4个参数;]//定义常量数组;--心形字串h,a;心形轮廓数据s;
const char h[]={"Happy to You !"}; //头部字串head;[仅占第0行;]
const char a[]={"Happy Birthday to You ! Happy Birth"}; //主体字串alpha;[共35字符;]
const int s[]={7,3,1,0,0,1,3,5,7,9,11,13,15,16,17}; //轮廓shape[15];[共15行;]
//
//定义宏;
#define X0 5 //左边距;--预留5个字符;[命名X0;意为起始x坐标从0开始;]
#define sLen(i) (35-s[i]*2) //宏函数;--计算第i行字符串长度 string Length;[公式1;]
#define tLen(i) (X0+35-s[i]) //宏函数;--计算第i行加左边总长度 total Length;[公式2;]void shape() //形状显示子程序;--图形轮廓曲线s[]=shape;
{
// 打印祝福语英文;--从0~14行,依次逐行打印心形;printf("\n\n%*.*s\n", tLen(0), sLen(0), h); //头部h[];--单独打印第0行;for(int i=1;i<15;i++) //行数i=1~14;printf("%*.*s\n", tLen(i), sLen(i), a); //主体a[];--循环打印第1~14行;
// 打印祝福语中文;printf("\n祝你生日快乐!\n");
}
//----------------------------------------------*/
//v5;自动变色子程序;--默认16色重新排序;[频率升序;集中亮色;]
// system("pause");
// system("color 0##c"); //设置cmd窗口背景色/前景色;--青色3/亮白f;
// c=(c+1)%16; //c=0~15;取16的余数;//定义宏;
#define c_idx (song[p]%7+8) //颜色索引宏;简谱1~7=>0~6映射到颜色8~14;[公式3;]
//随简谱音符1~7变色;
void xcolor(int p) //自动变色子程序;--简谱1~7映射到颜色case 8~14;
{if(is(p))switch(c_idx) //变色索引参数c_idx;--如果is(p)为假,则为休止符;{ case 1: system("color 04");break; //4 = 红色 case 2: system("color 06");break; //6 = 黄色 case 3: system("color 02");break; //2 = 绿色 case 4: system("color 03");break; //3 = 青色 case 5: system("color 01");break; //1 = 蓝色 case 6: system("color 05");break; //5 = 紫色 case 7: system("color 07");break; //7 = 白色 case 8: system("color 0c");break; //C = 亮红色case 9: system("color 0e");break; //E = 亮黄色case 10: system("color 0a");break; //A = 亮绿色case 11: system("color 0b");break; //B = 亮青色case 12: system("color 09");break; //9 = 亮蓝色case 13: system("color 0d");break; //D = 亮紫色case 14: system("color 0f");break; //F = 亮白色case 15: system("color 08");break; //8 = 灰色default: system("color");break; //0 = 黑色;[恢复con默认色;] }else system("cls"); //休止符清屏;
}//----------------------------------------------*/
圣诞音乐贺卡beepMusic_v6d;--铃儿响叮当;相关推荐
- 圣诞节音乐计算机铃儿响叮当,铃儿响叮当(圣诞 少儿音乐)
铃儿响叮当(圣诞 少儿音乐) - 圣诞歌曲 Vive le vent vive le vent Vive le vent dhiver Qui sen va sifflant soufflant Da ...
- 计算机弹音乐铃儿响叮当简谱,歌曲铃儿响叮当简谱
歌曲铃儿响叮当简谱 导语:1857年,美国波士顿假日学校的学生在教堂有一场感恩节演出,学生们请邻居皮尔彭特写了一首新歌,轻快的'旋律让孩子们马上就学会了,这首名为"One Horse Ope ...
- 【圣诞专场】—— 用python海龟库实现圣诞装饰(圣诞树,拐杖糖,圣诞火车,圣诞雪人,圣诞祝福)~~c++《铃儿响叮当》
本文主要介绍了圣诞装饰的python实现,展示出最终效果.实验步骤.及相关知识,在文末附录中,小编还会介绍一些这次活动没有运用到的海龟库知识.用c++编译出圣诞树.用c++编译出<铃儿响叮当&g ...
- 圣诞节音乐计算机铃儿响叮当,圣诞节歌曲铃儿响叮当歌词
圣诞节歌曲铃儿响叮当歌词 铃儿响叮当有很多的版本,是一首经典的`圣诞节歌曲,但是旋律相同,我们从中可以感受到愉悦.轻松的气氛.yuwenmi小编整理了<铃儿响叮当>中文歌词,快来看看吧. ...
- 这平安夜,我们来用python演奏一首铃儿响叮当吧
<铃儿响叮当>是一首脍炙人口的经典圣诞歌曲,今晚平安夜我来用python奏起来-- 用最原始的winsound库函数Beep()来演奏,用法如下: >>> import ...
- 铃儿响叮当c语言编程,铃儿响叮当吉他谱C调简单版儿歌
铃儿响叮当 曲目介绍 1857年,美国波士顿假日学校的学生在教堂有一场感恩节演出,学生们请邻居皮尔彭特写了一首新歌,轻快的旋律让孩子们马上就学会了,这首名为"One Horse Open S ...
- 铃儿响叮当用计算机怎么弹,铃儿响叮当钢琴弹奏教学视频
圣诞节到了,大街小巷都放起了<铃儿响叮当>,那轻松欢快的旋律在空中飘荡让人感受着节日的气氛.今天学习啦小编给大家整理了铃儿响叮当钢琴弹奏教学视频,希望对大家有所帮助. 铃儿响叮当钢琴弹奏教 ...
- 跨平台移动开发 Adobe Edge制作HTML5圣诞音乐贺卡DEMO
1.新建项目 2.添加背景,图片,音频 var au_to_play=new Audio(); au_to_play.src="audio/lap.mp3"; //指定文件名,这里 ...
- Postcard:简单的音乐贺卡制作
一个十分小巧,但效果很棒的在线音乐制作服务,简单的三步就能制作出自己的贺卡,通过email发送给你的朋友.你所要做的仅仅是: 上传图片 (jpeg.png.gif),上传音乐(mp3,20M以内),填 ...
最新文章
- 参照STM32时钟树配置STM32CubeMX Clock Configuration(STM32L011G4U6为例)
- html三列布局中间固定,常见的三列布局(左右固定宽度,中间自适应)
- 怎么装python的keras库_matlab调用keras深度学习模型(环境搭建)
- 【树莓派】更新系统镜像下载地址,可能是最简单粗暴的树莓派搭建个人网站教程...
- C语言实现Trie字典树 (附完整源码)
- python之闭包的实现
- c语言实现二分法_C语言实现二分法求解方程在区间内的根
- Format Currency Sample
- DOCKER-COMPOSE搭建MONGODB分片集群(单机版)
- Axure工具概述以及Axure RP9的安装汉化和授权
- MySQL建表语句综合
- 100G QSFP28 AOC有源光缆的分类及应用
- html5怎么唤起支付宝支付,H5唤起支付宝支付
- 「Python」利用高德地图做你想做之事
- linux can 总线socket接口测试使用
- TypeScript值比较、泛型函数类型和签名
- 三、Cypher的使用(知识图谱构建射雕人物关系)
- 名词从句:主语从句、宾语从句、表语从句、同位语从句
- 面试宝典之高分回答面试题(一)
- 思科网络模拟器EVE安装(附安装包)