Questions about MIDI Import Options in Dorico (using Note Performer for ultimate playback)

I’m trying to import some “raw” (untweaked) MIDI from a Logic Pro demo I’ve done. I know Dorico does not yet have the ability to round the MIDI data to the nearest 16th note (etc). and also that others have recommended using MusicXML instead since the view in Logic’s Score Window will basically match what is imported into Dorico (meaning I can edit it in Logic first and THEN import to “pre”-clean it up, etc.). However, for these projects I’m actually using a beatmapped Logic session and so it seems like exporting MIDI from Logic is the way to go (since as far as I know, MusicXML would not retain the precise timing info). I’m then generating an audio bounce from Logic of the live audio elements (that were not mocked up in Logic using MIDI), attaching it in iMovie to a photo, and then importing THIS into Dorico (after importing the MIDI) as a video in order to sync up the video’s audio precisely with the MIDI, so I can still hear things like recorded vocals, etc. from the original Logic session (that part works fine!)

Back to my question: when I import the MIDI into Dorico, I’m curious what the optimal settings should be if my goal is to have Note Performer automatically generate appropriate tracks. I’m presuming “interpret ch. 10 as Gen. MIDI percussion” can remain unchecked; I’m NOT sure about “interpret as General MIDI” (but am leaving that checked for now); I’ve re-titled my Logic tracks to the stock instrument names and so presumably can check “use MIDI names for instruments” (I’m presuming Note Performer will choose the appropriate sounds as as result?), etc. In addition, the two I’m particularly wondering about are:

  • “Preserve note velocities”. Does Note Performer ignore these values and interpret the score playback completely based upon the actual visual score, and therefore I should keep this unchecked?
  • “Preserve note positions” - I’m racking my brain to try and understand in what situation I would NOT want to do this, but was curious anyone’s explanation.

Best and much thanks in advance -

  • D.D.

Interpret as GM means that it will try to identify instruments by looking at the program numbers and assuming that they correspond to GM.
Preserve velocities: these values are passed to NP, but it may make its own decisions about whether to use them. The same applies for more positions.

It is my understanding that the idea of NP is that it is intended to be plug & play, ie totally automatic but with little scope for customisation (since the idea is that it makes its own decisions about phrasing, timing and mixing - it’s not just a sample player). I don’t know to what extent its possible to give extra hints to NP to ask it to play something using the specified velocity and timing.

Thanks. I’m guessing I’m also just wondering: if I DON’T check “preserve note positions”, what would Dorico actually do to the underlying MIDI note positions and visual note positions (as displayed, for example, in the Piano Roll) vs. if I DID check it?

It would play them quantized, i.e. exactly as notated

In reply to my question of: if I DON’T check “preserve note positions”, what would Dorico actually do to the underlying MIDI note positions and visual note positions (as displayed, for example, in the Piano Roll) vs. if I DID check it?

You said:

I guess my next question is: quantized to what value? (since there’s currently no way to “round” the MIDI data upon import to a specified minimum note value such as 16th notes or “16th notes plus 8th note triplets”, etc., etc.) I’m just trying to get a handle on the relationship between the raw MIDI data being imported from a realtime-based performance in Logic and how it’s interpreted when it gets into Dorico. Part of the reason I’m asking is because I’m realizing that a reasonable workflow (with Dorico’s excellent editing abilities) is possibly just to import the MIDI “raw” and then edit it from there, vs. trying to do any pre-editing first in Logic, but I want to make sure I understand what Dorico is retaining/changing (and ditto for Note Performer) (I considered exporting from Logic using MusicXML instead of MIDI, but I also need the exact MIDI tempo map since I’m syncing it to audio from the same session using the audio from a static Video I’m also importing).

  • D.D.

If you switch off the ‘Preserve note positions’ checkbox, it determines whether or not the start/end offsets of the notes will be maintained in Play mode. It doesn’t affect their notated durations, which will always be quantized, according to Paul’s adaptive quantization method (which is why there’s no target or minimum note value for you to choose).

Hi Daniel!
But are you saying that if you UNcheck “Preserve note positions” when importing unquantized MIDI, that it will actually quantize the underlying MIDI data’s both start and end locations for each note? (just want to make sure I understand).

And re: what happens to the displayed MIDI notation: are their plans to allow for the option to “round MIDI to the nearest 16th note plus 8th note triplets” (etc.) (as one can do with Sibelius, for example), when importing MIDI?

Best and thanks as always -

  • D.D.

For the first question, your understanding is correct.

Our goal is to do the best possible job of the quantisation, voice detection and stave alignment of midi with minimal input from the user. There’s a long way to go to get there, but we hope to make incremental steps toward it. And so we may not necessarily have controls as specific as you suggest. We may be able to simplify the process. The nature of the adaptive algorithm is that it will try to find the most parsimonious quantisation it can, so that you don’t end up with lots of extraneous triplets, unless it’s very clear that they really are triplets.

