我需要开发一个钢琴演奏性能评估器。基于乐谱生成的midi,我需要评估实际演奏(midi键盘)的midi。我打算根据音高、持续时间和响度来评估演奏。评价是我想是对乐谱的音符和在midi中演奏的比较。
但我不知道如何可视化(即显示该人哪里出错了)这个评估过程。即可能同时显示符号并突出显示哪个音符出错了。 但是我怎样才能以某种图形形式显示这些呢?或者更准确地说是在五线谱(乐谱)本身。我将音符详细信息(音高、持续时间)和乐谱详细信息(调号和拍号)存储在一个表中,并且我使用的是 Java。但我不知道如何将所有这些转化为图形形式。
非常感谢任何见解。提前致谢
最佳答案
您所说的实际上是一种用于乐谱的图形差异工具。我认为显示差异的最简单方法是将演奏的音符(和休止符)叠加在“正确”的乐谱符号上。棘手的地方在于显示音量差异,音符是否演奏(或应该演奏)断奏、延音、长音等。例如,上面有一个点的音符意味着断奏,但是你的 MIDI 表示四分音符可能被解释为八个音符后跟八个休止符等。
您还必须 quantize现场演奏的结果,这意味着你必须允许人类在节拍之前或之后有一些余地,而不会有不同的标记。如果不这样做,对音符的唯一“正确”解释将非常机械(并且不悦耳)。
至于绘制乐谱并将其放置在五线谱上的正确线条或空格上,如果您了解如何绘制图形,这并不难。有musical fonts可用,允许您使用字母数字字符来表示音符主体、符干、休止符等。您还必须了解调号,accidentals , 当某些笔记是 enharmonic等
您提出的这不是一项小工程,并且已经有很多软件可以完成您正在尝试做的很多事情。也许存在一些完全可以做您想做的事情,所以在开始编码之前先研究一下。 :) 看看各种work that has already been done看看是否有任何您可以使用的东西,或者哪些东西会让您放弃您的项目。
我做了 my own几年前 QuickTime 的 MIDI 实现的键盘播放器/录音机,必须解决您面临的许多问题。我这样做是为了好玩,它很有趣(对我来说也很有教育意义),但它永远无法与同类商业软件竞争。虽然人们确实喜欢它,但我真的没有时间维护它并添加人们想要的功能,所以最终我不得不放弃它。这种事情真的很辛苦。
关于performance - 可视化钢琴演奏评估,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2905577/