Limitations of Dorico's microtonal implementation

While Dorico is excellent for writing microtonal notation with playback, for making electronic music using MIDI software and hardware instruments, it’s far from ideal. Many microtonal musicians would like to write the music in notation software first, and then export it to software and hardware instruments, and a DAW for processing and mastering. Dorico uses VST2 or VST3 parameters for microtonal playback. These are not exported with a midi file. And even if they were, the only DAW that has an editor for them, Cubase, cannot handle the same precision as Dorico, so a lot of tuning information would be lost. It is not possible to edit micro-tuned pitch in Cubase with the same precision as in Dorico, even with identical VST instruments that support such precision! (Cubase deals with 1 cent increments, Dorico with less than 0.1 cents).
To use these instruments for microtonal electronic music, one would have to stay in Dorico for all MIDI edits and only export audio tracks for audio processing and editing in a DAW.

Moreover, only a handful of high-quality VST instruments (by Steinberg) implement these parameters, very few third-party instruments (such as Modart Pianoteq), and no hardware instruments. The fact is that for making microtonal electronic music, instruments that use either MIDI notes tuned with multi-channel pitch bend, or MPE, or 128 notes per channel pre-tuned with .tun, MTS., propriety methods, .scl etc., are widely used and continue to be so for a long time.
The highest-quality microtonal synths use these methods, not VST parameters (yet?).

What is the future of the VST tuning method in Dorico?

  1. Will it become possible to export micro-tuned MIDI files from Dorico to Cubase with the tuning intact?
  2. Will it become possible to extract the VST tuning parameter values from Dorico-exported MIDI files and translate it to other tuning protocols, like it’s now easy to translate .tun files to .scl or pitch-bend-tuned MIDI to .scl etc.?
  3. Will Dorico implement other tuning methods? In the MIDI editor there’s a lane for pitch bend but its editing precision seems limited, and it’s awkward in use.

Thanks for the feedback. We don’t currently have any concrete plans in this area, and your post is certainly food for further thought. One thing I can say is that we are planning on expanding Dorico’s capabilities with MIDI pitch bend in future; a few pieces are missing, including a setting that allows you to specify what the pitch bend range of the target endpoint is, and to allow you to send the necessary MIDI messages to change that range (assuming that the device itself supports modifying the range in this way).

Thank you for the reply. Good to hear that the pitch bend implementation will improve.

I find it a little curious that it is possible to edit VST parameters of Steinberg’s instruments with precision in Dorico but not in Cubase.
And as I wrote, it’s unfortunate that the tuning information is doomed to stay inside Dorico even with Steinberg’s own instruments and software.
Can we expect this to change in the future with the much-hoped Dorico-Cubase integration?

That’s good news Daniel. It is also the case that we’ve been using pitch bend for decades and know the pitfalls and tricks. Export as MIDI is crucial, because players often import into their DAW to practice tuning with looping and tempo reduction.

I wonder if it were possible to translate the VST tuning parameter data to pitch bend values. I know that the VST tuning data is not in the MIDI but could it be read with some kind of VST plug-in? That would solve all the problems.

I doubt this will be possible to implement for all DAWs, but what would be ideal is if the VST information was communicated along to the DAW instead of translating it into MIDI pitch bend. (I believe this is an issue with the limitations of MIDI, so I can see that as a problem.) If Steinberg did however make this sort of communication possible between Dorico and Cubase, then I would gladly switch over the cubase in the future since I could do my own mixing and mastering working directly with the outputs from Dorico.

UVI has just release IRCAM Solo Instruments 2, and it supports MIDI MPE (MIDI Polyphonic Expression). No mention is done about VST Expression, so it would be great to have a way to translate VSTex messages to MPE.

https://www.midi.org/articles-old/midi-polyphonic-expression-mpe

Paolo

