Since night clubs and festivals are a no go there's a lot more live streaming going on by DJs. I'm always on the look out for great music, and it's always a struggle when a DJ misses your ID request in the chat. Or of-course, when you're the one DJing and you just don't have time to type it out :)
Technically the software covers a _lot_ of the stack
* Reverse engineered Pioneer DJ gear's proprietary low-level network protocol to masquerade as one and receive state updates from the physical DJ gear on the network. The implementation is a typescript library [0].
* Implements a NFS client in typescript to download the music metadata database off of the USB drives DJs plug into the DJ gear.
* Uses kaitai-struct [01 to generate parsing code for the (very old) DeviceSQL database files that the music database use.
* The application is built as an electron app, react + emotion (styled-components) + framer-motion (animated components), and mobx with serializr to handle IPC between the main thread and renderer.
* Uses websockets with the same serialization driver to communicate updates to the overlay browser window which is rendered in OBS (or another livestreaming studio software)
I've just started working on an API backend for it as well, where the same serialization backend is used to publish users app store to a central server which will be useful for features like "Live user track voting", where you pick a playlist on your gear to expose to users, and they can vote on tracks.
https://prolink.tools
Since night clubs and festivals are a no go there's a lot more live streaming going on by DJs. I'm always on the look out for great music, and it's always a struggle when a DJ misses your ID request in the chat. Or of-course, when you're the one DJing and you just don't have time to type it out :)
source: https://github.com/evanpurkhiser/prolink-tools example overlay: https://www.youtube.com/watch?v=4rvdzTYK29E
Technically the software covers a _lot_ of the stack
* Reverse engineered Pioneer DJ gear's proprietary low-level network protocol to masquerade as one and receive state updates from the physical DJ gear on the network. The implementation is a typescript library [0].
* Implements a NFS client in typescript to download the music metadata database off of the USB drives DJs plug into the DJ gear.
* Uses kaitai-struct [01 to generate parsing code for the (very old) DeviceSQL database files that the music database use.
* The application is built as an electron app, react + emotion (styled-components) + framer-motion (animated components), and mobx with serializr to handle IPC between the main thread and renderer.
* Uses websockets with the same serialization driver to communicate updates to the overlay browser window which is rendered in OBS (or another livestreaming studio software)
I've just started working on an API backend for it as well, where the same serialization backend is used to publish users app store to a central server which will be useful for features like "Live user track voting", where you pick a playlist on your gear to expose to users, and they can vote on tracks.
[0]: https://github.com/EvanPurkhiser/prolink-connect [1]: https://kaitai.io/