Deep-Symmetry / dysentery

Exploring ways to participate in a Pioneer Pro DJ Link network
Eclipse Public License 1.0
198 stars 24 forks source link

Fader Start packet #7

Closed ErikMinekus closed 6 years ago

ErikMinekus commented 7 years ago

I didn't see anything about Fader Start in the analysis, but I found the actual packet in libpdjl. Without having to announce a mixer on the network, I was able to get an XDJ-1000MK1 to start playing or jump back to the active cue, just by broadcasting the following packet on port 50001:

51 73 70 74 31 57 6d 4a 4f 4c 02 00 00 00 00 00
00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
00 D  00 04 F1 F2 F3 F4

Where D is the mixer channel (0x21), and F1 to F4 can be any of these values for each player:

Value Action
0x00 If the player is cued up, start playing
0x01 if the player is playing, stop playing and jump to the active cue
0x02 Do nothing for this player

It would be great to have a VirtualDjm class in beat-link to be able to send these packets, for the people that don't have a DJM with PRO DJ LINK.

brunchboy commented 7 years ago

Hi, Erik! I have noticed bits and pieces in libpdjl about controlling playback, and definitely plan to explore that someday. I will leave this issue open as a reminder about this particular aspect. (I am also interested in eventually emulating a player in enough detail that it can become the tempo master, for example.)

I am a little confused about your explanation, though, and the meaning of F1 through F4. Am I correct in assuming that if F1 was 0, F2 was 1, F3 was 2, and F4 was 0, it would cause players 1 and 4 to start playing, player 2 to jump to its cue point, and player 3 would be unaffected?

Thanks for the information!

ErikMinekus commented 7 years ago

Correct, it works as you would expect from Fader Start.

Edit: I've edited the first comment to make the actions more clear.

brunchboy commented 7 years ago

I’ve never used Fader Start as a DJ, so I don’t really have expectations of how it would work. But thanks for the confirmation.

brunchboy commented 6 years ago

Thanks again, @ErikMinekus, I have finally incorporated this information into dysentery, and will add some methods to Beat Link to send these messages as part of the work I am doing right now which supports becoming tempo master.

DerSpatz commented 6 years ago

I am a bit confused: @ErikMinekus writes that the CDJ jumps to the active cue if it is stopped by a packet (command 0x01), but in the Analysis document it only says the CDJ stops... Which one is right?

ErikMinekus commented 6 years ago

It acts as the Cue button, so it stops playing and jumps back to the active cue.

brunchboy commented 6 years ago

That’s correct. I’ll take a look at the analysis and see about improving the wording, thanks!

DerSpatz commented 6 years ago

Thank you for clearing this up! I ask in particular because this would make syncing CDJs to external clock (like Ableton Link) much easier: When a CDJ starts playing, stop it, it gets back to the cue point, then start it again on the next bar.

brunchboy commented 6 years ago

What I do is send my own beat and status packets based on the Ableton Link timeline, and become the tempo master for the CDJs. The user interface is described here and the implementation is in the BeatSender and VirtualCdj.