Skip to content

MuseScore, parsing Chord (Harmony) texts to chord and bass notes

License

Notifications You must be signed in to change notification settings

per-d/notesFromChordTexts

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

33 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

<style> code { color: darkred !important; font-family: lucida console !important; } </style>

MuseScore 2.x plugin - Notes from Chord texts

This plugin for MuseScore 2.x reads chord (Harmony) texts and creates Chord notes in one added staff, and bass note in another added one if chosen. The created notes have correct durations according to the duration of the written chord, and are playable by MuseScore.

The plugin uses rules in wiki: Chord names and symbols (popular music) (as I understand them). All possible combinations of chords according to rules in that page are recognized and will generate notes.

The created notes are more of a suggestion, to get it to sound nice it's perhaps a good idea to move some notes one octave up or down, or just remove them.

Example, before:
Example before

After:
Ran with default settings, and chose to manually add "pipe organ" with only 2 clefs (see Staves for Chord and bass notes).
The 7th in the last chord is manually moved down 1 octave after the plugin.
Example after

Click to see another example that uses default options except these:
Octave for bass note: "Don't use", Reduce chords: "None", option Write parsed Harmony texts and Write Chord letters: "Yes".
This example also shows some alternative ways of writing chords, and have some comments added.

Idea from

This plugin was inspired from MuseScore 2.x plugin Generate Notes from Chords annotations.

How-To

  • Download and install the plugin to your MuseScore 2.0+ plugin folder.
  • Only the qml file is needed, but it can be a good idea to copy the folder into the plugin folder, partly to use test scores in sub folder test, and in the future perhaps translation files will be added.
  • Enable the plugin "notesFromChordTexts", and restart MuseScore.
  • Open a score with chord texts.
  • Run the plugin via Plugins > Chords > Notes from Chord texts
  • The plugin adds two staves*, one for chord notes (called root chord) and one for bass notes*.
  • *The plugin starts with an option box, there you can set the options you want, see Options below. E.g. don't add bass notes.
  • The plugin will try to close the score when finished, then asking for <Save>, <Discard> or <Cancel>. The reason is that the score will be in a bad state after the plugin have finished, and the added notes are not playable yet. So, do save/close.
  • Reopen the score and listen to the music.
  • To easy change the added notes see MuseScore shortcuts, e.g. ctrl up/down to move a note up/down one octave.

Rules

Chords can be written in different ways, this plugin allows all alternatives described in used Chord rules, and some more. "Chord containing quarter tones" and "Polychords" are not implemented though.

Allowed synonyms for:

