现在的位置: 首页 > 综合 > 正文

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

2013年09月13日 ⁄ 综合 ⁄ 共 1699字 ⁄ 字号 评论关闭

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

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

   

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

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
至此,如果你完整的读完了我的博文,你就可以自己制作个在电脑上模拟的钢琴了。

抱歉!评论已关闭.