|
发表于 2004-10-7
|
|阅读模式
《MIDI原理与开发应用》笔记
第一章 计算机音乐概论
1. MIDI(Musical Instrument Digital Interface)协议发展过程:
1983年MIDI协议1.0
1990年Roland公司:GS标准
1991年国际乐器制造协会:General MIDI(GM协议),规定MIDI音色排序表,收录常用16类乐器,每类各8种音色,一共有128种音色
1994年YAMAHA公司:XG音源标准
2. 数字声频主要格式
扩展名 说明
Aiff (Audio Interchange File Format) Apple计算机上的声音文件存储格式
Au (Audio) Sun, NeXT公司的声音文件存储格式
Mp2 MPEG-1 Audio Layer I, II
Mp3 MPEG-1 Audio Layer III
Mp4 MPEG-4 Audio/Video
ogg Ogg Vorbis的声频文件格式
Rm (RealMedia) RealNetworks公司的流式媒体文件格式
Ra (RealAudio) RealNetworks公司的流式媒体文件格式
Voc (Voice) Creative Labs公司的声音文件格式
Wav (Waveform) Windows采用的波形声音文件存储格式
Wma (Windows Media Audio) Microsoft公司的流式声频文件格式
Wav格式:
基于PCM编码的WAV文件是音质最好的声频文件格式。采用44.1kHz的取样频率和16bit量化位数的WAV音质可以与CD音质相差无几。
Mp3格式:
12:1压缩比,接近CD音质
Mp3PRO,在基本不改变文件大小的情况下改善原先的Mp3文件音质。
Wma格式:
支持流技术,即边读边放,实现在线广播。压缩率18:1,还可通过DRM加入防复制功能,可用来保护版权。
根据码率和取样率的不同,WMA与MP3音质各有高低。
Ra/Rm/Rmx格式:
可实时传输声频信息,主要适用于网络在线播放。除了边读边放,还支持使用特殊协议来隐匿文件真实网络地址,从而提供只播放不下载的欣赏方式。
3. 基于数字声频技术的音乐制作方法
4. 乐理基础
人耳感知范围:20Hz - 20kHz
乐音的三(四)大要素:响度(振幅大小决定)、音高(振动频率——基频决定)、音色/音品(声音的频谱成分决定)、时值(具有相对性)
基音与泛音:基音又称主频,基频,泛音又称谐频。弦的振动形成的声波中最低频率称基音,基他基频整数倍的频率为泛音。基音决定声调,泛音决定音色。
节拍:2/4表示以四分音符为一拍,每小节二拍。
速度(Tempo):J=120表示每分钟演奏120个四分音符。这种速度下,每个四分音符时值为0.5秒。
织体:由主旋律(音乐主线条),副旋律(主旋律陪衬),和声层,低音层(支撑音乐),节奏层(一般由打击乐、短乐或噪声组成,稳定音乐的行进速度,烘托音乐气氛)等组成。
第二章 MIDI技术详解
1. MIDI硬件规范
MIDI接口包含3种不同的连接器:IN,OUT,THRU(穿越,用于菊花式链接多个MIDI设备)。
菊花式链接设备:
方法一:设备1的THRU连设备2的IN,设备2的THRU连设备3的IN。
方法二:设备1的OUT连设备2的IN,设备2的OUT连设备3的IN。
MIDI控制器:当作乐器使用的一种设备,它能把演奏转换成实时的MIDI数据流。
MIDI音序器:允许MIDI数据被捕获、存储、编辑、组合和重奏的装置。
MIDI数据流是单向异步的数据位流,常由MIDI控制器产生,比如乐器键盘、吉他等;也常由MIDI音序器产生。
2. MIDI合成器原理
音乐合成器(音源):对MIDI消息进行译码并执行收到的指令,从而产生出指定的音乐。有两种合成方法:频率合成方式和波形表合成方式。
FM合成方式:通过组合各种波形产生复合乐音,来模拟各种乐器的声音。有好的听觉效果但难以产生逼真的乐音,有些乐音则几乎不能产生。
波形表合成方式:乐音样本合成法。把真实乐器发出的声音波形以数字的形式记录下来,再根据需要以不同的速度将录音回放出来,以产生各种波形和各种音高的乐音,更加逼真。对真实乐器声音波形的记录可以是有限的样本,例如:钢琴有88个音阶或键,一般仅需对其中一个或两个8度音阶内的12个-24个琴音进行采样并存储,利用这些音的采样值并配合不同的回放速度就可以产生出全部的88个音。
3. MIDI信息标准
General MIDI标准:制定了一份MIDI乐器应当遵从的音色排序表,共128种音色(16组乐器,每组定义了8种乐器音色),包含了常用的乐器及一些音效,并规定了47种打击乐器在键盘上的对应位置。其中打击乐使用第10通道,旋律乐器使用1-9和11-16号通道。
一个MIDI消息由1个8位的状态字节并通常跟着2个数据字节组成。状态字节最高有效位设成1,因而他总不小于80H,低4位用来表示这个MIDI消息是属于哪个通道,其余3位表示MIDI消息的类型;数据字节总是小于80H。
MIDI消息分为通道消息和系统消息。
通道消息:分两种。
(1)通道声源消息:它携带着演奏数据。
(2)通道方式消息:表示合成器响应MIDI数据的方式。
系统消息:分三种。
(1)系统公共消息:它标识在系统中的所有接收器。
(2)系统实时消息:它用于MIDI部件之间的同步。
(3)系统独占消息:这是厂商的标识代码。
消息格式:xm nn kk(1个状态字节+2个数据字节)
Xm:状态字节。决定了8种MIDI命令和16个MIDI通道。
Nn:数据字节。代表音符号、控制号等,取值0-127。
Kk:代表按键、释放键力度(音量)等,取值0-127。
例如:
(1)93 60 68:音符开,4通道,音符为60,按键力度68。
(2)83 60 68:音符关,4通道,音符为60,按键力度68。
(3)93 60 0 :相当于(2)
(4)C2 40 :表示将第3道的音色改变为40号音色(小提琴音色编号)。
MIDI文件:由一个头块(Header Chunk)和紧接着的一个或多个音轨块(Track Chunk)。头块以MThd为标志,音轨块以MTrk为标志。
MIDI文件的块结构:
类型 长度 数据
4字节 4字节 (规定的)长度
举例:“4d 54 68 64 00 00 00 06 ff ff nn nn dd dd”。
解说:
“4d 54 68 64”是ASCII字符“MThd”,“00 00 00 06”表明之后有6个字节。
“ff ff”定义了MIDI文件的格式类型:格式0为单音轨文件,格式1为多音轨文件,格式2为多音序器音轨文件。
“nn nn”表示音轨块个数。
“dd dd”定义了MIDI事件的时间格式类型。
音轨块数据:由一对或多对+组成。是必需的,它指前一个事件到该事件的时间间隔,单位为tick。在连续的音轨块数据流中,每个MIDI事件前都必须有一个时间差参数,也就是“时间差参数+状态字节+数据字节”。
举例:一个编号为3C的音,它的时值为一个四分音符,选用通道1,则相应的MIDI事件组合为:
00(delta-time) 90 3C 40(通道1,开3C音) 78(delta-time) 80 3C 40(关3C音)
Meta事件:除了包括MIDI事件外,还包括Meta事件。Meta事件用来表示像track名称,歌词,提示点等,它并不作为MIDI消息被发送,但是它仍然是MIDI文件有用的组成部份。格式为:ff xx nn dd。
Ff:Meta事件的标志。
Xx:描述Meta事件的类型,取值范围00-7F。
Nn:紧跟其后的数据长度。
Dd:数据
MIDI文件举例:
按照下面给出的曲谱,写出MIDI文件。
1 = C 4/4 120拍/分
| 3 3 5 i - |
要求采用MIDI文件格式0来书写,音色为小号。
1. 定义一个时间分辨率,通常可设置一个四分音符的tick数为120(即78h),任选一通道:通道2。
2. 接下来写MIDI文件。先写头块:4d 54 68 64 00 00 00 06,这是固定的格式。由于指定采用格式0,所以接下来的格式参数应当是00 00,再接下来写音轨数00 01,再下面要指定基本时间,应当是00 78,这样完整的头块为:
4d 54 68 64 00 00 00 06 00 00 00 01 00 78
3. 由于定义了MIDI格式0,所以只有一个音轨块。先写“MTrk”,即4d 54 72 6b,之后的数据长度xx xx xx xx先空着,最后再补。接下来写全局信息,全局信息是ff开头的Meta事件,Meta事件的时间差都为0,再之后逐一写通道2发生的所有MIDI事件。最后被上数据部分长度:72B(即48h),即将xx xx xx xx写上00 00 00 48。
写好的MIDI如下:
J351.MID
文件:4D 54 68 64 00 00 00 06 00 00 00 01 00 78
注释: MThd 参数长度6 格式0 1音轨 1/4音符
文件:4D 54 72 6B 00 00 00 48
注释: MTrk 音轨块长度
文件:00 ff 03 08 75 6E 74 69 74 6C 65 64 00 ff 01 02 63 0A
注释: 音轨名称untitled 作者名称untitled
文件:00 ff 58 04 04 02 18 08 00 ff 59 02 00 00 00 ff 51 03 07 A1 20
注释: 拍子记号 音调符号 音符速度
文件:00 C0 38 00 90 40 64 3C 40 00
注释: 通道1音色56 开40音 关40音
文件:00 40 64 3C 40 00
注释: 开40音 关40音
文件:00 43 64 78 43 00
注释: 开43音 关43音
文件:00 48 64 81 70 48 00
注释: 开48音 关48音
文件:00 ff 2F 00
注释: 音轨结束
4. MIDI设备的同步
MIDI规定以24PPQ(Pulse Per Quartnote)作为MIDI Clock系统的规格。即在一个四分音符的时间内,MIDI系统会发送出24个Real-time Messages(实时同步信息),因此音乐的速度决定了这些Real-time Messages发送时间的快慢。比如tempo = 80拍/分钟,每秒将产生32个Real-time Messages。(80/60*24=32)
SMPTE(the Society of Motion Picture and Television Engineers,电影电视工程协会):为了解决影音的同步问题,就制定了用于同步的SMPTE时间码,该编码显示方法为:Hour:Minute:Second:Frame(时:分:秒:帧)。SMPTE时间码格式较多,举例如下:
(1)SMPTE25 EBU格式:25帧/秒
(2)SMPTE24 Film Sync格式:24帧/秒
(3)SMPTE30 Non-Drop格式:30帧/秒
(4)SMPTE30 Drop格式:29.97帧/秒
要处理声频和视频同步,难点就在于,MIDI音序和数码声频工作站使用的SMPTE时间码,与视频系统的SMPTE时间码必须是统一的。MIDI、声频和视频在同步处理时,共同采用SMPTE30 Non-Drop格式,但视频是以29.97帧/秒播放,所以SMPTE30 Drop格式诞生了。但由于SMPTE30 Drop时间与现实世界时间存在差异,所以它力图通过“丢弃”一些帧数来弥补这种差异。
MTC时间编码:由于MIDI Clock只能用于MIDI设备间的连接,为了让MIDI设备能与其他设备同步连接,这种完全兼容SMPTE时间编码的MIDI同步信号——MTC时间码就诞生了。
|
|