I was just looking at that awesome sample set from IRCAM. Dorico chose a rarely used parameter for microtuning. It seems very unlikely that UVI starts supporting the VST tuning parameter. The fact is that for notation and playback of small EDOs, Finale is still in some ways a better choice than Dorico. The principle of defining a tuning and a set of accidentals and their effects is exactly the same in both but the tunings are defined as steps in MIDI notes in Finale; the instrument is pre-tuned to the EDO in question. So any fully re-tunable instrument works, whatever the tuning method - proprietary, .scl, .tun, MTS etc., and the MIDI can be transferred to any DAW. The limitation is the 128 notes per channel, so with large EDOs the range becomes too small. That’s where Dorico shines: Just Intonation notation and playback in Dorico typically uses 12,000-EDO.
I agree that Dorico/Cubase communication would be most desirable. But that still leaves us with the problem of all those excellent microtonal instruments that don’t respond to the VST tuning parameter. It looks like we would have to restrict ourselves to Steinberg’s VSTis (unless the VST data cannot be translated). Third-party instrument makers have not started to implement the VST tuning parameter (VST2 nor VST3). Modartt Pianoteq is the rare exception but that instrument is known for its exceptionally versatile support of microtuning (it has its proprietary microtuning functionality and it supports .scl, multichannel pitchbend (MPE), and MTS). MIDI 2.0 is also coming, with a new microtuning protocol. Eventually that may become the standard, and VST Expression tuning may be doomed to a curiosity.

MPE and other note-specific features in MIDI 2.0 are in fact based on VST Note Expression, and I don’t think you need to worry that Steinberg will not support MIDI 2.0, though it’s possible that Dorico’s support for it may lag a version behind Cubase’s, depending on how the MIDI 2.0 features are eventually implemented and what it takes for them to be brought into the shared audio engine.

I have already indicated earlier in this thread that we are certainly planning to do some more work in the area of supporting MIDI pitch bend, and that may well allow us in future to provide an alternative means of producing microtonal playback.

To extend on what Daniel has said, if there any plugins that want to support MIDI 2.0 then they will need to implement VST Note Expression in a VST3 plugin (because the tuning support is based on Note Expression). MPE is a ‘poor man’s’ Note Expression in that it fakes per-note control by assigning every note to a separate channel, so that it can be transmitted using MIDI 1.0.

See also https://www.youtube.com/watch?v=zXnHaoN2Cig

