使用midi接口制作模拟电钢琴

既然是做计算机音乐,一些计算机知识是必不可少的,对二进制熟悉的程序员可以跳过这一部分。

常用十六进制与十进制对照表

   

并非是记住这些,而是对这些常用的数有所熟悉,在看别人的程序的时候不要不知道这些数是做什么的就行了。

MIDI文件有很多信息构成的指令。一些信息,只由1字节构成,有些有些有2个字节,还有一些由3个字节构成,还有由很多字节构成。

所有的信息有一点是共同的,那就是第一个字节的信息是状态。状态字节的0x80到0xef是可以在16个 MIDI通道的任何一个出现的信息。正因为如此,这些是所谓的声音信息。这些状态字节有8位 二进制数,可以把8个二进制位分成两个 4位,即一个高位和一个低位 。例如,一个状态字节的0x92可细分成9 (高位 )和2 (低位 ) 。高位告诉你是什么类型的MIDI信息,低位说明信息操作的MIDI通道序号。以下是所有可能的高位值,每个代表的声音信息类型:
下面具体解释一下上面的术语(参考百度百科)
停止发声
类别:声音
目的
指出要应该停止的音。
0x80到0x8f而低位是MIDI通道。
数据
后续两个数据字节。
第一个数据是音符号码。有128个音符,对MIDI设备,编号为0至127(其中,中央C是60号)。
第二个数据字节是速度,一个从0到127的值。这表明,应该多么迅速地停止发声(其中127是最快的)。




开始发声
类别:声音
目的
指出要发出的声音。
状态字节
0x90到0x9f而低位是MIDI通道。
数据
后续两个数据字节
注意
在理论上,每个音符最终应由各自的停止发声信息终了。






轮指
类别:声音
目的
对已经发出的声音连续再弹。
状态字节
0xa0到0xaf而低位是MIDI通道。
数据
后续两个数据字节。
第一个数据是音符代号。有128可能的音符,对MIDI设备,编号为0至127个(其中中央C音符代号是60)。
第二个数据字节是音量的值,从0到127(其中127是强音) 。
注意




控制器改变
类别:声音
目的
设定了一个特定控制器的值。状态字节
0xb0 ,到0xbf而低位是MIDI通道。
数据
后续两个数据字节。
第一个数据是控制器的号码( 0到127)。
第二个数据字节的值是控制器应设置的值,从0到127 。






改变音色
类别:声音
状态字节
0xc0,到0xcf而低位是MIDI通道。
数据
一个数据字节。这是乐器编号,从0到127 。
注意
对MIDI音色 ,定义了一套标准,以便更加兼容。这个规范是所谓的通用MIDI标准。




通道演奏压力
类别:声音
状态字节
0xd0到0xdf而低位是MIDI通道。
数据
一个数据字节,值从0到127 (其中127是最响) 。


音高
类别:声音
状态字节
0xe0到0xef而低位是MIDI通道。
数据
后续两个数据字节。这两个字节应结合在一起,形成一个14位值。






