Multiple instances

Please let our ADS show!

This sites offers only FREE software and it's supported by a few advertisement boxes (no intrusive popups).
Please:

  • disable your AdBlocker by adding CoolSoft website to whitelist
  • give the proper cookie consent
  • enable JavaScript for this website

This seconds wait is to let you update your browser configuration...

Ok, I've done the required changes... now show me your content!
!!! Please enable JavaScript !!!

Pages

Posts: 4
Joined: February 10, 2015 - 20:40
Multiple instances

In versions 2.x of VirtualMIDISynth, will it be possible to run multiple instances of the program? Allow me to explain the reason for wanting to do this.
I use an SB0350 sound card with the kX Project driver software which includes a software interface for custom DSP chip signal routing, and the software has a huge library of incredible audio effects that I use to enhance soundfont sounds (ex., soundfont has pure sawtooth wave sound, in DSP I add effects to create a brilliant synth pad) but I don't want effects for one instrument to be applied to every instrument. I have 3 available independent 2-channel wave output devices. If I had three instances of VMS running, one device can be for a few synth sounds, the other can be a guitar, run through a distortion effect and stereo-enhancement, the rest for other instruments. After independent audio processing the three channels may be mixed to stereo (2-channel) sound, or to look at it another way, 6-channel (3D positional) MIDI is enabled! The possibilities would be great.

Might latency or synchronization be a problem? Could VMS process the individual MIDI channels in a manner thet each can be set to any available audio output device?

   -   In the FAQ I read "SoundServer can easily serve more than one driver, so multiple devices can be implemented" - Does this answer me? Or am I not understanding the statement?

Posts: 1687
Joined: March 25, 2012 - 01:19
That FAQ sentence is exactly

That FAQ sentence is exactly what you need: the new 2.x architecture will make it really simple for the instances to talk each-other, because they'll be into the same process.
Actually (1.x) it's really hard and requires something called "intra-process communication" to make it happen.

First alpha versions will still be single-device, to let me test if they'll have the same performances and stability as the current stable 1.x version.
But multi-device is on its way...

Posts: 4
Joined: February 10, 2015 - 20:40
Thumbs up

Thanks sir. I absolutely can't wait!

Posts: 1
Joined: November 12, 2015 - 17:48
Re: Thumbs up

Multiple instances would be a dream come true!

I would love to use a mixer and send the output on one midi file to 3 different MidiSynth Instances and audio mix between to hear the difference also this would be amazing for accordion players as an accordion module is simply 4 or 5 seperate Midi synthesizers and a mixer which could more customizable! what a dream! Is this already implimented yet into the latest version?

Posts: 1687
Joined: March 25, 2012 - 01:19
Re: Thumbs up

No, it will probably be into next v2.x alpha.

Posts: 4
Joined: February 10, 2015 - 20:40
Re: Thumbs up

Thoroughly exciting to know that this functionality isn't forgotten.

Posts: 5
Joined: February 11, 2015 - 04:28
Re: Thumbs up + 10!

Nice!

I already like the synth a lot, but to be able to concurrently map many different synths at the same time would be awesome!

For version 2:

Is it possible to allow a SysEx message to choose which sountfont is used on a given synth?  That would allow not only multiple synths, but a whole range of soundfonts as well.  You could just have them in the list, but not enabled by default.  Then you could send SysEx messages to enable/disable what you want.  I assume this would be a true System Exclusive message just for your synth at that point.

Posts: 1687
Joined: March 25, 2012 - 01:19
Re: Thumbs up + 10!

It won't be difficult to implement such command interface, actually VMS already parses SysEx messages to change its mode (GM, XG, ...) and to set effects (Reverb, Chorus, ...).

I don't know how SysEx "pattern" definitions works; who's in charge for SysEx definitions?
I mean: is there an "authority" like the ones assigning MAC or IP addresses?
I'd like to avoid creating my own pattern and then find out it conflicts with an existing device.

Posts: 5
Joined: February 11, 2015 - 04:28
Re: Thumbs up + 10!

Well from what I understand you would use a pattern that is already is use.  Then you specify a manufacturer ID, model, etc.  I don't know if your supposed to register that at all or not.  However, most commands will take a broadcast version that sends the command to everything.  So you could just respond to a broadcast command.  Now if you command somehow collided with someone elses it probably would not matter as long as you don't respond to the one for their equipment (manf ID, model).  Also, you could make all the SysEx commands configurable in a file.  So that if there is an issue someone can comment them out or change them as needed. 

Here is where I found some of the info:

http://www.midi.org/techspecs/gm.php

I did not pay to get a copy of the spec.  There is probably other websites to find what is needed.  Some of the documents in there address SysEx and the general uses for them.  One of them talks about specifying a file.  Not sure if that will match what we are doing or not.  There might actually be an existing switch fonts command, but I don't know.  I am sure there is some what of a painful process for all the MIDI hardware guys to come to terms with the switch to computers.  A lot of the spec seems to be focused on old tech.  When I get a chance I will try and dig through and find something that matches switching sound fonts.

Posts: 5
Joined: February 11, 2015 - 04:28
Re: Thumbs up + 10!

Haha, that document I first looked at in error is the one you will want to load sound font files.  It actually specifies the .sf2 extension in the document as a file that can be loaded. 

http://www.midi.org/techspecs/ca18.pdf

I did not read it very closely, but it looks like the commands allow someone to open and select a sound font file, select it, close it, and some others.  I "think" the context (ctx) is the bank, but I cannot be sure.  Anyway, this does specify how to load a soundfont file.  How you ultimately use it depends on what works for you. 

I will assume the open just adds the soundfont to the list,  the select assigns to a bank via the ctx value, and the close deallocates the sound file.  So I am not sure what happens if you deallocate the soundfont on a bank and then try to use the same bank?  Nothing?

Anyway, someone already thought of this use case for SysEx.  So the hard part is done!

Pages