MIDI Program Change at Start of Flow?

When Dorico changes to a new flow, I can have completely new set of instruments. I’m using Gig Performer as the plugin host, and it can also switch to a completely new set of instruments, for live performances.

Ideally, Dorico would allow me to trigger a Program Change message when I change flows, but this, global approach doesn’t seem to be available, correct? I wish it were. It would be simple, and would not clutter my score.

It seems that I need to create a playing technique for each required Program Change, map it to a playback technique, put the attribute in the score, hide the attribute from being visible in the print, save it in my library of instruments and my library of expression maps, and my template, and cross my fingers. And then, how do I guarantee that it occurs before any note is triggered?

There’s got to be a simpler way, right?

I guess I could send a note (1-127) from Dorico on a specific port and channel, and translate it to a Song Part change in Gig Performer, but again, it must be the first note, before any other notes are played, and I need it to be hidden from the score.

Given that flows can reconfigure the instrumentation, allowing an associated program change with bank and patch per port seems natural.

FWIW, my use case is to play live, using my MIDI controllers and Gig Performer. I’m notating my original compositions in Dorico 6 Pro. I want to hear the score with the sounds from Gig Performer.

Any tips are appreciated!

You could create a completely separate set of parts for each score, set into groups to avoid numbering the extra instruments.

Depending on the number of flows where you wish to do this, the program changes may be simpler. But it is an alternative, if you want it.

1 Like

I found a reasonable solution.

I’ve added a staff for a custom instrument, called “Control”. It’s on Channel 1 of the MIDI port that I’m using. I use this three-line stave to casually notate pedal presses, button pushes and the like. I can just use plain text instructions, but I can also put in CC emulation of what I might do with a physical expression pedal or breath controller. This Control instrument represents my physical control interface, rather than virtual instrument sounds.

My solution is to add a lane for CC#119. The value represents the Patch Number that I would send. I’ve written a script in Gig Performer that translates CC#119 to a Patch Change message. Note that Dorico allows us to automate CC#0, so I can do Bank Changes. :grinning_face:

I was happy to find that I can set accurate automation values, rather than trying to mouse in accurate values. Here’s the process that I found to work.

  1. I your CC# isn’t available, click “+ Add Editor” in the lower left of the Play view.
  2. Select the Pencil cursor.
  3. Draw in the control as best you can, but don’t worry about perfection.
  4. Select the Arrow cursor.
  5. Select the line you drew.
  6. Click the button for “Convert to Constant Point.”
  7. Use the nearby dialog box to set the precise value.

I initially used a note velocity for this tunneling trick, but if I started playback from a random spot in a new flow, I wouldn’t get the program change. By using a CC value, the most recent value is always sent before playing notes.

Works great!