Re: [Musickit-users] MIDIRecord...
Brought to you by:
leighsmith
From: Leigh S. <le...@le...> - 2004-05-20 20:55:30
|
I must admit the last time I did anything with MIDI record was probably MacOS 10.1, and from memory, there was no documentation about CoreMIDI, it was deduced from the header files in CoreMIDI.framework. So I think at the time the appropriate thing to do to match the MusicKit API was assume destinations and sources were the same. Clearly with revised CoreMIDI under newer versions of the OS, this no longer applies. So yes, we need to retrieve sources, but more fundamentally, there seems a mismatch between what the MusicKit deems a driver, and what the CoreMIDI (and probably portmusic also) distinguishes between source and destinations within that driver. Clearly you only want to present source names when the pop up is to display sources, which is a decision which needs to be made in the application, so the problem is the semantics behind the method getDriverNames. It could be expanded to be: typedef enum { MKMidiDriverSource, MKMidiDriverDestination, MKMidiDriverBoth } MKMidiDirectionDriver; - (NSString *) getDriverNamesFor: (MKDriverDirection) direction { // Should call MKMDGetAvailableDriverSources() or MKMDGetAvailableDriverDestinations() appropriate to the direction value. // These need functions in MKPerformSndMIDI writing by modifying MKMDGetAvailableDriver()... } With getDriverNames being deprecated to become: - (NSString *) getDriverNames { // in order to preserve erroneous behaviour or return [self getDriverNamesFor: MKMidiDriverDestination]; // return [self getDriverNamesFor: MKMidiDriverBoth] // is arguably more logical. } This is just "thinking out loud", and it will be some days before I can tackle this code, unless someone wants to tackle it, so I'd welcome other thoughts or better namings on the matter. -- Leigh Smith mailto:le...@le... http://www.leighsmith.com |