音频应用   音频插件联盟,正版插件,欢迎大家选择!

 找回密码
 快速注册

QQ登录

只需一步,快速开始

阅读: 26123|回复: 1

[资讯] 系统码System Exclusive Message

[复制链接]

200

积分

0

听众

0

音贝

音频应用注册会员

Rank: 4Rank: 4

积分
200
发表于 2004-10-1 | |阅读模式
音频应用公众号资讯免费发布推广
系统码的运用在MIDI中有着至关重要的地位。如果你知道MIDI控制码(MIDI Controllers)的用处, 其实,那只是系统码的一小部分而已。在一些高档合成器工作站上,您也可以直接通过面板操作 来完成,可那实在太麻烦了,况且这类设备价位不低,音色却不一定很好。我们曾在一台廉价的 Yamaha Cs1x上已经可以做出绝对专业的电子舞曲,甚至完全怀旧的JAZZ,就是利用YAMAHA XG产 品在系统码开放上的优势。也就是说,有效地利用系统码,可以作出与设备价位“不协调”的音 乐,让您把现有设备绝对充分地发挥出来。设备不在多,也不在贵,而在于会用。(当然,如果 您实在有钱,多买点回家,当家具摆设也是蛮上层次的。) 系统码可对音色和音场做“质”的改变!这就是它的目的。每台MIDI音源都有它自己的一套系统码 处理办法。这儿,我们先给您介绍系统码的组成方式,这都是差不多的(还得感谢GM标准给咱留的 余地,那是题外话)。
MIDI信息以三种方式标记,二进制(bin)、十进制(DEC)、十六进制(HEX)。 MIDI设备之间传送信号的方法倾向于二进制,每一个字节都以0和1表现(但你不可能感觉到,也不 必去“感觉”);在乐谱记录和传送中使用十进制,(就是普通的阿拉伯数字);而对MIDI设备内部 工作而言,十六进制比另两种计算方法更为方便简单。对机器而言,二进制是一种非常简单的表达 方式,但是对人来说,太麻烦了。十六进制是一种折衷的方法(主要是出于成本原因),它虽然不象 十进制那么方便,但是比起二进制来可要方便多了。在MIDI信息中,大多数的数值是从0到127或者 从1到128。十六进制可以把它们全部变为两个字节,这样更容易被程序和硬件记录和确认,因此它 可以很方便的保存MIDI通道中的音乐信息,和在音轨中的所有必要参数。 MIDI系统的系统专属信息(MIDI System-Exclusive Massage),简称系统码。它包括以十六进制保 存的乐器内部的参数设置。
系统码被分割成三部分:首部(F0,厂商代码,设备号码,具体型号代 码, XG、GS合适代码),中部(具体的设定参数),结尾(checksum和F7)。 首部的格式几乎在每一台设备中都一样。“F0”是您老不加也得加的,好比买路钱得先奉上。
以Roland的GS格式的乐器为例,“ F0 41 10 42 12 40 01 30 06 09 F7 ”是串典型的系统码: F0 -- 系统码的开头 41 -- Roland 的厂商代码 (注: YAMAHA为43,KORG为42) 10 -- 设备号码 42 -- GS格式代码 12 -- 资料传送命令 40,01,30和06是主体部分地址(即,参数地址。它们几个是真正“做具体事务”的。) 09是Chacksum值 (现在有很多设备已不劳您去算了,据说Roland如此是为了设备所谓的“安全”) F7 -- 结尾 (和开头的F0一样,不加也要加。还记得老美的警察通完话会说一句“Over!”吗?) 在MIDI设备中,每一个可设定的参数都有自己的地址,它可以确保: 当你传递参数给你的设备中某 一个效果器时,其他的效果器不会收到这个参数。这跟我们每家每户的门牌号码作用一样。你可以 查看一下你的设备说明书的最后几页,应该有一张或几张你也许从来没看懂过的表格。这些表格记 录着音色参数和效果器参数等等,在电脑MIDI而言,都是些非常重要的东东!!!如果编制程序的工程 师不写说明的话,大概鬼才看得明白那么一堆数据代表什么含义。不过,看完以下内容,但愿您能 了解一二,然后试试调教调教您的设备。
以Roland 的Sound Canvas为例: 例一:如何把Reverb从默认的Hall2效果改成Delay效果。 在表格的音色参数(Patch Parameters)下,Reverb指令的地址是“40H 01H 30H”。我们把这些 数字输入到前面提到过的3字节的主体部分地址:( Cakewalk里你不需要写入“H”。) 40 \ 01 地址 (address) 30 / 再看器材说明书表,Reverb下有8个选择,Delay的号码是06,所以Reverb地址后紧跟的数字应是06。 下一步,我们要计算Chacksum。Chacksum(检查总数)是用来保证你的设备不会收到错误的参数。要 知道有时候你会一失足成千古恨——设备死机! 重新启动后,你会发现所有的是设定值、参数全都 没有了,就要比设备死机更可怕!!(哭...) 不要难过,不是所有MIDI设备都要您来算的。对某些设备,Cakwalk或其它软件会替你做。
给你一个公式: (只限于Roland的Sound Canvas,其它设备只好劳您自己动手查。) 80 - (sum of address byte + sum of data bytes)= Chacksum [即: 80 - (地址字节的总数 + 数值的总和) = Chacksum ] 在刚才的例子中,地址是40H 01H 30H,工作数值是06H,所以: Chacksum = 80 - (40 + 01 + 30 + 06) = 80 - 77 = 09 (哈哈!!! 文盲! 80 - 77 = 3 ) *** 错! 请注意: 80 和 77 都是十六进制(HEX),所以: 80 - 77 = 128 - 119 = 09 !!! (没错吧?) 在某些比较复杂的系统吗中,数值相加会超过80,怎么办?让我们假定在例一的数值中有一个非常 大的数---80(估计你不可能再碰到比80更大的数了,因为80 = 128,MIDI码的范围是0 - 128), 数值如下: Chacksum = 80 - (80 + 40 + 01 + 40 + 06) = 80 - 107 此时107大于80,那么接着算: =80 - (107 - 80) = Chacksum(再减) =80 - (87 - 80) = Chacksum =80 - 07 =Chacksum *** 注意:80 = 128, 07 = 07, 128 - 7 = 121, 121 = 79 =79(HEX) 80(HEX) = 128(DEC),07(HEX) = 07(DEC),128 - 7 = 121(DEC),121 = 79(HEX) 号,列出“例一”的系统码: F0 41 10 42 12 40 01 30 06 09 F7 OK!搞定!! 还有一点,是我们平时不太注意的,那就是:所有的地址都可以通过第二组系统码,而把第一组 系统码送到指定的通道。请看表格: 40H 1nH 02H Rx Channal 在Hex中,16个Channal从1开始。 channal 1 ,n= 1(11); channal 2,n = 2(12); ...... channal 10,n = 0(10); channal 11,n = A(1A); ...... channal 16,n=F(1F)。 所有的地址,都可以通过这些在第2组地址字节中的“n”,去指定为第n轨单独使用。 再以Roland 的Sound Canvas为例。 例二:使Channal 1 不响应Pitch Band的信号。首:F0H 41H 10H 42H 12H 地址:40H 11H 02H 数值:0FH 00H 结尾:F7H Chacksum :80 - (40 + 11 + 02 + 0F + 00) = 80 - 62 = 1E (chacksum) 系统码就是: F0 41 10 42 12 40 11 02 0F 00 1E F7 试一试这两个例子吧,串起来试也可以。多试几次你就会成为专家的! 做完的系统码可别忘了 贡献出来给大伙!
欢迎厂家入驻,推文!免费!微信:yinpinyingyong

3625

积分

7

听众

1433

音贝

音频应用新手发布

Rank: 3

积分
3625
发表于 2017-12-30 |
点赞了,好文章,不错啊,可以收藏学习了啊!~
欢迎厂家入驻,推文!免费!微信:yinpinyingyong
您需要登录后才可以回帖 登录 | 快速注册

本版积分规则

音频应用搜索

小黑屋|手机版|音频应用官网微博|音频招标|音频应用 (鄂ICP备16002437号)

Powered by Audio app

快速回复 返回顶部 返回列表