Skip to main content

Notice

Please note that most of the software linked on this forum is likely to be safe to use. If you are unsure, feel free to ask in the relevant topics, or send a private message to an administrator or moderator. To help curb the problems of false positives, or in the event that you do find actual malware, you can contribute through the article linked here.
Topic: BASSMIDI MIDI synthesiser for Windows XP/Vista/7 (Read 316297 times) previous topic - next topic
0 Members and 2 Guests are viewing this topic.

BASSMIDI MIDI synthesiser for Windows XP/Vista/7

Reply #200
I don't have XMPlay midi plug-in. :|

After Edahs taught me to send Sysex bytes to Cakewalk to do a GS reset, I can select bank now. Thanks!

BASSMIDI MIDI synthesiser for Windows XP/Vista/7

Reply #201
Edahs tried XMPlayer and at XMplayer he can changes bank without any problem, even without GS or GM reset. So please check with bassmidi.

Also, he mentioned that foobar2000 midi plugin has the same limitation. So please check along as well. Thanks!



I also tested something out. When I try to use my midi keyboard connected with UX16 to the X-FI hardware synth, there was no noticeable delay. But when I try to assign output MIDI port as bassmidi driver, there is a delay. This render me unable to record with the bassmidi device and only reserve it as playback.

BASSMIDI MIDI synthesiser for Windows XP/Vista/7

Reply #202
How does that work out when you sequence? do you have to select more than 1 synthesiser instance?


As Lancelot replied, you simply assign the various ports to various channels in your MIDI sequencer (of course, after configuring the various MIDI devices within the sequencers MIDI setup and configuration section).

Here's what the MIDI device config looks like in Cakewalk Pro 3.01 (of course, you can select multiple devices, and set their order within that selection box):

http://jasonwilliams400com.startlogic.com/...nfiguration.gif

...and in this screenshot:

http://jasonwilliams400com.startlogic.com/...ional_v3.01.jpg

...you could change the "Port" box for the various channels to assign that specific channel to a MIDI port.

I use this all the time when MIDI sequencing with my SBLive, as I can load a specific SoundFont into one hardware synth (SB Live! Synth A), and another specific SoundFont into the second hardware synth (SB Live! Synth B).

There are also quite a few MIDI files out there (my own included) that use more than 16 MIDI channels. This (of course) allows you to use more than 16 instrement presets/patches within a single MIDI file


@Lancelot,

For the bank selection problem, you might try configuring your MIDI sequencer for another bank selection method.

I'm only familiar with the old Cakewalk Professional v3.01, but in that MIDI sequencer you can navigate to a dialog window that has:

Bank Select method

...with choices of:

Normal
Controller 0 Only
Controller 32 Only
Patch 100.127

I've noticed for certain hardware and software synthsesizer that I sometimes had to change the bank selection method in order for the synth to be able to change banks. I don't remember what the setting should be for the BASSMIDI driver (as my WeedsGM3 SoundFont only has a single bank for each patch/preset), but you might try "Normal" for the bank select method (if your MIDI sequencer supports changing that option).

Also, as Mudlord said, you it's also a good idea to send a GS reset sysex for any MIDIs that will be used with the BASSMIDI Driver (or XMPlay's "MIDI Plugin" as well).


Quote from: Lancelot Chan link=msg=806149 date=
I also tested something out. When I try to use my midi keyboard connected with UX16 to the X-FI hardware synth, there was no noticeable delay. But when I try to assign output MIDI port as bassmidi driver, there is a delay. This render me unable to record with the bassmidi device and only reserve it as playback.


There is a slight bit of latency with the BASSMIDI driver (approx. 80ms or so), which can make it difficult to sequence (or play your MIDI keyboard) in real-time.

But, if you simply want to synchronize the MIDI tracks of a hardware MIDI synthesizer (such as an SBLive, or your X-Fi) and the BASSMIDI Driver (or another software synth) within your MIDI sequencer:

