Qmidiroute patched for some GS use

Chat about anything related to the QuestStudios Archive, Classic PC Games, MIDI, Etc.

Moderator: Quest Studios Archive moderators

jaffa225man
Quest Studios Veteran
Quest Studios Veteran
Posts: 149
Joined: Mon Jul 13, 2015 6:26 pm
Location: Chippewa Falls, Wisconsin

Re: Qmidiroute patched for some GS use

Post by jaffa225man » Mon Oct 11, 2021 7:15 pm

Ari wrote:
Mon Oct 11, 2021 5:33 pm
So I have a question:
What does this thing do? I don't mean any disrespect, since you obviously put a lot of work into this program, but I really get lost in all the technobabble...
Could you give a brief summary, preferably in layman terms?
Sure, and thank you for the interest! I hope this is less technobabble with just enough detail.

In the simplest terms, it is a realtime editor for MIDI messages. It's graphical, so you can setup a conversion rule on each of its tabs. I connect it between whatever MIDI game or software would send MIDI to my sound modules normally, and the sound modules themselves. Then, whatever qmidiroute is setup to convert, it does.

Basically, I wanted a workaround for all the slight oddities that MIDI devices have, and I thought a program that anyone can download would be more accessible than perfecting my "transMIDIfier" microcontroller edit device for public use. Programming this was also less difficult than trying to build a full display and input into my transMIDIfier to support all the options I wanted to have. Of course, since my operating system of choice (GNU/Linux ) runs on the raspberry pi, it still may be used as an external device between the computer with the game or music, and any MIDI module(s). For that, the raspberry pi would also need a USB to MIDI adapter.

In particular, I wanted it to fix various issues I've noticed through the years:

1. SysEx delays for the MT-32 (old) (whatever time, in milliseconds, you choose). I've found, through experimentation, 140ms to be enough in most cases.

2. Setting "Note Off" velocities to zero to correct the CM32L and CM-64's unnofficial overflow assign mode (using these modules chained together through their output ports to avoid dropped partials).

3. Converting Program Change numbers to any other, along with any chosen Variation. I've created examples of this, using it to emulate capital tone fallback for the SC-33, and SC-55mkII, and to use fancier instruments on the INTEGRA-7 instead of its GS or GM2 banks which would be default. Similarly, files I've created for the SC-8850 spice up the variety a bit with layered electric pianos replacing any piano, and Wide French horns replacing any french horns.

4. Drum set messages are recognized in order to convert from and to any MIDI standard (GS, XG, GM2). I used this, along with Program Change conversion (for GS/XG common Sound Effects differences) to create converters from and to GS and XG. So with that, you can play XG or GM2 music on your SC-55/SC-88/SC-88pro, or GS music on your MU50/MU80.

5. System Exclusive messages (SysEx) can be removed or changed. Edits can even be done to bytes at a certain address without changing the rest of a message. This is also used in the GS/XG converters, along with converters for certain volume edits for the MT-32 family (to avoid the MT-32 (new), CM-32L, & CM-64's digital volume overflow issue).

6. Converting any type of MIDI message to most others. One example is that any MIDI keyboard note, could be converted to send a SysEx message, so you could play some keys on your MIDI keyboard to send different SysEx messages. Similarly, controllers (CCs) can be converted to send SysEx output too. The reverse works too: SysEx (say a GS Reset message) can be converted to send reverb controller messages, etc.

There's a lot more conversion examples I could list, but this is probably as good an overview as any. I would like it to be as adaptable in conversion capabilities as possible, and think it's really getting there.

Ari
Quest Studios Veteran
Quest Studios Veteran
Posts: 49
Joined: Wed Nov 11, 2015 10:47 am

Re: Qmidiroute patched for some GS use

Post by Ari » Tue Oct 12, 2021 6:33 am

Thanks for the detailed (and considerably less technical) explanation!
I don't use Raspberry Pi and/or Linux, so it's less relevant for me, but kudos for the effort! Keep up the good work.
I would love to hear/see some examples of what can be done with this.

jaffa225man
Quest Studios Veteran
Quest Studios Veteran
Posts: 149
Joined: Mon Jul 13, 2015 6:26 pm
Location: Chippewa Falls, Wisconsin

Re: Qmidiroute patched for some GS use

Post by jaffa225man » Tue Oct 12, 2021 6:09 pm

Ari wrote:
Tue Oct 12, 2021 6:33 am
Thanks for the detailed (and considerably less technical) explanation!
I don't use Raspberry Pi and/or Linux, so it's less relevant for me, but kudos for the effort! Keep up the good work.
I would love to hear/see some examples of what can be done with this.
You're quite welcome, and thanks for the encouragement! I have actually been considering doing a youtube video since it was kind of suggested by quattj in the Technical Support / Knowlegebase Forum:
quattj wrote:
Sat May 08, 2021 4:05 pm
I'd be curious to see it (though I have windows, so I'd be relegated to watching a video or viewing screenshots)
It would be a first for me, though, since I've not wanted to publicly appear online before. I think you've tipped me over the edge, but it'll probably take a while to plan, create, edit, and upload.

