Multiple midi ports?

• Jan 17, 2019 - 05:01

I just discovered that MuseScore has added midi support. YAY. Started to attempt to use it together with Vienna Ensemble Pro. Is it currently possible to use more then one OSX IAC midi port in MuseScore? when I go into preferences I/O, under PortAudio there is a way to configure one midi IAC port, but for larger scores I will need more than 16 midi channels. How do we go about configuring it to use more than one IAC midi port?

Also what is the best way to disable the sound font audio when working in this mode?


I guess you mean direct MIDI out, which has been supported for a year or so, as opposed to JACK MIDI, which has been supported for many years? Assuming you are using MuseScore 3 (only available a few weeks), you can select different ports and channels for the different instruments in your score using View / Mixer. Normally, I think it just kind of round-robins the default 16 (eg, managing everything using program changes).

To disable the internal synth, go to View / Synthesizer, and either pull the volume all the way down (I don't think that will affect MIDI output) or remove the soundfont.

In reply to by Marc Sabatella

Well when I go to preferences I see a way to select only one midi device, such as a IAC port. That gives me access to only 16 channels of midi.

In the track panel there is a way to set the midi channel to one of 16 and there is way to choose a port number, but I have no idea what that port number refers to.

I don’t see any way possible to have a score using more then 16 midi channels

In reply to by Dewdman42

I would say if you plan to do much with MIDI, you it would be worthwhile to read up some on how MIDI ports and channels work. I don't say that to be snarky, just that's a bit outside the score of what I can easily help with or what anyone can help you with if they don't have intimate knowledge of the details fo your particular MIDI environment.

But I can say the short answer is, each port can have 16 channels, so with multiple ports, you can have more than 16 channels. And again, it isn't strictly necessary to use more than 16 channels, as program changes should handle things correctly even with only 16. But if you are wanting to have independent control of the different instruments on your MIDI system, then indeed, you'll want to configure it accordingly.

In reply to by Marc Sabatella

Musescore does not appear midi ready enough for me to spend time on that. I already understand how midi works quite well. Ports are not applicable unless a device supports that in its driver which most do not. Vst3 supports it which is also not applicable here. On the Mac, each IAC virtual midi device appears as a midi device with 16 channels and they way to handle more then 16 channels is to allow the possibility to send to more then one “device” by name. Some people might refer to an IAC device as a port, but they are actually midi devices and they are named not numbered.

Portaudio is a library which perhaps musescore is using to support midi? Portaudio might have within it the capability to support numbered ports when you route midi around in the portaudio universe, I’m not really sure about that but in order to get to another application such as mainstage or another host, we would need to be able to specify a device by name and channel.

In reply to by Dewdman42

OPK, when you said you didn't know what the port number referred to, I thought you meant you literally didn't know what the term meant.

The built-in MIDI out is indeed fairly basic, but does support multiple ports obviously, which allows it to serves msot people's needs quite well. As has always been the case, for those with more demanding needs, you can connect to JACK and have much more flexibility.

In reply to by Dewdman42

Multiple ports to device that respond to more than one port, or to multiple devices each listening to a different port. At leas that's my understanding. Most of my low level real-time MIDI programming experience was back in the late 80's / early 90's but I assume that model still applies.

In reply to by Dewdman42

Dewdman42, have you found any solution to this? I too am struggling to understand how to access the direct midi output for each port. It's great that various midi ports and channels can be assigned to tracks in Mixer, but you are correct that it is not clear how those multiple ports are related to the midi output in Preferences I/O.

Marc, perhaps I am missing something but every midi thing I have encountered requires a separate "device" to be set up for each 16 channel group (port). I think this is a limitation of the midi spec. As Dewdmann42 mentioned, a separate IAC device can be setup for each 16 channel port but only 1 of those devices can be chosen at a time in Musescore Preferences. Therefore only the channels of a single port in Musescore are really available for direct midi out. The same situation applies in my testing of LoopMidi/Loopbe30 (virtual devices) in Windows, and my MOTU microExpress midi interface (physical device).

It seems that in Musescore we need the ability to select multiple midi output devices in Preferences to be able to access the direct midi output from all ports chosen in the Mixer. Am I correct that being able to choose only 1 Portaudio midi output device in Preferences means only the 16 channels of port 1 are output?

Thanks for any help on this.

In reply to by cjul3205

I think I understand this. I don't know jack about "jack", as they say, but MS has exactly one external MIDI output port, which can multiplex itself over sixteen channels. There is no way in Muse Score to say "you are port 4", let alone have other ports. As can be proven by simple experiment, if you have 17 or 18 instruments, and connect an external midi device/IAC to the one port it supports, notes sent to port 1 channel 1 and port 2 channel 1 will appear undistinguished, identical, on the single supported port. There is nothing that a single device with a single port can do when connected to a single port.

I have verified what I have said with experiment. MuseScore has 1 midi output port (jack excepted), therefore 16 channels, period. Internally it can imagine and support as many ports as it wishes, but there's only one external port available.

In reply to by BSG

But... Why the MuseScore Mixer pannel let us to select MIDI Ports (more than 1) if it doesn't work? ???

I cannot to test it, here, because I only have just one external MIDI device (Casio keyboard).

But... According to my MIDI experiences with another MIDI software, time ago, that MIDI Port number can be used to select which external MIDI device should plays which sound.

So, if we use MIDI Port 1, with MIDI channel 1 to piano... Then the MIDI external device number 1 will plays the piano sound and we could use MIDI Port 2, with the same MIDI channel 1 to another instrument, let say a guitar... Then the MIDI external device number 2 will play the guitar sound, and so and on.

But... I insist, I'm talking about another MIDI software I used with another hardware, not MuseScore, today.

In reply to by jotape1960

It works internally to MuseScore. If you have more than 16 instruments, you need more than 16 channels. It imagines multiple "ports" internally as it needs. "JACK" aside, it has no way to allow you to direct those ports to different external MIDI adapters or internal pipes. An internal pipe (IAC on Mac, midiLoop on win) connects one port to one port. Note that the usual way of running multiple real midi devices/instruments is not via multiple ports, but to daisy-chain them from one port with MIDI-THROUGH plugs and set them to listen for/respond as different channels -- this requires only one port and one MIDI adapter to drive all these devices on separate channels.

In reply to by BSG

A common misconception is that "port" is just a silly midi fiction for "new upper bits of channel". Inside of MuseScore, with its own synthesizer, this is more or less so. But when a stream of MIDI bytes is concerned, whether on a chain of physical midi instruments, or internally on an IAC/loopPort device, nothing could be further from the truth; the port is the connection to the medium on which the midi bytes appear. There are no marks "this is for port1, this is for port 3" in the midi stream (as there are for channels). If the byte-stream you are looking is not for the port to which you are connected, something is wrong, and there is no way to detect it.

In reply to by BSG

I'm not sure the relevance BSG.

Bottom line is that in MuseScore we are not able to use more than 16 midi channels because we can only configure one midi device at a time. Different apps label things differently, so whether or not MuseScore's labels for the words "port" and "device" are representative of internal coding, is not very interesting to me. What is interesting to me is an explanation of how we can send more than 16 channels at a time. If you want to call that to different midi devices, or different midi ports, makes no difference to me, but that is the need.

In my other applications, I can refer to multiple IAC "ports", which are essentially virtual midi devices. So MuseScore would need to be able to send to multiple midi devices I suppose, in order to access those and send more than 16 channels of midi to another app (or to external devices if you want). You can call them whatever you want in MuseScore, I don't care. In LogicPro, they sometimes refer to those as "ports" in the GUI. And AudioMidi setup also refers to IAC virtual devices as "ports", but in actuality they are virtual midi devices. We have a conflation of terms and concepts going on here, but at the end of the day MuseScore is locked down to only 16 channels and no ability to access other virtual midi ports.

Any kind of midi stream encoding for a port concept is largely useless here

In reply to by BSG

So does anyone know if there is an open feature request or plans in the works to expand the available external MIDI ports? If we need to write up a new feature request, how do we word it correctly so that there is no confusion.

@BSG, I think you have a good handle on the lingo and referring to the issue in terms of connecting internal MIDI ports to external is probably the right approach. Do you want to give writing a feature request a shot?

In reply to by cjul3205

I suppose I could. There is a bug here and a feature request. The bug is that it ignores "midi port" when outputting MIDI, i.e., even if you have voices set for multiple ports, they all get smashed into (the) one external port: in the short run, it should only output those voices routed to port 1. And, of course, the feature request, i.e., multiple external MIDI ports (which will, of course, require UI design in the pref dlg.)

Do you still have an unanswered question? Please log in first to post your question.