Bug? Expression map channel + keyswitch is inconsistent between preview and playback

This confused me while I was working on an expression map… if you create a switch with an absolute channel switch + key switch, Dorico treats it differently when previewing a note in write view vs when it actually plays it back. Specifically, Dorico plays the note on Channel 1 in write view.

Is this known behavior? Is it desirable? I found it very confusing, and hard to see why it would be desirable… but maybe.

Here’s my expression map setup: Pat Test 3.doricolib.zip (1.8 KB)

  • natural (ch 1, C-1)
  • legato (ch 1, C#-1)
  • staccato (ch 2, C-1)
  • tenuto (ch 2, C#-1)

Type in a sequence of notes, natural → legato → staccato → tenuto.

Navigate the notes in write mode, and the staccato and tenuto notes will still play legato. Monitor MIDI, and you’ll see that the key switch is correctly sent on channel 2, but the actual notes are sent on channel 1.

Play it back, and it sounds correctly. Monitoring MIDI shows the staccato and tenuto notes being sent on channel 2.

So in short: in preview, key switches are sent on the specified channel, but notes are always sent on channel 1. In playback key switches and notes are sent on the specified channel.

I believe the playback behavior is desirable. I do see power in having one channel be dedicated to key switches - but in that case I think you could set actions (ch 2 → keyswitch → ch 1). In any case, I believe the behavior should be consistent between write mode preview and playback.

Is the difference between the terms preview and playback what I think it is?
Preview when one selects a note and presses P vs. using the Playback controls at the top of the screen? Or does one only see this in the Play Tab?

I’ve always thought that Expression maps are designed to work on Playback only… ?!

When I use NotePerformer and navigate arrow keys along pizzicato notes, it plays pizzicato. When I do it with my multi-channel MIDI instrument, it doesn’t, because Dorico sends the notes on the wrong channel.

It was surprising and confusing and I wasted a lot of time thinking my expression map was wrong.

Anyway, this was a bug report, so I was hoping someone from Steinberg would see it and comment.

@dspreadbury @Lillie_Harris could you please have a look at this and let me know if I’m doing something wrong, if this is buggy, or if it’s expected (but I think not documented) behavior?

Yes, this is on my long list of threads that need more investigation, and I will come back to you when I’ve had a chance to look into it. I’m afraid it’s unlikely to be imminent!

Okay thank you