|
About Andrew Choi
MIDI Programs
MIDI File Player (External Device)
MIDI Destination Pop-Up Button
Other Programs Cocoa Sample Programs Syntax Coloring Using Flex Algorithms Jazz Chord Analysis as Optimization
|
A blog where I will write mostly about programming in Cocoa and CoreMIDI, and experiences from my ports of Emacs and XEmacs to the Mac OS.
I need to study the MIDI XML so I can start to build a player/ensemble interface that uses patch and note names (instead of bank select and patch numbers). The MMA web site makes the DTD documents available but provides no other documentation. These .midnam documents plus output files the program Cherry Picker produces are probably the only clues to how to interpret these files at this time!
Thought I'd post something different today. Here's a picture of a mule deer who came to visit this morning. This one is probably a year old.
Their favorite food in my backyard are the berries on the cotoneasters and the American mountain ash. I even saw them stand up on their hind legs to eat the latter. That way they can reach five, six feet high, quite amazing! Someday I'll get a picture of that.
I found out how to make coconut milk jello (椰汁糕) yesterday by experiment! This is quite a standard dim sum in Chinese tea houses but the closest one is half an hour away. More than the time required to make some. Here's the recipe:
Soak the gelatin in water. Warm (but not boil) coconut milk. Dissolve sugar in it. Add coconut extract and combine with gelatin and water. Divide into 4 jello cups. Cool. Stir well. Refrigerate. Substitute half and half for coconut milk and almond extract for coconut extract to make almond jello!
Here's a «port» of SysExSenderX to use the FCM framework I posted yesterday (you need the updated version). Since the latter is in a separate project, you may need to adjust a few paths in the SysExSenderX project for PB to find it. I've used a relative path to refer to the framework so it should work if
I have implemented yesterday's design. I present to you the Fish Creek MIDI (FCM) framework (with Perl Artistic License). It provides a clean and simple API for applications to send and receive sysex data. Enjoy![Fish Creek is the creek that runs behind my house. Kind of appropriate since we're dealing with streams of data, right :-)?]
Here's a design of an API for sending and receiving sysex messages useful for implementing sysex librarians (such as SysExSenderX) or patch editors/librarians. The singleton FCMClient instance must be initialized before any sysex transfers can occur. Arrays of names and UID's of all sysex devices can be obtained from it.As a simplification of the interface used in the code of SysExSenderX, the send operation and receive operation objects are incorporated into a FCMSysexDevice object. This works fine because a particular sysex device should really only be performing a send or receive at any given time. Progress reporting is done by polling and and the sendData and receiveData calls are asynchronous. This follows the design proven successful in SysExSenderX.The last piece of the interface is the notification named FCMSetupChanged in the default notification center. By registering for this notification, code displaying a popup button, e.g., can update the list of sysex device names when the MIDI setup has been changed.
Just a short program to post today: an implementation of last Friday's design. Running it prints out appropriate names of all external devices capable of bidirectional sysex transfers. Again the reason for the emphasis on bidirectional transfers is we're interesting in implementing something like a patch librarian. So we must be able to send a sysex message to these devices to initiate a sysex dump, which we then receive, for example.
|
Lists
Less-Known Facts About Emacs
Chinese Restaurants in Calgary
Calgary/Banff Tourist Attractions
Top-10 Reason I Stopped Working on Emacs
Misc
| |||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
| Copyright © 2003, 2004, 2005 Andrew Choi (Contact Information). | Created with FCBlog |