Virtual ('Inter-App') MIDI

Virtual MIDI connections allow apps on the local device to send MIDI to each other. This is functionality built into the system since Android 6. Apps do not gain virtual MIDI ports 'for free', developers do need to implement them (and implement them correctly), but in principle this is a powerful feature that probably did not live up to its potential so far.

The device listing under this tab will contain all apps that provide virtual MIDI ports installed on the local device. Some will only offer an input, some only an output. Others may be able to both send and receive via virtual ports.

The symbols on the right hand side of each entry illustrate those capabilities as seen from TouchDAW's perspective:

□■ - Output only. This is the most common case and will often be implemented on synthesizer apps etc. TouchDAW should be able to send MIDI to the app, allowing you to play a synthesizer from its keyboard or pads.

■□ - Input only. Most likely to be seen with controller apps or MIDI-File players.

■■ - Input and output. Less frequently found, but some apps may not only let you use their sound generators with external MIDI but also send MIDI from their UI.

Virtual MIDI ports from apps that have not themselves been opened for some time may disappear from listings! This seems to be a vendor specific (Samsung...) extension of Android's permission removal concept. Start any app whose ports got lost via its launcher icon once and its ports should show up in other MIDI apps again.


Another thing that needs to be said in terms of virtual MIDI connections is that Android's MIDI APIs are not overly easy to understand. There are a lot of apps whose authors apparently thought it would be required to implement the basics of virtual ports, but then only implement them partially. It is not uncommon to see apps just crash when you attempt to open their ports or send the first data to them. Others may stay alive, but simply do nothing with the MIDI they are supposed to handle.
There's also many apps that in principle work, but fail to properly close MIDI ports when done. This will then effectively block them for future use.

Like many things on Android, virtual MIDI can be a bit of a mess. To help clean that up internally TouchDAW contains an

App Blacklist

When you touch and hold the tab's header, its content will change to show another app listing that serves as a blocklist for 'known bad' apps.

While initially intended to hide away apps with broken virtual port implementations, this can generally be used to reduce the number of apps showing up in the primary listing: There may be so many apps installed on a device that it just gets difficult to find the one you want in a potentially very long list of names. It's also questionable if you will ever want to send MIDI from some other controller app to TouchDAW.

As there is no predefined blacklist, both listings will initially hold the exact same content. Once you start making use of the blacklist, the primary list will become shorter while the blacklist will keep containing entries for all installed apps with the checked items being hidden from the primary listing.

To return to the primary list (short) touch the header button - now showing that 'block' icon - again.