Some MIDI sequencers (such as Cakewalk Pro 3.01) has a setting box to "slide" the time of a specific MIDI channel in real-time. See this pic that I linked to above ( http://jasonwilliams400com.startlogic.com/...ional_v3.01.jpg )... the "Time+" section allows you to enter a positive or negative number (in MIDI "ticks"), which "slides" the played events earlier (or later) in real-time.

Using that "Time+" box, you can synchronize a software synth to a hardware synth PERFECTLY when the sequencer is playing the song  I use this quite a bit when I want to synchronize my SBLive (with a SoundFont loaded) with the Yamaha S-YXG50 software synth (when I want to use one of the heavy rock distortion guitars that it provides)


Refer to this document for a litte better explaination of the above:

http://jasonwilliams400com.startlogic.com/...XG/YXG50Utl.txt

in the sections "Yamaha S-YXG50 Software Synthesizer WDM Driver Latency" and "Converting Latency Delay to MIDI Sequencer Timebase Ticks".

BASSMIDI MIDI synthesiser for Windows XP/Vista/7

Reply #203
I tried those bank selecting methods. None worked without having done a GS reset.

I understand the sliding synchronization..... I just want to be able to play the keyboard and have realtime feedback so I can dump my problematic X-FI hardware synth altogether. Now I've to use hardware synth for input, and than bassdriver midi for mixing because only the latter handle the chorus and reverb as it should be.


BASSMIDI MIDI synthesiser for Windows XP/Vista/7

Reply #205
I hope the latency issue can be eliminated.... I suppose software synth doesn't always equal to latency or software sampler like Gigasampler won't work.



The bank selection still doesn't work on me...

BASSMIDI MIDI synthesiser for Windows XP/Vista/7

Reply #206
RE: latency.

XAudio:
const char * err = sound_driver->open(GetDesktopWindow(), 44100, 2, sound_out_float = TRUE, 88 * 2, 30);
DSound:
err = sound_driver->open(GetDesktopWindow(), 44100, 2, sound_out_float = FALSE, 88 * 2, 50);

Interface:
virtual const char* open( void * hwnd, unsigned sample_rate, unsigned nch, bool floating_point, unsigned max_samples_per_frame, unsigned num_frames ) = 0;

I really don't understand why you use those weird settings. I haven't looked in detail if you *really* are setting 30 (or 50) *FRAMES* of buffer size, and using just 88 samples in each frame. (You know.. this is not video)


A normal application would use, for example 6 frames of  768 samples of buffer size, which means 69 milliseconds.  This works for me with directsound on my application. Of course, smaller frames should allow for less latency on the MIDI receiving end, but if you have so much audio latency, the gain is lost.

Also, i find it even more strange that you've decided to use XAudio... Why? Why not WASAPI?  With wasapi *shared* mode, i have 25ms of latency, and I can get down to 10ms with wasapi exclusive, with an integrated soundcard.

I downloaded the source, and wanted to try this myself (i.e. modify the driver to support wasapi), but I am a bit confused still with the "driver". (Am I really supposed to reboot the machine each time i compile the dll?)


[Edit: corrected a couple of things]

BASSMIDI MIDI synthesiser for Windows XP/Vista/7

Reply #207
With the versions I just posted, bank selection should work just fine as long as you don't issue a GM reset, or as long as you issue a GS or XG reset afterward.

 

BASSMIDI MIDI synthesiser for Windows XP/Vista/7

Reply #208


I downloaded the source, and wanted to try this myself (i.e. modify the driver to support wasapi), but I am a bit confused still with the "driver". (Am I really supposed to reboot the machine each time i compile the dll?)


No, just have to make sure no other apps have loaded the driver. For some reason, things like Origin, the Flash player, and Steam will load it.

BASSMIDI MIDI synthesiser for Windows XP/Vista/7

Reply #209
Okay, Ian got back to me. This is the correct behavior. GM1 is not supposed to support bank change controls. XMPlay is in error, as he hasn't updated it with that change yet. (Someone reported a file to him which uses GM1 reset, and misbehaves if the bank change messages it contains have any effect.)

I'll go ahead and push the BASSMIDI Driver and foo_midi changes.

BASSMIDI MIDI synthesiser for Windows XP/Vista/7

Reply #210
Okay, Ian got back to me. This is the correct behavior. GM1 is not supposed to support bank change controls.


Man, you learn something new every day <grin>. In all of my years of "MIDI-ing", I had NO idea that bank changes weren't part of the GM1 specs.

I 've used them as far back as my original Wave Blaster 1 (and Cakewalk Pro, circa 1994-1995), and simply assumed that was part of the GM1 specs.


I'll go ahead and push the BASSMIDI Driver and foo_midi changes.


Do you mean that you're going to add the bank change feature to the BASSMIDI Driver (in GM1 mode)? If so, that would be great  If you are, one small request... add BOTH controller "0" as well as "32" to be recognized as bank change MIDI controllers.

BASSMIDI MIDI synthesiser for Windows XP/Vista/7

Reply #211
Do you mean that you're going to add the bank change feature to the BASSMIDI Driver (in GM1 mode)? If so, that would be great  If you are, one small request... add BOTH controller "0" as well as "32" to be recognized as bank change MIDI controllers.

This would be a nice idea but a real soundblaster and the sf2 format only support one bank select method at a time (either MSB or LSB, not simultaneously). I mean, in order to use all MSB and LSB simultaneously, we need to load 128 separate sf2 files.

BASSMIDI MIDI synthesiser for Windows XP/Vista/7

Reply #212
No, I mean I just pushed the changes to make bank changes work on all modes except for GM1.

And the only thing I can do for bank change LSB is reroute it to bank change MSB. I can't change how BASSMIDI recognizes bank change messages. (It ignores LSB.)

BASSMIDI MIDI synthesiser for Windows XP/Vista/7

Reply #213
and the VST driver is now updated with the same audio output crashfixes as the BASSMIDI one.


BASSMIDI MIDI synthesiser for Windows XP/Vista/7

Reply #215
bassmididrv's volume control is broken again in my system, using win7 x64

BASSMIDI MIDI synthesiser for Windows XP/Vista/7

Reply #216
Fixed, at the same link, and at the official site.

BASSMIDI MIDI synthesiser for Windows XP/Vista/7

Reply #217
Thanks. I have Roland SC-D70 (SC-8820 compatible) and SONAR producer 5. If you and other developers want to check GS compatibility (such as record MIDI files for references, checking behavior etc) I may be able to offer some help.

SC-D70 manual (appendix section contains some MIDI spec):
http://www.roland.com/support/article/?q=m...&id=1811333

I checked that both ports in bassmididrv seem working independently.


BASSMIDI MIDI synthesiser for Windows XP/Vista/7

Reply #219
I uploaded a newer version of both drivers here, and BASSMIDI driver at the official site as well.

http://kode54.foobar2000.org/bassmididrv.exe
http://kode54.foobar2000.org/vstmididrv.exe

New is 64 bit support in BASSMIDI, thanks to [JAZ]. I also implemented my own 64 bit support in the VSTi driver, which includes the VST host wrapper from foo_midi, so both 32 and 64 bit drivers can support both 32 and 64 bit VST instruments.

BASSMIDI MIDI synthesiser for Windows XP/Vista/7

Reply #220
And somehow the MSVC projects to compile the driver got narc'ed it seems, and the vst host source isn't there.
And there is a issue on XP systems with CancelIoEx, which is a Vista and up functions. When it could use CancelEx....

bleh, I suppose the source is a "work in progress" for the VSTi driver?

BASSMIDI MIDI synthesiser for Windows XP/Vista/7

Reply #221
CancelIoEx issue is fixed and uploaded in the same place.

Missing source files have also been pushed to the repository. I also need to make a project file and solution for the driver, which would be easier than using the current batch file method.

BASSMIDI MIDI synthesiser for Windows XP/Vista/7

Reply #222
Seems that a problem has cropped up with one of the newer versions of the BASSMIDI Driver

I'm not sure which version that it was (I installed the one at http://kode54.foobar2000.org/bassmididrv.exe ), but all I hear are a lot of little pops and clicks when playing a MIDI file (no instruments/note/music at all). This when the BASSMIDI Driver is set as the main Windows MIDI device (playing a MIDI file in the WinDoZe Media Player), as well as in my MIDI sequencer.


(edit) BTW, a feature request (of course, after the above gets sorted out): It would most excellent to be able to assign different SoundFonts to the two seperate BASSMIDI Driver synth ports

BASSMIDI MIDI synthesiser for Windows XP/Vista/7

Reply #223
Assigning SoundFonts separately may not be easy, as both ports are currently implemented as the first and last 16 channels of the same instance of BASSMIDI. Implementing separate SoundFont lists would require a separate dialog tab on the configuration program, then loading both lists separately in the driver, then loading the fonts separately into instances of the synthesizer.

I updated both installers to increase the DirectSound latency. I wasn't careful when importing the settings from the updated 64 bit version source. [JAZ] was not aware of how much minimum latency the DirectSound code I use requires.

BASSMIDI MIDI synthesiser for Windows XP/Vista/7

Reply #224
Assigning SoundFonts separately may not be easy, as both ports are currently implemented as the first and last 16 channels of the same instance of BASSMIDI. Implementing separate SoundFont lists would require a separate dialog tab on the configuration program, then loading both lists separately in the driver, then loading the fonts separately into instances of the synthesizer.


Understood, thanks for the info


I updated both installers to increase the DirectSound latency. I wasn't careful when importing the settings from the updated 64 bit version source. [JAZ] was not aware of how much minimum latency the DirectSound code I use requires.


Still having a problem with the new version. I'm not hearing the rapid clicks and pops (like I was before), but only hear the first note or so of the MIDI file, and then nothing/silence.