乐器数字接口(MIDI)简介

乐器数字接口(Musical Instrument Digital Interface,MIDI),是20世纪80年代初为解决电声乐器之间的通信问题而提出的,是电子乐器制造商们建立的通信标准,是电子乐器之间以及电子乐器与电脑之间的统一交流协议。从一个MIDI设备转送到另一个MIDI设备上去的数据就是MIDI消息(MIDI Message)。
例如,在电子钢琴上按下某个音符对应的键(称为开音),则产生一个MIDI消息,该消息记录了所按的键、力度;当松开所按的键时(称为关音),便产生另一个MIDI消息用以表示所松开的键及松开的速度。当然这些信息都是易编辑的。
显然,MIDI消息不是音频波形的数字化,而是一种电子乐谱。MIDI已成为编曲界最广泛的音乐标准格式,可称其为“计算机能理解的乐谱”。

MIDI音符编码


是不是看晕了,没关系,我在下面给出了简易版本,还容易编曲哦~(求赞赞)

enum枚举音符参数

enum Scale  //音阶参数
{Rest = 0, C8 = 108, B7 = 107, A7s = 106, A7 = 105, G7s = 104, G7 = 103, F7s = 102, F7 = 101, E7 = 100,D7s = 99, D7 = 98, C7s = 97, C7 = 96, B6 = 95, A6s = 94, A6 = 93, G6s = 92, G6 = 91, F6s = 90, F6 = 89,E6 = 88, D6s = 87, D6 = 86, C6s = 85, C6 = 84, B5 = 83, A5s = 82, A5 = 81, G5s = 80, G5 = 79, F5s = 78,F5 = 77, E5 = 76, D5s = 75, D5 = 74, C5s = 73, C5 = 72, B4 = 71, A4s = 70, A4 = 69, G4s = 68, G4 = 67,F4s = 66, F4 = 65, E4 = 64, D4s = 63, D4 = 62, C4s = 61, C4 = 60, B3 = 59, A3s = 58, A3 = 57, G3s = 56,G3 = 55, F3s = 54, F3 = 53, E3 = 52, D3s = 51, D3 = 50, C3s = 49, C3 = 48, B2 = 47, A2s = 46, A2 = 45,G2s = 44, G2 = 43, F2s = 42, F2 = 41, E2 = 40, D2s = 39, D2 = 38, C2s = 37, C2 = 36, B1 = 35, A1s = 34,A1 = 33, G1s = 32, G1 = 31, F1s = 30, F1 = 29, E1 = 28, D1s = 27, D1 = 26, C1s = 25, C1 = 24, B0 = 23,A0s = 22, A0 = 21
};
enum Voice //声调
{L1 = C3, L2 = D3, L3 = E3, L4 = F3, L5 = G3, L6 = A3, L7 = B3,M1 = C4, M2 = D4, M3 = E4, M4 = F4, M5 = G4, M6 = A4, M7 = B4,H1 = C5, H2 = D5, H3 = E5, H4 = F5, H5 = G5, H6 = A5, H7 = B5,LOW_SPEED = 500, MIDDLE_SPEED = 400, HIGH_SPEED = 300,_ = 0XFF
};

凭借上面的代码,你就可以调用来谱曲啦,还可以自己修改speed,以及_的数量得到节奏不同的音乐。

我们一起学猫叫

