Greetings, I am a long-time Finale and Hauptwerk (HW) user, and I just purchased Dorico this week. I’ve been using Finale to create MIDI files that HW can play (I don’t use HW as a VST), which I record for use in church services when no physical organ is available. In Finale it’s super easy to assign MIDI channels to instruments, and HW playback has no issues. I tried creating an organ track using Dorico, but I seem to have no control over the channel assignments in the MIDI file, and predictably, HW doesn’t play the file properly. The HW MIDI channels can’t be changed, so I need to learn how to incorporate MIDI channel assignments of 1 - pedal, 2 - Great, 3 - Swell, and 4 - Choir into my Dorico flows. I create a lot of tracks for hymns, preludes, offertories, and postludes, and until I figure this out, I can’t make a clean break with Finale. I will greatly appreciate any help.
You will want to go to Dorico’s “Play” Tab, select your organ and hit the button that says “Enable Independent Voice Playback.”
Then you will see something like this, with an entry line for each staff/manual, and you can change the midi channel for each one separately.
Not sure what you prefer, but if you are doing some kind of split where you have more than one manual on the same staff, then you should use write them using different voices - and those voices would then appear here in a similar way. We’ll expand on that should it happen to apply to you.
I might be stating the obvious, but if you change staff (b) to midi channel 2 lets say, then you will have to mirror that change inside Halion to be able to hear it inside Dorico.
Hello and thank you for your reply. I have done the above, but the channel numbers in the resulting Dorico MIDI file are reversed, and Hauptwerk dutifully plays what it’s given. I found this out by using a MIDI editor that shows each MIDI message and the channel number associated with it. For now I can get the files to play properly in HW by using the MIDI editor to do bulk changes of the channel numbers. I was lucky to find an editor that can do channel changes. I had to search all morning to find this one.
I am not doing any kind of split that has more than one manual on the same staff, but I transcribe many hymns that have movement in one vocal part and not in another, e.g. tenor and bass, and I place them in different layers/voices. Finale has no trouble playing them on the same MIDI channel, so I will see how it goes with Dorico the next time I work with such a hymn.
I just played with it a little more. No matter what MIDI channels I set in HALion, the channel numbers in my MIDI output file remain the same, and are reversed. Are there two places I need to set the MIDI channel for each staff?
Joel,
Short answer…
You don’t change the ‘true outgoing’ MIDI channel in HALion Sonic, but instead you must change it in the Play Tab/Track Inspector. Do it for each track.
In the play tab, touch the track/stave you want to set a channel for.
Touch the “Track Inspector” tab.
Set the MIDI channel desired.
Note that changing the channel in the Inspector might now play the ‘wrong sound’ in Sonic. So, NOW, you’d open the Sonic Instance, and change the MIDI channel(s) here to match what you’ve set your actual Stave End Point channel to be.
If you require live/active ‘channel bouncing’ for a stave, then you’ll use an “Expression Map” to set that up. Expression maps translate “Articulation Markings” and/or “Playing Techniques, and Playing Instructions” into whatever MIDI events you require (Key Switches, Program Changes, Channel Bounces, Continuous Controller events, etc).
The long drawn out ‘example’…
There’s probably more than one way to do this, but my established practice with Dorico when I wish to generate standard MIDI format files goes like this:
I’ll do it with General MIDI patches in this case, but of course you can substitute your own bank and program calls, or if you don’t want/need these, leave them out. I’ll demonstrate a method to insert them that is easily ‘reusable’ in future projects, just in case.
In this case I already have Dorico connected to a Roland Fantom XR where I can play it directly from Dorico (more in a bit on how you could force MIDI channels on a rendering connected to something like Sonic 7).
I have gone through each stave/track in the Play screen and set the channels I wish each stave to use. In some cases, like with Oboes, Bassons, Horns, and Trumpets, I even have multiple staves/parts sharing a single MIDI channel and sound/patch.
To start with, I have the ‘default’ expression maps, but I will change this in order to get the MIDI bank/program changes I want, and the dynamic messaging I desire.
I could just dot this stuff into special controller lanes of Dorico’s play/edit features, but I’d like to be able to easily reuse them in future projects, so I opt for the ‘expression map’ route.
I’ll make the first example here a violin section since these often require Program and/or Channel changes to get different ‘articulations’ (arco, pizzicato, tremolo).
So first I’ll touch the ‘Track Inspector’ tab, and My Violin I track to make them active. Then I will touch the “Ex. Map” editor button to pop that window up and bring it into focus.
On my Fantom XR, I like to use a combination of MIDI Key Velocity and CC11 (Expression Volume) for dynamics, so I’ll find the Velocity + CC11 Dynamic Expression map, and click the “Duplicate Expression Map” icon near the bottom left of the Expression Maps window.
This creates a copy of that map, and pulls it into focus in the right pane of the window. I’ll rename it to GM Strings, and set it up to handle all of my ‘String Section’ staves.
Notice how I’ve set the Init base switch to send the General MIDI Bank and Program change events that will call up an arco string section in my Fantom (or any other General MIDI compliant instrument).
I click the little Plus button in the bottom left of this pane and create a base switch for Pizzicato, and click it again to create a base switch for Tremolo.
For the Natural base switch, I’ll put in the arco string section patch number again (since I’m not changing banks in this case for Pizzicato and Tremolo articulations, I don’t need the CC0 and CC32 bank calls again). I also double check the Volume Dynamic pane to make sure it is designating my preferred methods for dynamic control.
I enter the patch number for pizzicato (Include bank change calls if you need them). This time I don’t want or need CC11. Just key velocity, so I check that as well.
Again for Tremolo. This time I do want CC11 back, so I’ve double checked my dynamic control preferences are as I like.
Back in the play tab, I’ll click OK in the bottom right of the Expression Maps window…and then assign it to my Violin I stave.
I repeat the process above of making Expression maps that include respective Bank and Program changes for all of the other staves/instruments in my score. Most instruments will be simpler than that for strings, and will only require an Init base switch with the bank and program change (unless you want to craft and call up unique articulations for those as well…in that case add all the base switches you like).
In this case I’m working with General MIDI protocols, so all of my string sections will use this same ‘patch’ in my XR. This means I can just reuse the same GM Strings expression map again for all of the string section staves. I still want them on separate channels though, as each stave/section might require different articulations at the same time.
I can use the little settings cog to inspect and apply things to different channels in one go.
Next I test the score by playing it through my Fantom. It doesn’t send sound back into the Dorico mixer or anything, so I’m on my own in how I’ve set up my Fantom XR to be ‘heard’ (headphones direct from my Fantom, external mixer, stand alone amp/speakers, routing into the sound card and using the interface drivers in ‘mixer/monitor mode’, etc. Persionally, I hook the SPDIF outputs of my Fantom into my sound card, and use my sound card’s mixing features to blend whatever my Fantom plays with anything that come out of Dorico’s audio outputs [Dorico hosted VSTi instruments for example]).
For my Fantom, the default dynamics curve in Dorico is just way too ‘drastic’ for this sort of classical period score, so I’m going to dial it back to something more like 1.2, and I can do this through “Library/Playback Options”.
Dynamics/Dynamic Curve tab
Now the score plays back with a default dynamic range more appropriate for my Fantom XR and this kind of classical score (much closer to a 1:1 curve… minor dynamic changes will be far more subtle). Don’t forget that in each expression map, you can ‘over-ride’ many of the default/global playback settings on a stave by stave basis if a rogue instrument in your mix demands something a little ‘different’ from everything else.
I’ll still want to open the Dorico Mixing console, click the MIDI tab, and set up the base MIX levels and PANing for each instrument channel.
If I wish to apply or otherwise manipulate any internal REVERB or CHORUS effects in my Fantom (GM Protocol uses CC91 for Reverb Send, and CC93 for Chorus Send), I can go back and enter them in the Init base switches for each stave, or I could use controller lanes to draw them in.
I audition my score a few times attached to the actual target instrument where possible. Once it sounds good, I’m ready to render a MIDI file from Dorico. (More on using Sonic 7 to ‘guestimate’ a decent General MIDI rendering for a target synth/organ/whatever that you might not be able to hook up to Dorico directly and test drive yourself in my next post).
Dorico should render a file that is exactly like what it is playing (or very close, given that some ‘humanization’ options exist that might make every play/render slightly unique). Same channels…applying the program changes and dynamic styles set up in the expression maps, user drawn CC lanes, custom velocity tweaks…the works…
So, what if you don’t want program changes at all (would rather do it manually in your synth, and perhaps save a ‘global/performance’ template in the instrument itself).
Simple, don’t include the bank/program change events in the Expression Map.
What if you need ‘channel bounces’ to achieve changing articulations instead of ‘program changes’?
These can be established in an Expression Map, similar to how I’ve demonstrated entering Program Changes.
How can I predict exactly what Dorico is going to do when it renders a MIDI file?
If you can’t connect directly with the instrument(s) in question, use HALion Sonic (or your favorite alternative GM Player) to set up your mix. The more you do this, the better you will get at knowing/understanding how it will ‘translate’ to your target instruments.
Note that Expression maps do allow you to have a stave swap channels for different articulation marks or score instructions. Dorico Pro provides the tools to make ‘custom’ playing instructions of various types, and assign text/fonts/symbols, and more to them. You can then connect those ‘base switches’ in Expression maps to your custom Playing Techniques/Instructions. You can implement CC pedals, stop changes, key switches, channel bounces, etc.
It’s not uncommon to do something like…Set up arco violin on channel 11, pizzicato on channel 12, Marcato on 13, and so on. So, expression maps CAN allow you to force specific, or relative MIDI channels. They can also be included in the Init base switch.
What if you’d like to build and test General MIDI files, but can’t hook it up to the target synth for testing?
You can put Sonic 7 in a special ‘General MIDI’ mode, where it then responds to MIDI program changes (ignores bank change events), and calls up the proper GM sounds accordingly. If the score sounds pretty good in Sonic 7, chances are it will translate pretty well to other General MIDI players.
Let’s take a walk through my Mozart Score and set it up to render a somewhat proper General MIDI file, using Sonic 7 as my ‘reference’ player.
The first thing I’ll do is go to Play/Playback Template, choose the “HALion Sonic Selection” template, and tap ‘Apply and Close’.
I look in my Play/VST and MIDI tab, and notice Dorico has set up TWO Halion Sonic instances instead of one. This could be a problem, as it’s a hint that the score may well have more than 16 MIDI channels involved at this point. I happen to know this is the case, but I’ll fix it before attempting to render a standard GM file.
After analyzing things a bit, I’ve decided to avoid using channel 10 at all, since many GM instruments can only play a Drum Set on this channel. I also happen to know that HALion Sonic is set up not to accept program channels on channel 10, and it’s a bit of a pain (though possible) to force Sonic to use different kits/instruments on Channel 10 in this special ‘GM Mode’.
I know I want each of my string sections to get a channel of their own. I’ll be using MIDI Program Changes to bounce between arco, tremolo, and pizzicato.
I’ve also decided that since my oboes don’t do any fancy articulation bouncing, that I can play both oboe parts over the same channel/instrument/patch.
I can do the same thing for Bassons, Horns, and Trumpets.
This gets me down to 11 channels required. Once I’ve set things up, it’ll play from a single instance of Sonic, and Dorico should render a MIDI file that any GM/GS/XG compatible player/instrument should be able to ‘plug and play’.
So…first thing I’ll do is get rid of the second instance of Sonic. That’s where the contra basses were pointed, but I’m going to be assigning them elsewhere shortly. I just click the trash can…and it’s gone.
Next I’ll click the little ‘e’ for the first instance of Sonic and open the plugin.
Go to the OPTIONS tab of Sonic, and put it in General MIDI mode. Click OK to the ‘…replace the currently loaded Multi Program’ dialogue.

