[openbeos-midi] *big* status update

  • From: "Matthijs Hollemans" <matthijs@xxxxxxxxxxxxxxxxxxx>
  • To: <openbeos-midi@xxxxxxxxxxxxx>
  • Date: Tue, 18 Mar 2003 00:26:14 +0100

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 ;-)


Other related posts:

  • » [openbeos-midi] *big* status update