void Cats()
{HMIDIOUT handle;cout << "我们一起学猫叫~~~" << endl;cout << "\n\n我们一起学猫叫\n\n一起喵喵喵喵喵\n\n在你面前撒个娇\n\n哎呦喵喵喵喵喵\n\n我的心脏砰砰跳\n\n迷恋上你的坏笑\n\n你不说爱我我就喵喵喵\n\n";midiOutOpen(&handle, 0, 0, 0, 0);int volume = 0x7f;int voice = 0x0;int sleep = 150;int helloworld[] = {  // 声调M1,_,M2,_,M3,_,L5,_,M1,_,M3,_,M3,_,_,_,M2,_,M1,_,M2,_,M5,_,M5,_,M5,_,M5,_,_,_,M1,_,L7,_,M1,_,M1,_,M1,_,M1,_,M1,_,_,_,L7,_,M1,_,L7,_,M1,_,L7,_,L6,_,L5,_,_,_,L5,_,L5,_,L6,_,L1,_,L4,_,L6,_,L6,_,_,_,L5,_,L3,_,L5,_,L3,_,L5,_,M2,_,M1,_,_,_,L5,_,M3,_,M3,_,M3,_,M4,_,M5,_,M1,_,M1,_,M2,M3,M2,_,_,_,_,_,_,_,};for (auto i : helloworld){if (i == LOW_SPEED || i == HIGH_SPEED || i == MIDDLE_SPEED){sleep = i;continue;}if (i == _){Sleep(150);continue;}voice = (volume << 16) + (i << 8) + 0x90;midiOutShortMsg(handle, voice);Sleep(sleep);}midiOutClose(handle);}

具体的音乐程序已经封装好放这里啦
MIDI音乐程序设计

可以看看效果

MIDI 音乐程序设计 (可以自己编曲的快乐)相关推荐

  1. 全能音乐制作环境——水果编曲软件FL Studio 20.9版本下载安装配置教程

    目录 前言 一.FL Studio安装 二.使用配置 总结 前言 FL Studio是一款流行的图像线软件制作和编辑音频文件.作为一款领先的创新产品,该软件能够满足在创作音乐方面的需求.有了这个产品, ...

  2. 游戏音乐制作中编曲是什么?

    在游戏音乐制作中,编曲专业术语,对于一些外行的游戏厂商来说,不太明白什么是编曲,下面小编来告诉大家. 编曲:含义是利用与原作不同的手法或表演手段,将一首音乐作品,或作品的一部分加以改写的创作;也指改编 ...

  3. FL Studio中文版21最新免费音乐编曲软件制作工具

    FL Studio较为适合专业的音乐制作者,操作难度较大,学习门槛也较高:Studio One则主打一站式的音乐制作,从编曲到录音到后期的专辑制作都可以在其中实现,同时操作难度不大,对初学者和业余爱好 ...

  4. 用计算机弹的九八k简谱,作曲 编曲 配器 录音 混音 母带 MIDI 电脑音乐制作(超级全能宝典)...

    超过三度以上的跳进在小节之间是不谐和的.在初学者中,最好不要用. 6 避免过多使用同方向跳进,三度以上的连续跳进会使旋律失去平衡.特别是单旋律的写作时不要这样.通常在超过三度以上的跳进,最好要能反向级 ...

  5. Python编曲实践(九):如何计算并估计音乐的调性(大/小调+主音)?Krumhansl-Schmuckler调性分析算法的原理与实现

    前言 之前,我在 Python编曲实践(五)中记录了构建MIDI数据集Free MIDI Library的过程,其中预处理阶段十分重要的一个步骤是移调,即把所有音乐的调性调整为C大调或A小调,这样会使 ...

  6. Studio One5编曲和音频后期制作音乐编辑软件更新及新增功能介绍

    Studio One5是一款强大的编曲和音频后期制作软件,它为用户提供了"工作室"概念的服务,从乐曲制作.音频录制,到至关重要的后期混音制作,都可以在这里完成. Studio On ...

  7. 音乐制作编曲工具FL Studio 20高清视频教程

    FL Studio水果音乐制作软件,一款强大的音乐编曲软件,可以进行编曲.剪辑.录音.混音.本套教程为高清中文教程. 教程目录 1,介绍和初始化 2,菜单栏讲解 3,midi的编辑功能 4,钢琴卷帘窗 ...

  8. 小白如何选择一款好用的音乐编曲软件,看这里

    对很多音乐爱好者而言,从单独的欣赏作品,过渡到按自己的心情创作作品,是一段奇妙又欣喜的体验.而音乐编曲,尤其是电音编曲,Daw(宿主软件)是一个很重要的元素. 编曲软件很多,但实际上,不同的软件有着不 ...

  9. 2021年4款好用的音乐编曲软件推荐

    对很多音乐爱好者而言,从单独的欣赏作品,过渡到按自己的心情创作作品,是一段奇妙又欣喜的体验.而音乐编曲,尤其是电音编曲,Daw(宿主软件)是一个很重要的元素. 编曲软件很多,但实际上,不同的软件有着不 ...

最新文章

  1. iOS之上架打包时报错:ERROR ITMS-90086: Missing 64-bit support.
  2. ijcai statistics
  3. 中石油训练赛 - Historical Maths(二分)
  4. UMEditor上传图片配置
  5. 2022 智能语音技术最新进展与发展趋势
  6. 好的测试用例应能证明软件是正确的.,好的测试用例应能证明软件是正确的。...
  7. Spring整合MyBatis之SqlSessionFactory对象的产生
  8. Windows 10 Java安装教程
  9. 爬虫练习:南阳理工学院ACM题目信息
  10. bom树形结构 表设计_按树型显示BOM的结构
  11. ReactNative学习路线
  12. 招行两地一卡——PayPal美元兑换人民币的最佳解决方案
  13. OpenERP中商品销售的处理及案例解析
  14. X3D代码理解之demo(cfg)
  15. 品牌如何开展饥饿营销?
  16. 用电脑键盘打出常用特殊符号
  17. 深度学习 Deeplab语义分割
  18. 处理iphone 微信中.play()方法不能播放的问题
  19. virtual-box及相关系统镜像文件下载
  20. 设计模式之代理模式(静态代理、Java动态代理、Cglib动态代理)

热门文章

  1. 增强型MOS管工作相关问题
  2. 自动控制原理知识点梳理——6.线性系统的校正方法
  3. 基于STM32的照片查看器课程报告
  4. 排列组合c几几怎么用计算机算,排列组合A几几C几几的,有什么区别,都怎么计算来的?...
  5. 为什么说期货交易者依靠程序化交易系统接口才能获得成功
  6. 代谢组+基因组联合分析
  7. 1500ml等于多少l_1500毫升是多少升
  8. 打印快递单不显示收货人省市区,提供两种解决方案
  9. realsense d435i标定imu与camera
  10. 在开发环境使用 TiUP安装TiDB集群