The proper instruments are NOT loaded in Sonic’s instrument slots at this time. Don’t worry about it. The Expression maps will fix this when the score is played.
Next I’ll go the Play/Track inspector, and point the staves to the MIDI channels I want them to use. I also need to remember to set the Basses stave to use the remaining Sonic instance.
I need to repeat the process by clicking on each stave/track, and setting the plugin/channel in the Routing pane.
Ultimately I’ve planned to set things on the following channels.
- Flute
- Oboe 1 and Oboe 2
- Basson 1 and Basson 2
- Horns 1 - 4
- Trumpet 1 and Trumpet 2
- Timpani
- Violins I
- Violins II
- Violas
- NONE, (Skipping this one for better GM compatibility)
- Celli
- Basses
Once I’ve set up my channels, I make (or import readymade) expression maps that apply the Bank and Program Changes (see my previous post for examples on building a map that includes bank/program changes).
If you aren’t sure about GM Patch numbers, you can find them all over the internet. Here’s a link of the GM I soundset as an example.
General MIDI Patch List (rainpos.com)
Also be aware that if a patch list begins with 1, rather than 0 in the numbering convention, that you should subtract 1 and enter that in the expression map. I.E. The chart I’ve linked says “String Ensemble 1” is patch 49. Because I noticed the Piano is listed as 1, rather than 0, I need to subtract one and use 48 in my expression map.
Once it’s all set up the Sonic instance ‘settings’ cog looks something like this.
Turn the Main Volume down on the Dorico Mixer pretty low as a precaution from busting an ear drum, and tap play for the first time, and Gradually bring the volume back up to a comfortable level.
The proper instruments should automatically load in Sonic. It might sound a bit glitchy on the first bar the very first time you hit play on some computers, but should be fine after that. HALion Sonic should now be set to handle any incoming Program Changes smoothly, and with ease.
Unfortunately, the ‘stage’ templates that come with Dorico Pro won’t work these ‘MIDI Faders and PANing’ for us. The instrument staging must be done manually.
Things will sound pretty thin and basic at this point, but it’s ready to serve as a ‘reference point’ for what should be able to turn out a decent General MIDI rendering.
So, now I’ll open the Dorico Mixing console, click the MIDI button near the top so it toggle blue and shows the MIDI faders, and establish my desired audio levels and panning.
Remember I have some instruments sharing channels, so I want be careful to have the same (or as close as I can get them) PANning.
Personally I recommend starting with all of the MIDI channel volumes at 100 so you can get at the full dynamic range of the instruments (CC11 and Velocity dynamics are ‘relative’ to the main CC7 ‘channel volume’). If things are too loud sitting in your chair, just back off on the Main fader. Back off on the instruments/parts that might be too loud for your desired mix.
Don’t forget to experiment with Dorico’s global Playback Options, that handle things like the Dynamics curve. Translation of written note durations. Overlaps for legato, and so forth.
I also recommend disabling the Reverb send at first. Mix it ‘dry/pure and simple’. Dorico cannot handle sysex messages required to set up GM/GS/XG ‘effects’, plus different instruments tend to have some pretty ‘non standard’ effects in play on those CC91 and CC93 sends, so if I don’t know precisely what the target GM player will be, I’d most likely ignore doing anything with CC91 (Reverb) and CC93 (Chorus), and shoot for the best ‘dry mix’ possible before rendering. This way the end user could dial in whatever reverb/chorus effects they like in their preferred player, and the MIDI file playing won’t muck about with their preferences on those send levels. If you have enough channels and polyphony to spare, it’s also possible to work in a number of interesting ‘layering with offsets’ tactics to ‘simulate’ various delay/reverb/chorusing effects. Combine that with extending how Dorico interprets ‘note durations’, and a ‘dry’ General MIDI Mix can come across having rather ‘lush’ reverb/chorus effects going on.
Once you have your reference score playing back as good as you think it’ll get with a bone dry Sonic 7 instance (mix, staging, and dynamic interpretations), export your MIDI file. It should be ready to play back in any GM compliant MIDI player/synth.
P.S.
For what it’s worth, you can teach Sonic 7 to have custom mapping for Program Changes. By default it ships with a standard GM I instrument, mapping and channel 10 ‘sticks’ on a single “Stereo Drum Kit”.
If you want to have different PC mapping, or even put different instruments from your HALion/Sonic libraries on a given PC…see the Sonic Manual. It’s simple enough for everything but Channel 10.
You assign a PC Sound number in the instrument browser of Sonic, and rate the sound with ‘stars’. If multiple instruments have the same PC number assigned, the one rated with the most STARS gets chosen. If more than one have both the same PC number, and the same star rating, I think the first sound registered in the Steinberg database gets picked.
In the instrument browser, click the settings cog and add the GM Sound column to the display.
Move the column so it’s easier to see it relative to the instrument Names and Ratings. (Click/hold/drag).
Now you have the columns in place to assign a PC to any sound in Sonic, and ‘rate it’ with stars.
As for channel 10, the only way to change that in GM Mode is to give the alternate instrument a GM Sound value of 129, rate it 5 stars, and drop the rating of the standard drum kit to a lower star rating. You might have to reset the Sonic instance for it to load the alternate sound on Channel 10 (Take it out of GM Mode, then put it back into GM Mode).
Channel 10 does NOT respond to PC events. A Sonic Instance simply assigns the highest rated instrument with a PC Sound value of 129.
Again, back in the Expression maps…subtract 1 from the Sonic PC Sound number to call up the right sound. (Sonic lists programs with an offset from 1-128 instead of 0-127).
Brian is very thorough and very knowledgeable, but if you are using Hauptwerk, you should definitely get in touch as well with experienced Dorico and Hauptwerk user @Romanos .
IIRC James uses the VST much as you have described in your own work.
I think @Brian_Roland deserves some kind of " longest answer with most pictures" award.
Jesper
Edit: sorry @Christian_R you do too
Edit 2: This was meant as a compliment. No sarcasm here.
Indeed, 3 posts in a row with 29 screenshots and over 3,100 words is the current record.
Short grumble; please ignore
There are those of us who try to read everything on here, in order to have the fullest understanding of the workings of the software, but I just have to scroll and scroll and scroll past this material, as it is way outside my purview (even though I am a lifelong organ aficionado, and am now trained as a tuner). Is there anyone who reads every word of these posts? Not only would reading it take me half the morning, trying to imagine the questions one would have to ask to get all these answers would take the other half.
Fine, I’ll consider deleting my annoying posts.
Sorry.
I’ll go delete them, sorry.
No need to delete. It is certainly good and correct info! And obviously you work hard on these things. We appreciate your experience and dedication; I think we just feel a bit sorry not to read it all.
No, you’re not the first to complain, openly, on the forum that I’m screwing up the forums. I can also go back and see that comments like yours got more encouragement than my spammy noise.
I get the message. It took a while, but I clearly see now.
Brian, please don’t be discouraged. I for one am grateful for the effort you put into helping people understand how to use and tweak VST plug-ins in Dorico. If it’s possible to additionally provide a “tl:dr” version for those who want to get the gist of what you are writing without fully understanding all of it, I think that would be helpful, and might ensure that the effort you are expending does not go to waste.
No, it was meant as a compliment. Great job.
Jesper
Understood. Some things aren’t well documented, at least not without going over at least 6 different sources. Those are the things I tend to get ‘lengthy’ and put up lots of screen shots.
Harkening back to the days when stuff like ‘pretty thorough user knowledge’ of low-level ‘techy’ General MIDI protocols were part of every project, every day…it’s stuck in the brains of us old farts and easy to get the gist. People newer on the scene, who’ve never seen, let alone read the reems of ‘old school manuals’ on this stuff? I figured they could use the ‘extra cues and rambling’.
Sonic really is one of the nicest and most complete programs on the market. Sometimes I feel like it’s very underappreciated in Dorico world. Part of the problems are design related, but more of it is just that ‘times are changing’ and fewer bother to ‘dig in’ to see what treasure is really there.
I’m just a humble NotePerformer user, and TBH even intimidated by the rich possibilities of the whole VST business. Therefore I read Brian’s contributions not always as thoroughly as some others, but I can definitely recognise their outstanding quality, and I’m sure his elaborate explanations will hugely benefit many new and even more seasoned Dorico users who might struggle with setting up this complex matter. Kudos and thank you!
I second the suggestion to reach out to @Romanos
I’m a little puzzled and he’s a far better person to ask. Maybe just a far better person
You might actually be pretty close so please don’t be discouraged.
You’re clearly the best to make us discover how worthy Sonic is. If it wasn’t for you and your beautiful answers, I would never think about using it…