Play more than 16 MIDI Channels

Pages

Posts: 45
Joined: April 25, 2016 - 12:19
Play more than 16 MIDI Channels

Now that the beta and RC-1 of VirtualMIDISynth can have up to 4 devices (16 channels each), would it be possible for VMS to detect when the MIDI being played has more than 16 channels, and automatically spread them out across devices, rather than playing on the default one device and the extra audio not being heard?

There are lots of composers and midi sequencers sharing files which have more than 16 channels, and looking at the alternative of VSTs and programs is very confusing.

I also thought adding a 'solo' option as well as mute to the mixer could be beneficial to everyone to quickly listen to one channel on it's own (it would work exactly like mute but in reverse).

Just thinking out loud.

http://kiwi6.com/artists/GEN_MIDI

Posts: 1391
Joined: March 25, 2012 - 01:19
Re: Play more than 16 MIDI Channels

I agree for the "solo" feature: it's already on my TODO list (and it's there for such a long time).
Please note that VMS2 is actually "features freeze", so it'll be added to 2.1...

As for the multi-channel feature, well, it could be easy or not depending on the BASS libraries support (I have to investigate a little):

  • If BASS libraries support more than 16 channels
    the implementation should be easier since it won't involve any MIDI stream changes other than managing more than 16 channels.
    The mixer should also be modified to fit the extra sliders, but that's only a "cosmethic" change.
  • If BASS libraries does not support more than 16 channels
    I need to split the incoming MIDI stream (so an extra MIDI parsing with latency) and distribute it across multiple devices.
    Also need to force the same configuration for all the "binded" devices.
    Have to join the MIDI queues for the binded devices.
    Well, it could be a lot of work...

Will have a look.
Meanwhile, could you please link me a MIDI like that? and, again, which player do I need to use to play it?

Posts: 45
Joined: April 25, 2016 - 12:19
Re: Play more than 16 MIDI Channels

Many such MIDI files can be downloaded from composers and sequencers and played with the free composing program that is Musescore, all on the same website:

http://musescore.org

Here is the link to a MIDI file I downlaoded from there, which the author says there are 45 parts, but when loaded into Musescore it says there are 49 parts, and there are multiples of the same MIDI channel numbers listed next to them:

http://s000.tinyupload.com/download.php?file_id=00307357247251139779&t=0030735724725113977980597

I think maybe most media file players may be ok to play more than the normal 16 channels if the system MIDI device(s) support it?

http://kiwi6.com/artists/GEN_MIDI

Posts: 45
Joined: April 25, 2016 - 12:19
Re: Play more than 16 MIDI Channels

I've been thinking, if it's not possible just yet to achieve more than 16 channels playing in real time, would it be any easier for the MIDI Converter (to wave etc.) to include more than 16 channels, or is it all related?

http://kiwi6.com/artists/GEN_MIDI

Posts: 1391
Joined: March 25, 2012 - 01:19
Re: Play more than 16 MIDI Channels
Kj wrote:

I've been thinking, if it's not possible just yet to achieve more than 16 channels playing in real time, would it be any easier for the MIDI Converter (to wave etc.) to include more than 16 channels, or is it all related?

MIDI Converter uses the same synth engine, it only send its output to encoder+file instead of a hardware audio device...

Posts: 1391
Joined: March 25, 2012 - 01:19
Re: Play more than 16 MIDI Channels

I'm reviving this old thread because, after some research in BASS library documentation, I've seen that it supports up to 128 channels.
http://www.un4seen.com/doc/#bassmidi/BASS_MIDI_StreamCreate.html

That said, I need to setup a test environment (clean OS + VMS + MIDI Player supporting more than 16 channels + test MIDI file) to test a VMS version with up to 128 channels.

Still wondering how could I fit 128 sliders into mixer... if anyone have an idea please let me know.

Posts: 5
Joined: November 14, 2016 - 20:49
Re: Play more than 16 MIDI Channels

Thank you so much for looking into this. I can't be of any technical assistance, but hope you'll be able to arrange this one day.

Posts: 45
Joined: April 25, 2016 - 12:19
Re: Play more than 16 MIDI Channels
coolsoft wrote:

