OmniMIDI: A MIDI synthesizer forked from "BASSMIDI Driver" by kode54

Schedules and announcements about program releases.

OmniMIDI: A MIDI synthesizer forked from "BASSMIDI Driver" by kode54

Postby KaleidonKep99 » 2018-11-08 @ 13:09

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... :depressed:

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 (viewtopic.php?f=24&t=27975).
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 (viewtopic.php?f=24&t=27975)

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
Image
Entire album here: https://imgur.com/a/pM0sL6h
User avatar
KaleidonKep99
Newbie
 
Posts: 5
Joined: 2014-7-11 @ 21:43
Location: Italy

Re: OmniMIDI: A MIDI synthesizer forked from "BASSMIDI Driver" by kode54

Postby Firtasik » 2018-11-08 @ 15:46

Nice! I'll give it a try. :happy:
11 1 111 11 1 1 1 1 1 11 1 1 111 1 111 1 1 1 1 111
User avatar
Firtasik
Member
 
Posts: 435
Joined: 2013-7-21 @ 19:07

Re: OmniMIDI: A MIDI synthesizer forked from "BASSMIDI Driver" by kode54

Postby KaleidonKep99 » 2018-11-28 @ 01:05

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/OmniMI ... /6.0.57.26
User avatar
KaleidonKep99
Newbie
 
Posts: 5
Joined: 2014-7-11 @ 21:43
Location: Italy

Re: OmniMIDI: A MIDI synthesizer forked from "BASSMIDI Driver" by kode54

Postby bellarmine » 2019-4-04 @ 08:58

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.
User avatar
bellarmine
Newbie
 
Posts: 32
Joined: 2016-2-23 @ 06:52
Location: Ontario, Canada

Re: OmniMIDI: A MIDI synthesizer forked from "BASSMIDI Driver" by kode54

Postby KaleidonKep99 » 2019-4-07 @ 04:27

bellarmine wrote: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.
User avatar
KaleidonKep99
Newbie
 
Posts: 5
Joined: 2014-7-11 @ 21:43
Location: Italy

Re: OmniMIDI: A MIDI synthesizer forked from "BASSMIDI Driver" by kode54

Postby DracoNihil » 2019-4-07 @ 19:58

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.
User avatar
DracoNihil
Oldbie
 
Posts: 1239
Joined: 2011-10-09 @ 14:26
Location: Independence, KS

Re: OmniMIDI: A MIDI synthesizer forked from "BASSMIDI Driver" by kode54

Postby KaleidonKep99 » 2019-4-08 @ 11:54

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.
User avatar
KaleidonKep99
Newbie
 
Posts: 5
Joined: 2014-7-11 @ 21:43
Location: Italy

Re: OmniMIDI: A MIDI synthesizer forked from "BASSMIDI Driver" by kode54

Postby bellarmine » 2019-4-09 @ 08:02

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...:o) - guess I'm overdue, just another diehard XP fan lol. 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.
User avatar
bellarmine
Newbie
 
Posts: 32
Joined: 2016-2-23 @ 06:52
Location: Ontario, Canada

Re: OmniMIDI: A MIDI synthesizer forked from "BASSMIDI Driver" by kode54

Postby KaleidonKep99 » 2019-4-13 @ 21:29

I restored full support for Windows XP in OmniMIDI 6.7.
Link for download: https://github.com/KeppySoftware/OmniMI ... ag/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
User avatar
KaleidonKep99
Newbie
 
Posts: 5
Joined: 2014-7-11 @ 21:43
Location: Italy

Re: OmniMIDI: A MIDI synthesizer forked from "BASSMIDI Driver" by kode54

Postby Falcosoft » 2019-4-17 @ 16:50

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:
GM2_Ch10_Piano.zip
(219 Bytes) Downloaded 6 times


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:
Code: Select all
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.
User avatar
Falcosoft
Oldbie
 
Posts: 843
Joined: 2016-5-21 @ 13:46
Location: Pécs, Hungary

Re: OmniMIDI: A MIDI synthesizer forked from "BASSMIDI Driver" by kode54

Postby bellarmine » 2019-4-20 @ 06:23

KaleidonKep99 wrote:I restored full support for Windows XP in OmniMIDI 6.7.
Link for download: https://github.com/KeppySoftware/OmniMI ... ag/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!! :happy: 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! :happy:

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.
User avatar
bellarmine
Newbie
 
Posts: 32
Joined: 2016-2-23 @ 06:52
Location: Ontario, Canada


Return to Release Announcements

Who is online

Users browsing this forum: No registered users and 1 guest