Subject: Re: MIDI renovations available for testing
To: None <tech-kern@NetBSD.org>
From: Chapman Flack <nblists@anastigmatix.net>
List: tech-kern
Date: 05/23/2006 13:04:40
Gavan Fantom wrote:
> Most (hardware) synthesizers and keyboard that I've seen appear to use a
> simple LRU algorithm. Looking at the midisyn code, it looks like that's

That surprises me - the handful of heuristics I mentioned didn't come
off the top of my head, but rather from a bit of quick googling I did
to get an idea what work exists in the area. Clearly there is some
(though as I said I'm no expert in it, else I wouldn't have needed the
googling) and I'd be surprised if at least the better HW manufacturers
were not in on it.

> marking it as not in use. Do any of the output devices support continued
> audio output after a note is finished? (release phase)

So far I've been trying to hover at protocol levels (midisyn and above)
and not grovel the MD bits to see exactly how they make the sounds
midisyn tells them to. Two things have to affect the release curve:
the release velocity, which midisyn sees and passes on to the MD
noteoff function, and the envelope parameters specified in the selected
instrument patch. As far as existing md drivers, it appears opl and
cms both ignore the release velocity from midisyn, but opl does honor
a per-patch release parameter (though the function for loading patches
is #if 0'd out).  That reveals another bit of what will be needed for
better midisyn support: a lot of the functions midisyn calls are
unimplemented stubs in the md drivers, so those need to be implemented,
and the interfaces need to be tilled a bit because they currently
delegate to the md stuff that midisyn could better do itself, like
managing the controller/parameter spaces, which is partially- or un-
implemented in the md drivers anyway.

> Of course, the correct answer is "Don't play full orchestral
> arrangements on devices with limited polyphony".

That's a good answer for netbsd-help. For tech-kern, another good
answer is "Let's think about what nice inexpensive heuristics might
be available to make midisyn degrade more gracefully near the limits
of polyphony."

Though of course just finishing implementation of the md drivers
would be an improvement too.  :/

-Chap