Re: hiding Virtual Midi ports
Re: hiding Virtual Midi ports
- Subject: Re: hiding Virtual Midi ports
- From: Doug Wyatt <email@hidden>
- Date: Wed, 2 Aug 2006 14:21:47 -0700
That should work fine... my mind went in the direction of a private
communication path while writing the reply, but I didn't want to
mention it unless the simpler solution wasn't going to work.
Doug
On Aug 2, 2006, at 13:33 , Alex Sheh wrote:
Thanks for the reply, Doug.
What about passing the MIDIUniqueID of the Virtual Endpoints via a
CFMessagePort from myDriver to myApp? Kurt had suggested using
unique
ids off-list, and it seems to be working. One advantage would be that
these endpoints would never show up to 3rd party apps, just in case
any
of these apps traverse the device hierarchy instead of calling the
standard routines for choosing where to send/receive (though how
likely
this is, I don't know). Are there any major disadvantages to the
unique
id lookup approach vs. private non-virtual endpoints?
Thanks,
Alex
-----Original Message-----
From: Doug Wyatt [mailto:email@hidden]
Sent: Wednesday, August 02, 2006 12:39 PM
To: Alex Sheh
Cc: Kurt Revis; CoreAudio API
Subject: Re: hiding Virtual Midi ports
Private endpoints are hidden from the routines that iterate through
all
of the system's sources and destinations; these are the routines
applications should normally use for choosing where to send/receive.
Private endpoints are still visible by traversing the device -> entity
-> endpoint hierarchy. A client that does this is responsible for
hiding
offline devices and private endpoints.
If your endpoints are virtual, you're out of luck because, being
device-less, they don't appear in that hierarchy -- there's really no
way to make them both private and virtual.
But since you imply that you have a driver, you can add private non-
virtual entities/endpoints to your driver's device(s) and find them by
traversing the device hierarchy.
HTH,
Doug
--
Doug Wyatt
Core Audio, Apple
On Aug 1, 2006, at 3:45 PM, Alex Sheh wrote:
When I set kMIDIPropertyPrivate = 1 for my virtual sources in
myDriver, these virtual sources become unavailable in myApp via calls
to
MIDIGetNumberOfSources() and MIDIGetSource(). So I'm unable to
connect to the virtual sources in myApp.
Are there other API calls I should be making to access these private
virtual sources in myApp? Or is there some other way of making my
virtual sources only visible to myDriver and myApp for their private
communication, but NOT available to 3rd party apps, i.e. Logic, Pro
Tools GUI does not show my virtual sources in their MIDI port list?
Thanks,
Alex
-----Original Message-----
From: Kurt Revis [mailto:email@hidden]
Sent: Tuesday, May 02, 2006 11:37 PM
To: Alex Sheh
Cc: CoreAudio API
Subject: Re: hiding Virtual Midi ports
On May 2, 2006, at 4:20 PM, Alex Sheh wrote:
I am using Virtual MIDI ports to forward MIDI data from myDriver to
myApp. Since these Virtual ports are for internal use, I do not
want
3rd party apps to be able to select these Virtual ports from their
GUI.
Is there a way to make it so that my Virtual MIDI ports are not
visible to all apps on the system?
Sure:
MIDIObjectSetIntegerProperty(yourVirtualEndpointRef,
kMIDIPropertyPrivate, 1);
Note that this isn't 100% foolproof. There will be a window of time
that the endpoint is visible to other apps -- after you create your
virtual endpoint, but before you set the property's value. This is
probably more of a theoretical problem than a real one, though.
--
Kurt Revis
email@hidden
_______________________________________________
Do not post admin requests to the list. They will be ignored.
Coreaudio-api mailing list (email@hidden)
Help/Unsubscribe/Update your Subscription:
40apple.com
This email sent to email@hidden
--
Doug Wyatt
Core Audio, Apple
_______________________________________________
Do not post admin requests to the list. They will be ignored.
Coreaudio-api mailing list (email@hidden)
Help/Unsubscribe/Update your Subscription:
This email sent to email@hidden