Wish list: Greater depth of chord/harmony support

Jazz (and pop) composers and arrangers work explicitly with chords all the time. There is support for this in Dorico, but there is a vast frontier that could be added. And even if you don’t work in a genre where you regularly name chords/harmonies, some of this frontier could benefit you too.

I would break down the feature space this way:

Level 1: Ability to manually enter and print chord names.

Level 2: Playback of chords. This could range from crude block chords without inversions all the way through “auto-comping”.

Level 3: Snap notes to chords / scales. This can include the ability for notes to change automatically when chords are changed. This can also include automatic generation of arpeggios.

Level 4: Automatic detection of chords / harmony.

Level 5: Automatic harmonization based on melody and chords.

Dorico does level 1 brilliantly, and it does a decent job on level 2, other than having any comping modes. And chords entered into Dorico pass correctly through MusicXML. Other programs do levels 3-5 today one way or another. (With regard to level 5, Finale did this for several years with a Band-in-a-box plug-in. That was dropped when Finale went 64-bit and has not been replaced. It was a little buggy but actually quite a useful program, offering dozens of harmonization algorithms.)

Celemony has introduced Melodyne 5 this week and chord support has been a major focus of that release, with comprehensive support for Levels 3 and 4. See this video: Melodyne 5: Working with chords - YouTube

Likewise, Steinberg’s Cubase has had comprehensive support for level 3 and 4 for several years. See this video: The Chord Track and Chord Pads | Getting Started with Cubase Elements 10 - YouTube

Here’s what I would love to see in Dorico in order from basic to far-fetched:

a) Option to color-code notes based on how they fit in the current harmony. If no chords are entered, it would be based on the key signature. If chords are entered then they would take precedence over the key signature. A scheme such as Green = basic tones (root and 5th,) blue = guide tones (3rd and 7th,) amber = color tones (notes that are in the scale compatible with that chord, red = notes not on the scale (which might still be valid, but worth double-checking.)

b) Snap to chord, snap to scale. This would affect how alt+up and alt+down work. There is already a bit of logic that respects the key signature and tries to keep accidentals sticky, but I am suggesting the next level, which is to respect the current chord and the scales these chords imply. Basically, Alt+Up/Down would not go to a red note unless overridden.

c) Options for notes to move automatically to conform to a change in the chord name.

The above 3 items would appeal to people who use chord names already. But they could be helpful to others if we also had:

d) Automatic detection of chords. This is tricky business because sometimes it is ambiguous, and often there are multiple chord names that correspond to the same pattern of notes. Nonetheless, programs like Cubase, Melodyne, Band-in-a-box, Transcribe and others have seen fit to offer something here. A person writing hymns might not really care about the chord names. But if it were easy to detect the chord names, that would immediately highlight notes that didn’t fit and might be errors. I could see that being particularly useful in full-orchestra scores where it is very easy to overlook pitch errors.

e) Auto-harmonization – like the old BIAB feature.

f) Auto-comping, at least in some basic styles for piano, guitar, bass, drums.

These are some interesting suggestions! A lot of these I’m not necessarily opposed to, I’m just not quite sure of their usefulness when applied, or how I personally would ever use these features. (Obviously they would be useful to you and others or you wouldn’t be suggesting them.)

a) A lot of times if I have a moving line, I’m using some sort of passing chord or brief reharm that doesn’t necessarily have an immediate strong relation to the chord notated for the rhythm section, but is leading toward a resolution. Also, if I’m writing a sax soli for example, I frequently may have a 5 note voicing that doesn’t include the bass which would probably throw off any AI analysis. I’m pretty sure I wouldn’t use this when writing, but it could possibly be interesting for an analysis class type of assignment.

b) Could be useful as a modification to Alt-up/down. I usually write with a MIDI keyboard so I don’t Alt-arrow often unless I’m Ctrl-Alt-arrowing for an octave. Again, Dorico can’t really know what I’m thinking with a passing chord or something, so I would probably leave this off too. Isn’t the Melodyne approach to this for notes that have already been recorded and need to be fixed? It seems more useful in that situation rather than one where I can still write anything.

