Re: Panther MIDI Receive Channels Missing bug!
Re: Panther MIDI Receive Channels Missing bug!
- Subject: Re: Panther MIDI Receive Channels Missing bug!
- From: Doug Wyatt <email@hidden>
- Date: Wed, 29 Oct 2003 14:32:56 -0800
On Oct 29, 2003, at 13:52, Jeremy Sagan wrote:
On Wednesday, October 29, 2003, at 04:00 PM, Doug Wyatt wrote:
On Oct 27, 2003, at 19:06, Jeremy Sagan wrote:
I am writing this message again because I did not seem to get any
response the first time and I think this is a very important issue
for MIDI applications. In 10.2 it was possible to set up devices
like the sound canvas using Audio Midi Setup (AMS) so that a program
could detect which channels were in use for input and output. Now,
in Panther, it is impossible. This makes absolutely no sense (at
least from where I am sitting). If I have a device like a MIDI
controller which does not receive any channels (but sends some) and
a device like a sound canvas which receives many (32) channels, my
application essentially has 2 options both undesirable.
1. Operate under 10.2 principals where I assume the user can set the
MIDI channels for an interface. This results in the sound canvas not
being seen at all because, all MIDI interface devices return an
error when inquiring about kMIDIPropertyReceiveChannels. This
obviously is unacceptable to users.
2. Assume that if an error occurs when inquiring
kMIDIPropertyReceiveChannels that it means that the device receive
all channels. This has a very undesirable affect of having the MIDI
controller keyboard say it is able to receive on all channels.
Why are you seeing the controller as a destination in the first place
if it's really only a controller?
The controller has a MIDI port with nothing connected. It is
ridiculous to not allow the user to specify which channels are active
on all ports. Now that you have the ability to specify the ports for
devices, why not allow the channel settings on a port by port basis. I
still think Jaguar handles this situation better than Panther.
Sorry, I meant to be more specific:
What does the controller look like? How many entities, sources and
destinations? Are you interrogating it as a device or as a destination
endpoint? If it's truly only a controller, it will not have a
destination endpoint to interrogate. If it's got an external MIDI Out
jack, then we're into the thorny multi-entity problem I'll elaborate on
in a sec ...
Can we have a fix for this? Or at least tell me a way to work around
this problem!
Well, you're aware that some objects just don't have the
receive-channels property set on them, and that you'll get an error
if you ask for it. When this happens, you have to make the least
harmful assumption, which in this case is to assume that you can send
to all MIDI channels.
Why? Why can't I just setup AMS so that there are no channels for a
specific device?
It's confusing and non-sensical to provide a UI for saying that all 8
ports of a UM-880 or Unitor 8 etc etc all listen only on channels 2, 6,
and 10.
The change from Jaguar to Panther was made to prevent a confusing
situation where you'd get all that UI for setting device properties
in cases where it makes no sense at all, for example, a 4-port MIDI
interface.
If you allow the receive channels to be set on a port by port basis
that will fix this problem the correct way!
Agreed, but there never was a UI for port-by-port (that is, entity)
configuration, and that's the essence of the problem -- all those
properties used to be set on a device level and that's just plain wrong
in the case of many multi-entity devices.
AMS still does allow property editing on driver devices but ONLY if
they only contain 1 entity and it is not an external MIDI connector.
If the device has external MIDI connectors, then we have the
confusing UI problem.
This makes no sense to me. Let the user specify which connections are
active in AMS then ALL applications can read the receivechannels
property to determine which channels are active. If the device has 4
MIDI ports then each port should have a 16 channel bitmap specifying
which channels are active.
I'd like to see examples of what devices are causing problems and
what their entity/endpoint configurations look like, in particular,
how many entities/sources/destinations there are, and whether the
entities are internal or external.
Well, the Edirol sound canvas SD-20, Evolution MIDI controller, Event
EZBus, Roland SC-8820, etc., Essentially any USB device with built-in
sounds should be reporting its receive channels on a port by port
basis but is not!
I'm not saying that we think what's there is perfect -- we've probably
gone from one extreme to too far in the other.
I don't have access to any of the devices you mention. Can you please
answer my specific question about what their entity/endpoint
configurations look like?
In my app, I build MIDI outputs based on what AMS is telling me and so
if I go with your suggestion to assume that an error means all
channels are available I then end up with a lot of superfluous outputs
that the user has to go and manually delete. It just does make any
sense.
You're going to get this error on any version of the OS going back to
10.0, if the user has not (for whatever reason) set this property, so
you have to deal with it sensibly. Yes, that means displaying what may
well be superfluous outputs, but that's preferable to failing to
display an output the user may wish to use.
Doug
_______________________________________________
coreaudio-api mailing list | email@hidden
Help/Unsubscribe/Archives:
http://www.lists.apple.com/mailman/listinfo/coreaudio-api
Do not post admin requests to the list. They will be ignored.