CSC 471最终项目-GLozart

作者:詹姆斯·德洛斯·雷耶斯





图1:GLozart屏幕截图


介绍

GLozart是一个用openGL编写的程序,它以图形方式模拟手弹奏钢琴。GLozart可以阅读任何标准包含钢琴的MusicXML文件。钢琴是一个全88键盘,可以为用户旋转从不同角度查看手部模拟。GLozart是钢琴演奏者从头到尾的有用工具直观地看到优化的手指位置,这在乐谱中通常没有指定。

为什么是MusicXML而不是Midi?

GLozart从MusicXML格式文件中收集音乐信息。MusicXML由Recordare开发(http://www.musicxml.org)作为一座桥梁,在各种记谱法应用之间翻译17世纪的现代西方音乐记谱法。今天,它是被50多种不同的商业产品使用。这包括Finale和Sibelius等领先的记分写作项目。

当然,MIDI是在不同的音乐应用程序(如合成器)之间转换音乐的行业标准格式。这个然而,MIDI和MusicXML之间的区别至关重要。MIDI专门用于音乐。MusicXML专门特别是音乐符号。由于标准表示法通常冗长且不必要,MIDI几乎全部忽略了表示法。这是使用MusicXML阅读而不是MIDI文件的最大优势,尽管它们不一定是竞争对手。用于分析MIDI是一个音乐文件,它不存储弹奏钢琴时使用哪只手(即左手或右手)的信息。这是一个非常困难的问题因为没有符号就没有严格的限制,所以需要计算算法。谢天谢地,MusicXML确实指定了每个音符都会落下,从而解决了这个问题。




图2:GLozart演奏莫扎特奏鸣曲的屏幕截图


手指算法

尽管MusicXML解决了使用哪只手的问题,但使用哪只手指仍然存在不确定性。格洛扎特使用优化算法确定手指位置。然而,结果有点自命不凡,因为许多人可以用不同的方式演奏同一首歌。该算法仅在它的基础最接近音符,而不是人类会优先选择不同的手指。例如,小指是最不常用的乐器,因为它是最弱的手指,也是最难控制的。人类通常会根据手指力量而不是单纯的距离接近来选择一个更舒适的位置。因此,GLozart经常选择对大多数人来说不舒服的手指位置。

一个更重要的问题,虽然很少发生在手指无法触及苛刻的音符时。在这个在这种情况下,手指(由三角参数控制)完全消失。虽然它会限制手指能伸多远似乎是合乎逻辑的,如果一个手指按下一个错误的注释。GLozart允许手指消失,以便用户识别故障,而不是对用户隐藏故障。

命令


“p”。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。Play Piece(使用glutTimerFunc)
“P”。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。播放片段(使用idleFunc…速度已修复)
“o”。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。止动块
'+'......................................加快节奏
'-'........................................降低节奏
“w”。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。增加扫描长度*
“s”。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。减少扫描长度*
拖动鼠标左键。。。。。。。。。。。。。。。。。。旋转摄影机
拖动鼠标右键。。。。。。。。。。。。。。。放大/缩小相机

*扫描长度控制解析器将在之前扫描的注释分割数确定手指位置。较短的扫描长度会减少所有扫描的使用每只手五个手指。扫描长度越大,手指之间的使用越分散。


屏幕截图




图3:格洛扎特演奏弗兰兹·舒伯特的《我是神童莫纳特·迈》




图4:从侧面看《我是天才莫纳特·梅》


声音

由于时间限制,GLozart版本1.0中没有实现Sound。图形是最初版本的主要焦点。

限制

解析MusicXML本身就是一项有价值的任务。由于这个事实,GLozart 1.0版忽略了以下内容音乐符号:

o所有发音(例如颤音、英语、优雅音符等)
o所有动力学(例如,克雷桑德斯、福蒂西莫斯等)
o重复或尾码
o多个谱号(例如两个g谱号,或一个中间变为g的F谱号)
o跨越员工的声音
o跨越八度的单手和弦
o其他音乐特色

此外,请注意,GLozart只读取包含至少一个“Piano”、“Grand Piano“或MusicXML的partID中指定的“原声大钢琴”。

资源

MusicXML是一种广泛用于记分书写和其他符号程序的交换格式。它被用于当今顶尖的记谱程序,包括Finale和Sibelius。如果你想购买一些著名作品的MusicXML,他们的网站上还有一家商店。在GLozart试试!!!
网址:http://www.musicxml.org

源代码

Glozart计划。(注意:您需要提供MusicXML作为第一个参数)
GLozart.exe软件

示例音乐XML

沃尔芬·阿马德乌斯·莫扎特的《An Chloe K.524》
莫扎克样品.xml
莫扎克样品.pdf

莫扎特奏鸣曲的简短演奏
莫扎特钢琴奏鸣曲.xml
莫扎特钢琴奏鸣曲.gif

弗朗茨·舒伯特的《圣母玛利亚》
SchbAvMaSample.xml格式
附表AvMaSample.pdf

“DichterLiebe,作品48,1。罗伯特·舒曼(Robert Schumann)的《我是神童莫纳特·迈》(Im wounderschonen Monat Mai)
Dichterliebe01.xml
Dichterliebe01.pdf格式