From: Willem Jan Palenstijn <wjp@usecode.org>
To: alsa-devel@alsa-project.org
Subject: unpadded USB MIDI commands
Date: Wed, 10 Feb 2010 17:17:14 +0000 [thread overview]
Message-ID: <20100210171714.GA5280@usecode.org> (raw)
Hi,
I recently investigated some trouble with sending MIDI via a USB MIDI cable
(15ca:1806) to a Roland MT-32. In some cases, commands were being dropped.
(This is what is reported on
https://bugtrack.alsa-project.org/alsa-bug/view.php?id=3752 . I'm the colleague
mentioned by druon in note 0021737 there.)
After we experimented a bit, it turned out that packets of 2 MIDI commands (8
bytes total) were being sent to the USB MIDI cable, and that if the first of
these was a 2-byte MIDI command (such as a 0xC0 or 0xD0 command), the second
command in the packet would get dropped.
A workaround is to limit the packet size to 4 bytes, as is already happening on
at least one other device (the ESI M4U referred to in usbmidi.c).
I played with it some more this week, and it turns out that if the zero-padding
from the USB MIDI commands is removed (violating the specs, as far as I
understand), the second command does actually not get dropped.
Example:
When sending the two commands 0xD1 0x10 and 0x91 0x40 0x40 normally,
it would produce:
sending packet: [ 0d d1 10 00 09 91 40 40 ]
When routing the MIDI output through the MIDI THRU port on the MT-32 to a
MIDI port on an ES1371, the captured stream is:
d1 10
and no note is played on the MT-32. (The 0x91 command is a note-on.)
After hacking out the zero padding, it looks like this:
sending packet: [ 0d d1 10 09 91 40 40 ]
The re-captured stream is:
d1 10 91 40 40,
and a note is properly played.
What do you think would be the right way to handle this problem? Don't zero-pad
the outgoing packets for this specific device (and maybe a few others mentioned
on bug #3752, if they end up suffering from the same bug)? Limit the outgoing
packets to 4 bytes like with the ESI M4U for these devices? Add an option to
the snd-usb-audio module to toggle this behaviour? Something else?
Best regards,
Willem Jan
next reply other threads:[~2010-02-10 17:17 UTC|newest]
Thread overview: 2+ messages / expand[flat|nested] mbox.gz Atom feed top
2010-02-10 17:17 Willem Jan Palenstijn [this message]
2010-02-11 7:43 ` unpadded USB MIDI commands Clemens Ladisch
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=20100210171714.GA5280@usecode.org \
--to=wjp@usecode.org \
--cc=alsa-devel@alsa-project.org \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.