Common Style Constraints Feedback
I would like to share an addition that I have in mind which I would like to implement during the Google Summer of Code internship.
User Story
As a composer I want to get feedback if my piece has not met the historical rules, like counterpoint,
So that I learn more about the historical rules and so that I can write a piece that perfectly meets the standards that I intended to produce, e.g. Baroque style.
Solution
Please use the following topics for discussion.
Giving Feedback
The most effective way I can think of is coloring the conflicting notes red or yellow when historical rules are not met. When hovering over the note it will show a tooltip with the rule that is broken and some history background.
Selecting History Rules
I think that the most straight forward way is to select a musical period, e.g. Renaissance. I can image that some people would like to customize their own profile, then the musical period would be a perfect filter to find existing rules that you would like to use.
How to define constraints
Initially I think it is best to create a scripting language where you can detect your constraint using certain code contracts. For example, you want to detect if there is a parallel fifth in the score:
function parallel_fifth_constraint(noteA, noteB, nextNoteA, nextNoteB) { // check if the interval is a fifth if (intervalBetween(noteA, noteB) == interval.quinto) { // check if notes changed if (noteA != nextNoteA && noteB != nextNoteB) { // check if the next interval is also a fifth if (intervalBetween(nextNoteA, nextNoteB) == interval.quinto) { return true; } } return false; }
Comments
Mabe this could be done via a plugin. There you have a scripting language
In reply to Mabe this could be done via a by Jojo-Schmitz
Thank you for pointing me in a relative direction. I will take a further look at the plugin section.
In reply to Mabe this could be done via a by Jojo-Schmitz
In particular check out https://musescore.org/en/project/harmonyrules.
In reply to In particular check out by Isaac Weiss
Thank you for your very accurate link. I tried to use the plugin with the master version of musescore. The qml file was compiled but gets runtime errors.
In reply to Thank you for your very by maclotsen
Master is currently the height of instability—try the current release (2.0.3) or 2.1.
In reply to Master is currently the by Isaac Weiss
Thanks, I now see what the plugin does.
In reply to In particular check out by Isaac Weiss
The given feature is indeed partially implemented. Coloring notes works perfect and the intervals are correctly analysed. Yet something is bothering me. The feature should work as a validator. Would a validator plugin type be an interresting addition? I would imagine that a validator plugin will be triggered when notes are inserted in te score. That way you would get realtime feedback. I also think its best to provide a score interval iterator for scripters, so that such features need less effort.