Transposition and enharmonic spelling in atonal scores

There is a lot I love about Dorico, but the way it handles transposition and enharmonic spelling in atonal scores continues to be a major frustration.

To illustrate the issues, lets start with this matrix that was input into generator :

Key observations:

  • There are no multiple sharps or flats
  • There are no Fb, Cb, B# or E# spellings
  • The tool gives you the option to use either flats or sharps consistently throughout

From a music theoretical perspective, I hope we can agree that in a harmonic world without key signatures, key centers, leading tones, scale degrees, dominant relationships, etc., that there is no reason for awkward enharmonic spellings like Cb, and double sharps or flats.

Let’s now look at what happens when you enter P0 and try to create the first 6 rows of the matrix using the alt-shift arrow keys. The result is the same when transposing using the Shift I popover, or the Write->Transpose.

As you can see, each row has some rather unfortunate enharmonic spellings. I suspect the algorithm in use is attempting to minimize the number of augmented and diminished intervals, but IMO, the cure is far worse than the disease.

What is needed is a new Atonal Settings section in Write-Notation Options containing the following options:

use flats / use sharps / use both
prohibit double flat/sharp checkbox
use simplest spelling (e.g. no Cb/Fb/B#/E#) checkbox

Proper support for these preferences would make me 90% happy, as shift alt arrow keys would allow me to transpose a row half-step by half-step to the desired transposition, and at no point would I see double flats/sharps, or Cbs. It would be even nicer if Dorico supported the notion of transposition of intervals without quality (raw number of half steps). For instance: introducing a ‘z’ opcode in the shift I popup that transposes up/down the desired number of half steps. z6 transposes up 6 half steps, z-3 down 3 half steps.


Thanks for the feedback. We’ll discuss this, but I can’t make any promises about when we may be able to address it.