saf@floyd.ATT.COM (Steve Falco,14D-327,4865,ATTBL) (02/22/90)
I have looked at the requirements for useing Apple's MIDI driver and there is one annoying item: all outgoing data packets must be "sanitized." Thus an application cannot use optimizations like "running status" nor can system exclusives be mixed with other data. This might be fine for new programs built from the ground up but is a pain for existing programs which must be converted. Has anyone found a "raw" mode whereby arbitrary data can be written? Also, since Apple can sanitize data coming in from a synthesizer, there should be a way to force the same clean-up routines to filter data from an application, relieving the application of the hassles of doing its own sanitizing. Steven A. Falco AT&T Bell Labs (201) 386-4865 saf@floyd.att.com
nick@lfcs.ed.ac.uk (Nick Rothwell) (02/26/90)
In article <4260@cbnewsl.ATT.COM>, saf@floyd (Steve Falco,14D-327,4865,ATTBL) writes: >all outgoing data packets >must be "sanitized." Thus an application cannot use optimizations >like "running status" nor can system exclusives be mixed with >other data. > >This might be fine for new programs built from the ground up but is a >pain for existing programs which must be converted. I don't see why this is any problem (I converted my code quite easily). Could you elaborate? >Steven A. Falco AT&T Bell Labs (201) 386-4865 saf@floyd.att.com Nick. -- Nick Rothwell, Laboratory for Foundations of Computer Science, Edinburgh. nick@lfcs.ed.ac.uk <Atlantic Ocean>!mcvax!ukc!lfcs!nick ~~ ~~ ~~ ~~ ~~ ~~ ~~ ~~ ~~ ~~ ~~ ~~ ~~ ~~ ~~ ~~ ~~ ~~ ~~ ~~ ~~ ~~ ~~ ~~ ~~ A prop? ...or wings? A prop? ...or wings? A prop?
rich@sendai.sendai.ann-arbor.mi.us (K. Richard Magill) (02/27/90)
In article <2477@castle.ed.ac.uk> nick@lfcs.ed.ac.uk (Nick Rothwell) writes: In article <4260@cbnewsl.ATT.COM>, saf@floyd (Steve Falco,14D-327,4865,ATTBL) writes: >all outgoing data packets >must be "sanitized." Thus an application cannot use optimizations >like "running status" nor can system exclusives be mixed with >other data. > >This might be fine for new programs built from the ground up but is a >pain for existing programs which must be converted. I don't see why this is any problem (I converted my code quite easily). Could you elaborate? It's a pain because existing mac software expects a byte stream driver. Guessing that the only reason midi manager guaranteed sanitization was because it required sanitization on input, I just converted tjt's keynote2 (with saf's midi driver hacked for multifinder) to simply queue each byte into midi manager as received (if midi manager is available, otherwise I default to the hacked saf's driver). My guess was that midi manager didn't enforce sanitization, and that few applications were generating unsanitized streams. The result is that output is fine, but input doesn't arrive in a timely enough manner to be useful. ie, I get all the bytes but not with useful (locally generated) timestamps. I'll have to hack into a higher level such that keynote uses the timestamps on the midi manager packets. Sanitization is still an outstanding question in my mind.
rich@dante.sendai.ann-arbor.mi.us (K. Richard Magill) (02/27/90)
In article <4260@cbnewsl.ATT.COM> saf@floyd.ATT.COM (Steve Falco,14D-327,4865,ATTBL) writes:
Has anyone found a "raw" mode whereby arbitrary data can be written?
Just do it. ie, send one byte packets. Seems to work on output. My
guess is that the sanitization guarantee comes from requesting all
input to be sanitized. that is, midi manager doesn't *enforce*
sanitization. If your application isn't producing sanitized, this
approach will probably break other midi manager clients. It may break
them anyway.
Also, since Apple can sanitize data coming in from a synthesizer,
there should be a way to force the same clean-up routines to filter
data from an application, relieving the application of the hassles
of doing its own sanitizing.
Looks like this is only done in the apple midi driver and thus isn't
exactly a midi manager function. Still, you have a point.