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

乐器数字接口(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音乐程序设计

可以看看效果
在这里插入图片描述

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.rhkb.cn/news/25498.html

如若内容造成侵权/违法违规/事实不符,请联系长河编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

FL Studio21水果编曲高级版本音乐编曲工具

说到电音已经不是很新鲜的话题了&#xff0c;在这个自媒体视频为王的年代&#xff0c;相信很多年轻人都想成为一个优秀的up主&#xff0c;在各大媒体网站上上传一些自己录制的游戏剪辑&#xff0c;再配上一段劲爆的电音&#xff0c;可能视频就会从3分变成7分的评价了。筱黑君也…

Fruity Loops Studio2022最新版水果音乐编曲软件

FL Studio水果编曲英文名&#xff1a;Fruity Loops Studio&#xff0c;简称FL&#xff0c;是国人熟知的水果编曲工具&#xff0c;圈内音乐人习惯叫它“水果”。FL Studio是一个全能音乐制作环境或数字音频工作站&#xff0c;可以进行编曲、剪辑、录音、混音 &#xff0c;让电脑…

FL Studio21傻瓜式编曲音乐编辑器FL水果软件

在我看来软件只是工具.不管哪个都可以做任何风格的音乐,区别只是软件操作相对而言fl studio更容易上手,在国内也很受欢迎,弱项应该是混音上如果你做电音的话 还是FL更好一些 ,因为他就是为舞曲而生的!flstudio内配置音源、插件、录音软件、混音效果!而FLStudio则更偏向于电子音…

自己写歌怎么编曲?4款超好用编曲软件推荐

对很多音乐爱好者而言&#xff0c;从单独的欣赏作品&#xff0c;过渡到按自己的心情创作作品&#xff0c;是一段奇妙又欣喜的体验。而音乐编曲&#xff0c;尤其是电音编曲&#xff0c;Daw&#xff08;宿主软件&#xff09;是一个很重要的元素。 编曲软件很多&#xff0c;但实际…

FL StudioV21电脑版水果编曲音乐编辑软件

这是一款功能十分丰富和强大的音乐编辑软件&#xff0c;能够帮助用户进行编曲、剪辑、录音、混音等操作&#xff0c;让用户能够全面地调整音频。FL水果最新版是一款专业级别的音乐编曲软件&#xff0c;集合更多的编曲功能为一身&#xff0c;可以进行录音、编辑、制作、混音、调…

FL Studio21中文版编曲音乐宿主软件

FL Studio这款宿主应该算得上是全中国最多人用的宿主软件了&#xff0c;不知道有多少接触音乐制作的同学最开始就是用的这个&#xff0c;在我看来&#xff0c;FL Studio是对小白同学比较友好的&#xff0c;界面简单&#xff0c;自带的素材多&#xff0c;而且比较适合做电音。FL…

Android平台上做一个完美的音乐频谱--Music Audio Glow

一直在网上寻找一个做得比较好的音乐的频谱&#xff0c;始终未能找到一个很合适自己用的音乐频谱&#xff0c;后面实在没办法&#xff0c;就自己研究着做了&#xff0c;基本实现的功能有&#xff1a; 1、能够修改频谱柱子的图案 2、能够修改整个软件的颜色&#xff0c;包括&a…

FL Studio2022水果编曲音乐制作软件自带完整插件

FL Studio 2022是一款非常好用的音乐制作软件&#xff0c;又称水果编曲软件&#xff0c;软件集合了录音、混音、编辑等多种功能于一体&#xff0c;能够完成各种各样的音乐编曲工作&#xff0c;强大的音乐制作功能受到了很多用户的喜爱&#xff0c;帮你完成各种类型音乐的编曲制…

FL Studio21中文版D编曲数字音乐工作软件

随着现在人们的生活水平不断提高&#xff0c;我们的精神生活也越来越丰富&#xff0c;对于现在的年轻人来说&#xff0c;DJ舞曲是一个较受欢迎的领域&#xff0c;有许多年轻人对DJ这个职业感兴趣&#xff0c;想要深入了解DJ编曲这份工作&#xff0c;那么今天我们就来说一说DJ编…

FL Studio2023最新版编曲音乐制作数字音频软件

FL Studio2023即“Fruity Loops Studio”&#xff0c;也就是众所熟知的水果软件&#xff0c; 全能音乐制作环境或数字音频工作站&#xff08;DAW&#xff09;。FL Studio可以编曲、剪辑、录音、混音&#xff0c;让你的计算机成为全功能录音室。 FL Studio2023是一个完整的软件音…

FL Studio21电脑版免费音乐编曲宿主软件下载

编曲主要考验电脑的处理器&#xff08;CPU&#xff09;性能、声卡。所以配置电脑的时候有条件的伙伴可以着重考虑这两方面。现在市面上惠普、戴尔、华为、苹果等品牌的电脑&#xff0c;在四五千这个范围的商务本&#xff0c;就可以胜任编曲工作。但是在一些较为庞大的工程中可能…

同样的参数,jmeter请求失败,postman可以请求成功的原因

postman可以不用手动输入编码 jmeter需要手动输入编码方式 在jmeter路径后加入编码方式就可以请求成功了

HTTP Postman发请求响应失败问题

1、Postman发送请求时会自动加上一些请求头信息&#xff0c;如&#xff1a;Postman自带的token信息有时候会导致一些系统不识别而响应错误信息&#xff0c;可以关闭Postman的token信息

postman请求失败

先确保自己的请求链接没有问题&#xff0c;再来找找postman setting的问题 首先看看setting里面的ssL这个是否处于off状态没有的话&#xff0c;设置一下off重启 如果还不行&#xff0c;就看看这个代理是否打开了&#xff0c;打开的话&#xff0c;也设置掉&#xff0c;本人就…

PostMan 请求失败

发送请求提示 could not get any response 方法一: File -> Settings -> General, SSL Certificate Verification 勾选去掉 方法二: Hearders 里面 只保留一项 Content-Type, 其他的要么删除&#xff0c;要么勾选去掉 先执行方法一, 不行再执行方法二

postman发送https post请求

postman发送https post请求 1、点击File选择Setting 2、General中选择ssl认证关闭 3、Certificates中选择点击Add Certificate 4、输入请求服务的IP&#xff0c;点击add 5、选择File new postman window 6、选择请求方式为post 填入url &#xff0c;request 输入headers参…

Postman发送请求失败报错“Error: getaddrinfo ENOTFOUND xxx.xxx.xxx.xxx“

异常 使用 Postman 发送 POST 请求报错如下&#xff08;注&#xff1a;请求URL是无效的&#xff0c;但错误是存在的&#xff09;&#xff1a; 原因 眼睛看花了&#xff0c;复制IP时是直接使用鼠标双击选中IP进行粘贴&#xff0c;所以仔细观察发现IP地址同 http:// 之间存在…

开发技术-postman可以请求通,代码请求不通

使用 FeignClient 调用第三方的接口&#xff0c;在测试环境是没有问题的&#xff0c;但是调用对方的生产环境&#xff0c;出现了 400 错误 <html><body><h1>400 Bad request</h1> Your browser sent an invalid request. </body></html> …

发送请求时,postman正常,微信小程序失败?

问题背景&#xff1a;前端发送一个json对象&#xff08;字符串格式&#xff09;&#xff0c;后端用springMVC接收。问题是&#xff1a;后端代码不变&#xff0c;前端用postman发送数据时一切正常&#xff1b;但如果前端用微信小程序发送&#xff0c;后端就无法接收到数据&#…

【Postman】测试 Post 请求时传递数据失败 常见传参方式

近期尝试使用 nod.js vue 开发一个小项目。 第一次使用 postman 测试&#xff0c;遇到 POST 请求数据发送不过去的问题&#xff0c;做一个记录。 JS 部分代码 //用户注册接口 router.post(/register, function (req, res, next) {//验证if (11) {//console.log(req.body);res…