VOGONS


First post, by KaleidonKep99

User metadata
Rank Newbie
Rank
Newbie

I've been thinking about making a topic about it for almost 2 years, but I never had the guts of self-promoting it here... But I guess it's time... 😢

What's OmniMIDI, you might ask?
OmniMIDI is a MIDI synthesizer based around the BASSMIDI libraries, and a fork (or at least, what used to be) of BASSMIDI Driver (BASSMIDI Soundfont MIDI Synthesiser Driver for Windows XP/Vista/7).
Most of the original source code got nuked in the past 3 years...

What makes it better than the original?
I never liked how limited BASSMIDI Driver actually is. The driver itself is good, don't get me wrong, it works great and performs really well, but...
The configurator is pretty basic to say the least; the only options it gives you are the SoundFont lists editor, the volume and the latency setting... That's about it, as far as I know.

Meanwhile, my fork allows the user to take FULL CONTROL over the audio stream, with settings ranging from the maximum voice count, to how big the events buffer can be, or even overriding the banks/presets of specific channels.

There's also an useful debug window included, which allows you to see how many active voices are being played at the moment (per channel!), the rendering time/CPU usage of the driver, how much memory the MIDI app is using etc...

Features
- Supports Windows Vista and newer (It does work on Windows XP, but the .NET 4.0 configurator is outdated)
- Guaranteed to work perfectly under Windows 10
- Can play up to 100.000 voices at the same time (If your PC is powerful enough, that is)
- Advanced SoundFont chaining/stacking system, which is an improved version of the one from BASSMIDI Driver
- Native support for DirectSound, WASAPI and ASIO
- Can output the audio directly to a WAV file
- All the features from BASSMIDI Driver are present here too (BASSMIDI Soundfont MIDI Synthesiser Driver for Windows XP/Vista/7)

Download
The project itself is open-source, and its code can be viewed and edited by anyone, just like BASSMIDI Driver!
GitHub page: https://github.com/KeppySoftware/OmniMIDI
Grab the latest release from here: https://github.com/KeppySoftware/OmniMIDI/releases

Screenshots
SCdTEfg.png
Entire album here: https://imgur.com/a/pM0sL6h

Reply 2 of 28, by KaleidonKep99

User metadata
Rank Newbie
Rank
Newbie

I've added support for the MIDI Stream API and Running Status in version 6.0.57.26!
Games such as ZDoom will benefit from this update.

https://github.com/KeppySoftware/OmniMIDI/rel … s/tag/6.0.57.26

Reply 3 of 28, by bellarmine

User metadata
Rank Newbie
Rank
Newbie

Hi Kaleidon,

Thanks for this, it looks good. I downloaded it and am trying it out on an XP SP3 machine.

The interface works fine, but I cannot get the MIDI driver to appear in MIDI devices, so I cannot test it. When I go to Device Manager > Hidden Devices On > Legacy Audio Devices, I see the OmniMIDI driver present but XP says "Cannot load driver - may be missing".

Do you have any suggestions? I would REALLY like to get this working. I have a MIDI keyboard I am trying to play into the computer, and am having a hard time finding a MIDI driver that: 1-Supports SoundFonts; 2-Works in XP, 3-Supports ASIO for smallest latency possible.

Thanks in advance! Bellarmine

When working on a job, you have 3 criteria: Fast, Good, and Cheap (i.e., Quick, High Quality, and Low Cost). Only 2 out of 3 are practical.

Reply 4 of 28, by KaleidonKep99

User metadata
Rank Newbie
Rank
Newbie
bellarmine wrote:
Hi Kaleidon, […]
Show full quote

Hi Kaleidon,

Thanks for this, it looks good. I downloaded it and am trying it out on an XP SP3 machine.

The interface works fine, but I cannot get the MIDI driver to appear in MIDI devices, so I cannot test it. When I go to Device Manager > Hidden Devices On > Legacy Audio Devices, I see the OmniMIDI driver present but XP says "Cannot load driver - may be missing".

Do you have any suggestions? I would REALLY like to get this working. I have a MIDI keyboard I am trying to play into the computer, and am having a hard time finding a MIDI driver that: 1-Supports SoundFonts; 2-Works in XP, 3-Supports ASIO for smallest latency possible.

Thanks in advance! Bellarmine

