本人对乐器一窍不通,但是看到别人能够熟练地吹拉弹奏,总有一种羡慕之情。无奈只略懂一些简谱知识, 经过一番学习之后,发现了MIDI这个好东西,可以通过编程来播放自己喜欢的音乐。经过努力写一个编音乐小工具,只要识谱就可以操作,现在拿出来与大家分享一下,欢迎批评指正!文章末尾会附上源码地址,欢迎大家下载修改。
基本的MIDI函数有3个:midiOutOpen 、MidiOutShortMsg、MidiOutClose,分别用来打开MIDI设备、操作MIDI设备和关闭MIDI设备。我们就是通过程序操作这三个API来实现播放音乐的。
主要操作是对调用midiOutShortMsg( HMIDIOUT hmo,DWORD dwMsg ) ,dwMsg是4字节无符号整数,分成4个部分,每个部分1个字节:
字节 | 作用 |
最高字节(第3字节) | 基本不用 |
字节2 (第2字节) | 音量0-0x7F或不用 |
字节1 (第1字节) | 音阶0-0x7F或音色 |
最低字节(第0字节) | 命令或状态、通道 |
第0字节16进制高位 | 命令或状态0x9/0xC、0xB |
第0字节16进制低位 | 通道0-0xF |
具体格式如下(16进制):
字节3 | 字节2 | 字节1 | 字节0 | 功能 |
00 | - | 音色值 | CN | 为通道N指定一个音色值,即选择一个乐器,乐器有128种 |
00 | 音量值 | 音阶值 | 9N | 在通道N上,使用指定音量,演奏一个即定乐器的指定音阶 |
00 | - | 0x7B | BN | 停止通道N上的演奏 |
1. 可以设置主旋律和伴奏部分的音调以及乐器音色,设置音乐每分钟的节拍数
2. 两个文本框的内容为音乐的编码,要自己手动输入。
3. ”31,4”中的31为中音duo,41为高音duo,21为低音duo,其它依次类推。
4. ”31,4”的4含义为中音duo播放一拍,也指一个全音符。计算方式为:音符节拍数*4
5. 点击“播放”,电脑就可以播放出美妙的音乐。试试吧!!!
6. 大家猜猜程序里自带的歌曲是什么,欢迎在评论区留言!
源码地址:https://gitee.com/JiuTianYinHe/MIDITools.git。
大家可以自行下载修改,有好的意见建议,欢迎留言!!!
每天一个小知识,每天进步一点点!!![加油][加油][加油]
页面更新:2024-04-22
本站资料均由网友自行发布提供,仅用于学习交流。如有版权问题,请与我联系,QQ:4156828
© CopyRight 2020-2024 All Rights Reserved. Powered By 71396.com 闽ICP备11008920号-4
闽公网安备35020302034903号