Extension Synonyms
m− (Unicode hx2212), -, min, minor
majM, j, ma, major
maj(7)^, Δ, ∆; these means maj7 if "alone", otherwise maj
maj7t; but only if "alone"
aug+
dim° ("degree"), o (low case character)
0 (zero)Ø, ø
sus44, sus
sus22
Alteration Synonyms
b♭ (Unicode), -, dim
#♯ (Unicode), +, aug
adddom, maj (maj is not the same as # according to used Chord rules)
omitno, drop
Alternative syntax and short ways
ending 0same as 07
alone ^ or tsame as maj7 (but not alone maj; Cmaj = C, C^ = Cmaj7)
only [tone]+/augsame as aug[tone], e.g. C7+ = C+7
N.C. (no chord)also allows N.C, n.c. and n.c
Specials
Chord texts that starts with "(", or if it ends with ")" without any "(" before, will be totally ignored.
alt, lyd and for only text in parentheses, e.g. (blues) is just ignored. E.g. Calt will generate a normal C; C-E-G, but the ignored part is shown as "Staff text" above staff #2.

Notes

  • The plugin extends one chord until next chord. To avoid that, if you want no sounding chord, use N.C. (which means "no chord") as chord text.

  • The plugin uses note signatures according to the chord extensions for the added notes. E.g. Cdim will add C-Eb-Gb and not F#, and Caug will add C-E-G# and not Ab. But double key signatures and "specials" are changed, e.g. Cdim7 will add C-Eb-Gb-A not Bbb, and C#aug will add C#-F-A not C#-E#-G##.

  • If the plugin can't parse some part of the chord text it will just ignore that. In that case the ignored part is shown as "Staff text" above staff #2.

  • Added Chord notes (in staff #2) will include also the root note. If "bass notes" is used (staff #3) it will add the root note also as bass note (some octaves down, see Options), but if it's a different bass note using "slash notation" it will be that note as bass note.

  • "German" and "Full German". The plugin handles these variants, as long as it's correctly set in MuseScore.

Options

Show screenshot of the Options box
The plugin starts with an option box, there you have these choices:

  • Octave for root Chord
    1, 0 or -1
    Octave 0 starts with C0.

  • Max root note, otherwise 1 octave down
    "Don't use", D, E, F, G, A or B
    Don't use: Don't change octave, root note of chords always in Octave for root Chord.
    D, E, ...: If the root note of the chord is above this the chord notes will be one octave down relative to Octave for root Chord.

  • Octave for bass note
    "Don't use", 0, -1, -2 or -3
    Don't use: No staff with bass notes will be used (but the staff will be added anyway).
    Octave 0 starts with C0.

  • Min bass note, otherwise 1 octave up
    "Don't use", D, E, F, G, A or B
    Don't use: Don't change octave, bass note of chords always in Octave for bass note.
    D, E, ...: If the bass note of the chord is under this the bass note will be one octave up relative to Octave for bass note.

  • Lower case keys mean minor chords
    c (lower case) means Cm (C minor) and C (upper case) means C (C major).
    This is not dependent on the MuseScore setting "Lower case minor chords". Normally all chord keys are shown in MuseScore with upper case no matter if it's typed in with lower or upper case (if "Automatic Capitalization" is used). If the MuseScore setting "Lower case minor chords" is used they are shown as they are typed in. If the setting is used for the plugin it will treat lower case keys as minor chords even if it's not set in MuseScore and therefore shown in MuseScore with upper case.

  • Allow add to last harmony (experimental)
    E.g. C will generate C-E-G, and if next chord text is only 7 it's adding the notation to C (the last chord) and generating C-E-G-Bb. It's the same as writing C7. The next can then be 6 which means C7/6 (c7add6).
    It's experimental, and only there because a friend of mine uses that notation.

  • Reduce chords
    Reducing chords according to used Chord rules where it mention "... is often omitted".
    None:
    Don't reduce chords.
    Medium:
    for 11th chord : no major 3rd.
    for 13th chord : no perfect 5th or perfect 11th/4th.
    Max, as Medium plus:
    as Medium plus these
    for 9th chord : no perfect 5th.
    for 13th chord : no major 9th, no major 2nd (unless "sus2" is used).

  • 9th, 11th and 13th extension implies lower
    9th chord implies 7th, 11th chord implies 9th and 7th, and 13th chord implies 11th, 9th and 7th. According to used Chord rules.
    If you use this but want only the 9th for some chord use e.g. Cadd9.

  • Write parsed Harmony texts
    The plugin allows different ways of writing chords. When parsing them it tries to change them to "correct" syntax. To see the parsed chord texts, use this option.
    If used it will add the parsed chord text as both "Chord text" and as "Staff text", above staff #2, then you can see how MuseScore will show them and also the real text after parsed by the plugin.
    These will also show ignored parts of the chord text (if any).

  • Write Chord letters
    Write generated notes as letters, can be a help to easy see what notes are generated. It's written as "lyrics" under staff #2 if used, that is because the measures ought to be stretched to avoid overlaying.
    No:  Don't use this.
    Yes: Write real note letters as e.g. D-F#-A-C# for Dmaj7.
    In C-scale: Write note letters in C-scale, e.g. C-E-G-B for Dmaj7, to easy recognize the chord.

Staves for Chord and bass notes

The plugin uses 1 or 2 staves depending on if "bass notes" is used. Generating Chord notes in staff #2 and bass notes in staff #3 - if used. Either in automatically added or existing staves.

After the Options box it checks that there are enough staves. There are some alternatives:

  • If only one staff in the Score it asks if you want to create 2 (or 1) extra staves.

    • If you answer "Yes" it adds two staves with instrument "Piano" (will use only one if not "bass notes").
      The staff for bass notes is however using normal G-clef (unlike when adding the instrument in the UI), and the bass notes will reside far down (if "bass notes" is used). After the plugin it's a good idea to change to a F-clef to have it more readable.
    • Answer "No" if you want to choose what instrument to add. Make sure you add enough staves, 2 if "bass notes" is used, otherwise 1. If not enough staves it gives an error message.
    • Or "Cancel" to quit the plugin.
  • If enough staves already exist it asks if it's ok to use them (or only one if not "bass notes").
    It will then overwrite any notes that are already there, for voice #1. Notes in other voices are not touched.

  • If more than one staff but not enough it will give an error message.

Issues

Kindly report issues or requests in the issue tracker.

If you find something that doesn't follow used Chord rules, or something in that page that isn't correct or missing, I would appreciate if you report that.

Known issues

(won't fix)

  • For some scores the plugin crashes. To avoid this, start the plugin with no score opened. Just click the shown error message and then open the score you want and run the plugin again. This "fix" will last for the whole MuseScore session.
    If the plugin still crashes even if this is done, then you can report that as an issue.

  • The plugin is depending on notes or rests for every chord text. If a chord text has no "own" note or rest it will not generate notes for that, acting as if it's no chord text there and extending the notes from the last chord. To solve that, split the note before so you have one "under" the chord text and bind them with a legato (or add a rest there if it's more suitable).

Tip

  • For "soft" melodies, e.g. "Silent Night" it sounds better (IMHO) with "pipe organ" for the added chords and "violin" for the melody. If you add the extra staves before the plugin with your own choices of instruments it will use them instead of adding "piano" staves.

  • It's a good idea to make a copy of the score before starting the plugin.

Defaults

The "Options box" is using default values. They are defined in the code in notesFromChordTexts.qml. It's kind of easy to change the default values if you know javascript programming, they are all defined in the top when defining var glb.

The default values are optimized for a nice sound for soft melodies when using "violin" for the melody and "pipe organ" for the added chord and bass notes, IMHO.

About

MuseScore, parsing Chord (Harmony) texts to chord and bass notes

Resources

License

Stars

Watchers

Forks

Packages

No packages published