系统专用信息
类别:系统公用
目的
用来传送一些数据,这是具体到一个MIDI设备。此外, sysex可能被用来传递信息,就是特定的装置。
状态字节
开始于0xf0 。结束于0xf7。
数据
可以有任何数量的数据字节。
知道如何控制midi器件后还需要一些表格来支持这些命令。
1.音色表格: http://blog.csdn.net/jia_zhengshen/article/details/8777194 音色表格主要是介绍个中乐器的代码。例如钢琴,吉他,枪声等的代号。
2控制器表格: http://blog.csdn.net/jia_zhengshen/article/details/8777836  这个主要是用来调节音量,调节平衡控制的等等。在调节音乐的优美程度很有用。
3.midi音符代码表: http://blog.csdn.net/jia_zhengshen/article/details/8778457   可以确定要演奏的是钢琴还是吉他了,可以调节音量了,还差什么呢?你的钢琴不会就一个键吧!猜对了,这张表就是选择你按下的是哪个音符的,当然了,如果想知道按下的是哪个键还得参考琴键的分布了。链接地址为 http://blog.csdn.net/jia_zhengshen/article/details/8778637
至此,如果你完整的读完了我的博文,你就可以自己制作个在电脑上模拟的钢琴了。


  • 3
    点赞
  • 22
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
一、这两个虚拟MIDI通道软件是5大教程里要用到的软件,且不太容易找到。5教程中提到的其它软件(freepiano+ EveryonePiano+Addictive Keys+EOP简谱大师),百度搜索都很容易可以得到。 二、5个PDF教程为本人原创,后期如有空,会上传百度经验(百度经验ID:morzate),但是百度经验的通过率不是太高,对图片、对标题、对正文的要求太多了)。 三、本付费附件包的内容包括以下三个方面,PDF教程的核心文字下面也会列出。 1、虚拟MIDI通道软件MidiYoke 2、虚拟MIDI通道软件loopMIDI 3、5大PDF教程 四、 第1个PDF教程《01键盘侠用PC电脑键盘虚拟MIDI键盘弹模拟钢琴并另存为MIDI教程——freepiano(免费软件)》,主要内容简介如下: 4.1下载freepiano 4.2解压后双击freepiano.exe打开它,全默认设置 4.3点击录制,PC键盘弹奏,再点停止。 4.4点左上角的菜单“录音”导出MIDI ,wav,MP4 五、 第2个PDF教程 《02实体MIDI键盘弹模拟钢琴并另存为MIDI教程——freepiano(免费软件)》,主要内容简介如下: 5.1下载freepiano解压后双击freepiano.exe打开它 5.2点击 设置,设备,MIDI输入,选你的实体MIDI键盘 5.3点击录制,用MIDI键盘弹奏,再点停止 5.4再点左上角的菜单“录音” ,导出MIDI ,wav,MP4 六、 第3个PDF教程 《03键盘侠用PC电脑键盘虚拟MIDI键盘弹钢琴EOP格式转MIDI格式教程(WIN10)》,主要内容简介如下: 6.1、安装2个虚拟MIDI通道软件( Midi Yoke(虚拟MIDI接口) + loopMIDISetup) 期间需要重启, loopMIDI中增加2个midi虚拟端口loopMIDI+loopMIDI1; Midi Yoke增加16个端口后) ——一般这两个loopmidi是默认随开机启动的,运后续步骤都必须开启这两个虚拟软件。 6.2、安装虚拟PC键盘钢琴软件 EveryonePiano. (因为EveryonePiano 不能将内录另存为MIDI,只能存为eop) 6.3、安装能内录弹出的PC键盘音乐,并能另存为MIDI的软件Addictive Keys(因为EveryonePiano 不能将内录另存为MIDI,只能存为eop) 6.4、 第一步,将EveryonePiano的音源设置为虚拟端口loopMIDI;同时设置里,勾选“音源自身独立控制通道”; 第二步,再将Addictive Keys的输入选择为虚拟端口loopMIDI。 6.5、打开Addictive Keys的录音功能,再点开EveryonePiano进行弹奏或者播放EOP或者EOPN文件(需要用“EOP简谱跟我弹插件”播放EOPN),关闭Addictive Keys的录音功能,另存为MIDI。结束。 七、 第4个PDF教程 《04实体MIDI键盘弹模拟钢琴EOP格式转midi格式教程(WIN10)》,主要内容简介如下: 7.1、安装钢琴模拟软件 EveryonePiano. (因为EveryonePiano 不能将内录另存为MIDI,只能存为eop) 7.2、安装能内录弹出的PC键盘音乐,并能另存为MIDI的软件Addictive Keys(因为EveryonePiano 不能将内录另存为MIDI,只能存为eop) 7.3、第一步,将EveryonePiano的音源设置为Addictive Keys ;同时设置里,勾选“音源自身独立控制通道”;Everyone piano设置里,MIDI输入中选择你的实体MIDI键盘;第二步,将Addictive Keys的输入选择为端口-你的实体MIDI键盘。 7.4、打开Addictive Keys的录音功能,再点开EveryonePiano,后在实体MIDI键盘上弹奏,弹完关闭Addictive Keys的录音功能,另存为MIDI。结束。 八、 最后第5个PDF教程《05打开MIDI转简谱教程——EOP简谱大师(免费软件)》,主要内容简介如下: 1.1、下载EOP简谱大师 1.2、双击EopNMNMaster打开它,安装它 1.3、安装后找到桌面EOPNMNMaster图标, 双击打开。 1.4、在菜单“文件”→打开→格式下拉选MID,选择你的MIDI 文件输入,简谱就出来了,如果你机器上有PDF虚拟打印机(如果装有福昕pdf阅读器,会自动出现一个虚拟PDF打印机Foxit Reader PDF Printer),还可以把简谱打印成pdf。
单片机实现MIDI接口是指利用单片机进行MIDI信号的输入和输出。MIDI(Musical Instrument Digital Interface)是一种数字音频传输协议,用于音乐设备之间的通信和控制。 要实现MIDI接口,首先需要了解MIDI信号的传输协议。MIDI信号是通过串行通信方式传输的,使用标准的5针DIN接口。在单片机中,可以通过将MIDI信号连接到特定的引脚,然后使用串口通信或其他通信方式来读取和发送MIDI信号。 单片机接收MIDI信号时,可以通过实现UART(通用异步接收器/发送器)来接收来自MIDI设备的数据。UART可以通过硬件或软件方式实现,接收到的MIDI数据可以解析并进行相应的处理。例如,可以解析MIDI消息中的音符、音量、音色等信息,并根据需要控制相应的音乐设备。 单片机发送MIDI信号时,可以通过将相应的数据传输到UART发送缓冲区,然后通过UART发送至MIDI设备。发送的MIDI数据应按照MIDI信号的传输协议进行格式化,包括数据头、状态字节、数据字节等。 在实现MIDI接口时,需要参考MIDI信号的传输协议,并根据单片机的硬件和软件特性进行相应的编程。此外,还需要了解MIDI设备的功能和控制方式,以便实现相应的命令和功能。 通过单片机实现MIDI接口,可以实现MIDI设备和其他音乐设备之间的通信和控制。这为音乐爱好者和音乐制作人提供了更多的自定义和创作空间,并能够创造出更加丰富多样的音乐效果。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值