Good to hear about the promising future developments (MIDI 2.0 and VST3)!
At present, though, my situation is this: most of the instruments I want to use in production use .tun, .scl, MTS etc. for tuning while the midi notes have no tuning data themselves. In Finale, I can write a score with microtonal notation that is correctly played back by those instruments, and I can export the MIDI file to a DAW. In Dorico, I must write a part in microtonal notation, and Dorico plays it back on a compatible instrument, plus I need to write another part where each pitch gets its own MIDI note (a “scordatura” part), for use with my instruments of choice and for exporting to a DAW. A lot of extra work.
(To clarify, let’s take 19EDO, for example. In it, the chromatic scale goes like this: C C# Db D D# Eb E… If I write in 19EDO in Finale, those notes would be, starting from C4, MIDI note# 60, 61, 62,…66, and the synth would be tuned to 19 notes per octave (C5 would be MIDI note #79). Whereas Dorico uses the MIDI notes 60, 61, 61, 62, 63, 63, 64, and adds tuning data - which is not transferred in the MIDI.)

I really would like to make the switch from Finale for good, so any kind of functionality or plug-in that would help to make the translation of the microtonally notated part to a scordatura part would be most welcome. In fact, it’s just transposition of each specific pitch by a specific interval, but it’s not possible to Filter / Select microtonal pitches. That would be great.

I play 19EDO on a standard keyboard - octave repeating at the 12th.

Currently it appears to be impossible to have microtonal accidentals playback correctly with Kontakt. I guess this is because Kontakt is not VST3, doesn’t support Note Expression, and doesn’t support the Detune parameter in VST2 either. So that scuppers any attempt to do quartertone playback with Kontakt instruments. :frowning:

It would be great if the microtonal accidental config would allow a custom PitchBend value to be set. I seem to remember being able to do that with Finale when I last created a score with quartertones. Which was in 1997 - :slight_smile:

The issue of using MIDI pitch bend for microtonal playback has been discussed several times in other threads, e.g. here.

Thanks Daniel. I’m always amazed how on top of the forums you are. Thank you!

I’ve read the comments about pitch bend for microtonal playback in that thread and I confess I don’t buy in to the rationale. It seems to me to be more of an architectural decision in that it’s the wrong way to achieve the result in an ideal world. But sadly with Kontakt making up so many people’s instruments arsenal and with Kontakt being VST2 only and not supporting detune we are all out of options. With the current constraints of Kontakt in the mix we are far from an ideal world.

Personally I would totally accept the trade-off of potential nonsense being heard unless the correct settings for pitch bend range are set in instruments. Most of the time I’m working in a decoupled way anyway with instruments loaded in VEPro and the DAW/Dorico side having no knowledge of what’s the other end and only passing MIDI data in a fire-and-forget, non-transactional manner.

And I would totally accept the constraint of pitch bend being for an entire channel. I don’t even see that as an issue. I know some will of course want polyphonic instruments (musically polyphonic, not VI polyphonic) to play back microtones on a note-by-note basis within the same MIDI channel, but this is even more niche than the niche of non-polyphonic and one with a viable workaround if the per-channel pitch bend were present.

I also have no issue with it being best efforts and non-transactional. If one in a hundred thousand pitch bend ‘packets’ are lost, so be it. If I actually spot it on a realtime play-through, then I’ll play through again.

A way in which maybe this can be reconciled from an architectural purity pov might be to allow pitch bend in Custom Playback Events to any note modifier which firmly place it in the territory of “if you get nonsense it’s your own fault”. Maybe accidentals are not classed as modifiers notionally and are just things in themselves when applied to a note, but they could be(?) (Would need a NOT conditional too for implicit naturals I guess, and maybe a negative time offset value to assure the bend is sent a smidge before the note(???)) (I appreciate ‘smidges’ are not ideal at all - but if it’s user-specified then ‘on-your-head-be-it’. I appreciate it would affect the preceding note if it’s still playing.) (Come to think of it, they must be classed as modifiers in Dorico as attempting to play back notes with microtonal accidentals currently plays the closest MIDI note and modifies it, or something along those lines. So the hook is there but the action is limited to either VST3 note expression or VST2 detune param.)

Maybe I’m talking garbage without sight of the whole picture, but it might genuinely be a decade before Kontakt has caught up with VST3 and note expression - or maybe that’ll never happen. Currently there is not a workaround as far as I know.

1 Like

Couple of fudged workarounds to achieve some level of microtonal playback with Kontakt instruments…

  1. Use Voices
    Route microtonal notes to detuned versions of the same instrument.
    So with quartertones, set up a duplicate of the Kontakt instrument.
    Kontakt instrument 1A = no tuning change
    Kontakt instrument 1B = tune down a quartertone
    In Dorico enable independent playback of voices.
    Send voice 1 to midi channel 1 and voice 2 to midi channel 2
    Etc. And deal with the presentational issues in the notation!
    And extend the idea for smaller pitch divisions.

  2. Use a Playing Technique and Expression Map with CC change
    In the Kontakt instrument click on the wrench icon to edit the instrument
    Click on Group Editor
    Click on Edit All Groups
    Under Source alick on …add modulator
    Choose CC and choose a CC number that you’re not using for anything else
    Set the pitch range to 0.5st and click invert
    In the mapping graph create a line that is y=0 all along the x direction, and set y to max for x is max (i.e. _| shape)


    This will mean that when CC21 is 127 pitch will be tuned down by a quartertone and when CC21 is not 127 pitch will be set back to normal.
    In Dorico for every note with a quartertone sharp or 3 quartertones sharp accidental add add a playing technique to the note (maybe one you are never normally going to use). And add a “nat.” playing technique on the subsequent non-quartertone note.
    In Expression Maps… add a switch for that playing technique you used.
    Under actions add a CC action (on e.g. CC21) and set to 127.
    Click on Off events and add a CC action (on e.g. CC21) and set to 0.
    Now whenever the playing technique is played it will send CC21 127 and CC21 0 when natural.
    Now figure out how to not engrave the playing technique markings you’ve used for this.
    Etc.
    I’m sure this can be optimised.

Quick and dirty effort. But maybe helps some.

1 Like

Graham, thank you for the hints. Obviously, they are workarounds that break the composing workflow, and it happens with all the other tricks we had been forced to use up to now. I can’t wait for the time when notation programs and sample players will talk between them with kindness and mutual understanding!

But what I know of simplicity, I, who started making computers sound with Fortran lists…

Paolo