手持信息终端上MIDI播放的实现
时间:08-31
来源:互联网
点击:
引言
MIDI(乐器数字接口)是一种电子乐器之间以及电子乐器与电脑等设备之间的统一交流协议。该协议是一个二进制形式的音乐描述语言,每一个描述乐器演播动作的字都赋给一个特定的二进制代码,通过它指示乐器即MIDI设备做什么和怎样做,如演奏音符、加大音量、生成音响效果等。
由于MIDI本身不是声音信号,而只是让声音设备产生声音的一系列的指令,所以MIDI文件本身非常小,特别适用于对存储容量有限制的手持设备,如手机和掌上电脑。本文将着重介绍如何在手持信息终端嵌入式系统平台上实现MIDI的播放。
MIDI的基本原理
MIDI文件主要由MIDI消息组成。MIDI消息又可分成通道消息和系统消息两大类,如图1所示。
图1 MID I消息的组成 从上面的描述中,
可以看到MIDI实际上只是一组数字信号,并不包括声音信号,它记录的是音乐在什么时间用什么音色发多长的音等等。MIDI音乐每个乐音是由三个要素组成的:音色、音高(音调)和音长。可以把各种乐器的音色先录下来,然后给每个音色编号,如钢琴编为00;再给音高编号,如C5编为49;然后是音符播放的时间的编码,如把8分音符编号为60。此时,数字串“00 49 60”就表示演奏的是钢琴的C5音,演奏时间为8分音符。MIDI在播放时,会根据MIDI文件纪录的乐曲信息向预先录制好的乐器(如钢琴)的波表发出指令,从波表中找出对应的声音信息,经过合成、加工后再回放出来,就形成了美妙的音乐。
手持信息终端软硬件平台
手持信息终端包括手机、个人数字助理(PDA)、掌上电脑(HPC)等等,它们可以实现多种功能,如PIM(电话簿、日程安排、备忘录、记事本、时钟)、计算器、录音、辞典、游戏和播放音乐等功能;也可以加入无线通信的功能,如电话、短信、无线Email等等;还可以通过数据线与PC相连,互通数据、进行备份和数据交换。
该手持信息终端平台采用的是业界流行的Motorola公司的MC68EZ328处理器;存储模块由4M字节的Flash闪存和2M字节的EDO DRAM组成;显示模块采用160×240的16级灰度的黑白屏,屏上合成有四线电阻式触摸屏。音频处理模块的作用是用来播放音乐,它由两部分构成:滤波电路和音频功率放大电路。该模块接受来自处理器内部输出的PWM脉冲信号和音频模块的开启关闭的控制信号。硬件平台的结构如图2所示。
图2 手持信息终端的硬件平台结构
该手持信息终端是以自主研发的多任务嵌入式操作系统AsixOS为基础,包括操作系统(Asix OS)、驱动程序包(Driver)、应用程序包(Application)、图形用户接口(AsixWIN)、图形库软件包(AsixGPC)、嵌入式数据库(AsixDB)、嵌入式文件系统(AsixFS)、网络协议软件包(Asixnet)等等。Asix模块原理框图如图3所示。
图3 Asix模块原理框图
由图可以看出,音频驱动模块是播放MIDI音乐的基础,它控制硬件设备的打开关闭等等操作;音频服务层是连接应用程序和底层驱动的枢纽,它包含了对底层操作的接口;应用程序是整个手持终端产品的具体功能的体现,MIDI播放器是其中一个用来测试MIDI播放的小应用程序,它是建立在音频服务模块和音频驱动模块基础之上的。
MIDI播放的实现
MIDI的播放需要软硬件协同工作,要播放MIDI文件,首先必须对MIDI文件进行解码:若是控制信息(如节拍、时间格式等等),则进行相应的控制;若遇到音符信息,则将相应的数据(音符代码、时间值)存储在音频缓冲区。
解码完成后,声音处理程序将对音频缓冲区中的音频数据进行处理,根据音符代码从各个软波表中取出相应音符的真实采样值送往音频设备,再由音频设备的滤波电路进行滤波排除电路中的高低频干扰,然后再经过音频放大电路对音频信号进行放大,驱动喇叭放出音乐,音乐时间的长短则根据音频缓冲区中记录音符长短的数据来控制音频设备的开启和关闭来实现。
由于手持信息终端存储容量的限制,该手持信息终端的软波表只包含了大钢琴(Acoustic Grand Piano)的一种音色,具有3阶音色(12×3个音符)。该软波表采用16kb/s和8bit的采样率进行录制,每个音符采样0.5秒,即每个音符占有8000个字节,所以整个软波表的大小为12×3×8000=288K字节,这样的大小对于手持信息终端来说应该是可以承受的。
声音处理程序是利用MC 68EZ328的定时功能和PWM输出功能来实现的。PWM具有三种工作模式:回放(playback)模式、单音调(tone)模式、D/A模式。由于tone模式发出的声音的频率比较单一,不能达到真实乐器的效果,所以采用了回放模式。回放模式是利用软波表来实现的,它根据真实乐器的采样值进行回放,从而能达到比较真实的效果。
MIDI播放的实现在硬件上是由两部分组成的:M68EZ328内部的PWM模块和外部滤波放大电路。具体原理如下:
PWM(脉冲宽度调制)是一种对模拟信号电平进行数字编码的方法。通过对方波的占空比调制来对一个模拟信号的电平进行编码。
音频处理的外围电路比较简单,它主要用来处理由PWM输出的MIDI音乐,由滤波电路和音频功率放大电路组成。MC68EZ328内部具有PWM输出电路,经过一个由两级运算放大器构成的滤波电路,滤除噪声后取出音乐信号;滤波后的信号,在经过功率放大电路放大后,推动扬声器发出音乐声。为了减小功耗,音频功率放大电路和滤波电路都有使能控制信号控制,当需要播放音乐时将电路使能,平常关闭该模块。
MIDI(乐器数字接口)是一种电子乐器之间以及电子乐器与电脑等设备之间的统一交流协议。该协议是一个二进制形式的音乐描述语言,每一个描述乐器演播动作的字都赋给一个特定的二进制代码,通过它指示乐器即MIDI设备做什么和怎样做,如演奏音符、加大音量、生成音响效果等。
由于MIDI本身不是声音信号,而只是让声音设备产生声音的一系列的指令,所以MIDI文件本身非常小,特别适用于对存储容量有限制的手持设备,如手机和掌上电脑。本文将着重介绍如何在手持信息终端嵌入式系统平台上实现MIDI的播放。
MIDI的基本原理
MIDI文件主要由MIDI消息组成。MIDI消息又可分成通道消息和系统消息两大类,如图1所示。

