Playback tuning and note input

I know that the tuning preference is in playback options. It does affect playback as the option suggests. All correct, as supposed to.

The question is:
Would there be any chance to also make the tuning parameter affect the tuning when in Note Input and using MIDI Thru feature?

To hear one pitch while entering notes and another one while pressing play: this is one of the reasons I never use MIDI thru. I understand that people might have different sensitivity levels and for some this might be a ridiculous issue :slight_smile:

Again: this is just a question and not a high priority. If it would be techically easy to make the tuning parameter also modify the standard a440 while entering notes- would be nice. Too much hassle and technical difficulties: ok, forget it.

BTW. Using Note Performer. I am already thankful that there is a tuning parameter that affects playback. I started in Dorico assuming that I still need to send CC109 value 68 to all instruments and recently discovered (thanks to John Barron!) that it is unnecessary.

I think it is easily doable.
Why?

When I first open Dorico document, the MIDI thru pitch is according to the Tuning setting.
After first playback, MIDI thru playback resets to 440 in Note Performer.
This could be avoidable, i think

Temporary local cure for the issue.
My sudden urge for MIDI Thru is not because of the need to hear the “actual instrument”. I am not that naïve. The reason is the terrible lag in Dorico between pressing the next key on MIDI kbd and the shadow note moving to the next location. It is around 0,5s and while entering notes I keep getting the previous pitch. THE most annoying thing in Dorico for me, that is.

Have you tried adjusting the MIDI input latency compensation in Preferences>Play?

Yes I have.
And anyway I never enter notes real time and the latency compensation is not relevant in “pitch before duration” note entry.
As I said: the shadow note can change location as late as 0.5 sec after new key is pressed when in Note Input.

Of course I was exaggerating (as always).
The reality is:

2024-11-13 13:19:40.724 [info] notifyPostCommandExecute: NoteInput.MIDINoteInput?MIDIPitches=62 (144 ms)
2024-11-13 13:19:43.313 [info] Posting command (requested): NoteInput.MIDINoteInput MIDIPitches=60
2024-11-13 13:19:43.314 [info] Executing command: NoteInput.MIDINoteInput?MIDIPitches=60
2024-11-13 13:19:43.465 [info] notifyPostCommandExecute: NoteInput.MIDINoteInput?MIDIPitches=60 (151 ms)
2024-11-13 13:19:45.231 [info] Executing command: NoteInput.MIDINoteInput?MIDIPitches=64
2024-11-13 13:19:45.390 [info] notifyPostCommandExecute: NoteInput.MIDINoteInput?MIDIPitches=64 (159 ms)

So it is 150-160 ms. But it is highly disturbing when entering runs. I press MIDI key + duration on computer keyboard. When I speed up, I start getting double notes and missing notes. The entering of a duration is around 370ms and together they add up to around 0.5 s which was my initial feeling.

2024-11-13 13:22:59.812 [info] Posting command (force): NoteInput.NoteValue LogDuration=kSemiQuaver
2024-11-13 13:22:59.812 [info] Queue after push: {NoteInput.MIDINoteInput} {NoteInput.NoteValue} 
2024-11-13 13:22:59.812 [info] Executing command: NoteInput.MIDINoteInput?MIDIPitches=50
2024-11-13 13:22:59.954 [info] notifyPostCommandExecute: NoteInput.MIDINoteInput?MIDIPitches=50 (141 ms)
2024-11-13 13:22:59.954 [info] Executing command: NoteInput.NoteValue?LogDuration=kSemiQuaver
2024-11-13 13:23:00.174 [info] addEventsForAudition() adding 6 events to buffer #:0
2024-11-13 13:23:00.196 [info] processAuditionEvents() - processed 6 events
2024-11-13 13:23:00.325 [info] notifyPostCommandExecute: NoteInput.NoteValue?LogDuration=kSemiQuaver (370 ms)
2024-11-13 13:23:00.325 [info] Executing command: NoteInput.NoteValue?LogDuration=kSemiQuaver
2024-11-13 13:23:00.326 [info] Posting command (requested): NoteInput.MIDINoteInput MIDIPitches=48
2024-11-13 13:23:00.549 [info] addEventsForAudition() adding 6 events to buffer #:0
2024-11-13 13:23:00.556 [info] processAuditionEvents() - processed 6 events
2024-11-13 13:23:00.694 [info] notifyPostCommandExecute: NoteInput.NoteValue?LogDuration=kSemiQuaver (368 ms)
2024-11-13 13:23:00.694 [info] Executing command: NoteInput.MIDINoteInput?MIDIPitches=48
2024-11-13 13:23:00.838 [info] notifyPostCommandExecute: NoteInput.MIDINoteInput?MIDIPitches=48 (143 ms)
2024-11-13 13:23:00.976 [info] Executing command: NoteInput.NoteValue?LogDuration=kSemiQuaver
2024-11-13 13:23:01.224 [info] addEventsForAudition() adding 6 events to buffer #:0
2024-11-13 13:23:01.242 [info] processAuditionEvents() - processed 6 events
2024-11-13 13:23:01.373 [info] notifyPostCommandExecute: NoteInput.NoteValue?LogDuration=kSemiQuaver (397 ms)

I have nothing to add except that I have EXACTLY the same problem and hope someone has some ideas. My followup proof-listening is almost entirely spent correcting doubled notes because Dorico was too slow in recognizing the pitch change before the duration key. Yes, when going fast it is possible to actually hit the duration key too early (i.e. before the MIDI key) but I have years of practicing accurate timing using Finale and Dorico is just too slow.

I have a similar problem. If I have tuning set to A=415 then, when using MIDI input, pressing a MIDI key sounds the note relative to A=440 followed immediately by a “correction” to the note at A=415.

In another thread a suggestion was to Lock Layout in Engrave mode and then do midi note entry in Write-Galley. Several have tried it, including me, and found significant improvement in the lag.

1 Like

I did check that and I can tell that locking layout has absolutely no effect whatsoever to note input in galley view. Dorico.log shows the exact times for operations: Midi note change, entering duration etc. These times do not change whether the layout is locked or not.

Thanks for checking, Tõnis. Hard numbers top wishful perception and the placebo effect! I did not do careful testing - I only input a few runs with and without Locked Layout. Maybe there is still a small chance that the delays, and what affects them, depend to some extend on the specific hardware and on other software that is running concurrently.

I am starting a new project today and will try it in vivo.

The forums do show that the MIDI lag on note input is real and experienced by many users so it is surprising, especially given your hard data, that we have not heard from Dorico on this thread.

@dspreadbury - I found this:


When I uncheck the box, NotePerformer pitch does not reset to a=440 after the playback is stopped. The downside is that “all notes off” is weird concept here- when the option is unchecked, Dorico does not send ANY notes off. The last playing sound just keeps hanging and I havent found any “notes off” command in Dorico.

What I propose is, either:

  1. fix the issue by at least sending notes off for sounding pitches anyway
    or
  2. split this option in two: notes off AND controllers
    or
  3. send all notes off when playback is stopped and reset controllets when it is started again (and then apply current state of controllers)
    or
  4. other

For now I do not see a point of even having this option, because unchecking it leaves the notes hang forever.