Monday, 23 February 2009

Getting started with Cocoa

In order to make the software for using HID Devices with MIDI usable, it's going to need a half sensible user interface.

This video on YouTube gives a 5 minute "Hello World" overview, and was pretty straightforward to follow.

For a more in-depth introduction, the Cocoa Fundamentals and Introduction to Cocoa Application Tutorial pages over at Apple's Developer Connection are a great place to get started when learning to use Cocoa.

Sunday, 22 February 2009

Mac ION iED05 software

I have just finished writing some very basic software to enable me to use the ION iED05 USB drum kit with Garageband (or any other MIDI capable software on an OSX 10.5+ Mac). Essentially, the program acts as a MIDI source and just maps Human Interface Device (HID) Input data to Midi "Note On" messages. The MIDI Manufacturers Association's Tech Specs page is a useful source of information if you're interested in the technical details of MIDI.

Over at Apple Developer Connection you can find details of OS X's Audio Support on the Audio page with a quick overview of the API's within this Audio Overview PDF.

I'll not be hosting the software anywhere just yet, as it's in a rather "alpha" state, but if anyone's interested in getting a copy, just leave a comment as it might enthuse me and get round to producing something a bit more user friendly.

Wednesday, 11 February 2009

JSR80: Mac and I/OKit

In order to be able to implement JSR80 for Mac OSX, the first thing that I'll need to understand is how the Mac provides native access to USB devices. It appears that this is achieved through the use of the I/O Kit.

As suggested by the comments in the IOUSBLib.h header file, a good place to start is having a read of the Accessing Hardware From Applications page. Code examples showing how to access devices using I/O Kit are accessed through the Finding Devices chapter. Finally, documentation specific to handling USB can be found at USB Device Interfaces.

Java and USB

I recently decided that I wanted to play around with USB devices on the Mac and decided that I'd see what support Java has in this respect. After a quick google, I came across the Community Page for JSR80, the Java USB API. A reference implementation (for Linux) and examples are available for download on the Project Page.

After having a quick search through the javax-usb-devel mailing list it appeared that some partial implementations had been attempted for the Mac, but there didn't appear to be any references to full implementations. Being completely unqualified to write an implementation myself, I thought it would be a great learning experience to give it a shot anyway! My next few posts will aim to cover the steps that I take in order to try and achieve this along with information about the technologies that I use.