图1 MID I消息的组成 从上面的描述中,
可以看到MIDI实际上只是一组数字信号,并不包括声音信号,它记录的是音乐在什么时间用什么音色发多长的音等等。MIDI音乐每个乐音是由三个要素组成的:音色、音高(音调)和音长。可以把各种乐器的音色先录下来,然后给每个音色编号,如钢琴编为00;再给音高编号,如C5编为49;然后是音符播放的时间的编码,如把8分音符编号为60。此时,数字串“00 49 60”就表示演奏的是钢琴的C5音,演奏时间为8分音符。MIDI在播放时,会根据MIDI文件纪录的乐曲信息向预先录制好的乐器(如钢琴)的波表发出指令,从波表中找出对应的声音信息,经过合成、加工后再回放出来,就形成了美妙的音乐。
手持信息终端软硬件平台
手持信息终端包括手机、个人数字助理(PDA)、掌上电脑(HPC)等等,它们可以实现多种功能,如PIM(电话簿、日程安排、备忘录、记事本、时钟)、计算器、录音、辞典、游戏和播放音乐等功能;也可以加入无线通信的功能,如电话、短信、无线Email等等;还可以通过数据线与PC相连,互通数据、进行备份和数据交换。
该手持信息终端平台采用的是业界流行的Motorola公司的MC68EZ328处理器;存储模块由4M字节的Flash闪存和2M字节的EDO DRAM组成;显示模块采用160×240的16级灰度的黑白屏,屏上合成有四线电阻式触摸屏。音频处理模块的作用是用来播放音乐,它由两部分构成:滤波电路和音频功率放大电路。该模块接受来自处理器内部输出的PWM脉冲信号和音频模块的开启关闭的控制信号。硬件平台的结构如图2所示。

