MIDI文件解析与播放工具的研究与实现(附答辩记录)

以下是资料介绍,如需要完整的请充值下载. 本资料已审核过,确保内容和网页里介绍一致.  
无需注册登录,支付后按照提示操作即可获取该资料.
资料介绍:

MIDI文件解析与播放工具的研究与实现(附答辩记录)(包含选题审批表,任务书,开题报告,中期检查表,毕业论文10000字,程序代码)
摘  要:在微软 Windows 和 Linux 中,声音、音乐与视频的综合运用是一个重要的进步。对多媒体的支持起源于 1991 年所谓的微软 Windows 多媒体扩展。最近几年,随着开源和LINUX 的发展和盛行,几乎所有的人都深信:多媒体在很大程度上有益于操作系统的可视化图形,从而使计算机摆脱了只是作为处理数字和文本的机器的传统角色 。或许最常用的多媒体硬件就是波形音频设备,也就是平常所说的声卡。波形音频设备将麦克风的输入或其他模拟音频输入转换为数字样本,并保存到内存中,或者保存到磁盘文件中。声卡通常还包括 MIDI 设备。MIDI 是符合工业标准的乐器指令数字化接口。这类硬件播放音符以响应短的二进制消息。MIDI 硬件通常还可以通过电缆连接到如音乐键盘等MIDI 设备上。通常外部的 MIDI 合成器也能够添加到声卡上。MIDI 由电子音乐合成器制造者协会在 20 世纪 80 年代早期开发。它是用于将它们中的电子乐器与计算机连接起来的协议,也是电子音乐领域中相当重要的标准。
关键词:MIDI;解析;软波表;多媒体;开放声音系统

The Realization and Research  of a Midi File Analysis and Player
Astract:The integration of sound, music, and video into Microsoft Windows and Linux has beenan important evolutionary step. Mutlimedia support began first with the so -called Multimedia Extensions to Windows in 1991. In recent years, with the rapid development of LINUX, the prevalence of Open Source has been applying to each field, it is more and more important.Few people these days need to be convinced that multimedia adds a useful dimension to the graphical visuals of operator system in taking the computer beyond its traditional role as a cruncher of numbers and text. Perhaps the most commonly used piece of multimedia hardware is the waveform audio device, commonly known as the sound card or sound board.The waveform audio device converts microphone input or other analog audio input into digitized samples for storage in memory or disk files. The sound board usually also contains a MIDI device. MIDI is the industry standard Musical Instrument Digital Interface. Such hardware plays musical notes in response to short binary messages. The MIDI hardware usually can also accept a cable connected to a MIDI input device, such as a music keyboard. And often external MIDI synthesizers can also be attached to the sound board. The Musical Instrument Digital Interface (MIDI) was developed in the early 1980s by a consortium of manufacturers of electronic music synthesizers. MIDI is a protocol for connecting electronic music instruments among themselves and with computers. MIDI is an extremely important standard in the field of electronic music.
Keywords: MIDI; Analyze; Wavetable; Mutlimedia; OSS

研究目的、内容、方法、预期成果、条件保障等)
1.研究目的:基于以上分析,本软件的主要目的就是对现有的MIDI文件进行分析,还原出制作者制作时进行的一系列操作,直观明了的展现在用户面前,以便工程人员进行分析和初学者学习。本软件还可以播放MIDI音乐文件,可以一边听一边分析MIDI的结构。
2.研究内容:对 MIDI 的文件的指令和格式进行研究分析,研究文件中指令的存储方式,以及访问机制的实现方式。并且研究如何通过文件指令来使音元发出声音,重点研究如何利用文件的可扩充性以及如何使得播放出来的音乐效果更加丰富优美。
3.研究方法:以Windows Platform SDK 为框架,利用提供的接口设计界面和播放器,播放器采用Windows API 提供的以 midiOut*和 midiIn*开头的函数来实现。文件解析部分采用 C 语言把解析后的结果保存为文本文件。对于文件解析部分采用 C 库,这样可以比较方便的进行字节读取有助于分析文件,因为文件中的数据是按照字节的方式存储的。
4.预期成果:通过本毕业设计将四年来所学的专业知识和其他方面的知识融入到实际应用中。
5.条件保障:图书馆的大量资料,便捷的网络资源,同学的集体讨论,老师的相关辅导。

实现技术
以Windows Platform SDK 为框架,利用提供的接口设计界面和播放器,播放器采用Windows API 提供的以 midiOut*和 midiIn*开头的函数来实现,可以提供简单的播放功能和调节功能,在此实现播放、暂停、停止和音量控制。
文件解析部分采用 C 语言把解析后的结果保存为文本文件。对于文件解析部分采用 C 库,这样可以比较方便的进行字节读取有助于分析文件,因为文件中的数据是按照字节的方式存储的。
通过熟练应用 Windows Platform SDK 框架和 C 语言以及数据结构知识才可以完成
此程序,本软件的是现是 C 语言结构体、指针以及 Windows API 的综合应用。在文件分析部分通过设计函数,从头到尾逐步分析,首先提取头块信息,然后对第一个轨道块特殊处理,因为这个块紧接着头块没有什么标志,而对于轨道块的处理,要通过分析读取的数据,每个时间之前必有一个 Delta-time,所以首先处理 Delta-time,判断是由几个字节组成,对于读取的事件要分析事件的类型,分别处理,在函数传递过程中要保证文件指针和存取的信息的一致性。

MIDI文件解析与播放工具的研究与实现(附答辩记录)
MIDI文件解析与播放工具的研究与实现(附答辩记录)
MIDI文件解析与播放工具的研究与实现(附答辩记录)
MIDI文件解析与播放工具的研究与实现(附答辩记录)
MIDI文件解析与播放工具的研究与实现(附答辩记录)
MIDI文件解析与播放工具的研究与实现(附答辩记录)
MIDI文件解析与播放工具的研究与实现(附答辩记录)
MIDI文件解析与播放工具的研究与实现(附答辩记录)

#p#副标题#e#
目    录
摘  要:    1
关键词    1
1  前言    2
1.1  研究背景    2
1.2  研究的目的及意义    3
1.2.1  研究目的    3
1.2.2  研究的意义    3
1.3  研究现状    3
1.3.1  什么是MIDI    3
1.3.2  MIDI现状    4
1.4  实现技术    5
2  需求分析    5
2.1  MIDI 文件简介    5
2.2  MIDI 文件结构说明    5
2.2.1  Chunks(块)    5
2.2.2  数值表示法    6
2.2.3  二进制数    6
2.2.4  可变长度数    6
2.2.5  Header Chunks(头块)    7
2.2.6  MIDI 文件结构    9
2.2.7  Track Chunks(轨道块)    9
2.2.8  MIDI 事件    10
2.2.9 Sysex 事件    10
2.3  需求分析    11
3  系统设计    11
3.1  概要设计    11
3.1.1  目标    11
3.1.2  概要设计    11
3.2  详细设计    12
3.2.1  界面和播放器的实现    12
3.2.2  文件分析的实现    13
4  软件测试    17
4.1  对软件进行测试的基本原则    17
4.2.1  黑盒测试    18
4.2.2  白盒测试    18
4.3  测试内容及结果    19
4.4  程序运行演示    20
5  结论    25
参考文献    26
致    谢    27