Check scores for adherance to music harmony rules

• May 29, 2012 - 08:47
S5 - Suggestion


I am reading First Year Harmony by William Lovelock, with a view to learning how to harmonize a melody, resulting in Soprano, Alto, Tennor, Bass. There are many rules to follow - e.g. No two parts may move in parallel perfect 5ths or octaves; the leading note may never be doubled; no part may leap an augmented interval, etc., etc., etc.

I was wondering about a mechanism to check these rules for a score, and the best way to implement it - while MuseScore is running (interactively letting you know if you break a rule), or something to parse and check the score after it is written (e.g. reading the score in XML).

I am considering writing something to add to the MuseScore code to do this, but just getting MuseScore to compile on windows 7 seems somewhat daunting with all the different packages required... I am a stay at home mum with 2 small kids, so don't have a lot of spare time, and my C++ is somewhat rusty, as I have not used it since 1999. I have used C a lot more.

Any thoughts on this?



Ah - William Lovelock :)

I still have both books 1 & 2 from my college days mainly for sentimental reasons, but occasionally for reference when my memory fails me :)

This would be a wonderful teaching resource.

And certainly a parallel 5ths/octaves check would save me a lot of time visually and aurally checking my compositions on the occasions when I am being technically correct :)

Title Feature suggestion - check scores for adherance to music harmony rules Check scores for adherance to music harmony rules

Hi ChurchOrganist,

I'm wondering how 'general' to make this plugin. What do you think about the following questions?

Could I assume a maximum of four voices to check...or maybe five if there's a descant?

Do you think I could assume different "Voices" for each of Soprano, Alto, Tennor, Bass, or do you think it's likely that some people would have have e.g. Soprano & Alto in one "Voice" but using a chord instead of a single note?


I figure the main users of this plugin would be students writing four-part exercises for college theory courses (or teachers grading same :-). And as such, I wouldn't see any need to handle anything more general than that. I mean, sure, the more general the better, but no reason to create unnecessary extra work for yourself, either.

The way I would see a plugin working is for the user to select a section of score to check for harmony errors.

I would suggest that this should not contain more than 8 voices - ie SATB and keyboard accompaniment. If it does, the plugin should stop with an error. The only problem you may run into, however is that in 8 voices there will be inevitably some octave doubling, so it will need to be documented in such a way that the user can control this by means of the selection (s)he makes.


I emailed the music21 Theory Analyzer people at MIT as lasconic suggested, and received the following reply last night:

"The student who made the module is working on improved docs this weekend and it will be made part of the main music21 project in a release latter this month. Thanks for noticing it!"
--- Thanks, lasconic.

While I was waiting for the reply, I completed a plugin that will check for consecutive perfect fifths and perfect octaves. I have submitted it as a plugin called Check Harmony Rules if anyone is interested.

Some possible improvements:
- if there is no selection, just work on the entire score
- you included a sample file, but took the backup file (the one ending with a ,) rather than the latest version

Thanks for the suggestions, Jojo-Schmitz. I have carried out both of them and a new version has been uploaded (sorry - I did wonder what the comma meant! Now I know).

you'd need your own repository, and an account first.
I started using GitHub a couple days ago and really start to like it.

I could also create a repository for it im my account and make you a collaborator (you'd still need an account for this)?

Status (old) active fixed

As we now have an excellent plugin from Christine to do this job, which I have already used several times :)

I am marking this as fixed.

Hi ChurchOrganist,

When you said "As we now have an excellent plugin from Christine... " did you mean from Yvonne (me), the Check Harmony Rules plugin, or is there another plugin I've missed? If it's mine you are using, then it is great to hear that it is useful to someone! :)

Best regards,