User Forum    :: Powered by YaBB
  « MIDI-OX User Forum - Mixing 0xF8 (Clock) with SysEx »
Welcome, Guest. Please Login or Register.
Oct 19th, 2020, 11:25pm


Home Home Help Help Search Search Members Members Login Login Register Register


   MIDI-OX User Forum
   MIDI Yoke
   MIDI Yoke Bug Reports
(Moderator: Jamie OConnell)
   Mixing 0xF8 (Clock) with SysEx
« Previous topic | Next topic »
Pages: 1  Reply Reply Notify of replies Notify of replies Send Topic Send Topic Print Print
   Author  Topic: Mixing 0xF8 (Clock) with SysEx  (Read 6377 times)
Markus_Pfaff
New Member
*



MIDI-OX Rules!

   


Posts: 3
Mixing 0xF8 (Clock) with SysEx
« on: Mar 17th, 2005, 6:56am »
Quote Quote Modify Modify

Hi,
 
who's wrong and who's right?
 
I sent
F0 7D 10 11 12 13 F8 F8 14 15 16 17 18 19 1A F7 F8 F0 F8 7D 46 48 01 01 00 00 7F 7C 07 F7
two times from the MidiOx (7) SysEx window. Two other MidiOx sessions were open at the same time. The first time I sent the above I activated the MIDI realtime filter of the receiving MidiOXes, the second time the filter was inactive.
 
What MidiOx receives over US-428
 TIMESTAMP IN PORT STATUS DATA1 DATA2 CHAN NOTE EVENT        
 Opened MIDI Input
 0001D7AF   9  --     F0  Buffer:    14 Bytes   System Exclus
 SYSX: F0 7D 10 11 12 13 14 15 16 17 18 19 1A F7
 0001D88B   9  --     F0  Buffer:    12 Bytes   System Exclus
 SYSX: F0 7D 46 48 01 01 00 00 7F 7C 07 F7
 00028E55   9  --     F8    --    --   --  ---  Timing Clock  
 00028E55   9  --     F8    --    --   --  ---  Timing Clock  
 00028E53   9  --     F0  Buffer:    14 Bytes   System Exclus
 SYSX: F0 7D 10 11 12 13 14 15 16 17 18 19 1A F7
 00028F25   9  --     F8    --    --   --  ---  Timing Clock  
 00028F25   9  --     F8    --    --   --  ---  Timing Clock  
 00028F26   9  --     F0  Buffer:    12 Bytes   System Exclus
 SYSX: F0 7D 46 48 01 01 00 00 7F 7C 07 F7
 
What MidiOx receives over MidiYoke
 Opened MIDI Input
 0002AD79   1  --     F0  Buffer:    16 Bytes   System Exclusi
 SYSX: F0 7D 10 11 12 13 F8 F8 14 15 16 17 18 19 1A F7
 0002AE50   1  --     F7  Buffer:    14 Bytes   SysEx End      
 SYSX: F8 F0 F8 7D 46 48 01 01 00 00 7F 7C 07 F7
 0003641A   1  --     F0  Buffer:    16 Bytes   System Exclusi
 SYSX: F0 7D 10 11 12 13 F8 F8 14 15 16 17 18 19 1A F7
 000364EB   1  --     F7  Buffer:    14 Bytes   SysEx End      
 SYSX: F8 F0 F8 7D 46 48 01 01 00 00 7F 7C 07 F7
 
MidiYoke doesn't filter out the 0xF8 as realtime messages. I think it should. The Tascam driver does and I guess Tascam is doing the right thing here.
 
Markus
« Last Edit: Mar 17th, 2005, 6:57am by Markus_Pfaff » IP Logged
Jamie OConnell
Administrator
*****






   
WWW Email

Gender: male
Posts: 2005
Re: Mixing 0xF8 (Clock) with SysEx
« Reply #1 on: Mar 22nd, 2005, 8:23pm »
Quote Quote Modify Modify

The fact that the drivers have different results doesn't make either of them correct or incorrect.  The MIDI spec is not explicit on this topic but does say about SysEx that:
 
...
4. Status or Data bytes (except Real-time) should not be interleaved with System Exclusive.
...
 
F8 Clocks are System Real-time.  Later, under Realtime message details, it says:
 
...
Real Time messages can be sent at any time and may be inserted anywhere in a MIDI data stream, including between Status and Data bytes of any other MIDI messages.
...
 
 
 
 
« Last Edit: Mar 22nd, 2005, 8:23pm by Jamie OConnell » IP Logged

--Jamie
Music is its own reward.

Peter L Jones
Expert
*****




Hit it

   
WWW