I will try to restore XP support on later versions of OmniMIDI.
I decided to abandon support for it because of some architectural changes to the SoundFonts list systems, and because .NET 4.5 is not supported on it.

Reply 5 of 28, by DracoNihil

User metadata
Rank Oldbie
Rank
Oldbie

This is kinda why I wonder why people use C# and .NET, what's wrong with just plain ol C or C++? Atleast at that point as long as you're only touching "msvcrt.dll" there's no dependency hell or compatibility issues.

Regardless this does work just fine on modern Windows 10 systems just fine so I'm taking that for granted atleast.

“I am the dragon without a name…”
― Κυνικός Δράκων

Reply 6 of 28, by KaleidonKep99

User metadata
Rank Newbie
Rank
Newbie
DracoNihil wrote:

This is kinda why I wonder why people use C# and .NET, what's wrong with just plain ol C or C++? Atleast at that point as long as you're only touching "msvcrt.dll" there's no dependency hell or compatibility issues.

Regardless this does work just fine on modern Windows 10 systems just fine so I'm taking that for granted atleast.

The first version of the configurator was coded in C++, but it was too hard to maintain so I ditched it and moved to Visual Basic (And then C#).

I'd have to use GCC or an old version of VC++ to target msvcrt, and honestly it's not worth the hassle.

Reply 7 of 28, by bellarmine

User metadata
Rank Newbie
Rank
Newbie

Thanks for getting back to me Kaleidon, I appreciate it. Ok, I'll wait with 'bated breath' for now, hope you manage to get to it. Let me know if you'd like a hand beta testing it in XP or Win7 or something. I 'just' upgraded to Win7 on my desktop (not the laptop I use with the keyboard...😮) - guess I'm overdue, just another diehard XP fan 🤣. Thanks for all the hard work - Cheers! Bellarmine

When working on a job, you have 3 criteria: Fast, Good, and Cheap (i.e., Quick, High Quality, and Low Cost). Only 2 out of 3 are practical.

Reply 8 of 28, by KaleidonKep99

User metadata
Rank Newbie
Rank
Newbie

I restored full support for Windows XP in OmniMIDI 6.7.
Link for download: https://github.com/KeppySoftware/OmniMIDI/rel … ses/tag/6.7.0.0

EDIT 1:
Here's a video of OmniMIDI 6.6 beta running under XP SP3: https://www.youtube.com/watch?v=9I14uZy7g8k

Reply 9 of 28, by Falcosoft

User metadata
Rank Oldbie
Rank
Oldbie

Hi,
I have tested OmniMidi with the soon to be released FSMP 5.7 and I have noticed a few problems:
1. Real time Midi Clock messages are misinterpreted as Program/Bank Change messages.
In FSMP 5.7 I have implemented sending Midi Clock messages that can be a handy feature e.g. in case of AutoDrum: https://youtu.be/bnTbNi6yPaE
But I have noticed that in case of enabled Midi clocks OmniMidi produces strange Program/Bank Changes randomly. I could also reproduce the problem with other DAWs/Sequencers in case of enabled Midi sync/clock messages. I think instead of processing real time messages they should be simply ignored by OmniMidi since Bassmidi does not support them at all anyway.

2. ASIO buffer size does not only influence audio latency but also Midi timing/precision. Midi timing problems can occur even at reasonable buffer sizes of 20-50 ms.
This problem is definitely Bass/Bassmidi related. I think the problem in case of ASIO output is that there is no independent update period like in case of Directsound/WASAPI but the update period is always corresponds the audio buffer size. This is not a fortunate coupling since it means any buffer sizes above ~5ms can cause noticeable timing problems since all Midi data is buffered and played back at once at each buffer update. In case of OmniMidi maybe instead of user selectable buffer sizes the buffer size (in samples) should be capped at max. Sample rate/100 or something. Or at least a warning should be shown about this problem since audio buffer size affecting Midi precision is not intuitive at all.

3. Channel 10 Transpose option is disabled in all Midi systems but disabling only does make sense in GM mode not in GM2/GS/XG mode ( all of them are supported by Bassmidi).
This is not really a bug but only an unreasonable restriction. The restricted option and its explanation is only true in GM mode. But Bassmidi and thus OmniMidi supports many other modes. On one hand in GS/GM2/XG modes other channels than 10 can also be Drum/Percussion channels on the other hand channel 10 can also be a melodic channel. So at least this fixed channel 10 restriction should be removed, or a more sophisticated method should be applied that restricts only the channels that are actually in drum/percussion mode.
Test file that shows the problem with this fixed channel 10 restriction:

Filename
GM2_Ch10_Piano.zip
File size
219 Bytes
Downloads
91 downloads
File license
Fair use/fair dealing exception

You can test the 1st issue with the test version of FSMP:
http://falcosoft.hu/midiplayer_57_test.zip

I have made a video about all the issues and in the description part you can find the time codes for the corresponding sections:
https://youtu.be/z3C7wmCdgZw

Bye

@Edit:
The misinterpreted messages problem is a result of a code part in the the BufferSystem.h file:

BASS_MIDI_StreamEvents(
OMStream, BASS_MIDI_EVENTS_RAW,
&dwParam1, ((dwParam1 & 0xF0) >= 0xF8 && (dwParam1 & 0xF0) <= 0xFF) ? 1 : (((dwParam1 & 0xF0) == 0xC0 || (dwParam1 & 0xF0) == 0xD0) ? 2 : 3)

The tests for Program Change and Channel Pressure messages are OK, but the test for the real time messages never satisfies the condition. (dwParam1 & 0xF0) >= 0xF8 can never be true so real time messages will always be 3 bytes instead of the correct 1 byte and this problem can generate ghost messages that can be falsely interpreted as Program/Bank change messages with running status.

Website, Facebook, Youtube
Falcosoft Soundfont Midi Player + Munt VSTi + BassMidi VSTi
VST Midi Driver Midi Mapper

Reply 10 of 28, by bellarmine

User metadata
Rank Newbie
Rank
Newbie
KaleidonKep99 wrote:
I restored full support for Windows XP in OmniMIDI 6.7. Link for download: https://github.com/KeppySoftware/OmniMIDI/rel … ses/t […]
Show full quote

I restored full support for Windows XP in OmniMIDI 6.7.
Link for download: https://github.com/KeppySoftware/OmniMIDI/rel … ses/tag/6.7.0.0

EDIT 1:
Here's a video of OmniMIDI 6.6 beta running under XP SP3: https://www.youtube.com/watch?v=9I14uZy7g8k

Hi Kaleidon, Just posting to say a big THANK YOU for restoring XP support. I'm running v6.7.0.2 in XP right now (going to download your latest revision momentarily), and it works PERFECTLY!! 😀 Finally, a nice simple way to play my MIDI keyboard in XP using ASIO - I've got the latency all the way down to 2.6ms and it sounds great - no more delays when I'm playing keys. I see at GitHub that you're hard at work also fixing all of FalcoSoft's points - you'll get them done I'm sure. It's always such a thrill to me to suggest something and then, due to your hard work, see it happen - must be fun being a programmer. My only claim to fame is fiddling with complex DOS Batch files, still use them to do handy things.

Again, a big THANKS Kaleidon, and Happy Easter! 😀

Bellarmine

When working on a job, you have 3 criteria: Fast, Good, and Cheap (i.e., Quick, High Quality, and Low Cost). Only 2 out of 3 are practical.

Reply 11 of 28, by KaleidonKep99

User metadata
Rank Newbie
Rank
Newbie
bellarmine wrote:
Hi Kaleidon, Just posting to say a big THANK YOU for restoring XP support. I'm running v6.7.0.2 in XP right now (going to downl […]
Show full quote
KaleidonKep99 wrote:
I restored full support for Windows XP in OmniMIDI 6.7. Link for download: https://github.com/KeppySoftware/OmniMIDI/rel … ses/t […]
Show full quote

I restored full support for Windows XP in OmniMIDI 6.7.
Link for download: https://github.com/KeppySoftware/OmniMIDI/rel … ses/tag/6.7.0.0

EDIT 1:
Here's a video of OmniMIDI 6.6 beta running under XP SP3: https://www.youtube.com/watch?v=9I14uZy7g8k

Hi Kaleidon, Just posting to say a big THANK YOU for restoring XP support. I'm running v6.7.0.2 in XP right now (going to download your latest revision momentarily), and it works PERFECTLY!! 😀 Finally, a nice simple way to play my MIDI keyboard in XP using ASIO - I've got the latency all the way down to 2.6ms and it sounds great - no more delays when I'm playing keys. I see at GitHub that you're hard at work also fixing all of FalcoSoft's points - you'll get them done I'm sure. It's always such a thrill to me to suggest something and then, due to your hard work, see it happen - must be fun being a programmer. My only claim to fame is fiddling with complex DOS Batch files, still use them to do handy things.

Again, a big THANKS Kaleidon, and Happy Easter! 😀

Bellarmine

Thank you for your kind words, they mean a lot to me!

WXv4ZkU.png
Also, I suggest you to use the integrated MIDI input test whenever you want to play your keyboard live, since it uses KDMAPI to reduce the latency added by Windows Multimedia.
I also fixed all the issues reported by Falco at this point, we just have to report the ASIO issue to Ian Luck, the creator of BASS/BASSMIDI.

Have fun with the software!

Reply 12 of 28, by Zup

User metadata
Rank Oldbie
Rank
Oldbie

I've had a strange issue with OmniMIDI. Maybe it is directly related to a battle worn Windows 10 (more below) or it is a driver issue, but...

Background: My computer is an AMD Ryzen 1200 with on a Gygabyte GA-AB350-Gaming 3 board (Realtek ALC1220 sound chip), using a Windows 10 x64 Home and OmniMIDI m7 CR2. It used to be a Athlon FX with a Asus Xonar soundcard, Windows 10 x64 Pro and BASSMIDI, but the mainboard died. So I replaced mainboard and CPU without reinstalling Windows (and surprisingly it worked) but I lost activation. My windows was a Windows 7 updated and reinstalled (I had an "upgrade" key), so I bought a Windows 10 Home and managed to install it without formatting my HD (there is an unofficial method to do that) and keeping all settings, drivers and applications.

The issue: Today I wanted to hear some MIDIs (.kar variant), but BASSMIDI didn't appear as a MIDI device. So I uninstalled it and downloaded and installed OmniMIDI. I started vanBasco Karaoke Player, and it works great. Then I plugged my earphones (the realtek mixer appeared) but OmniMIDI output did not change to earphones. System sounds and other apps sounds can be heard in earphones but OmniMIDI output remains on speakers.

It seems that plugging/unplugging connectors while playing MIDI doesn't change OmniMIDI output. If the application is restarted, OmniMIDI output changes to the correct device. If settings are reset while playing the MIDI, it also changes to the correct device. As I said, I don't know if that's a OmniMIDI issue, a driver issue, something related to all changes made to Windows without reinstalling it or some kind of limitation on windows and its sound subsystem.

I have traveled across the universe and through the years to find Her.
Sometimes going all the way is just a start...

I'm selling some stuff!

Reply 13 of 28, by KaleidonKep99

User metadata
Rank Newbie
Rank
Newbie
Zup wrote:
I've had a strange issue with OmniMIDI. Maybe it is directly related to a battle worn Windows 10 (more below) or it is a driver […]
Show full quote

I've had a strange issue with OmniMIDI. Maybe it is directly related to a battle worn Windows 10 (more below) or it is a driver issue, but...

Background: My computer is an AMD Ryzen 1200 with on a Gygabyte GA-AB350-Gaming 3 board (Realtek ALC1220 sound chip), using a Windows 10 x64 Home and OmniMIDI m7 CR2. It used to be a Athlon FX with a Asus Xonar soundcard, Windows 10 x64 Pro and BASSMIDI, but the mainboard died. So I replaced mainboard and CPU without reinstalling Windows (and surprisingly it worked) but I lost activation. My windows was a Windows 7 updated and reinstalled (I had an "upgrade" key), so I bought a Windows 10 Home and managed to install it without formatting my HD (there is an unofficial method to do that) and keeping all settings, drivers and applications.

The issue: Today I wanted to hear some MIDIs (.kar variant), but BASSMIDI didn't appear as a MIDI device. So I uninstalled it and downloaded and installed OmniMIDI. I started vanBasco Karaoke Player, and it works great. Then I plugged my earphones (the realtek mixer appeared) but OmniMIDI output did not change to earphones. System sounds and other apps sounds can be heard in earphones but OmniMIDI output remains on speakers.

It seems that plugging/unplugging connectors while playing MIDI doesn't change OmniMIDI output. If the application is restarted, OmniMIDI output changes to the correct device. If settings are reset while playing the MIDI, it also changes to the correct device. As I said, I don't know if that's a OmniMIDI issue, a driver issue, something related to all changes made to Windows without reinstalling it or some kind of limitation on windows and its sound subsystem.

This is done by design, OmniMIDI doesn't change its output unless you restart its stream or change the output device manually through the configurator.
You can force it to change its output by holding SHIFT when clicking "Apply" in the settings tab, you don't need to change any setting to do this.

I could still add a check that makes OmniMIDI switch output when an hardware change is detected (E.g. new headphones plugged in), but I'll keep it disabled by default.

Reply 15 of 28, by Zup

User metadata
Rank Oldbie
Rank
Oldbie
KaleidonKep99 wrote:

This is done by design, OmniMIDI doesn't change its output unless you restart its stream or change the output device manually through the configurator.
You can force it to change its output by holding SHIFT when clicking "Apply" in the settings tab, you don't need to change any setting to do this.

I could still add a check that makes OmniMIDI switch output when an hardware change is detected (E.g. new headphones plugged in), but I'll keep it disabled by default.

Thanks, but I still felt kinda dumb.

Having a workaround was enough for me (restarting a MIDI player is not so hard), and (after writing my post) I found that other software don't change output device on-the-fly.

I haven't tried the new version yet, but I'm wondering what "switch default audio device" means... my problem was changing between connectors in the same (onboard) audio card, but I wonder if it supports plugging another audio device (i.e.: USB headphones). I know that this is a strange behaviour for a human being (most people will connect their headphones BEFORE launching the program), but I seeing my wife headphones made me curious.

I have traveled across the universe and through the years to find Her.
Sometimes going all the way is just a start...

I'm selling some stuff!

Reply 16 of 28, by KaleidonKep99

User metadata
Rank Newbie
Rank
Newbie
Zup wrote:
Thanks, but I still felt kinda dumb. […]
Show full quote
KaleidonKep99 wrote:

This is done by design, OmniMIDI doesn't change its output unless you restart its stream or change the output device manually through the configurator.
You can force it to change its output by holding SHIFT when clicking "Apply" in the settings tab, you don't need to change any setting to do this.

I could still add a check that makes OmniMIDI switch output when an hardware change is detected (E.g. new headphones plugged in), but I'll keep it disabled by default.

Thanks, but I still felt kinda dumb.

Having a workaround was enough for me (restarting a MIDI player is not so hard), and (after writing my post) I found that other software don't change output device on-the-fly.

I haven't tried the new version yet, but I'm wondering what "switch default audio device" means... my problem was changing between connectors in the same (onboard) audio card, but I wonder if it supports plugging another audio device (i.e.: USB headphones). I know that this is a strange behaviour for a human being (most people will connect their headphones BEFORE launching the program), but I seeing my wife headphones made me curious.

The new option works like this:
When you boot OmniMIDI up, it'll automatically use the default audio device selected in the Audio control panel.
gKtaH9z.png

When you check that option in the OmniMIDI Configurator, OmniMIDI will automatically follow the default device whenever it's changed, for example when you plug a new pair of headphones on the front panel while using your speakers connected to the back panel, or you plug in an external audio device which was set as the default output when it was plugged in last time.

Reply 17 of 28, by t9999clint

User metadata
Rank Member
Rank
Member

first off, I'd like to say that I really like your driver and use it a lot on the few windows machines I have left.
But well that kind of gets to the main point of my post...
I don't really use Windows anymore, do you have any plans to make a Linux version? and if not, do you know of any Linux equivalent? I've used TIMIDI and Fluidsynth and they're frankly terrible, I've tried looking for something using BASSMIDI but all that came up in my research is yours and Falcosoft's windows projects. Wine works, but It's not a perfect solution.

My Youtube Channel: https://www.kor.ninja/
My Soundfont Project: K.O.R. Soundfont Project V.5.0
My Soundcloud Page: https://soundcloud.com/clint-theriault

Reply 19 of 28, by zackoftrades333

User metadata
Rank Newbie
Rank
Newbie

Yeah, noticed that to, which sucks cause I keep getting a BEX/BEX64 OmniMIDI.dll error when setting any MIDI player to OmniMIDI, crashing the players, and can't report it now.

Hopefully they reopen it.