*big* status update
"Matthijs Hollemans" <[email protected]> Tue, 18 Mar 2003 00:26:14 +0100
| Newsgroups | gmane.os.openbeos.midi |
|---|---|
| Organization | All Your Software |
| Message-ID | <014501c2ecdc$9b416670$94132d3e@Sputnik> |
Hi all, Time for a new status update. I did a whole lot of stuff over the last two weeks, so I thought I'd let you know what has been done so far, and which tasks still remain. It's a bit long, so hold on to your hats. The changes I have made ================= - I cleaned up the end-user documentation for the midi2 kit. These docs, along with any development related info, are now part of the OpenBeOS CVS repository (in /current/docs/develop/midi and /current/docs/user). I also took down (most of) the Midi Team website, because it now has outlived its purpose. As soon as the new OpenBeOS website launches (along with the new name), I will probably make a new Midi Team page, this time on the official website. - I also cleaned up the midi1 code. Specifically, BMidi, BMidiText, BMidiPort, and BMidiStore. Most of the changes took place in BMidi, because that was originally written to do all the MIDI event handling itself. That is no longer necessary, because the midi2 kit already does all of that. So BMidi now uses a BMidiLocalProducer and BMidiLocalConsumer from the midi2 kit to handle the MIDI events. This also meant I had to make some changes in BMidiPort, but that wasn't very hard because Jerome already wrote a very complete implementation of this class. Thanks Jerome! BMidiStore also saw a bunch of changes. There were two implementations of this floating around: one by former team lead Paul Stadler and one by Jerome. I merged these into one class, fixing bugs as I went along. The class is complete, except for import and export of MIDI files. Import() works, but only does format 0 and 1 files, not 2. It also ignores certain events such as sysex's and most of the SMF meta events. Neither does it handle SMPTE timing, only "ticks per quarter note". The Export() function only writes format 0 files. However, this is as far as I want to take this class. IMHO, the design is rather borked, and not really worth the effort re-implementing any further. What we have now should be good enough for playing back MIDI files. - I also took Jerome's PortDrivers source code and integrated it into the midi_server. Of course, I couldn't help myself and changed a bunch of things around. But thanks again Jerome, for doing a lot of the work already ;-) Remaining tasks for the Midi Kit: ====================== - The softsynth and corresponding classes from midi1: BSynth, BSamples, BMidiSynth, and BMidiSynthFile. Ryan Leavengood stepped up to take on this task, and continue where Jerome left off. Go go Ryan! ;-) - Finalize driver support in midi_server. The support we already have is at best "experimental" and not well tested. My guess is that we're 50% there. This is a job for someone with MIDI driver writing experience and some hardware to test against. - The kernel modules. This is the module for the MPU401 chipset, and the midi_parser module which apparently just splits up a stream of MIDI data into discrete events. Not really high priority, but it would be nice to have, especially for future driver writers. A personal note =========== The bulk of the work for the Midi Kit has been done (yay!). We have a working midi_server, a full implementation of libmidi2.so, and a partial (but good) implementation of libmidi.so. For me, I have already coded all the things I wanted to code when it comes to the Midi Kit. So I will take a step back and leave the rest up to you guys, heh heh ;-) Of course, I'll stay on as team lead for the time being, because I like the power that comes with that job. Mwuahhahhah! Questions (and bug reports) about the code are always welcome, of course, but don't expect me to check in new Midi Kit code on a weekly basis from now on ;-) Matthijs