Closed AnalogDave closed 9 years ago
Hi Dave, Thanks for using the library and posting this issue. Looking at the WireShark log, the Arduino receives a NoteOff* (note the * after Note Off, I've never seen that before; not sure why that is) Let me check if I can reproduce the issue (and hopefully fix it). Lathoub
I read the midi spec a long time ago but from memory a note on event with a velocity of 0 is considered a note off event. I suspect that might be why the * is shown. It is a note on event with a velocity of 0 and therefore considered a note off.
I tried to reproduce the bug, by sending NoteOff to channel 1, note 0 and velocity 0 - but that does not reproduce the problem. Can you change the AppleMIDI_Settings.h and make sure that it is setup for verbose logging. Here is what it should look like (near the top):
//#define RELEASE_BUILD //#undef DEBUG_BUILD
then send the serial output again
Thanks Dave!
did the change and I get a few compelling errors mainly: - error: call of overloaded 'print(int64_t&, int)' is ambiguous i have the latest version of the IDE, but I might have to look deeper to find the problem. I've come back to arduino after a few years away and have forgotten most of what I knew.
Could you point me in the right direction, if this is an obvious error? If not I'll try to trace it down, but might take me awhile. Just might have to reinstall everything.
Sounds like the whole issue might be with my system. But i will do some digging when I can get the compelling errors to stop.
Cheers
Dave, I'm using Arduino 1.0.5r2 - from what i read from the log files you posted, i suspect the issue is with the library - i'll find it!
As mentioned in the related issue I compiled this under 1.0.6, with extra debugging. I commented out the print statements that were causing the "ambiguous" error and here is my output from connection, 1 note and then it disconnecting:
Getting IP address... IP address is 10.0.1.167. Make sure you an rtpMIDI session that is Enabled Add device named Arduino with Host/Port 10.0.1.167:5004 Then press the Connect button Then open a MIDI listener (eg MIDI-OX) and monitor incoming notes Starting Verbose logging Sending NoteOn/Off of note 45 every second Incoming buffer of 24 bytes. These will be appended to the protocolBuffer FF FF 43 4B F6 B9 14 9 0 91 65 91 0 0 0 0 1 3D F3 D1 0 0 0 0 Protocol buffer contains 24 bytes. Content: FF FF 43 4B F6 B9 14 9 0 91 65 91 0 0 0 0 1 3D F3 D1 0 0 0 0 dissect_rtp_midi 5005, packetSize is 24 dissect_rtp unsupported version 3 Unprocessed packet (No valid rtp midi content). dissect_apple_midi 5005, packetSize is 24 Not enough data for Syncronization Incoming buffer of 12 bytes. These will be appended to the protocolBuffer 50 2D C0 D8 92 7F 0 0 68 20 1 0 Protocol buffer contains 36 bytes. Content: FF FF 43 4B F6 B9 14 9 0 91 65 91 0 0 0 0 1 3D F3 D1 0 0 0 0 50 2D C0 D8 92 7F 0 0 68 20 1 0 dissect_rtp_midi 5005, packetSize is 36 dissect_rtp unsupported version 3 Unprocessed packet (No valid rtp midi content). dissect_apple_midi 5005, packetSize is 36
Syncronization for ssrc 0xF6B91409, count = 0 hmmm - Syncronization for a session that has never started. Purging left 36 bytes Incoming buffer of 24 bytes. These will be appended to the protocolBuffer FF FF 43 4B F6 B9 14 9 0 91 65 91 0 0 0 0 1 3F 7C 8 0 0 0 0 Protocol buffer contains 24 bytes. Content: FF FF 43 4B F6 B9 14 9 0 91 65 91 0 0 0 0 1 3F 7C 8 0 0 0 0 dissect_rtp_midi 5005, packetSize is 24 dissect_rtp unsupported version 3 Unprocessed packet (No valid rtp midi content). dissect_apple_midi 5005, packetSize is 24 Not enough data for Syncronization Incoming buffer of 12 bytes. These will be appended to the protocolBuffer 50 2D C0 D8 92 7F 0 0 68 20 1 0 Protocol buffer contains 36 bytes. Content: FF FF 43 4B F6 B9 14 9 0 91 65 91 0 0 0 0 1 3F 7C 8 0 0 0 0 50 2D C0 D8 92 7F 0 0 68 20 1 0 dissect_rtp_midi 5005, packetSize is 36 dissect_rtp unsupported version 3 Unprocessed packet (No valid rtp midi content). dissect_apple_midi 5005, packetSize is 36 Syncronization for ssrc 0xF6B91409, count = 0 hmmm - Syncronization for a session that has never started. Purging left 36 bytes Incoming buffer of 16 bytes. These will be appended to the protocolBuffer 80 61 A3 40 1 3F F9 64 F6 B9 14 9 3 90 24 3D Protocol buffer contains 16 bytes. Content: 80 61 A3 40 1 3F F9 64 F6 B9 14 9 3 90 24 3D dissect_rtp_midi 5005, packetSize is 16 dissect_rtp Seq Number: A340 Timestamp : 13FF964 Sync Src : F6B91409 Have all the data payload_type is 97 No padding set Offset is 12 cmd_len is 3 dissect command section with packet size 16 cmd count is 0 decodemidi decode_note_on Note On (c=1, n=36, v=61) Incoming NoteOn from channel:1 note:36 velocity:61 Purging left 16 bytes Incoming buffer of 24 bytes. These will be appended to the protocolBuffer 80 61 A3 41 1 40 5 2A F6 B9 14 9 43 80 24 0 20 A3 40 0 7 8 81 F1 Protocol buffer contains 24 bytes. Content: 80 61 A3 41 1 40 5 2A F6 B9 14 9 43 80 24 0 20 A3 40 0 7 8 81 F1 dissect_rtp_midi 5005, packetSize is 24 dissect_rtp Seq Number: A341 Timestamp : 140052A Sync Src : F6B91409 Have all the data payload_type is 97 No padding set Offset is 12 cmd_len is 3 dissect command section with packet size 24 cmd count is 0 decodemidi decode_note_off Note Off (c=1, n=36, v=0) Incoming NoteOff from channel:1 note:36 velocity:0 journal section Purging left 19 bytes Incoming buffer of 2 bytes. These will be appended to the protocolBuffer 24 3D Protocol buffer contains 7 bytes. Content: 0 7 8 81 F1 24 3D dissect_rtp_midi 5005, packetSize is 7 dissect_rtp not enough bytes. Need at least 12, got7 Unprocessed packet (No valid rtp midi content). dissect_apple_midi 5005, packetSize is 7 Signature not supported. Purging left 2 bytes Incoming buffer of 24 bytes. These will be appended to the protocolBuffer FF FF 43 4B F6 B9 14 9 0 91 65 91 0 0 0 0 1 41 2 A8 0 0 0 0 Protocol buffer contains 29 bytes. Content: 8 81 F1 24 3D FF FF 43 4B F6 B9 14 9 0 91 65 91 0 0 0 0 1 41 2 A8 0 0 0 0 dissect_rtp_midi 5005, packetSize is 29 dissect_rtp unknown version, let if fall through unsupported version 0 Unprocessed packet (No valid rtp midi content). dissect_apple_midi 5005, packetSize is 29 Signature not supported. Purging left 2 bytes Incoming buffer of 12 bytes. These will be appended to the protocolBuffer 50 2D C0 D8 92 7F 0 0 68 20 1 0 Protocol buffer contains 39 bytes. Content: F1 24 3D FF FF 43 4B F6 B9 14 9 0 91 65 91 0 0 0 0 1 41 2 A8 0 0 0 0 50 2D C0 D8 92 7F 0 0 68 20 1 0 dissect_rtp_midi 5005, packetSize is 39 dissect_rtp unsupported version 3 Unprocessed packet (No valid rtp midi content). dissect_apple_midi 5005, packetSize is 39 Signature not supported. Purging left 2 bytes Incoming buffer of 24 bytes. These will be appended to the protocolBuffer FF FF 43 4B F6 B9 14 9 0 91 65 91 0 0 0 0 1 42 89 4A 0 0 0 0 Protocol buffer contains 61 bytes. Content: 3D FF FF 43 4B F6 B9 14 9 0 91 65 91 0 0 0 0 1 41 2 A8 0 0 0 0 50 2D C0 D8 92 7F 0 0 68 20 1 0 FF FF 43 4B F6 B9 14 9 0 91 65 91 0 0 0 0 1 42 89 4A 0 0 0 0 dissect_rtp_midi 5005, packetSize is 61 dissect_rtp unknown version, let if fall through unsupported version 0 Unprocessed packet (No valid rtp midi content). dissect_apple_midi 5005, packetSize is 61 Signature not supported. Purging left 2 bytes Incoming buffer of 12 bytes. These will be appended to the protocolBuffer 50 2D C0 D8 92 7F 0 0 68 20 1 0 Protocol buffer contains 71 bytes. Content: FF 43 4B F6 B9 14 9 0 91 65 91 0 0 0 0 1 41 2 A8 0 0 0 0 50 2D C0 D8 92 7F 0 0 68 20 1 0 FF FF 43 4B F6 B9 14 9 0 91 65 91 0 0 0 0 1 42 89 4A 0 0 0 0 50 2D C0 D8 92 7F 0 0 68 20 1 0 dissect_rtp_midi 5005, packetSize is 71 dissect_rtp unsupported version 3 Unprocessed packet (No valid rtp midi content). dissect_apple_midi 5005, packetSize is 71 Signature not supported. Purging left 2 bytes Incoming buffer of 16 bytes. These will be appended to the protocolBuffer FF FF 42 59 0 0 0 2 0 0 0 0 F6 B9 14 9 Protocol buffer contains 16 bytes. Content: FF FF 42 59 0 0 0 2 0 0 0 0 F6 B9 14 9 dissect_apple_midi 5004, packetSize is 16 End Session for ssrc 0xF6B91409, initiatorToken = 0x0 Disconnected Purging left 16 bytes
Delving further into this, I commented out the "return 0" on unsupported version and that let it continue. The connection seems to works fine, but when a note is sent the note ON is processed properly and the the packet buffer cleared. 16 bytes come in and 16 get cleared. When a note OFF packet comes in it's 24 bytes, but only 19 bytes get cleared, leaving several bytes in the buffer. That throws off further packet processing as the leftover bytes at the front of the buffer throw off the signature comparison, and then the Arduino seems to crash, and reset from the beginning.
I think the problem might be in the journal section in the file packet-rtp-midi.h. Not 100% sure. Still debugging on my end.
Thanks for the detailed trace. At first glance, the issue seems to be in packet-rtp.h, 'dissect_rtp'. I read earlier in your posted you are using Mac OS X 10.9.5 (I'm on 10.9.4). Maybe Apple bumped the version of AppleMIDI on their side. Let me upgrade to 10.9.5 as well and check.
I upgraded to 10.9.5 and I'm using MIDI Network Setup 3.0.6, but unable to reproduce the error. What Bonjour Name have you set in the session?
I've tried this with several variations. It was a little unclear which names matter. In the sketch it says:
AppleMIDI.begin("test");
But in my Audio Midi Setup my session is called "Session", and I named the entry in the "Directory" for the Arduino to "test". The Bonjour name of my machine is "Number5".
So you're saying the version number that is reported by your machine is not 3 like in the trace?
From the above log, it seems that the Arduino is receiving Synchronize messages before establishing a session. I have attached a screenshot from wireshark from what I see (i also used your Bonjour Name, to make sure) You might have another sequence. My sequence:
The unsupported version 3 message is OK for socket 5005
Could it be you have traces running in rtpMIDI from earlier sessions?
No, I reset the session and grabbed the log. I'll do it again in a moment.
Ok. Here's the output that I'm getting. Keep in mind I added a few more print statements in there to help debug this. I also increased the max packet buffer size just in case. It looks like after a note Off is received things start to go crazy and the further sync messages get scrambled and then the buffer overflows and the session dies and the arduino crashes.
Getting IP address... IP address is 10.0.1.167. Make sure you an rtpMIDI session that is Enabled Add device named Arduino with Host/Port 10.0.1.167:5004 Then press the Connect button Then open a MIDI listener (eg MIDI-OX) and monitor incoming notes Starting Verbose logging Sending NoteOn/Off of note 45 every second Incoming buffer of 24 bytes. These will be appended to the protocolBuffer FF FF 49 4E 0 0 0 2 74 B0 DC 51 81 77 51 5 4E 75 6D 62 65 72 35 0 Protocol buffer contains 24 bytes. Content: FF FF 49 4E 0 0 0 2 74 B0 DC 51 81 77 51 5 4E 75 6D 62 65 72 35 0 dissect_apple_midi 5004, packetSize is 24
Control Invitation: peer = "Number5" ,ssrc 0x81775105 ,initiatorToken = 0x74B0DC51 < Control InvitationAccepted: peer = "test" ,ssrc 0x48E16BA1 ,initiatorToken = 0x74B0DC51 ,in slot = 0 Purging left 24 bytes Incoming buffer of 24 bytes. These will be appended to the protocolBuffer FF FF 49 4E 0 0 0 2 74 B0 DC 51 81 77 51 5 4E 75 6D 62 65 72 35 0 Protocol buffer contains 24 bytes. Content: FF FF 49 4E 0 0 0 2 74 B0 DC 51 81 77 51 5 4E 75 6D 62 65 72 35 0 dissect_rtp_midi 5005, packetSize is 24 dissect_rtp unsupported version 3 Seq Number: 494E Timestamp : 2 Sync Src : 74B0DC51 Have all the data payload_type is 127 csrc_count = 15 extension hdr_extension_id = 0 hdr_extension = 0 padding = Nothing processed Unprocessed packet (No valid rtp midi content). dissect_apple_midi 5005, packetSize is 24 Content Invitation: peer = "Number5" ,ssrc 0x81775105 ,initiatorToken = 0x74B0DC51 < Content InvitationAccepted: peer = "test" ,ssrc 0x48E16BA1 ,initiatorToken = 0x74B0DC51 ,in slot = 0 Connected to session Number5 Purging left 24 bytes Incoming buffer of 24 bytes. These will be appended to the protocolBuffer FF FF 43 4B 81 77 51 5 0 0 0 0 0 0 0 0 2 D1 1 26 C1 7F 0 0 Protocol buffer contains 24 bytes. Content: FF FF 43 4B 81 77 51 5 0 0 0 0 0 0 0 0 2 D1 1 26 C1 7F 0 0 dissect_rtp_midi 5005, packetSize is 24 dissect_rtp unsupported version 3 Seq Number: 434B Timestamp : 81775105 Sync Src : 0 Have all the data payload_type is 127 csrc_count = 15 extension hdr_extension_id = 0 hdr_extension = 0 padding = Nothing processed Unprocessed packet (No valid rtp midi content). dissect_apple_midi 5005, packetSize is 24 Not enough data for Syncronization Incoming buffer of 12 bytes. These will be appended to the protocolBuffer 50 48 F0 62 C1 7F 0 0 0 0 F0 62 Protocol buffer contains 36 bytes. Content: FF FF 43 4B 81 77 51 5 0 0 0 0 0 0 0 0 2 D1 1 26 C1 7F 0 0 50 48 F0 62 C1 7F 0 0 0 0 F0 62 dissect_rtp_midi 5005, packetSize is 36 dissect_rtp unsupported version 3 Seq Number: 434B Timestamp : 81775105 Sync Src : 0 Have all the data payload_type is 127 csrc_count = 15 extension hdr_extension_id = 0 hdr_extension = 0 padding = Nothing processed Unprocessed packet (No valid rtp midi content). dissect_apple_midi 5005, packetSize is 36 Syncronization for ssrc 0x81775105, count = 0 < Syncronization for ssrc 0x48E16BA1, count = 1 Purging left 36 bytes Incoming buffer of 24 bytes. These will be appended to the protocolBuffer FF FF 43 4B 81 77 51 5 2 0 0 0 0 0 0 0 2 D1 1 26 0 0 0 0 Protocol buffer contains 24 bytes. Content: FF FF 43 4B 81 77 51 5 2 0 0 0 0 0 0 0 2 D1 1 26 0 0 0 0 dissect_rtp_midi 5005, packetSize is 24 dissect_rtp unsupported version 3 Seq Number: 434B Timestamp : 81775105 Sync Src : 2000000 Have all the data payload_type is 127 csrc_count = 15 extension hdr_extension_id = 0 hdr_extension = 0 padding = Nothing processed Unprocessed packet (No valid rtp midi content). dissect_apple_midi 5005, packetSize is 24 Not enough data for Syncronization Incoming buffer of 12 bytes. These will be appended to the protocolBuffer 0 79 12 1 0 0 0 0 2 D1 6 A Protocol buffer contains 36 bytes. Content: FF FF 43 4B 81 77 51 5 2 0 0 0 0 0 0 0 2 D1 1 26 0 0 0 0 0 79 12 1 0 0 0 0 2 D1 6 A dissect_rtp_midi 5005, packetSize is 36 dissect_rtp unsupported version 3 Seq Number: 434B Timestamp : 81775105 Sync Src : 2000000 Have all the data payload_type is 127 csrc_count = 15 extension hdr_extension_id = 0 hdr_extension = 0 padding = Nothing processed Unprocessed packet (No valid rtp midi content). dissect_apple_midi 5005, packetSize is 36 Syncronization for ssrc 0x81775105, count = 2 < Syncronization for ssrc 0x48E16BA1, count = 0 Purging left 36 bytes Incoming buffer of 24 bytes. These will be appended to the protocolBuffer FF FF 43 4B 81 77 51 5 1 0 0 0 0 0 0 0 0 88 54 41 0 0 0 0 Protocol buffer contains 24 bytes. Content: FF FF 43 4B 81 77 51 5 1 0 0 0 0 0 0 0 0 88 54 41 0 0 0 0 dissect_rtp_midi 5005, packetSize is 24 dissect_rtp unsupported version 3 Seq Number: 434B Timestamp : 81775105 Sync Src : 1000000 Have all the data payload_type is 127 csrc_count = 15 extension hdr_extension_id = 0 hdr_extension = 0 padding = Nothing processed Unprocessed packet (No valid rtp midi content). dissect_apple_midi 5005, packetSize is 24 Not enough data for Syncronization Incoming buffer of 12 bytes. These will be appended to the protocolBuffer 2 D1 A 95 0 0 0 0 2 D1 6 A Protocol buffer contains 36 bytes. Content: FF FF 43 4B 81 77 51 5 1 0 0 0 0 0 0 0 0 88 54 41 0 0 0 0 2 D1 A 95 0 0 0 0 2 D1 6 A dissect_rtp_midi 5005, packetSize is 36 dissect_rtp unsupported version 3 Seq Number: 434B Timestamp : 81775105 Sync Src : 1000000 Have all the data payload_type is 127 csrc_count = 15 extension hdr_extension_id = 0 hdr_extension = 0 padding = Nothing processed Unprocessed packet (No valid rtp midi content). dissect_apple_midi 5005, packetSize is 36 Syncronization for ssrc 0x81775105, count = 1 < Syncronization for ssrc 0x48E16BA1, count = 2 Purging left 36 bytes Incoming buffer of 24 bytes. These will be appended to the protocolBuffer FF FF 43 4B 81 77 51 5 0 21 AA 94 0 0 0 0 2 D1 F 23 1 0 0 0 Protocol buffer contains 24 bytes. Content: FF FF 43 4B 81 77 51 5 0 21 AA 94 0 0 0 0 2 D1 F 23 1 0 0 0 dissect_rtp_midi 5005, packetSize is 24 dissect_rtp unsupported version 3 Seq Number: 434B Timestamp : 81775105 Sync Src : 21AA94 Have all the data payload_type is 127 csrc_count = 15 extension hdr_extension_id = 0 hdr_extension = 0 padding = Nothing processed Unprocessed packet (No valid rtp midi content). dissect_apple_midi 5005, packetSize is 24 Not enough data for Syncronization Incoming buffer of 12 bytes. These will be appended to the protocolBuffer 12 1F 83 A0 54 4F 0 4D 7 5F 34 5 Protocol buffer contains 36 bytes. Content: FF FF 43 4B 81 77 51 5 0 21 AA 94 0 0 0 0 2 D1 F 23 1 0 0 0 12 1F 83 A0 54 4F 0 4D 7 5F 34 5 dissect_rtp_midi 5005, packetSize is 36 dissect_rtp unsupported version 3 Seq Number: 434B Timestamp : 81775105 Sync Src : 21AA94 Have all the data payload_type is 127 csrc_count = 15 extension hdr_extension_id = 0 hdr_extension = 0 padding = Nothing processed Unprocessed packet (No valid rtp midi content). dissect_apple_midi 5005, packetSize is 36 Syncronization for ssrc 0x81775105, count = 0 < Syncronization for ssrc 0x48E16BA1, count = 1 Purging left 36 bytes Incoming buffer of 24 bytes. These will be appended to the protocolBuffer FF FF 43 4B 81 77 51 5 2 0 0 0 0 0 0 0 2 D1 F 23 0 0 0 0 Protocol buffer contains 24 bytes. Content: FF FF 43 4B 81 77 51 5 2 0 0 0 0 0 0 0 2 D1 F 23 0 0 0 0 dissect_rtp_midi 5005, packetSize is 24 dissect_rtp unsupported version 3 Seq Number: 434B Timestamp : 81775105 Sync Src : 2000000 Have all the data payload_type is 127 csrc_count = 15 extension hdr_extension_id = 0 hdr_extension = 0 padding = Nothing processed Unprocessed packet (No valid rtp midi content). dissect_apple_midi 5005, packetSize is 24 Not enough data for Syncronization Incoming buffer of 12 bytes. These will be appended to the protocolBuffer 0 88 54 41 0 0 0 0 2 D1 13 C0 Protocol buffer contains 36 bytes. Content: FF FF 43 4B 81 77 51 5 2 0 0 0 0 0 0 0 2 D1 F 23 0 0 0 0 0 88 54 41 0 0 0 0 2 D1 13 C0 dissect_rtp_midi 5005, packetSize is 36 dissect_rtp unsupported version 3 Seq Number: 434B Timestamp : 81775105 Sync Src : 2000000 Have all the data payload_type is 127 csrc_count = 15 extension hdr_extension_id = 0 hdr_extension = 0 padding = Nothing processed Unprocessed packet (No valid rtp midi content). dissect_apple_midi 5005, packetSize is 36 Syncronization for ssrc 0x81775105, count = 2 < Syncronization for ssrc 0x48E16BA1, count = 0 Purging left 36 bytes Incoming buffer of 24 bytes. These will be appended to the protocolBuffer FF FF 43 4B 81 77 51 5 1 0 0 0 0 0 0 0 0 88 54 41 0 0 0 0 Protocol buffer contains 24 bytes. Content: FF FF 43 4B 81 77 51 5 1 0 0 0 0 0 0 0 0 88 54 41 0 0 0 0 dissect_rtp_midi 5005, packetSize is 24 dissect_rtp unsupported version 3 Seq Number: 434B Timestamp : 81775105 Sync Src : 1000000 Have all the data payload_type is 127 csrc_count = 15 extension hdr_extension_id = 0 hdr_extension = 0 padding = Nothing processed Unprocessed packet (No valid rtp midi content). dissect_apple_midi 5005, packetSize is 24 Not enough data for Syncronization Incoming buffer of 12 bytes. These will be appended to the protocolBuffer 2 D1 18 51 0 0 0 0 2 D1 13 C0 Protocol buffer contains 36 bytes. Content: FF FF 43 4B 81 77 51 5 1 0 0 0 0 0 0 0 0 88 54 41 0 0 0 0 2 D1 18 51 0 0 0 0 2 D1 13 C0 dissect_rtp_midi 5005, packetSize is 36 dissect_rtp unsupported version 3 Seq Number: 434B Timestamp : 81775105 Sync Src : 1000000 Have all the data payload_type is 127 csrc_count = 15 extension hdr_extension_id = 0 hdr_extension = 0 padding = Nothing processed Unprocessed packet (No valid rtp midi content). dissect_apple_midi 5005, packetSize is 36 Syncronization for ssrc 0x81775105, count = 1 < Syncronization for ssrc 0x48E16BA1, count = 2 Purging left 36 bytes Incoming buffer of 24 bytes. These will be appended to the protocolBuffer FF FF 43 4B 81 77 51 5 0 21 AA 94 0 0 0 0 2 D1 1C E4 1 0 0 0 Protocol buffer contains 24 bytes. Content: FF FF 43 4B 81 77 51 5 0 21 AA 94 0 0 0 0 2 D1 1C E4 1 0 0 0 dissect_rtp_midi 5005, packetSize is 24 dissect_rtp unsupported version 3 Seq Number: 434B Timestamp : 81775105 Sync Src : 21AA94 Have all the data payload_type is 127 csrc_count = 15 extension hdr_extension_id = 0 hdr_extension = 0 padding = Nothing processed Unprocessed packet (No valid rtp midi content). dissect_apple_midi 5005, packetSize is 24 Not enough data for Syncronization Incoming buffer of 12 bytes. These will be appended to the protocolBuffer 12 1F 83 A0 54 4F 0 4D 7 5F 34 5 Protocol buffer contains 36 bytes. Content: FF FF 43 4B 81 77 51 5 0 21 AA 94 0 0 0 0 2 D1 1C E4 1 0 0 0 12 1F 83 A0 54 4F 0 4D 7 5F 34 5 dissect_rtp_midi 5005, packetSize is 36 dissect_rtp unsupported version 3 Seq Number: 434B Timestamp : 81775105 Sync Src : 21AA94 Have all the data payload_type is 127 csrc_count = 15 extension hdr_extension_id = 0 hdr_extension = 0 padding = Nothing processed Unprocessed packet (No valid rtp midi content). dissect_apple_midi 5005, packetSize is 36 Syncronization for ssrc 0x81775105, count = 0 < Syncronization for ssrc 0x48E16BA1, count = 1 Purging left 36 bytes Incoming buffer of 24 bytes. These will be appended to the protocolBuffer FF FF 43 4B 81 77 51 5 2 0 0 0 0 0 0 0 2 D1 1C E4 0 0 0 0 Protocol buffer contains 24 bytes. Content: FF FF 43 4B 81 77 51 5 2 0 0 0 0 0 0 0 2 D1 1C E4 0 0 0 0 dissect_rtp_midi 5005, packetSize is 24 dissect_rtp unsupported version 3 Seq Number: 434B Timestamp : 81775105 Sync Src : 2000000 Have all the data payload_type is 127 csrc_count = 15 extension hdr_extension_id = 0 hdr_extension = 0 padding = Nothing processed Unprocessed packet (No valid rtp midi content). dissect_apple_midi 5005, packetSize is 24 Not enough data for Syncronization Incoming buffer of 12 bytes. These will be appended to the protocolBuffer 0 88 54 41 0 0 0 0 2 D1 21 82 Protocol buffer contains 36 bytes. Content: FF FF 43 4B 81 77 51 5 2 0 0 0 0 0 0 0 2 D1 1C E4 0 0 0 0 0 88 54 41 0 0 0 0 2 D1 21 82 dissect_rtp_midi 5005, packetSize is 36 dissect_rtp unsupported version 3 Seq Number: 434B Timestamp : 81775105 Sync Src : 2000000 Have all the data payload_type is 127 csrc_count = 15 extension hdr_extension_id = 0 hdr_extension = 0 padding = Nothing processed Unprocessed packet (No valid rtp midi content). dissect_apple_midi 5005, packetSize is 36 Syncronization for ssrc 0x81775105, count = 2 < Syncronization for ssrc 0x48E16BA1, count = 0 Purging left 36 bytes Incoming buffer of 24 bytes. These will be appended to the protocolBuffer FF FF 43 4B 81 77 51 5 1 0 0 0 0 0 0 0 0 88 54 41 0 0 0 0 Protocol buffer contains 24 bytes. Content: FF FF 43 4B 81 77 51 5 1 0 0 0 0 0 0 0 0 88 54 41 0 0 0 0 dissect_rtp_midi 5005, packetSize is 24 dissect_rtp unsupported version 3 Seq Number: 434B Timestamp : 81775105 Sync Src : 1000000 Have all the data payload_type is 127 csrc_count = 15 extension hdr_extension_id = 0 hdr_extension = 0 padding = Nothing processed Unprocessed packet (No valid rtp midi content). dissect_apple_midi 5005, packetSize is 24 Not enough data for Syncronization Incoming buffer of 12 bytes. These will be appended to the protocolBuffer 2 D1 26 16 0 0 0 0 2 D1 21 82 Protocol buffer contains 36 bytes. Content: FF FF 43 4B 81 77 51 5 1 0 0 0 0 0 0 0 0 88 54 41 0 0 0 0 2 D1 26 16 0 0 0 0 2 D1 21 82 dissect_rtp_midi 5005, packetSize is 36 dissect_rtp unsupported version 3 Seq Number: 434B Timestamp : 81775105 Sync Src : 1000000 Have all the data payload_type is 127 csrc_count = 15 extension hdr_extension_id = 0 hdr_extension = 0 padding = Nothing processed Unprocessed packet (No valid rtp midi content). dissect_apple_midi 5005, packetSize is 36 Syncronization for ssrc 0x81775105, count = 1 < Syncronization for ssrc 0x48E16BA1, count = 2 Purging left 36 bytes Incoming buffer of 24 bytes. These will be appended to the protocolBuffer FF FF 43 4B 81 77 51 5 0 21 AA 94 0 0 0 0 2 D2 B1 4B 0 0 0 0 Protocol buffer contains 24 bytes. Content: FF FF 43 4B 81 77 51 5 0 21 AA 94 0 0 0 0 2 D2 B1 4B 0 0 0 0 dissect_rtp_midi 5005, packetSize is 24 dissect_rtp unsupported version 3 Seq Number: 434B Timestamp : 81775105 Sync Src : 21AA94 Have all the data payload_type is 127 csrc_count = 15 extension hdr_extension_id = 0 hdr_extension = 0 padding = Nothing processed Unprocessed packet (No valid rtp midi content). dissect_apple_midi 5005, packetSize is 24 Not enough data for Syncronization Incoming buffer of 12 bytes. These will be appended to the protocolBuffer 60 13 E0 62 C1 7F 0 0 68 20 1 0 Protocol buffer contains 36 bytes. Content: FF FF 43 4B 81 77 51 5 0 21 AA 94 0 0 0 0 2 D2 B1 4B 0 0 0 0 60 13 E0 62 C1 7F 0 0 68 20 1 0 dissect_rtp_midi 5005, packetSize is 36 dissect_rtp unsupported version 3 Seq Number: 434B Timestamp : 81775105 Sync Src : 21AA94 Have all the data payload_type is 127 csrc_count = 15 extension hdr_extension_id = 0 hdr_extension = 0 padding = Nothing processed Unprocessed packet (No valid rtp midi content). dissect_apple_midi 5005, packetSize is 36 Syncronization for ssrc 0x81775105, count = 0 < Syncronization for ssrc 0x48E16BA1, count = 1 Purging left 36 bytes Incoming buffer of 24 bytes. These will be appended to the protocolBuffer FF FF 43 4B 81 77 51 5 2 0 0 0 0 0 0 0 2 D2 B1 4B 0 0 0 0 Protocol buffer contains 24 bytes. Content: FF FF 43 4B 81 77 51 5 2 0 0 0 0 0 0 0 2 D2 B1 4B 0 0 0 0 dissect_rtp_midi 5005, packetSize is 24 dissect_rtp unsupported version 3 Seq Number: 434B Timestamp : 81775105 Sync Src : 2000000 Have all the data payload_type is 127 csrc_count = 15 extension hdr_extension_id = 0 hdr_extension = 0 padding = Nothing processed Unprocessed packet (No valid rtp midi content). dissect_apple_midi 5005, packetSize is 24 Not enough data for Syncronization Incoming buffer of 12 bytes. These will be appended to the protocolBuffer 1 20 EA C1 0 0 0 0 2 D2 B5 97 Protocol buffer contains 36 bytes. Content: FF FF 43 4B 81 77 51 5 2 0 0 0 0 0 0 0 2 D2 B1 4B 0 0 0 0 1 20 EA C1 0 0 0 0 2 D2 B5 97 dissect_rtp_midi 5005, packetSize is 36 dissect_rtp unsupported version 3 Seq Number: 434B Timestamp : 81775105 Sync Src : 2000000 Have all the data payload_type is 127 csrc_count = 15 extension hdr_extension_id = 0 hdr_extension = 0 padding = Nothing processed Unprocessed packet (No valid rtp midi content). dissect_apple_midi 5005, packetSize is 36 Syncronization for ssrc 0x81775105, count = 2 < Syncronization for ssrc 0x48E16BA1, count = 0 Purging left 36 bytes Incoming buffer of 24 bytes. These will be appended to the protocolBuffer FF FF 43 4B 81 77 51 5 1 0 0 0 0 0 0 0 1 30 2D 1 0 0 0 0 Protocol buffer contains 24 bytes. Content: FF FF 43 4B 81 77 51 5 1 0 0 0 0 0 0 0 1 30 2D 1 0 0 0 0 dissect_rtp_midi 5005, packetSize is 24 dissect_rtp unsupported version 3 Seq Number: 434B Timestamp : 81775105 Sync Src : 1000000 Have all the data payload_type is 127 csrc_count = 15 extension hdr_extension_id = 0 hdr_extension = 0 padding = Nothing processed Unprocessed packet (No valid rtp midi content). dissect_apple_midi 5005, packetSize is 24 Not enough data for Syncronization Incoming buffer of 12 bytes. These will be appended to the protocolBuffer 2 D2 BA 2A 0 0 0 0 2 D2 B5 97 Protocol buffer contains 36 bytes. Content: FF FF 43 4B 81 77 51 5 1 0 0 0 0 0 0 0 1 30 2D 1 0 0 0 0 2 D2 BA 2A 0 0 0 0 2 D2 B5 97 dissect_rtp_midi 5005, packetSize is 36 dissect_rtp unsupported version 3 Seq Number: 434B Timestamp : 81775105 Sync Src : 1000000 Have all the data payload_type is 127 csrc_count = 15 extension hdr_extension_id = 0 hdr_extension = 0 padding = Nothing processed Unprocessed packet (No valid rtp midi content). dissect_apple_midi 5005, packetSize is 36 Syncronization for ssrc 0x81775105, count = 1 < Syncronization for ssrc 0x48E16BA1, count = 2 Purging left 36 bytes Incoming buffer of 16 bytes. These will be appended to the protocolBuffer 80 61 F2 43 2 D3 D0 86 81 77 51 5 3 90 24 3D Protocol buffer contains 16 bytes. Content: 80 61 F2 43 2 D3 D0 86 81 77 51 5 3 90 24 3D dissect_rtp_midi 5005, packetSize is 16 dissect_rtp Seq Number: F243 Timestamp : 2D3D086 Sync Src : 81775105 Have all the data payload_type is 97 No padding set Offset is 12 cmd_len is 3 dissect command section with packet size 16 cmd count is 0 decodemidi decode_note_on Note On (c=1, n=36, v=61) Incoming NoteOn from channel:1 note:36 velocity:61 Total Consumed = 3 FINAL OFFSET = 16 Purging left 16 bytes Incoming buffer of 24 bytes. These will be appended to the protocolBuffer 80 61 F2 44 2 D3 D8 A2 81 77 51 5 43 80 24 0 20 F2 43 0 7 8 81 F1 Protocol buffer contains 24 bytes. Content: 80 61 F2 44 2 D3 D8 A2 81 77 51 5 43 80 24 0 20 F2 43 0 7 8 81 F1 dissect_rtp_midi 5005, packetSize is 24 dissect_rtp Seq Number: F244 Timestamp : 2D3D8A2 Sync Src : 81775105 Have all the data payload_type is 97 No padding set Offset is 12 cmd_len is 3 dissect command section with packet size 24 cmd count is 0 decodemidi decode_note_off Note Off (c=1, n=36, v=0) Incoming NoteOff from channel:1 note:36 velocity:0 Decode note off consumption = 2 Total Consumed = 3 journal section FINAL OFFSET = 19 Purging left 19 bytes Incoming buffer of 2 bytes. These will be appended to the protocolBuffer 24 3D Protocol buffer contains 7 bytes. Content: 0 7 8 81 F1 24 3D dissect_rtp_midi 5005, packetSize is 7 dissect_rtp not enough bytes. Need at least 12, got7 Unprocessed packet (No valid rtp midi content). dissect_apple_midi 5005, packetSize is 7 Signature not supported. amSignature size: 2 Compared values: 0 7 8 81 F1 24 3D / FF FF Purging left 2 bytes Incoming buffer of 24 bytes. These will be appended to the protocolBuffer FF FF 43 4B 81 77 51 5 0 21 AA 94 0 0 0 0 2 D4 45 5C 0 0 0 0 Protocol buffer contains 29 bytes. Content: 8 81 F1 24 3D FF FF 43 4B 81 77 51 5 0 21 AA 94 0 0 0 0 2 D4 45 5C 0 0 0 0 dissect_rtp_midi 5005, packetSize is 29 dissect_rtp unknown version, let if fall through unsupported version 0 Seq Number: F124 Timestamp : 3DFFFF43 Sync Src : 4B817751 Have all the data csrc_count = 8 No padding set Offset is 44 cmd_len is 0 FINAL OFFSET = 45 Purging left 45 bytes Incoming buffer of 12 bytes. These will be appended to the protocolBuffer 60 13 E0 62 C1 7F 0 0 68 20 1 0 Not enough memory in protocolBuffer, clearing existing parser buffer. reset Protocol buffer contains 12 bytes. Content: 60 13 E0 62 C1 7F 0 0 68 20 1 0 dissect_rtp_midi 5005, packetSize is 12 dissect_rtp unsupported version 1 Seq Number: E062 Timestamp : C17F0000 Sync Src : 68200100 Have all the data padding = Nothing processed Unprocessed packet (No valid rtp midi content). dissect_apple_midi 5005, packetSize is 12 Signature not supported. amSignature size: 2 Compared values: 60 13 E0 62 C1 7F 0 0 68 20 1 0 / FF FF Purging left 2 bytes Incoming buffer of 24 bytes. These will be appended to the protocolBuffer FF FF 43 4B 81 77 51 5 0 21 AA 94 0 0 0 0 2 D5 CE A7 0 0 0 0 Protocol buffer contains 34 bytes. Content: E0 62 C1 7F 0 0 68 20 1 0 FF FF 43 4B 81 77 51 5 0 21 AA 94 0 0 0 0 2 D5 CE A7 0 0 0 0 dissect_rtp_midi 5005, packetSize is 34 dissect_rtp unsupported version 3 Seq Number: C17F Timestamp : 6820 Sync Src : 100FFFF Have all the data payload_type is 98 padding = Nothing processed Unprocessed packet (No valid rtp midi content). dissect_apple_midi 5005, packetSize is 34 Signature not supported. amSignature size: 2 Compared values: E0 62 C1 7F 0 0 68 20 1 0 FF FF 43 4B 81 77 51 5 0 21 AA 94 0 0 0 0 2 D5 CE A7 0 0 0 0 / FF FF Purging left 2 bytes Incoming buffer of 12 bytes. These will be appended to the protocolBuffer 60 13 E0 62 C1 7F 0 0 68 20 1 0 Protocol buffer contains 44 bytes. Content: C1 7F 0 0 68 20 1 0 FF FF 43 4B 81 77 51 5 0 21 AA 94 0 0 0 0 2 D5 CE A7 0 0 0 0 60 13 E0 62 C1 7F 0 0 68 20 1 0 dissect_rtp_midi 5005, packetSize is 44 dissect_rtp unsupported version 3 Seq Number: 0 Timestamp : 68200100 Sync Src : FFFF434B Have all the data payload_type is 127 csrc_count = 1 No padding set Offset is 16 cmd_len is 0 FINAL OFFSET = 17 Purging left 17 bytes Incoming buffer of 24 bytes. These will be appended to the protocolBuffer FF FF 43 4B 81 77 51 5 0 21 AA 94 0 0 0 0 2 D7 58 2C 0 0 0 0 Protocol buffer contains 51 bytes. Content: 21 AA 94 0 0 0 0 2 D5 CE A7 0 0 0 0 60 13 E0 62 C1 7F 0 0 68 20 1 0 FF FF 43 4B 81 77 51 5 0 21 AA 94 0 0 0 0 2 D7 58 2C 0 0 0 0 dissect_rtp_midi 5005, packetSize is 51 dissect_rtp unknown version, let if fall through unsupported version 0 Seq Number: 9400 Timestamp : 2 Sync Src : D5CEA700 Have all the data csrc_count = 1 padding = Nothing processed Unprocessed packet (No valid rtp midi content). dissect_apple_midi 5005, packetSize is 51 Signature not supported. amSignature size: 2 Compared values: 21 AA 94 0 0 0 0 2 D5 CE A7 0 0 0 0 60 13 E0 62 C1 7F 0 0 68 20 1 0 FF FF 43 4B 81 77 51 5 0 21 AA 94 0 0 0 0 2 D7 58 2C 0 0 0 0 / FF FF Purging left 2 bytes Incoming buffer of 12 bytes. These will be appended to the protocolBuffer 60 13 E0 62 C1 7F 0 0 68 20 1 0 Protocol buffer contains 61 bytes. Content: 94 0 0 0 0 2 D5 CE A7 0 0 0 0 60 13 E0 62 C1 7F 0 0 68 20 1 0 FF FF 43 4B 81 77 51 5 0 21 AA 94 0 0 0 0 2 D7 58 2C 0 0 0 0 60 13 E0 62 C1 7F 0 0 68 20 1 0 dissect_rtp_midi 5005, packetSize is 61 dissect_rtp Seq Number: 0 Timestamp : 2D5CE Sync Src : A7000000 Have all the data csrc_count = 4 extension hdr_extension_id = 30545 hdr_extension = 1280 No padding set Offset is 5152 cmd_len is 11 dissect command section with packet size 61 cmd count is 0 decodetime decodemidi decode_channel_pressure Channel Pressure (c=3, p=97) Total Consumed = 2 cmd count is 1 decodetime decodemidi decode_channel_pressure no further data errora ReportedBoundsError 2dissect_apple_midi 5005, packetSize is 61 Signature not supported. amSignature size: 2 Compared values: 94 0 0 0 0 2 D5 CE A7 0 0 0 0 60 13 E0 62 C1 7F 0 0 68 20 1 0 FF FF 43 4B 81 77 51 5 0 21 AA 94 0 0 0 0 2 D7 58 2C 0 0 0 0 60 13 E0 62 C1 7F 0 0 68 20 1 0 / FF FF Purging left 2 bytes Incoming buffer of 24 bytes. These will be appended to the protocolBuffer FF FF 43 4B 81 77 51 5 0 21 AA 94 0 0 0 0 2 D8 DE CD 0 0 0 0 Protocol buffer contains 83 bytes. Content: 0 0 0 2 D5 CE A7 0 0 0 0 60 13 E0 62 C1 7F 0 0 68 20 1 0 FF FF 43 4B 81 77 51 5 0 21 AA 94 0 0 0 0 2 D7 58 2C 0 0 0 0 60 13 E0 62 C1 7F 0 0 68 20 1 0 FF FF 43 4B 81 77 51 5 0 21 AA 94 0 0 0 0 2 D8 DE CD 0 0 0 0 dissect_rtp_midi 5005, packetSize is 83 dissect_rtp unknown version, let if fall through unsupported version 0 Seq Number: 2 Timestamp : D5CEA700 Sync Src : 60 Have all the data No padding set Offset is 12 cmd_len is 3 dissect command section with packet size 83 cmd count is 0 decodemidi decode_pitch_bend_change aborted MIDI-command errora ReportedBoundsError 2dissect_apple_midi 5005, packetSize is 83 Signature not supported. amSignature size: 2 Compared values: 0 0 0 2 D5 CE A7 0 0 0 0 60 13 E0 62 C1 7F 0 0 68 20 1 0 FF FF 43 4B 81 77 51 5 0 21 AA 94 0 0 0 0 2 D7 58 2C 0 0 0 0 60 13 E0 62 C1 7F 0 0 68 20 1 0 FF FF 43 4B 81 77 51 5 0 21 AA 94 0 0 0 0 2 D8 DE CD 0 0 0 0 / FF FF Purging left 2 bytes Incoming buffer of 12 bytes. These will be appended to the protocolBuffer 60 13 E0 62 C1 7F 0 0 68 20 1 0 Protocol buffer contains 93 bytes. Content: 0 2 D5 CE A7 0 0 0 0 60 13 E0 62 C1 7F 0 0 68 20 1 0 FF FF 43 4B 81 77 51 5 0 21 AA 94 0 0 0 0 2 D7 58 2C 0 0 0 0 60 13 E0 62 C1 7F 0 0 68 20 1 0 FF FF 43 4B 81 77 51 5 0 21 AA 94 0 0 0 0 2 D8 DE CD 0 0 0 0 60 13 E0 62 C1 7F 0 0 68 20 1 0 dissect_rtp_midi 5005, packetSize is 93 dissect_rtp unknown version, let if fall through unsupported version 0 Seq Number: D5CE Timestamp : A7000000 Sync Src : 6013E0 Have all the data No padding set Offset is 12 cmd_len is 2 dissect command section with packet size 93 cmd count is 0 decodetime journal section FINAL OFFSET = 18 Purging left 18 bytes Incoming buffer of 24 bytes. These will be appended to the protocolBuffer FF FF 43 4B 81 77 51 5 0 21 AA 94 0 0 0 0 2 DA 68 3 0 0 0 0 Protocol buffer contains 99 bytes. Content: 20 1 0 FF FF 43 4B 81 77 51 5 0 21 AA 94 0 0 0 0 2 D7 58 2C 0 0 0 0 60 13 E0 62 C1 7F 0 0 68 20 1 0 FF FF 43 4B 81 77 51 5 0 21 AA 94 0 0 0 0 2 D8 DE CD 0 0 0 0 60 13 E0 62 C1 7F 0 0 68 20 1 0 FF FF 43 4B 81 77 51 5 0 21 AA 94 0 0 0 0 2 DA 68 3 0 0 0 0 dissect_rtp_midi 5005, packetSize is 99 dissect_rtp unknown version, let if fall through unsupported version 0 Seq Number: FF Timestamp : FF434B81 Sync Src : 77510500 Have all the data padding = Nothing processed Unprocessed packet (No valid rtp midi content). dissect_apple_midi 5005, packetSize is 99 Signature not supported. amSignature size: 2 Compared values: 20 1 0 FF FF 43 4B 81 77 51 5 0 21 AA 94 0 0 0 0 2 D7 58 2C 0 0 0 0 60 13 E0 62 C1 7F 0 0 68 20 1 0 FF FF 43 4B 81 77 51 5 0 21 AA 94 0 0 0 0 2 D8 DE CD 0 0 0 0 60 13 E0 62 C1 7F 0 0 68 20 1 0 FF FF 43 4B 81 77 51 5 0 21 AA 94 0 0 0 0 2 DA 68 3 0 0 0 0 / FF FF Purging left 2 bytes Incoming buffer of 12 bytes. These will be appended to the protocolBuffer 60 13 E0 62 C1 7F 0 0 68 20 1 0 Protocol buffer contains 109 bytes. Content: 0 FF FF 43 4B 81 77 51 5 0 21 AA 94 0 0 0 0 2 D7 58 2C 0 0 0 0 60 13 E0 62 C1 7F 0 0 68 20 1 0 FF FF 43 4B 81 77 51 5 0 21 AA 94 0 0 0 0 2 D8 DE CD 0 0 0 0 60 13 E0 62 C1 7F 0 0 68 20 1 0 FF FF 43 4B 81 77 51 5 0 21 AA 94 0 0 0 0 2 DA 68 3 0 0 0 0 60 13 E0 62 C1 7F 0 0 68 20 1 0 dissect_rtp_midi 5005, packetSize is 109 dissect_rtp unknown version, let if fall through unsupported version 0 Seq Number: FF43 Timestamp : 4B817751 Sync Src : 50021AA Have all the data payload_type is 127 No padding set Offset is 12 cmd_len is 4 dissect command section with packet size 109 cmd count is 0 decodemidi ReportedBoundsError 2dissect_apple_midi 5005, packetSize is 109 Signature not supported. amSignature size: 2 Compared values: 0 FF FF 43 4B 81 77 51 5 0 21 AA 94 0 0 0 0 2 D7 58 2C 0 0 0 0 60 13 E0 62 C1 7F 0 0 68 20 1 0 FF FF 43 4B 81 77 51 5 0 21 AA 94 0 0 0 0 2 D8 DE CD 0 0 0 0 60 13 E0 62 C1 7F 0 0 68 20 1 0 FF FF 43 4B 81 77 51 5 0 21 AA 94 0 0 0 0 2 DA 68 3 0 0 0 0 60 13 E0 62 C1 7F 0 0 68 20 1 0 / FF FF Purging left 2 bytes Incoming buffer of 16 bytes. These will be appended to the protocolBuffer FF FF 42 59 0 0 0 2 0 0 0 0 81 77 51 5 Protocol buffer contains 16 bytes. Content: FF FF 42 59 0 0 0 2 0 0 0 0 81 77 51 5 dissect_apple_midi 5004, packetSize is 16 End Session for ssrc 0x81775105, initiatorToken = 0x0 Disconnected Purging left 16 bytes
I'm not sure if it matters, but i'm using "vmpk" to generate the note. http://vmpk.sourceforge.net
Here's an output of the Note Off packet that is being sent.
No. Time Source Destination Protocol Length Info 4575 329.513179000 10.0.1.168 10.0.1.167 RTP-MIDI 68 Note Off (c=1, n=C2, v=0)
Frame 4575: 68 bytes on wire (544 bits), 68 bytes captured (544 bits) on interface 0 Interface id: 0 (en5) Encapsulation type: Ethernet (1) Arrival Time: Sep 25, 2014 13:41:44.634292000 PDT [Time shift for this packet: 0.000000000 seconds] Epoch Time: 1411677704.634292000 seconds [Time delta from previous captured frame: 0.135895000 seconds] [Time delta from previous displayed frame: 0.135895000 seconds] [Time since reference or first frame: 329.513179000 seconds] Frame Number: 4575 Frame Length: 68 bytes (544 bits) Capture Length: 68 bytes (544 bits) [Frame is marked: False] [Frame is ignored: False] [Protocols in frame: eth:ethertype:ip:udp:applemidi:rtp:rtpmidi] [Number of per-protocol-data: 1] [Real-Time Transport Protocol, key 0] [Coloring Rule Name: UDP] [Coloring Rule String: udp] Ethernet II, Src: Apple_9d:e4:d6 (68:5b:35:9d:e4:d6), Dst: GheoSa_0f:bb:36 (90:a2:da:0f:bb:36) Destination: GheoSa_0f:bb:36 (90:a2:da:0f:bb:36) Address: GheoSa_0f:bb:36 (90:a2:da:0f:bb:36) .... ..0. .... .... .... .... = LG bit: Globally unique address (factory default) .... ...0 .... .... .... .... = IG bit: Individual address (unicast) Source: Apple_9d:e4:d6 (68:5b:35:9d:e4:d6) Address: Apple_9d:e4:d6 (68:5b:35:9d:e4:d6) .... ..0. .... .... .... .... = LG bit: Globally unique address (factory default) .... ...0 .... .... .... .... = IG bit: Individual address (unicast) Type: IP (0x0800) Internet Protocol Version 4, Src: 10.0.1.168 (10.0.1.168), Dst: 10.0.1.167 (10.0.1.167) Version: 4 Header Length: 20 bytes Differentiated Services Field: 0x00 (DSCP 0x00: Default; ECN: 0x00: Not-ECT (Not ECN-Capable Transport)) 0000 00.. = Differentiated Services Codepoint: Default (0x00) .... ..00 = Explicit Congestion Notification: Not-ECT (Not ECN-Capable Transport) (0x00) Total Length: 54 Identification: 0x9182 (37250) Flags: 0x00 0... .... = Reserved bit: Not set .0.. .... = Don't fragment: Not set ..0. .... = More fragments: Not set Fragment offset: 0 Time to live: 64 Protocol: UDP (17) Header checksum: 0x0000 [validation disabled] [Good: False] [Bad: False] Source: 10.0.1.168 (10.0.1.168) Destination: 10.0.1.167 (10.0.1.167) [Source GeoIP: Unknown] [Destination GeoIP: Unknown] User Datagram Protocol, Src Port: 5005 (5005), Dst Port: 5005 (5005) Source Port: 5005 (5005) Destination Port: 5005 (5005) Length: 34 Checksum: 0x1782 [validation disabled] [Good Checksum: False] [Bad Checksum: False] [Stream index: 20] Real-Time Transport Protocol [Stream setup by AppleMI (frame 109)] [Setup frame: 109] [Setup Method: AppleMI] 10.. .... = Version: RFC 1889 Version (2) ..0. .... = Padding: False ...0 .... = Extension: False .... 0000 = Contributing source identifiers count: 0 0... .... = Marker: False Payload type: rtp-midi (97) Sequence number: 62022 [Extended sequence number: 62022] Timestamp: 50283288 Synchronization Source identifier: 0x81775105 (2172080389) RFC 4695/6295 RTP-MIDI 0... .... = B-Flag: Short Header: 1 octet .1.. .... = J-Flag: Journal present ..0. .... = Z-Flag: No Delta-Time for first MIDI-command ...0 .... = P-Flag: Status byte was present in original MIDI-command .... 0011 = Command length (short): 3 Command Section Note Off (c=1, n=C2, v=0) 1000 .... = Channel Status: Note Off (0x08) .... 0000 = Channel: Channel 1 (0x00) .010 0100 = Note: C2 (36) .000 0000 = Velocity: 0 Journal Section 0... .... = S-Flag: Journal encodes data in preceding RTP-packet .0.. .... = Y-Flag: System-journal NOT present ..1. .... = A-Flag: Channel-journal present ...0 .... = H-Flag: Standard Encoding .... 0000 = Total channels: 1 channel (0) Checkpoint Packet Seqnum: 62021 Channel-Journal Channel 1 0... .... .... .... .... .... = Channel-Journal S-Flag: Journal encodes data in preceding RTP-packet .000 0... .... .... .... .... = Channel: Channel 1 (0x000000) .... .0.. .... .... .... .... = Channel-Journal H-Flag: Standard Encoding .... ..00 0000 0111 .... .... = Channel-Journal-Length: 7 .... .... .... .... 0... .... = Channel-Journal TOC-P-Flag: Chapter P journal NOT present .... .... .... .... .0.. .... = Channel-Journal TOC-C-Flag: Chapter C journal NOT present .... .... .... .... ..0. .... = Channel-Journal TOC-M-Flag: Chapter M journal NOT present .... .... .... .... ...0 .... = Channel-Journal TOC-W-Flag: Chapter W journal NOT present .... .... .... .... .... 1... = Channel-Journal TOC-N-Flag: Chapter N journal present .... .... .... .... .... .0.. = Channel-Journal TOC-E-Flag: Chapter E journal NOT present .... .... .... .... .... ..0. = Channel-Journal TOC-T-Flag: Chapter T journal NOT present .... .... .... .... .... ...0 = Channel-Journal TOC-A-Flag: Chapter A journal NOT present Channel-Chapters Note on/off 1... .... .... .... = Chapter N B-Flag: Standard journal behaviour .000 0001 .... .... = Chapter N Length: 1 .... .... 1111 .... = Chapter N Low: 15 .... .... .... 0001 = Chapter N High: 1 Log List Note On (n=C2, v=61) 0... .... = Chapter N Log S-Flag: Journal encodes data in preceding RTP-packet .010 0100 = Chapter N Log Note: C2 (36) 0... .... = Chapter N Log Y-Flag: Skip Note-On .011 1101 = Chapter N Log Velocity: 61
0000 90 a2 da 0f bb 36 68 5b 35 9d e4 d6 08 00 45 00 .....6h[5.....E. 0010 00 36 91 82 00 00 40 11 00 00 0a 00 01 a8 0a 00 .6....@......... 0020 01 a7 13 8d 13 8d 00 22 17 82 80 61 f2 46 02 ff ......."...a.F.. 0030 43 18 81 77 51 05 43 80 24 00 20 f2 45 00 07 08 C..wQ.C.$. .E... 0040 81 f1 24 3d ..$=
Looking deeper into the code it looks like the decode_channel_journal function is commented out, and so channel journal info isn't being processed or added to the total offset that is set to be purged.
Oh, looks like channel and chapters aren't being processed at all, as several functions appear commented out, and overall it's incomplete.
Indeed, no journaling - due to the lack of documentation on Apple's side...... I have never run into a situation where journaling is needed, and have no useful specs (there are some doc around, on RTP, but not useful for programming - the wireshark filter also doesn't do journaling) . I suggest you open an issue for that. Feel free to contribute.
I don't really need journalling support, but as I said it isn't purging the NoteOff packet completely. I don't know enough C++ to fully understand how to fix the problem. Without NoteOff support I can't use this at all to receive midi information. :(
My misunderstanding, I understood it broke because of journaling (amd that confused me, because that is not used). Let me go through the log with a fine comb, I should be able to find it (unfortunately little time this week)
Ok, I think I found the problem. The packet dissector is kicked off before all the bytes have been added to the buffer, and on packets that contain the journaling this leaves garbage in there. Also the way the calculations were being made for the journal packet length was off, so I just added a hack in there so it trashes the entire journal section. I also added the callouts for those sections, so maybe callbacks can be added for them in the future. I'm putting this in a branch and making a pull request.
Opened pull request #9
accepted pull request
Found your library and have being playing around for a coupe of days and think I have discovered a bug? This seems like a great library and keen to understand if I'm doing something wrong or found a bug.
In the debug mode I'm getting the following output.
My code is very simple (based on the sample provided) and sending a midi noteOn (90 00 7f) when it receives a noteOn (90 00 00). I have tried both send the noteOn message in the OnAppleMidiNoteOn callback and outside the callback. My plan is to build a HUI emulator and keen to get the HUI protocol ping working.
Wireshark log below (never used this tool before so hope everything looks alright)
You'll note that I'm using a virtual Keyboard to send the initial noteOn message and therefore the keyboard is also sending a note off message which pro tools doesn't do.
Thanks for your help Dave