Re: Stuck MIDI notes
Re: Stuck MIDI notes
- Subject: Re: Stuck MIDI notes
- From: Kurt Revis <email@hidden>
- Date: Wed, 30 Oct 2002 19:12:09 -0800
On Wednesday, October 30, 2002, at 05:03 PM, Robert Grant wrote:
So then I'm confused about why I'm losing the note offs. My code is
to crunch the packets is pretty straightforward:
MIDIPacket *inPacket = (MIDIPacket *)list->packet; // remove const
for ( j = 0; j < list->numPackets; ++j) {
if ((inPacket->data[0] & 0x7) == m_channel) {
MusicDeviceMIDIEvent(unit, inPacket->data[0],
inPacket->data[1], inPacket->data[2],
0);
}
inPacket = MIDIPacketNext(inPacket);
}
This really isn't enough to parse MIDI correctly. Contrary to what
you're assuming, each packet may contain more than one MIDI event.
There may also be realtime messages (like MIDI clock) interspersed with
the data, and sysex messages may get split across multiple packets.
You need to handle all of these cases. Most of the time you'll only
get one event per packet, but it's not something you can count on.
You might find it educational to print out all the bytes in each packet
as they come in, so you can see this for yourself. And read the MIDI
spec... you'll be amazed at how weird things can get.
--
Kurt Revis
email@hidden
_______________________________________________
coreaudio-api mailing list | email@hidden
Help/Unsubscribe/Archives:
http://www.lists.apple.com/mailman/listinfo/coreaudio-api
Do not post admin requests to the list. They will be ignored.