Source-Changes archive

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index][Old Index]

CVS commit: [chap-midi] src/sys/dev



Module Name:    src
Committed By:   chap
Date:           Sat May 20 03:43:59 UTC 2006

Modified Files:
        src/sys/dev [chap-midi]: midi.c midi_if.h midisyn.c midisynvar.h
            midivar.h sequencer.c sequencervar.h
        src/sys/dev/usb [chap-midi]: umidi.c umidi_quirks.c umidi_quirks.h
            umidivar.h

Log Message:
Learned of two ugly corners in MIDI protocol that made the state machine
overly pedantic. Both have to do with the End SysEx byte, 0xf7. First, it
is allowed not only at the end of a SysEx message, but anywhere else any
status byte can appear (and in that case has no meaning). Second, it is
not even required at the end of a SysEx message - any subsequent status
byte implicitly ends the SysEx, and this is not considered an error.

I don't like these provisions because they make it even harder to detect
errors in a corrupted MIDI stream, but as MIDI gets sent increasingly over
error-correcting transports I suppose that is less of a concern. In any
case, though midi(4) will accept data (input from device or data from
write(2)) with stray or dropped End SysEx bytes, it will always ensure
that output to the device, and data for read(2), has End SysEx only and
always at the ends of SysEx messages.


To generate a diff of this commit:
cvs rdiff -r1.43.2.14 -r1.43.2.15 src/sys/dev/midi.c
cvs rdiff -r1.17.14.8 -r1.17.14.9 src/sys/dev/midi_if.h
cvs rdiff -r1.17.2.8 -r1.17.2.9 src/sys/dev/midisyn.c
cvs rdiff -r1.9.14.8 -r1.9.14.9 src/sys/dev/midisynvar.h
cvs rdiff -r1.11.14.14 -r1.11.14.15 src/sys/dev/midivar.h
cvs rdiff -r1.30.14.14 -r1.30.14.15 src/sys/dev/sequencer.c
cvs rdiff -r1.10.14.6 -r1.10.14.7 src/sys/dev/sequencervar.h
cvs rdiff -r1.25.2.11 -r1.25.2.12 src/sys/dev/usb/umidi.c
cvs rdiff -r1.10.2.7 -r1.10.2.8 src/sys/dev/usb/umidi_quirks.c
cvs rdiff -r1.4.14.7 -r1.4.14.8 src/sys/dev/usb/umidi_quirks.h
cvs rdiff -r1.8.14.9 -r1.8.14.10 src/sys/dev/usb/umidivar.h

Please note that diffs are not public domain; they are subject to the
copyright notices on the relevant files.




Home | Main Index | Thread Index | Old Index