可视化钢琴演奏评估
我需要开发一个钢琴演奏演奏评估器。基于从乐谱生成的 MIDI,我需要评估实际演奏的 MIDI(MIDI 键盘)。我计划根据音高、持续时间和响度来评估演奏。我认为评估是对乐谱音符和在 midi 中演奏的音符的比较。
但我不知道如何可视化(即显示这个人哪里出了问题)这个评估过程。即可以显示符号并突出显示哪个注释出了问题。 但我怎样才能以某种图形形式显示这些内容呢?或者更准确地说是在五线谱(乐谱)本身上。我将音符详细信息(音高、持续时间)和乐谱详细信息(调和拍号)存储在表中,并且我正在使用 Java。但我不知道如何将所有这些转化为图形形式。
任何见解都非常感激。预先致谢
I need to develop a performance evaluator for piano playing. Based on a midi generated from sheet music, I need to evaluate the midi of the actual playing (midi keyboard). I'm planning to evaluate the playing based on note pitch, duration and loudness. The evaluation is I suppose a comparison of the notes of the sheet music and playing in midi.
But I have no idea how I can visualise (i.e. show where the person have gone wrong) this evaluation process. i.e. maybe show both the notation and highlight which note has gone wrong.
But how can I show any of this in some graphical form? Or more precisely on a stave (a music score) itself. I have note details (pitch, duration) and score details (key and time signature) stored in a table, and I'm using Java. But I have no clue as in how I can put all this into graphical form.
Any insight is most gratefully appreciated. Advance thanks
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(1)
你所说的实际上是一个用于乐谱的图形差异工具。我认为显示差异的最简单方法是将演奏的音符(和休止符)叠加在“正确”的乐谱符号上。棘手的地方在于显示音量差异,是否弹奏(或应该弹奏)音符断奏、马卡托、缓音等。例如,上面有点的音符意味着断奏演奏,但你的 MIDI 表示四分音符可能会被解释为八个音符,然后是八个休止符,等等。
您还必须 量化现场表演的结果,这意味着您必须为人类在节拍之前或之后稍稍留出一些余地,而无需进行不同的注释。如果你不这样做,那么对音符的唯一“正确”解释将是非常机械的(并且不悦耳)。
至于绘制乐谱并将其放置在五线谱上正确的线条或空格上,如果您了解如何绘制图形,那么这并不难。有音乐字体,允许您使用字母数字字符来表示音符主体、茎、休止符等等。当某些情况下,您还必须了解调号,变音记号注释是 enharmonic 等。
这不是您提议的一项小任务,而且已经有有很多软件可以完成您想要做的很多事情。也许有些工具可以完全满足您的需求,因此在开始编码之前请先研究一下。 :) 查看各种已经完成的工作,看看是否有任何东西你可以使用或者会让你放弃你的项目。
我为 QuickTime 的 MIDI 实现制作了我自己的键盘播放器/录音机几年前,必须解决您面临的一些问题。我这样做是为了好玩,它很有趣(对我来说也很有教育意义),但它永远无法与该类型的商业软件竞争。尽管人们确实喜欢它,但我真的没有时间维护它并添加人们想要的功能,所以最终我不得不放弃它。这种事情确实是很费工夫的。
What you're talking about, really, is a graphical diff tool for musical notation. I think the easiest way to show differences is with an overlay of played notes (and rests) over "correct" score symbols. Where it gets tricky is in showing volume differences, whether notes are played (or should be played) staccato, marcato, tenuto, etc. For example, a note with a dot over it is meant to be played staccato, but your MIDI representation of a quarter note might be interpreted as an eight note followed by an eight rest, etc.
You'll also have to quantize the results of the live play, which means you will have to allow some leeway for the human being to be slightly before or after the beat without notating differently. If you don't do this, the only "correct" interpretation of the notes will be very mechanical (and not pleasing to the ear).
As for drawing the notation and placing it on the correct lines or spaces on the staves, that is not hard if you understand how to draw graphics. There are musical fonts available that permit you to use alphanumeric characters to represent note bodies, stems, rests, etc. you will also have to understand key signatures, accidentals, when certain notes are enharmonic, etc.
This is not a small undertaking you are proposing, and there is already a lot of software out there that does a lot of what you are trying to do. Maybe some exists that does exactly what you want to do, so do research it before you start coding. :) Look at various work that has already been done and see if there is anything you can use or which would put you off your project.
I made my own keyboard player/recorder for QuickTime's MIDI implementation a few years ago and had to solve a number of the problems you face. I did it for fun, and it was fun (and educational for me), but it could never compete with commercial software in the genre. And although people did enjoy it, I really did not have time to maintain it and add the features people wanted, so eventually I had to abandon it. This kind of thing is really a lot of work.