So I presume that with “preserve note positions” NOT checked, the start times of the actual underlying MIDI notes will be quantized on import identically to the start times of the actual music notation (which itself, as Daniel says, is subject to Paul’s “adaptive quantization method”)?; and the end times of the actual underlying MIDI notes will also be quantized, but using some sort of internal algorithm to determine exactly in which manner? And the way the music is currently automatically quantized (and your philosophy governing this) is to work towards making intelligent decisions about how to translate even complicated “raw” MIDI data, automatically rounding things as needed visually, etc. (and also adjusting the star/end position of the underlying MIDI data depending upon whether “preserve note positions” is checked or unchecked?) A tall order but a very admirable approach that I would look forward to!

Of course, the 3rd factor (in addition to the relationship between underlying MIDI data and how it’s actually notated), is how Note Performer then actually interprets it (something I’m still trying to figure out - for example, whether its interpretation factors in the actual underlying MIDI start/end times for imported MIDI notes - or subsequently edited underlying MIDI start/end times in Play Mode - or bases it purely on the notated score; and also whether it - as I suspect - ignores Playback Option settings that set the note length to 80% of the total length, etc., etc.?)…

  • D.D.

NotePerformer can’t “see” the notated durations as they appear in Write mode: it only receives the “MIDI data” (it’s not strictly, or at least not only, MIDI data, as I understand it, but you get my meaning), so it certainly receives the notes with start and end offsets as they appear in Play mode.

That’s correct. This option doesn’t affect the quantization. It just remembers the original positions of the notes, and then once the quantised position has been set, it applies a start and end offset so that it should play with the same timing as the original MIDI file. Note that if notes have modified start or end times then they are excluded from lots of other processing. eg marking such a note as staccato won’t shorten the playback. Also the option to set the default note playback durations won’t apply, so perhaps this explains some of the things you’re seeing with NotePerformer: if you’ve imported a MIDI file and preserved note offsets (or modified them by dragging in the piano roll editor) then this ‘finalises’ the position and duration and the Playback Options note duration settings will have no effect.

I’m still baffled by what’s going on despite your excellent explanation above. Here is an example of the problem I’m having. In Logic, I have performed some MIDI (via realtime record). In the Piano Roll of Logic, I’ve then quantized, moved notes around, etc. to line them up neatly; and then selected what I recorded, “applied any quantization destructively” (so any quantization settings that I see here are what is ACTUALLY reflected in the underlying MIDI data, supposedly), and also “normalized region parameters” (just in case that was affecting the relationship between what I was seeing and what was “actually there”):

I then exported it as MIDI and imported into Dorico, leaving UNCHECKED the option to “preserve note positions” (meaning I presume that your algorithm would round both the underlying MIDI data AND the visual notes to the nearest, logical beats, etc.). I would therefore expect the underlying MIDI in Dorico’s Piano Roll to look identical to what I exported from Logic’s Piano Roll. However (as you can see below), it is actually uneven, with certain notes that don’t start on the beat; others that have gaps between them, etc. (more similar to the underlying MIDI data perhaps that I first recorded?):

I’m baffled and welcome any thoughts anyone might have. In the end, I’d very much like to be able to realtime record in my DAW (Logic), edit/quantize the data in Logic in a manner that “sticks”, and then import the edited version into Dorico as MIDI so both the displayed and underlying data is similarly quantized (I need to do the exporting via MIDI vs. MusicXML since I’m working with sessions involving lots of tempo changes and need an exact Midi Tempo Map). Thanks for any thoughts anyone might have (including of similar workflows you might have used successfully using either Logic or other DAW’s like Cubase, etc.).

  • D.D.

Try turning off humiliation in Playback Options / Timing. Also you may wish you change the default mode playback %

Is “humiliation” a setting in Logic or Dorico, or did auto-complete play a trick here?

That’s obviously an auto-correction on Paul’s phone. It’s humanisation he’s referring to, the options for which are found on the ‘Timing’ page of Playback Options, under ‘Note Start Positions’.

I thought Derrek was just making a joke (I almost took the bait myself :slight_smile:)…

  • D.D.

No, I figured it was wrong. I looked for it in Dorico, but I don’t use Logic, so I wasn’t sure. I suspected something to do with Human Playback (there’s my Finale background showing) was probably the intended concept. Did not connect the ref with “Note Start Positions.”

Thank you, Daniel for specifying that.

Oops. Of course the player humiliation feature is something that we may consider for Dorico 3.0.

Some of us have found it on our own (in all sorts of different software programs), but asking a question here quickly dispels the feeling in Dorico.
You folks are great! Thank you for all you do.