图2 手持信息终端的硬件平台结构
该手持信息终端是以自主研发的多任务嵌入式操作系统AsixOS为基础,包括操作系统(Asix OS)、驱动程序包(Driver)、应用程序包(Application)、图形用户接口(AsixWIN)、图形库软件包(AsixGPC)、嵌入式数据库(AsixDB)、嵌入式文件系统(AsixFS)、网络协议软件包(Asixnet)等等。Asix模块原理框图如图3所示。

图3 Asix模块原理框图
由图可以看出,音频驱动模块是播放MIDI音乐的基础,它控制硬件设备的打开关闭等等操作;音频服务层是连接应用程序和底层驱动的枢纽,它包含了对底层操作的接口;应用程序是整个手持终端产品的具体功能的体现,MIDI播放器是其中一个用来测试MIDI播放的小应用程序,它是建立在音频服务模块和音频驱动模块基础之上的。
MIDI播放的实现
MIDI的播放需要软硬件协同工作,要播放MIDI文件,首先必须对MIDI文件进行解码:若是控制信息(如节拍、时间格式等等),则进行相应的控制;若遇到音符信息,则将相应的数据(音符代码、时间值)存储在音频缓冲区。
解码完成后,声音处理程序将对音频缓冲区中的音频数据进行处理,根据音符代码从各个软波表中取出相应音符的真实采样值送往音频设备,再由音频设备的滤波电路进行滤波排除电路中的高低频干扰,然后再经过音频放大电路对音频信号进行放大,驱动喇叭放出音乐,音乐时间的长短则根据音频缓冲区中记录音符长短的数据来控制音频设备的开启和关闭来实现。
由于手持信息终端存储容量的限制,该手持信息终端的软波表只包含了大钢琴(Acoustic Grand Piano)的一种音色,具有3阶音色(12×3个音符)。该软波表采用16kb/s和8bit的采样率进行录制,每个音符采样0.5秒,即每个音符占有8000个字节,所以整个软波表的大小为12×3×8000=288K字节,这样的大小对于手持信息终端来说应该是可以承受的。
声音处理程序是利用MC 68EZ328的定时功能和PWM输出功能来实现的。PWM具有三种工作模式:回放(playback)模式、单音调(tone)模式、D/A模式。由于tone模式发出的声音的频率比较单一,不能达到真实乐器的效果,所以采用了回放模式。回放模式是利用软波表来实现的,它根据真实乐器的采样值进行回放,从而能达到比较真实的效果。
MIDI播放的实现在硬件上是由两部分组成的:M68EZ328内部的PWM模块和外部滤波放大电路。具体原理如下:
PWM(脉冲宽度调制)是一种对模拟信号电平进行数字编码的方法。通过对方波的占空比调制来对一个模拟信号的电平进行编码。
音频处理的外围电路比较简单,它主要用来处理由PWM输出的MIDI音乐,由滤波电路和音频功率放大电路组成。MC68EZ328内部具有PWM输出电路,经过一个由两级运算放大器构成的滤波电路,滤除噪声后取出音乐信号;滤波后的信号,在经过功率放大电路放大后,推动扬声器发出音乐声。为了减小功耗,音频功率放大电路和滤波电路都有使能控制信号控制,当需要播放音乐时将电路使能,平常关闭该模块。
电子 嵌入式 电阻 触摸屏 电路 PWM 放大器 相关文章:
- 变革电信网网络安全框架 (01-03)
- 浅谈IPv6技术的若干问题(01-09)
- LG电子低成本CDMA手机的设计原则剖析 (01-12)
- 专家教你做个病毒高手(04-30)
- 数据库归档要考虑的四大问题(05-26)
- 5个步骤成功加密电子邮件(07-18)
