These are chat archives for brunchboy/afterglow

16th
May 2017
James Elliott
@brunchboy
May 16 2017 04:56
@awwright Wow, there is so much in this code, and it is rough going for me since I am not familiar with Node, and have mostly avoided JavaScript, but I can already tell it is going to make Beat Link so much better! I did not even know about the packets sent to port 50001, which will make sync far more precise, and you have filled in some missing values for me in DJMDevice.playStateMap. (Although I know the meaning of some values that are missing in libdjm.js: 0 means no track is loaded, 4 means a loop is playing, and 17 means the end of the track has been reached and the player has stopped.)
Austin Wright
@awwright
May 16 2017 18:00
@brunchboy Austin Wright is fine
I would probably choose a different name for Kibble{foo} now, maybe Field or something
But the good thing about nonsense names is it doesn't matter
Austin Wright
@awwright
May 16 2017 18:05
@brunchboy Also I don't think it's very clear in there, my library has an option to listen for copies of packets sent to it over a TCP channel in a TZSP-like format; it's not something native to any Pioneer device.
To generate the copies of the packets I have 5 USB-Ethernet adapters plugged into a Linksys router running a C program.
That's actually one way I was able to capture data on a 4-CDJ job, except it doesn't capture any data from the device the USB is plugged into (of course)
James Elliott
@brunchboy
May 16 2017 19:08
It took me a while to figure out what the heck that TZSP stuff was, yes, but I thought that was very clever!
Another byte you may want to look at is 0x89 in the packets the CDJs send to port 50002. I call it F in the protocol analysis, and it is a bit field with interesting status values for the player, including Play, Master, Sync, and On-Air bits.
Austin Wright
@awwright
May 16 2017 20:40
For the paper it'd probably be useful to describe the packet formats in terms of a C struct, and endian-ness. Perhaps "uint32BE byte[0..3]"
You'll notice that multi-byte numbers area always aligned (like a C struct), 32-bit integers are going to start on byte 0, 4, 8 etc.