您的位置:首页 > 其它

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

2013-04-09 14:53 253 查看
既然是做计算机音乐,一些计算机知识是必不可少的,对二进制熟悉的程序员可以跳过这一部分。

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


   

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

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

至此,如果你完整的读完了我的博文,你就可以自己制作个在电脑上模拟的钢琴了。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签:  sound 钢琴 音乐 C