Microtonally augmented unisons don't play back

I noticed this problem: If a vertical interval of two notes, on the same staff line or space, are separated by a micro-interval (quarter-tone), Dorico only plays the upper one and not both notes. This is true also when the two notes belong to two different voices. In the enclosed example, only the first two, and the last dyad (in which the notes are written on different staves), Dorico plays both notes.

small interval.jpeg

Other Dorico users have tested this and report the same problem. Could the support confirm that this is a bug?

I just tried this in Helmholtz-Ellis just intonation, and it works fine for me. There was one case where the I added a unison note that was higher than my original, and I only heard the new higher note; but I tried again and the second time it worked (that’s the third bar in my example, which is treble clef). Hope this helps…


I think it will depend on the specific sound source as to what will happen. Notes that are only a matter of cents apart and which are played by triggering the same MIDI note but with different amounts of per-note detuning applied are going to be a bit hit and miss, because in general most patches, even polyphonic ones, can only play the same MIDI note once simultaneously.

This is not about the sound source - I used Dorico’s own Halion, as well as NotePerformer. Besides, I’m not aware of any other instrument that responds to the VST2 tuning parameter.

If I write a dyad with a standard note (ie. natural) and the same note microtonally flattened, Dorico will play the dyad back correctly. I tested with a 24EDO quarter-tone as well as a syntonic comma in JI notation, as Stephen did above. However, if I write a standard note plus the same note microtonally sharpened, Dorico only plays the higher note. This is clearly a bug and should be fixed.

It seems like the same technical limitation behind playing regular unisons.

MIDI playback cannot sound two notes playing at the same pitch at the same time on the same instrument. It is like striking a single piano key with two fingers: you only get one tone, not two.

Microtones in Dorico appear to be performed through detuning of keyboard tones. A microtonally altered unison is therefore like detuning a piano key in two different ways at the same time (which is impossible, so the system picks one, usually the last), and then striking it with two fingers. You’ll still only get one tone. However, an enhamonically equivalent second would sound correctly, since it would be using two keys.

The solution to this I imagine would be quite complicated. Detect these “collisions” and have the playback engine play an equivalent detuning of an adjacent note instead? (but what if all the adjacent notes are also taken?) Have a second identical instrument on standby just to perform the colliding notes? (but what if there are 3 or more unisons?)

This is not about midi collisions and the “same notes”. Dorico uses VST parameters for the re-tuning of the notes and it uses “virtual notes”, of which there can be thousands per octave. I’m using 12000 notes per octave and the playback works just fine. As Stephen and I wrote above, there is a special case where the playback is incorrect. This is described by us above. Dorico does play microtonally altered unisons, too. But there’s a bug: if you write the microtonally altered unison as a (microtonal) sharp rather than a flat, it doesn’t play it.

Surely it is about MIDI collisions IMO. There are only 12 MIDI notes in an octave. If you try to play 13 simultaneous microtonal notes, then something has to collide with something else.

MIDI doesn’t have any way to match up note-starts with note-ends. If you send the messages “start note 60, start note 60 with played at different pitch, end note 60, end note 60” there is no way to know which “end” corresponds to which “start”, and there are two different musical possibilities (the first note ends first, or the second note ends first).

I suppose you could take this to the extreme that provided the polyphony doesn’t exceed 128, you could always find some way to map the playback onto the 128 possible MIDI notes - but I wouldn’t like to write or debug software that tried to be that clever! In practice you are most likely to make some simplifying assumptions, such as identifying the MIDI note numbers with the lines and spaces of the staff in the conventional 12TET way.

And if you make that simplifying assumption in 24TET, C natural, C-quarter-sharp, and C-sharp are trying to share two MIDI notes (60 and 61), but if you write C-quarter-sharp as D-threequarter-flat, you might then get lucky if the software uses MIDI note 62 to play the “D”. (Of course a human might not like reading a chord where the visual “top note” (D-threequarter-flat) isn’t the highest sounding pitch - but you can’t win 'em all!)

Well, no matter what the inner mechanics, Dorico already plays polyphonically back microtonally altered unisons, and it knows how select the midi notes and retune them with the VST2 per-note tuning parameter, according to the pitch delta of the accidentals. There’s just this one situation where it fails, and that is the bug that’s being discussed here. And the tunings that are being used - and played - are not only 24TET but extreme divisions such as 12000TET, as well.
To repeat, so far it has seemed that Dorico plays a microtonally altered unison, no matter how small the interval, correctly as two simultaneous notes, when one of the notes is a notated microtone flat from the other one. However, Dorico only plays a single note if the notated microtone is sharp from the other one.

I have created a list of a bunch of microtonal chords for my own reference in a file, and once the interval gets close enough, the pitch drops, but as far as I can tell only under these conditions:

The close pitches are on the same stave.
One of the close pitches is an unaltered ‘base’ scale note, like middle C.
The altered pitch has to be above the unaltered note.

The file I have shows this fairly clearly at the 13:24:25 chord on page 15. A pic of this section is attached, although to really dig into it the Dorico file probably is needed. In this case, the first triad sounds all 3 notes; the second only sounds 2; the third sounds all 3. If it’s useful, can someone can tell me how to share the Dorico file with developers so they can play with it, or at least get material to formally document this limitation?

You can simply send it to me, Andrew, at d dot spreadbury at steinberg dot de. Based on my current understanding of the capabilities of HALion I don’t think there’s anything practical that we can do about this limitation, as it can only play a single note with the same basic MIDI pitch on the same channel at the same time. Obviously some heroic things could be done, such as assigning some notes to another channel, or figuring out a way of describing each simultaneous note using a discrete MIDI pitch, but in the latter case I’m not sure what kind of result you might get when playing a note intended to be played on one pitch by another MIDI note further away.

File sent. Let me know if you did or didn’t get it. :slight_smile:

It’s a possibility that I think would be pretty neat to create a playback video of that and put it on Youtube, but I’m hesitant to do that without finding a workaround for the dropped pitches.

If it’s in principle impossible to have close unisons play back I don’t understand why they do play back in some cases and not in others. As I described above, the direction of the microtonal alternation is a factor here. The first of the dyads in the enclosed example plays back correctly (Dorico plays two simultaneous pitches), while the second one doesn’t (Dorico only plays one note - the uninflected one). It’s the exact same interval in both dyads, the syntonic comma, ie. 21.5 cents.

Dorico 2.2.10 (released about a month ago) does feature some improvements in this area: the kinds of dyads you show in your picture should play back correctly at least most of the time, barring any situations where HALion is unable to play the pitches simultaneously. However, there are certainly situations with e.g. notes that are very close in pitch that follow each other while slurred that cannot all be played. As soon as HALion receives a “note off” message for a given coarse pitch, it will stop all sounding notes on that pitch, so the note off for e.g. the first note in the slur will also stop the second note of the slur if it is played by the same coarse MIDI note with a different tuning amount. There’s nothing we can do about this in Dorico itself because it’s simply how HALIon works.

I thought I’d installed 2.2.10 but I hadn’t; I did now and indeed both microtonal dyads now play back correctly! Thank you! I was using Pianoteq - which now supports the VST2 tuning parameter.
By the way, the ‘Check for Updates’ menu command takes the user to a deleted (404) webpage. It took some time to find the download page for Dorico updates.