Route error - unknown source MIDI port 'Main Keyboard' SELF-SOLVED


I get this error for every song when I try to verify my setlist. I cannot figure out where this MIDI port comes from. I actually deleted all of my MIDI item (to my reluctance) in the main options.


Take a look here:

You have to assign a midi device to a midi port in Tools>Options>Midi ports. Main Keyboard is a default in Cantabile. If you haven’t assigned a midi device to a port, or have no device to assign, you would get the route error in a setlist verification. If you DID assign a device to a different name, then you would use that in your routing instead of the default.

A pic of your midi routing page, and song level routing page would help in solving your problem.




Hi TexasEdition,

I think that since you are verifying the set list it involves all the song files that you have edited to date that are in the list. The “Main Keyboard” entries are still in the songs and are not removed by the ports configuration. I think that is the issue at this point but correct me if not. You could also consider using an alias to correct the “Main Keyboard” routes so they thought they were the AXE IO (default) port.




Forgive me, but I am not sure I follow. This is a global setting and it’s the same for every song once that global setting is changed.


Well, in Cantabile there are

  • setlist files
  • rack files
  • configuration files
  • setlist files

so making a global change to multiple song or rack files requires editing each one to remove the entries. They are not automatically removed because you edit the MIDI port settings. SInce a way was needed to rename a port that had been named and used a lot, aliases were created. So my bet is that if you opened some of your songs they would still have the Main Keyboard entries typed into it. That is why an alias is used in this case. For you to check it out you could edit your AXE IO MIDI ports to include the Main Keyboard alias


Then save the configuration and the next setlist verification should reflect the alias changes as well. I hope this helps …



i still don’t understand. When I open up the my files, the I/O settings are the same global setting posted above. I cannot find anywhere that device is listed. I painstakingly recreated all my files and they pass currently.


Hi TexasEdition,

It all sounds and looks good to me as far as how you did it and checked it. I’m sorry it isn’t resolved. This might be resolved by @brad or @Torsten, they might be able to tell you what it might be. It would be nice to see your settings.json file if you can post it to see if that is where the reference is located. To find it go to Tools>Open Settings Folder and find the settings.json file. to post it you would have to put it in a zip file. You could also email the file and a description of the problem to Brad.

Hope it gets resolved …



Hi there,

can you please post one of the song files that throw the error you describe above? Just put it in a zip file and drag it to the post edit box.

I suspect that your songs still have the “main keyboard” MIDI port referenced in some of their routes. Important note: deleting or renaming a port in your MIDI i/o settings doesn’t automatically remove/rename it in your songs if they have been created while the “Main Keyboard” port still existed. If I can take a look at your song files, I can check if this is the case.

The I/O settings don’t get changed by your song - they are, as you describe, global settings. But: your song files probably still reference the “Main Keyboard” port either in their routes or their bindings. When you look at some of the routes (maybe only in some song states) or bindings, you’ll see that they have an undefined source or target port. That is because the song was created using the “Main Keyboard” port - and this port name was then explicitly written into the song file. Now when opening (or verifying) this file, Cantabile will try to connect the routes, but will not find the port “Main Keyboard” (because you have removed it) and the verify process will throw the error you describe.

So don’t look into the I/O settings - they’ll stay the same regardless of the song you are loading. Check the actual routing and bindings of the song for any “undefined” input or output ports. Once you fix those in the actual song files, the errors will go away.

A general rule: you should try to name your MIDI ports as generically as possible - I’d strongly advise against naming them specifically according to your hardware. This may confuse the heck out of you if you change your hardware setup.

Rather use generic port names based on purpose rather than based on hardware, like “Main Keyboard”, “Second Keyboard” or “Guitar Midi Interface”. Note that this port name will be part of all the songs you create using this MIDI port.

That’s why I’d recommend keeping it generic and hardware-neutral - if in one year you buy a new audio/MIDI interface and then rename your ports, all your songs will be “stranded” (unless you revert to “Aliases”, but I would consider that an emergency fix, but not a good solution).

If you use a generic name like “guitar midi interface” (and then connect it in the I/O settings to your actual MIDI interface), changing your hardware is easy without having to change anything in your songs.




I would be happy to go through the effort and gather that data if it’s something you want to put into your continual improvement backlog. But if its just to validate I was doing something wrong, I have found a workaround currently and have moved along resorting to the fact that I will need to rebuild all my files every time I change audio devices.


a: I’m not the developer - just an experienced user trying to help, so no development backlog here. Plus, I don’t think it’s a lot of effort to pack a file in a zip archive and post it here, if someone is offering to make an effort to help you…

b: about having to rebuild your song files when you change audio devices: that’s why I posted my advice about using generic MIDI i/o names. You can ignore this advice and moan about having to rebuild all your files when changing hardware - or you can learn from the experience of others and avoid the hassle - your choice really…


Lot’s of sensitivity here.

Between you and Corky, I don’t know what I’ve done to offend either of you, but honestly speaking, there is no benefit for me or anyone else to go through a deep logging analysis exercise only to determine the software is working as designed. There is no way to go back and change my old songs after making changes to the IO device, so the only path to mitigation is to re-create files from scratch; which has been done. If there is, it would be worth the effort. If not, it’s not.


Dude…I am not offended. You asked for help…we were just trying to help you. Cantabile is extremely flexible, and no two setups are completely identical. We asked for information so we could see where we could help you. There are very few sites that have the gracious membership of this forum.

Then I will certainly know, for future reference, not to make an attempt in helping you in the future. Unfortunately, it takes information to determine where the problem may be. No one was trying to invade your privacy or make you do something you were uncomfortable with.

This comment is where you apparently felt someone might be attempting to insult your intelligence…thus my statement in the other thread. Again, I was not offended, but found it rather juvenile considering we were only trying to help.

No…just nice people willing to give their time and effort to help others. Good to see you got things going on your own. Since the problem is self-solved, this thread should be closed, and I am bowing out of these two threads. Good luck on your journey.

Side note:

Many thanks to @Torsten and @dave_dore for always being there to help others. I appreciate all the help you two, and the many others on this site who have given to the community, and especially those getting me through the last 4 years.




Nothing much to add to @corky’s post - my sentiments exactly.

Always a pleasure - I’m learning as much as I’m contributing. This is still my favorite online community - feels like a family :wink:


Let me rephrase that… Tons.

I get it, there are a lot of fans of the product here and someone who seems to criticize the product is bound to ruffle some feathers. But doesn’t that improve the product overall?

But I still don’t understand why y’all are so upset. And I still don’t understand why flogging this horse on this problem will be of any benefit if the end result will remain that same.

You haven’t helped me in the past. But this would be an acceptable arrangement.