--
You received this message because you are subscribed to the Google Groups "android-midi" group.
To unsubscribe from this group and stop receiving emails from it, send an email to android-midi+unsubscribe@googlegroups.com.
To post to this group, send email to androi...@googlegroups.com.
To view this discussion on the web visit https://groups.google.com/d/msgid/android-midi/d08da403-df34-4b17-938a-5da31dda9226%40googlegroups.com.
On Friday 02 March 2018 12:26:14 'Phil Burk' via android-midi wrote:
> > 1) why has the industry come up with the need to have a switch on these
> devices? what problem is it solving?
>
> I have never seen a switch like that before. So I can only guess why
> Roland did that.
>
> An earlier version of the Roland UM-ONE was NOT class compliant. But the
> mk2 can apparently be class compliant because it works sometimes with
> Android. So I suspect the switch toggles between the new class compliant
> mode or the old mode. But this is just a guess. You might need to ask
> Roland.
There is little need for guessing. There is a document explaining how the switch works:
https://static.roland.com/assets/media/pdf/UM-ONEmk2_l_iPad_e02_W.pdf
The switch was provided for connecting the UM-ONE to the Apple iPad, thru the Apple's camera adapter.
MIDI has been neglected in Android for so long that it was irrelevant for Roland or their customers when the device was launched.
> Almost ALL of the new USB-MIDI devices are class compliant. So a new
> digital piano product should work fine with Android. But if it is an old
> design, then maybe not. To be sure, you need to ask the store if the
> piano is "MIDI class compliant".
>
> If they don't know then ask if it comes with a CD that contains
> "drivers". If yes then it requires custom drivers and is not class
> compliant. Note that some products may come with applications on a CD.
> That is fine. You just want to avoid "drivers" on a CD.
Roland products often require a special driver for their enhanced USB-MIDI protocol called "high-performance FPT processing". Sometimes their products also work as class compliant USB-MIDI devices. Looks like this is the case for the UM-ONE mk2.
> > 3) can the Android / Linux kernel do something so that it works in both
> cases?
>
> It is too difficult to support all of the old non-compliant devices. That
> is why the industry switched to MIDI class compliant drivers.
It has been happening to the ALSA USB driver that many devices (non class compliant) require special "quirks" to make them work in Linux. The standard USB-MIDI protocol was supported from day one. For other devices, here is the quirks table ("In a perfect world, this file would be empty."):
https://github.com/torvalds/linux/blob/master/sound/usb/quirks-table.h
Most of the time, when a new device is not supported by Linux, users ask to the ALSA project for support, in which case they are requested to run a simple command after the device is plugged:
$ lsusb -v
This command provides detailed information about of the USB descriptors of the plugged devices. Upon receiving the listing, a developer (usually Clemens Ladisch) adds the corresponding quirks to the table and after successful testing the next release of Linux shall work with the device. That is how Linux grows, folks.
Anyway, because Android does not use all of the ALSA/MIDI infrastructure, these non class compliant devices remain unsupported in Android unless the quirks are rewritten in Java. Sorry, but I find this situation lamentable, and I don't think it improves the relevancy of Android for serious MIDI users.
Regards,
Pedro
On Friday 02 March 2018 23:51:59 mario...@gmail.com wrote:
> The only piece of forensic for the advanced reader is why in Linux the
> legacy mode works and not in Android. There is no custom driver installed
> in linux, it all happens inside the kernel (e.g. quirks), unless it is a
> cooperation Kernel / Alsa which is missing in Android.
Both modes of the switch work in Linux because the quirk for supporting the COMP mode of the UM-ONE was included long time ago in ALSA's snd-usb-audio kernel driver stack:
https://www.mail-archive.com/alsa...@lists.sourceforge.net/msg27914.html
ALSA in Linux is both the driver layer (in kernel) and the userspace library layer (libasound.so). The latter is missing in Android, replaced by a "tinyalsa" library providing access only to the PCM and Mixer interfaces (audio only). The raw MIDI facilities are missing, even if the modules could be built and loaded in the kernel.
On top of the raw MIDI interface, ALSA also provides an advanced MIDI Sequencer interface, with device sharing, scheduling, virtual ports and low latency routing (virtual MIDI cables). All of it (kernel and library) was stripped from Android.
Regards,
Pedro