[openbeos-midi] Status update

  • From: "Matthijs Hollemans" <matthijs@xxxxxxxxxxxxxxxxxxx>
  • To: <openbeos-midi@xxxxxxxxxxxxx>
  • Date: Fri, 14 May 2004 18:01:23 +0200

Hi all,

Warning: this is a long email :-). In the last few days, I fixed a number of
outstanding issues with the Midi Kit, and I would like to let you know what
I did and where we stand now.


Jerome Leveque already wrote the beginnings of a softsynth. I took his
classes and used them to finish BSynth, BMidiSynth, BMidiSynthFile, and
BSamples. These don't do much themselves; they delegate most of the work to
a new class, BSoftSynth. BSamples is empty, because we don't need to support
its obscure behavior. Note: We do not have an actual synthesizer yet;
BSoftSynth is still empty.

Jerome, this is different from what you wanted to do. BSoftSynth is a
replacement for your SynthConsumer class. If you are still interested in
working on the softsynth, you should use BSoftSynth for that. I did not use
your MidiFileProducer and MidiFileConsumer. Instead, I used BMidiStore to
implement BMidiSynthFile. But it was good to have your code, because it
saved me a lot of work :-) Thanks.

I briefly tested these classes and they seemed to work fine (even with the
R5 MidiPlayer), but without sound it is very hard to tell whether they
really really do what they are supposed to. When the softsynth is finished,
we will be able to test them more carefully.


I know that it has been in the CVS for quite a while now, but I finally
looked over the MPU401 module code that was submitted by Greg Crain :-)
Thanks again for your contribution, Greg. The missing "v2" interface support
is not a major disaster, as far as I am concerned. Our kernel may not be
binary compatible with the old R5 drivers anyway, in which case we will have
to rely on new drivers -- none of them is likely to use v2.

I think we will drop the midi parser kernel module. As far as I can tell, no
one is using it, so why bother supporting it. It looks like something that
was intended for the Media Kit anway ;-)


A little while ago, Christian Packmann contributed an improved parser for
raw MIDI streams. I integrated this with the midi_server. This code is used
to read MIDI messages from from device drivers, i.e. from MIDI IN ports. Now
it should handle "running status" and "realtime data in non-sysex messages"
properly. Thanks Christian! I tested this code in a separate application and
it worked very well; I hope it works as well in the midi_server :-) I did
make a few small changes here and there, but nothing extensive.


I have been looking at FluidSynth, an open source (LGPL) software
synthesizer (http://www.fluidsynth.org). It is apparently a pretty good
synth and it would save us a lot of work if we could use this instead of
writing our own. I managed to do a quick-n-dirty port to BeOS, although the
audio driver I made is pretty bad. In the coming weeks, I will try to do a
clean port (possibly stripping out everything we don't need, such as
DirectSound drivers). If I can get it to work, I will integrate it with
BSoftSynth and we should be ready to rock. However, I may have to ask you
guys/gals for some assistance with the audio driver.

Jerome, I hope you don't mind that I am looking at an alternative for your
synth. I know that you are very busy and don't have a lot of time to work on
it. Ideally, we would like to be able to demonstrate a fully working Midi
Kit at WalterCon (mid June this year) and for that we need the synth. Of
course, if yours turns out to be better, we will use that instead ;-)


Other related posts: