第一章 绪 论
1.1 研究背景和意义
随着计算机为代表的信息化技术快速发展,为社会带来了巨大生产力,社会生产力又极大的丰富了物质世界。与此同时人们不但注重对物质的需求,更加关注精神的享受。音乐是“心灵之窗”,具有烘托气氛,陶冶情操的作用,已经成为人们生活中必不可少的娱乐方式。很多人已经把音乐当成了生活的一部分,无论学习、工作中能聆听到富有情景的音乐总能使他们精神抖擞。农牧民歌是中国民族音乐的一个重要分支,承载着一个民族的历史和文化[1]。中华民族具有上下五千年灿烂文化,涌现无数经典民族乐曲[2]。近几年随着国家对非物质物化的不断重视,蒙古族、满族、乌拉特族民歌先后入选了国家非物质物化遗产[3]。此外具有地域,民族特色的农牧民歌已经突破地域、民族的界限,深受各族同胞的喜爱,蒙古族的腾格尔、陕西的阿宝等都成为脍炙人口的优秀农牧民歌演唱歌手。深入传承、研究、创新民族音乐是每个人的责任,但是音乐创作中不仅需要较高的专业知识,还需要灵感的启发,这样导致创作出津津乐道的农牧民歌是比较困难的。作为孕育音乐的作曲过程也有必要与时俱进,以此满足人们对音乐数量、质量的需求。目前各大主流音乐网站都有专门的版块供用户下载播放农牧民歌,这些措施仅仅做到了弘扬、传承了农牧民歌,并不能提高农牧民歌的创作效率。另一方面很多民族歌手并不是经过专业学习的科班音乐人员,他们缺乏专业性的作曲知识,这样大大限制了他们对农牧民歌的传承,但他们本身富有的“乡土风情”却很难通过学习得到。因此急需一个能为作曲者带来创作灵感,降低作曲门槛的系统。伴随着自动作曲的研究开展,对传统作曲的过程产生了实质的变化。这种变化不仅体现在作曲途经与方法上,更主要体现在对作曲者的专业程度要求的降低,作曲者仅需要了解一些基本乐理知识如乐曲风格、调式等信息,即可通过自动作曲平台得到自己所需的乐曲。
..........
1.2 国内外研究现状和开发内容
自动作曲是在计算机人工智能领域衍生出的新研究方向,它要求研究者必须同时具备计算机和音乐相关领域的专业知识。目前国内外在自动作曲系统研究领域处于不断升温阶段,但是国内这项技术仍处于初级阶段[4]。自动作曲(automated composition),或称算法作曲(algorithmic composition),是试图使用某个形式化的过程,以使人(或作曲家)在利用计算机进行音乐创作时的介入程度达到最小的研究[5]。无论是东方音乐还是西方音乐,均有其一定程度的形式化基础,其中农牧民歌的这种特征尤为明显。关于作曲创作的形式化研究,最早是在 11 世纪的 Guidod’Arezzo 的学者创建了一种音乐模型,该模型能够实现为一本宗教书籍中的每个元音指定不同的音高[6]。发展到15 世纪时,节奏模式已经能够系统运用到了具有均匀节奏的圣歌中。进入欧洲文艺复兴时期及巴洛克时代,作曲家为旋律对位制定了严密的细则,例如:在复调音乐的创作过程中,完全能够做到依靠一小段音乐完成倒影、延长主题、裁减等模式化操作[7]。进入 20 世纪后,特别是以计算机为代表的信息化技术的运用,加速了自动作曲领域的研究进程。1957 美国计算机学家伦纳德.艾森克和作曲家.西特尔合作进行了音乐创作,进一步体现了计算机与作曲的紧密关系[8]。随后各种自动作曲算法不断设计出来,其中比较常用的如:人工神经网络、遗传算法、专家知识库、马尔可夫链等[9]。
.......
第二章 系统开发方法及相关技术
2.1 系统开发架构分析
2.1.1 B/S 与 C/S 架构分析
PC 时代到来,以互联网技术为载体的软件系统不断发展壮大,目前主流的软件架构主要有 B/S(浏览器/服务器)和 C/S(客户端/服务器)[13]。基于本系统的设计目标综合选用 B/S 作为系统开发架构,主要有以下原因:
(1)B/S 安装使用简单,用户接受程度高浏览器已发展为用户上网的主要使用工具,目前的主流操作系统 Widows、Linux 都可以运行浏览器。使用 B/S 架构设计的系统,对于用户电脑而言只需要有浏览器即可,大部分情况下无需安装额外软件即可访问使用。相反如果使用 C/S 架构,用户必须下载安装客户端程序,这样不仅增加了用户使用的复杂度,而且随着用户对互联网安全的重视,对于安装软件会产生顾虑从而导致用户的流失。
(2)B/S 系统维护简单,升级方便系统维护是软件生命周期中开销最大的环节,对于一个软件系统而言,没有绝对完美的设计。随着系统运行,会不断产生问题,这就需要系统升级更新[14]。使用 B/S 架构软件升级对于用户是不被感知的,只重新部署服务器端程序即可。而C/S 架构如果问题是由于客户端产生,那么就必须通知用户升级软件。另一方面 C/S 架构下服务器并不能强制客户端升级,必须经过用户同意,那么对于系统的新功能的推广的即时性打了折扣,因为用户大部分情况下对频繁升级软件是不乐意的。
........
2.2 系统使用技术
Java 是最流行的高级程序语言,它具有简单性、面向对象、分布式、健壮性、安全性、平台独立与可移植性、动态性等特点[16]。使用它可以编写桌面应用程序、Web 应用程序、分布式系统和嵌入式系统应用程序等 。Java 目前提供 J2ME、J2SE 和 J2EE 三种开发平台[17],其中 J2EE 平台最为著名。Java之所以一直处于最流行的开发语言,很大程度来源于 J2EE 平台的普及。最主要是因为该平台提供了专门应用于互联网开发的服务、协议、接口,例如:JSP、Servlet、JDBC等。图 2-2 是基于该平台核心技术实现的 MVC 模式。依图分析,Servlet 作为控制器层技术,控制程序的流转和视图的选择,JSP 负责视图层的渲染页面,而 JavaBean 相当于处理业务的 Java 类,主要负责业务计算、访问数据库。JDBC 是专门进行数据库操作的控件,它可以连接不同类型的数据库,变更数据库只需加载该数据库提供的 JDBC 驱动包即可。
........
第三章 系统需求分析..........13
3.1 用户需求分析..........13
3.1.1 游客用户.......13
3.1.2 作曲用户.......13
3.1.3 系统管理员............14
3.2 系统功能需求分析...........15
第四章 系统总体设计..........21
4.1 系统体系架构设计...........21
4.1.1 系统技术架构设计.........21
4.1.2 系统组织架构设计.........22
4.1.3 系统部署架构设计.........23
4.2 系统分层开发原则...........24
4.3 系统数据库设计......25
4.3.1 数据库总体设计规范.....25
4.3.2 系统主要模块 ER 图......27
4.4 系统优化设计.........29
第五章 系统详细设计..........31
5.1 系统开发环境搭建...........31
5.2 项目工程构建.........32
5.3 核心技术配置.........34
5.4 系统功能详细设计..........34
第五章 系统详细设计
5.1 系统开发环境搭建
搭建硬件环境,实质就是对开发者使用的物理机配置的分析过程。本系统总体分为前后两个独立系统,此外集成了文件服务器和反向代理服务服务器,加上需要各种开发工具支持如:SVN、Eclipse、Mysql 等,故系统在开发运行中要同时启动多个应用程序,需要消耗较大内存。为了保证每个程序分配到所需内存,通过不断测试,物理机的内存配置必须在 8G 以上。此外本系统在开发中需要播放乐曲,还要配置音响系统,除此之外对其它硬件如硬盘、显卡、显示器无特殊要求。表 5-1 是系统开发硬件配置要求。跨平台是 Java 的核心特征,使用 Java 开发的程序可以达到一次开发多操作系统运行目的。Windows 是目前操作最便利的操作系统,为了提高开发效率,采用 Windows7操作系统的64位版本作为系统开发平台,所安装的软件必须支持Windows64操作系统。依据论文 4.1.1 的技术架构设计,系统使用软件技术较复杂,它们之间有的存在相互依赖关系,如 Tomcat 和 Eclipse 运行必须需要 JDK 支持。为了减少安装软件过程中的错误,分别从软件版本、安装顺序、主要工作三个方面汇总出如表 5-2 所示的系统软件环境搭建一览表。
.......
总结
本次研究最终的目标是搭建持续健康运行的自动作曲输出系统,整体由系统展示与引导模块、乐曲维护与输出模块、系统管理与分析模块等三大模块构成,核心功能是实现自动作曲乐曲的按需输出。基于用户操作功能的不同,系统拆分为前台作曲系统和后台管理系统。在系统研究与实现过程中,遵循软件工程思想开展相关工作。在历经近三年研究与实现,完成了面向农牧民歌自动作曲的在线输出系统的设计与开发。整体过程可以分为以下五大内容。第一,首先从不同角度分析了农牧民歌的特征,其次总结了自动作曲的国内外发展现状,发现了目前自动作曲系统存在的问题。基于原有 C/S 架构系统的不便之处,把与用户交互的功能抽取出来使用 B/S 架构开发,构思设计自动作曲输出系统。第二,结合本系统的特征以及系统建设的目标完成技术选型。最终选用 J2EE 生态圈的相关技术,按照 MVC 的分层设计思想搭建系统开发框架。系统优化方面选用Memcached 缓存技术、Apache+Tomcat 集群服务和 Freemaker 页面静态化技术。第三,从系统用户的角度开展需求分析,主要包含游客、作曲用户、管理员三类用户。依据需求分析结果,梳理出系统的功能组织架构,然后对每个重要功能分别进行了用例分析。第四,从系统架构设计、系统组织架构、系统部署架构设计和数据库设计多个维度开展系统整体设计工作,并依据系统用户角色把系统分为前后台两大部分独立开发运行。然后对主要模块功能,利用流程图、时序图、表格总结等方式编写系统详细设计说明书。
..........
参考文献(略)