I'm reviving this old thread because, after some research in BASS library documentation, I've seen that it supports up to 128 channels...

...Still wondering how could I fit 128 sliders into mixer... if anyone have an idea please let me know.

Ooh sounds interesting, well spotted.

Perhaps for the mixer interface, you could keep it as it is, have a horizontal sliding bar underneath, but keep the master mixer in the same position floating ontop of the other channel mixers when you slide across to keep it accesible. Another idea is to have the mixer window resizable, and whenever the window is stretched big enough (horizontaly or verticaly) to fit another channel's mixer on screen or a new row will be visible it will automatically rearrange the mixers to fit, and still have sliders if neccesary, and keep the master floating somewhere so it's always easy to get to.

http://kiwi6.com/artists/GEN_MIDI

Posts: 56
Joined: September 25, 2013 - 16:38
Re: Play more than 16 MIDI Channels

Hi,

I do not want to be a party killer but one midi port (be it hardware or software) can only handle 16 channels.

It's because the Midi protocol itself is restricted to only 16 channels, you can only encode channels 0-15 in a midi message. The upper 4 bits in a status byte are the event type and the lower 4 bits are the channel information. E.g. '0xC2' is a Program change message (0xC0) intended to channel 2 (0x02). So channels can only be 0x0 - 0xF.

Then how 32 channel playback is possible?

Only by using more than one port (16 channel domain). It does not matter if the connection is software cable or serial or midi cable/USB one domain/port cannot handle more than 16 channels.

The midi player/sequencer has to know which tracks belong to which port. This information has to be present in the SMF file as a meta event. There are 2 kinds of events that multi-port capable players understand: 1. 0x21 'MIDI Port preference' and 0x9 'Device Name'.

This information is only available to the player/sequencer software since it is coded as a midi meta event. Midi meta events are not part of the midi protocol, they are defined in Standard Midi File (SMF) specification.

So VMS cannot get this information since midi infrastructure in windows cannot transmit this information.

In Bassmidi more than 16 channels are possible the same way 65535 instruments are possible: they have their own function calls extending the midi protocol. So you can use these Bassmidi extensions in your own software but it does not change the restrictions of the midi protocol.

Some more information can be found here:

https://coolsoft.altervista.org/en/forum/post/2951#post2951

So VMS could create even 128 channels but never could get the information what 16 channel domain should play it (VMS only gets midi messages through Windows midi driver architecture that are restricted to 16 channels according to specification).

So to sum it up: you have to set your player software to send messages belonging to different 16 channel domains to different midi ports.

Such a player software that can do this is MIDITrail:

https://osdn.net/projects/miditrail/

An example video how this can work with 32 channel Roland SC-88Pro demo files:

https://youtu.be/IqbXzYb_O7g

Posts: 45
Joined: April 25, 2016 - 12:19
Re: Play more than 16 MIDI Channels

I figured spreading more channels over multiple devices/ports was a viable workaround, and that a compatible player would be needed. Thanks for introducing MIDITrail.

I enabled 4 ports in VMS and set them as A through D in MIDITrail, and everything seems to play back, though with mixed results. With the larger MIDI files I have downloaded from Musescore users, it's rare that all the correct instruments are used, some sort of mismatch somewhere (strange as Musescore uses sf2). Piano seems to initialise more than needed instead of the instrument specified in the MIDI. As with attached file, intro should feature Cello instead of Piano, this part plays correctly when trying to play the file as smf through a 'normal' player (like Winamp). Of course MIDI files generated for VST style programs don't have to conform to GM standards, I have some VSL demos that play a strange choice of instruments that need fine tuning for sf2.

Attachments (Only registered users)
Robin Hood Prince of Thieves - Overture And A Prisoner Of The Crusades (From Chains To Freedom) (jub1) [27].zip

http://kiwi6.com/artists/GEN_MIDI

Pages

warning

Warning, JavaScript is disabled!

JavaScript is not available, maybe because you disabled it globally into your browser settings or you are using an addon like NoScript.

We do not have any dangerous JavaScript running here.
Please enable JavaScript; if you're using NoScript this image will help you adding CoolSoft to your whitelist.

Thanks for your comprehension and enjoy CoolSoft.