我需要为钢琴演奏开发一个性能评估器。基于乐谱产生的midi,我需要评估实际演奏的midi(midi键盘)。我打算根据音符音高,持续时间和响度评估演奏。评价是我想比较乐谱的音符和midi演奏。
但我不知道如何可视化(即显示此人出错的地方)此评估过程。也许可以显示符号和突出显示哪个注释出错了。 但是,我如何以某种图形形式显示这些?或者更确切地说,在五线谱(乐谱)本身。我有一个表中存储的注释细节(音高,持续时间)和得分细节(键和时间签名),我正在使用Java。但我不知道如何把所有这些都变成图形形式。
非常感谢任何见解。提前谢谢
答案 0 :(得分:4)
你所说的真的是一个用于乐谱的图形差异工具。我认为显示差异的最简单方法是将播放的音符(和休止符)覆盖在“正确的”分数符号上。它变得棘手的是显示音量差异,是否播放(或应该播放)音符断奏,marcato,tenuto等。例如,带有点上方的音符意味着播放断奏,但是你的MIDI表示四分音符可能被解释为八音符,然后是八音符等等。
你还必须quantize现场比赛的结果,这意味着你必须允许人类在节拍之前或之后稍微留有余地而不会有不同的表现。如果你不这样做,对音符的唯一“正确”解释将是非常机械的(并且不悦耳)。
至于绘制符号并将其放在五线谱上的正确线条或空格上,如果您了解如何绘制图形,这并不难。有musical fonts可用,允许您使用字母数字字符来表示注释正文,词干,休止符等。当某些注释为accidentals时,您还必须了解关键签名enharmonic。等等。
这不是你提出的一项小任务,而且已经有很多软件能够完成很多你想要做的事情。也许某些存在完全符合您的要求,因此在开始编码之前进行研究。 :)查看各种work that has already been done,看看是否有任何可以使用的东西,或者哪些东西会让你离开你的项目。
几年前我为QuickTime的MIDI实现制作了my own键盘播放器/录音机,并且必须解决您遇到的许多问题。我这么做是为了好玩,而且 很有趣(对我来说很有教育意义),但它永远不会与该类型的商业软件竞争。虽然人们确实喜欢它,但我真的没有时间来维护它并添加人们想要的功能,所以最终我不得不放弃它。这种事情确实很多。