Gender: male
Posts: 978
Re: Mixing 0xF8 (Clock) with SysEx
« Reply #2 on: Mar 23rd, 2005, 6:36am »
Quote Quote Modify Modify

Personally I'd say Tascam is (slightly) wrong to change the order of the events as received...  I bet it makes quite a lot of hardware (and software) quite a lot more reliable, though Cheesy
 
But I would like to see MIDI OX pull the System Realtime messages out of the SysEx for display ("..." on the end of the string of bytes before and "..." on the front of the string of bytes after?).
« Last Edit: Mar 23rd, 2005, 6:37am by Peter L Jones » IP Logged

"...Playing fast around the drums is one thing. But to play with people for others, to listen to, that's something else. That's a whole other world." -- Tony Williams
Markus_Pfaff
New Member
*



MIDI-OX Rules!

   


Posts: 3
Re: Mixing 0xF8 (Clock) with SysEx
« Reply #3 on: Mar 24th, 2005, 1:26pm »
Quote Quote Modify Modify

Jamie, have you realized that the second SysEx Message that MidiOx receives from MidiYoke actually has a 0xF8 left of its SOX byte?
This 0xF8 has nothing to do with any SysEx message. Thus MidiOx should take it as MIDI Clock, but it doesn't. This is strange behaviour.
 
Even the 0xF8 which are embedded inside of the SysEx messages should be recognized by MidiOx as Clock, but they are not recognized in this way, because MidiOx doesn't say they are messages at all.
They are not part of the SysEx message, but single messages and should be displayed as such. What if I'd control some device by these clocks? Would they be recognized? If you build your own MIDI device upon MdiOx they will not.
 
As the 0xF8 are not part of the SysEx messages, they should not be shown as part of these SysEx messages by MidiOx.
 
In my opinion the Tascam driver (and I've tested the MidiSport Uno by Midiman to do the same) does the correct thing, while MidiYoke suffers from a bug.  
 
Even the timestamps of the Clock messages have to be different from the timestamps of the SysEx message they are interleaved with, because the timestamp of a SysEx message is that of message completion. The Clock messages need to have the most accurate timestamps possible. These timestamps should reflect the position of the 0xF8 message in the data stream. This clock is embedded in SysEx bytes instead of "nothing", but this doesn't matter.Think of a very long SysEx message. All Clocks would have the same, very much lagging behind, timestamp.
 
 
IP Logged
Jamie OConnell
Administrator
*****






   
WWW Email

Gender: male
Posts: 2005
Re: Mixing 0xF8 (Clock) with SysEx
« Reply #4 on: Mar 28th, 2005, 12:54am »
Quote Quote Modify Modify

I actually am inclined to agree with you, however I was pointing out that the spec. is somewhat ambiguous in this regard.  The authors of MIDI never imagined that it would be implemented (on the Windows platform) with two different streams: multi-byte SysEx buffers, and short message DWORDs.  
 
When I get some time I'll add some filtering to separate the messages in the driver.  In the mean-time you might want to direct your MIDI sync to a different port from your SysEx.
 
Upon re-reading your original message, I understand you're saying that you were only using MIDI-OX and MIDI Yoke to generate the F8's and the SysEx -- correct?
 
Thanks for the report!
« Last Edit: Mar 28th, 2005, 5:36pm by Jamie OConnell » IP Logged

--Jamie
Music is its own reward.

Markus_Pfaff
New Member
*



MIDI-OX Rules!

   


Posts: 3
Re: Mixing 0xF8 (Clock) with SysEx
« Reply #5 on: Mar 28th, 2005, 1:01pm »
Quote Quote Modify Modify

on Mar 28th, 2005, 12:54am, Jamie OConnell wrote:

Upon re-reading your original message, I understand your saying that you were only using MIDI-OX and MIDI Yoke to generate the F8's and the SysEx -- correct?

 
Jamie,
 
the experiment that led me to the problems described was on PyPortMidi, a Python port of the portable MIDI API (win, Linux, Mac) from Carnegie Mellon University. This API showed the same behavior when used for reception of the message I posted originally like MIDI-OX. The author of PyPortMidi, John Harrison, had a different bahavior on the message than me. He was using MidiYoke, I was using the Tascam US-428 whose MIDI-OUT was directly connected to the MIDI-IN.
 
The results posted, were taken from two experiments in which
a) Midi ox nr. 1 sent over Midi Yoke to Midi ox nr.2
b) the same, but Tascam instead of Midi Yoke.
 
Markus
IP Logged
Pages: 1  Reply Reply Notify of replies Notify of replies Send Topic Send Topic Print Print

« Previous topic | Next topic »


MIDI-OX User Forum » Powered by YaBB 1 Gold - SP 1.3.1!
YaBB © 2000-2003. All Rights Reserved.