3

我需要为钢琴演奏开发一个性能评估器。基于从乐谱生成的midi,我需要评估实际演奏的midi(midi键盘)。我打算根据音高、持续时间和响度来评估演奏。评估是我想比较乐谱和midi演奏的音符。

但我不知道如何可视化(即显示该人哪里出了问题)这个评估过程。即可能同时显示符号并突出显示哪个音符出错了。但是我怎样才能以某种图形形式显示这些呢?或者更准确地说,在五线谱(乐谱)本身上。我在表格中存储了音符详细信息(音高、持续时间)和乐谱详细信息(键和拍号),并且我使用的是 Java。但我不知道如何将所有这些变成图形形式。

非常感谢任何见解。提前谢谢

4

1 回答 1

4

实际上,您在谈论的是用于音乐符号的图形差异工具。我认为显示差异的最简单方法是在“正确”乐谱符号上叠加演奏的音符(和休止符)。它变得棘手的地方在于显示音量差异,是否播放(或应该播放)断奏,marcato,tenuto等。例如,带有点的音符意味着要断奏,但是你的MIDI表示四分音符可能被解释为一个八分音符,然后是一个八休止符,等等。

您还必须量化现场演奏的结果,这意味着您必须为人类在节拍之前或之后留出一些余地,而不会有不同的标记。如果您不这样做,则对音符的唯一“正确”解释将非常机械(并且不悦耳)。

至于绘制符号并将其放置在五线谱上的正确线条或空间上,如果您了解如何绘制图形,这并不难。有一些可用的音乐字体允许您使用字母数字字符来表示音符主体、符干、休止符等。您还必须了解调号、临时记号、某些音符何时为等等。

这不是您提议的一项小任务,并且已经有很多软件可以完成您正在尝试做的很多事情。也许有些确实可以满足您的需求,因此请在开始编码之前对其进行研究。:) 查看已经完成的各种工作,看看是否有任何可以使用的东西或者会让你退出项目的东西。

几年前,我为 QuickTime 的 MIDI 实现制作了自己的键盘播放器/录音机,并且不得不解决您面临的许多问题。我这样做是为了好玩,它有趣(对我来说也很有教育意义),但它永远无法与该类型的商业软件竞争。尽管人们确实喜欢它,但我真的没有时间维护它并添加人们想要的功能,所以最终我不得不放弃它。这种事情真的是很多工作。

于 2010-05-25T15:19:12.093 回答