c) This could be interesting. What if you change an F13 to F7(#5) though? Would it make the 13th a b13 or just a 5th to #5? Or both? I could easily have an F13 voicing with a 5th and a 13th, but I usually wouldn’t want both of those to change. Just changing one or the other would likely create an minor ninth between two of the intervals I’m not going to want either. It could be interesting to quickly try out some different sounds, I guess I’m so particular with voicings I’m not sure how Dorico would necessarily know which notes to change.

d) Dorico sorta does this now of course, but only on one part like a piano part, and the chord guess is in the toolbar at the bottom. It might be useful to have Dorico guess at a voicing using all the available pitches on all staves, but I think I would always enter it myself to avoid ambiguity. As you pointed out, it’s tough for Dorico to know if a chord voicing should be Gb6 or Ebm7 as the notes are the same.

e) I’m a harmony geek so I know I would hate this and wouldn’t use it. I would be a touch worried it could teach students some bad habits if not implemented really well, like having the AI take voice leading into account too. Just thinking vertically and not horizontally too would lead to some pretty awful results.

f) This would be very useful for students as lots of students currently rely on the iReal Pro playback. The comping patterns are really simple, but reasonably good for practicing I suppose. This past semester I had several students submit work with iReal backing tracks. As we were in quarantine, I had told them playing along with the recording, an Aebersold, iReal, etc, were all fine. Perhaps this could even be licensed from iReal reasonably inexpensively. As virtually every jazz musician has that app on their phone, it could possibly be a nice cross-promotional marketing opportunity as well. Auto-comping is usually the most un-swinging option available, but for some students it’s all they have. This could be a nice feature that differentiates Dorico from MuseScore, Finale, Sib, etc. It’s getting a bit away from Dorico’s engraving focus though and obviously would take financial or considerable programming resources, but could be a very popular feature. iReal Pro is $13.99 though, so it’s a pretty massive leap from that to the $339 education license.

We are certainly interested in extending Dorico’s capabilities in these kinds of areas in the future, and in particular I think features to remap notes onto a particular scale as a compositional tool is something we might work on relatively soon. We’re also interested in what we can share of Cubase’s Chord Track and Chord Assistant functionality, where it makes sense.

When one looks at the examples in Cubase, Melodyne and others that have done chord tracks, they almost always show simpler chords, such as a typical pop singer/songwriter would use. I agree that modern jazz harmonies present some particular challenges here. But the Dorico team has proven to be very creative in their ability to develop elegant solutions that work for a wide swath of users.

Personally, I would probably lean more on the color coding of notes rather than allow the software to change notes automatically. But there are certainly some cases that such action is brilliant (e.g. arpeggios on simpler chords). One way for a jazz arranger to look at that color coding is that it is a “temperature graph” of tension. You might expect some density of red notes in the middle of a phrase where you want tension, but if you have many red notes at the beginning or end of phrases, that is more likely to be a mistake.

I view all the above suggestions are highly selective – use them where they provide an advantage and ignore them the rest of the time.

As an aside, I have been waiting a long time to see what the Celemony people would be doing to top Melodyne 4. Their work is really amazing. They have about 10 videos out that describe various aspects of Melodyne 5. I think these are all very mind-opening for anybody who deals with any aspect of sound. We are right in the middle of a golden age.

I’ve played a chord on my keyboard into a guitar staff, and used the “Generate Chord Symbols from Selection…” command to insert a chord symbol with the appropriate guitar diagram.

For instance, I’ve played in the notes (bottom up): F, E, C#
Dorico calls this, “Fmaj7(omit3#5)”
I’d like to rename it, “C#7(#9)” without having to edit the chord diagram.

Now I’d Love to be able to rename the chord without changing the chord diagram, or playback. Is this possible?

Often guitarists (and keyboardists) will play chord “fragments” that don’t include all the “important” notes, as a creative choice. Dorico has no way of knowing what chord I’m thinking of, so I don’t expect it to give me the name I want, but I’d like to be able to use my own name without Dorico trying then to “correct” the diagram.