微波EDA网,见证研发工程师的成长!
首页 > 通信和网络 > 通信网络技术文库 > 手持信息终端上MIDI播放的实现

手持信息终端上MIDI播放的实现

时间:08-31 来源:互联网 点击:
软件的实现  

通过对软件平台的介绍,可以知道Asix OS是一个嵌入式的多任务实时操作系统,所有应用程序都是通过任务调度机制来实现的。因此要实现MIDI的播放需要软件在以下三个层次给予支持:音频驱动模块、音频服务模块、应用程序(MIDI播放器)。当点击应用程序(如MIDI播放器)后,操作系统就会进行任务调度,然后启动相应的服务模块(音频服务模块),通过服务模块再调用底层驱动来播放MIDI音乐。下面将具体阐述一下各模块的功能和实现:  

该模块是MIDI能够播放声音的基础,它直接和底层硬件相关,通过CPU中PWM模块的一些寄存器来实现声音设备的打开关闭等操作。它通过声音服务模块被所有的需要发音的程序所调用,是所有发音程序得以正常工作的基础。  

它由以下几个子模块组成:PWM音频设备初始化模块;PWM音频设备回放率配置模块;PWM音频设备启动模块和关闭模块;PWM音频设备工作模式选择模块。

该模块屏蔽了底层的驱动,为应用程序访问音频设备提供了统一的接口,使用户无需关心底层的具体实现即可以完成声音设备的控制,使之具有较好的移植性。它主要通过消息机制来实现,为应用程序和底层驱动模块的通信提供了一个桥梁,从而避免了直接和硬件打交道。服务层主要由定时播放模块、定长播放模块和配置模块组成。

音频服务模块是播放MIDI的关键,它处于承上启下的作用,用于连接上层的应用程序和底层的设备驱动。该模块中MIDI解码子模块完成对MIDI文件的解释,并得到最终要播放的音符信息和各种控制信息链表,由于MIDI的解码涉及到MIDI文件的规范协议和具体的算法,这里不作详细的描述。

音频服务模块提供两个层次的接口,面向应用程序的接口和面向底层的接口。  

服务模块的接口工作原理如图4所示。


                                         图4 服务模块接口  

MIDI播放模块包括MIDI播放器(用来测试MIDI播放的应用程序之一),此外还可以在手机铃声、信息提示音、笔触音等等程序中实现MIDI的播放,但其实现原理基本上都是一样的。除了界面上的设计,主要就是调用MIDI服务模块提供的几个接口函数即可实现MIDI的播放,这里不作详细介绍。  

结语  

本文的手持信息终端平台经过实际测试,播放效果令人满意,能够和一般的手机铃声相媲美。由于MIDI文件的体积较小,正好可以弥补手持信息终端存储容量小的缺陷,因此它具有广阔的应用前景。

Copyright © 2017-2020 微波EDA网 版权所有

网站地图

Top