jaffa225man
Quest Studios Veteran
Quest Studios Veteran
Posts: 149
Joined: Mon Jul 13, 2015 6:26 pm
Location: Chippewa Falls, Wisconsin

Re: Qmidiroute patched for some GS use

Post by jaffa225man » Sat Oct 16, 2021 2:29 pm

Sorry, changes have been made to my qmidiroute-0.5.2 patch again.
Yesterday, I found and fixed a bug and added something to XG translation that the SC-8850's XG Lite Mode doesn't even recognize.

I noticed an XG example file (Aoi.mid) not setting a channel to drums through qmidiroute that should have been. I tracked it down to a SysEx message that was unknown to me: one that can set a channel to either drums or instruments for XG. Qmidiroute recognizes it now that I've deciphered it, and is working as it should on Aoi.mid, the only file I know it exists in.

The bug relates to unmatched SysEx delays not working after any MIDI reset, which was just the case of a variable not being reinitialized.

jaffa225man
Quest Studios Veteran
Quest Studios Veteran
Posts: 149
Joined: Mon Jul 13, 2015 6:26 pm
Location: Chippewa Falls, Wisconsin

Re: Qmidiroute patched for some GS use

Post by jaffa225man » Wed Oct 20, 2021 3:26 pm

Sorry, I bug-fixed two issues and replaced 0.5.2 again!

Yesterday, I noticed the upper limit of pitch-bend values should be 8191 (the lower limit is -8192) so I've set a new default and maximum for that.

In relation to conversions from non-SysEx to SysEx, I became aware of duplicate messages being created (while selected not to) when the output message has a smaller range than the input. That's because I was only testing the input for changes to decide when to skip writing the SysEx message, in order to save on CPU cycles. I fixed it by comparing the entire created SysEx message for changes every time, and it still isn't a CPU hog.

jaffa225man
Quest Studios Veteran
Quest Studios Veteran
Posts: 149
Joined: Mon Jul 13, 2015 6:26 pm
Location: Chippewa Falls, Wisconsin

Re: Qmidiroute patched for some GS use

Post by jaffa225man » Tue Nov 02, 2021 3:13 am

Ari wrote:
Tue Oct 12, 2021 6:33 am
Thanks for the detailed (and considerably less technical) explanation!
I don't use Raspberry Pi and/or Linux, so it's less relevant for me, but kudos for the effort! Keep up the good work.
I would love to hear/see some examples of what can be done with this.
quattj wrote:
Sat May 08, 2021 4:05 pm
I'd be curious to see it (though I have windows, so I'd be relegated to watching a video or viewing screenshots)
There, it's uploaded! It's probably overly informative, but I wanted to cover a lot. I'm not one for public speaking and this gave me that same daunting trepidation. I hope it helps anyone curious.

Here it is: https://youtu.be/5pIb506QipY

Ari
Quest Studios Veteran
Quest Studios Veteran
Posts: 49
Joined: Wed Nov 11, 2015 10:47 am

Re: Qmidiroute patched for some GS use

Post by Ari » Wed Nov 03, 2021 2:42 am

Thanks man, I'll check it out. :)

jaffa225man
Quest Studios Veteran
Quest Studios Veteran
Posts: 149
Joined: Mon Jul 13, 2015 6:26 pm
Location: Chippewa Falls, Wisconsin

Re: Qmidiroute patched for some GS use

Post by jaffa225man » Fri Nov 12, 2021 7:21 pm

Ari wrote:
Wed Nov 03, 2021 2:42 am
Thanks man, I'll check it out. :)
You're quite welcome, and thanks for the interest! Sorry, I hadn't noticed your response until now; for all I know you've already seen it. It's not been very watched, so I have a feeling my slow thought formulation that night has been too boring for most people. The table of contents in the description, will help everyone skip my annoying explanations to just hear music examples, but I'm not sure people have noticed it.

Post Reply