Hello, I am new to the community threads here. I am an old BeOS fan, and programmer of several old-school BeOS midi apps. With my AI agentic tools that I use mainly for work, I decided to rewrite and update my old software for Haiku (I will save the debate for the use of AI agents for another thread, where I talk about my use with Haiku). My initial goal was just to rewrite my apps to use the MIDI Kit 2 instead of the original that my apps used. Easy peasy right?
The first issue I had in updating my tools, is that I had no midi devices that were compatible with Haiku. The devices I had readily at hand included the Yamaha UX-256, which worked with a server app under BeOS, but that was never compatible with Haiku, and the MidiSport UNO and MidiSport 2x2, neither of which ever had working drivers on BeOS, partly due to proprietary firmware. Regardless I needed to get something up and running to get my apps updated. So, the ncc-usbmidi project was born. The idea being that with the midi_server handling class compliant USB MIDI devices, I could write a daemon that would handle non-class compliant devices, such as the ones that I owned.
So, I got to work with Antigravity/Gemini helping me with planning and scripting, and Claude helping with coding and debugging, and we wrote a script to download the midiman firmware from the Linux project, and send out the appropriate firmware, and Claude even helped me patch the 2x2 firmware to change some timing issues we were encountering between it and Haiku. And then it came time to test it all, and I opened mMonitor and couldn’t make out much more than Active Sensing signals, which I couldn’t filter, but I didn’t seem to see much other MIDI data (i.e. Note On/Off data). So, I went to my trusty Midi Monintor 1.0 app for BeOS by Bill Thibault. There was only one issue, other than that it was a little buggy under Haiku - it was a MidKit1 app and could not talk to my MidiKit2 daemon at all. But luckily there was source code, and with agentic help, I was able to quickly upgrade that app to use the MidiKit2. With the original owner’s permission, I released the repo as MidiMonitor2 under the MIT license: GitHub - dcbeckman/MidiMonitor2: Adapting my favorite Midi Monitor for the BeOS, Bill Thibault's "MidiMonitor 1.0" into a MidiKit2 compliant application for Haiku OS and BeOS. · GitHub With this app now “working” with my app I still was not able to see any real midi messages. So, I figured I would plug in a class compliant USB MIDI device, but I did not receive notes there either, although it did show up as a MIDI endpoint, but using it’s really ugly device path instead of a proper name. After more analysis, I realized to get what I wanted, I was just going to have to rewrite the midi_server, and I did. We cleaned up a bunch of bugs and now we have pretty names for the midi endpoint names.
We cleaned up a lot of errors that we were having with plugging devices while other were initializing and got those sorted out, but the midi_server replacement will crash the USB if unplugged. To fix that, we may need to look into the USBKit and usb_raw next, or as AI suggests, we might be able to rewrite usb_midi instead to get rid of some the issues there. To be continued…


