Stagelinq protocol API availability? (Part 2)

Nice!

Not every time. Generally if the app crashed due to the WiFii being turned on then it will startup the next time with this error.

EDIT: So I have realised that with WiFi set to on the app crashes after around 30 seconds. With the WiFi set to off, I get the javascript error and the settings are either blank or default.

I didn’t realise that Unbox had gone pay only now. Maybe this is the problem as I don’t have an account. There is only the option to ‘go pro’ now on step 4 with only a ‘back’ button on screen.

Ah that makes sense, it’s failing to set the IP Address in the config store since you’re briefly disconnected from your network and the IP can’t be found. I’ll put in a check here that allows you to fall back to localhost / avoid this popup. When you turn the WiFi off does your computer connect via Ethernet?

Oh Unbox’s core desktop features are still free for y’all, a subscription gets you access to the Twitch Panel extension / real-time db, but not having one won’t cause any issues.

1 Like

Haha would love to get some Denon gear too

@MrWilks Just updated Unbox to handle being offline, you can download here: https://github.com/erikrichardlarson/unbox/releases/download/10.0/unbox_mac_intel.zip

1 Like

@erikrichardlarson on my primego I set both mixer faders at 100% and set the crossfader to channel 2. It reports:

[10:17:49] [LOG] /Engine/Deck1/ExternalMixerVolume => {"type":0,"value":0}
[10:17:49] [LOG] /Engine/Deck2/ExternalMixerVolume => {"type":0,"value":1}
[10:17:49] [LOG] /Mixer/CrossfaderPosition => {"type":0,"value":1.2599999904632568}

When sliding the crossfader all the way to the left (channel 1) it reports:

[10:17:51] [LOG] /Mixer/CrossfaderPosition => {"type":0,"value":0.009999999776482582}
[10:17:51] [LOG] /Engine/Deck1/ExternalMixerVolume => {"type":0,"value":1}
[10:17:51] [LOG] /Engine/Deck2/ExternalMixerVolume => {"type":0,"value":0}
[10:17:51] [LOG] /Mixer/CrossfaderPosition => {"type":0,"value":0}

And the mid-way point:

[10:20:17] [LOG] /Engine/Deck1/ExternalMixerVolume => {"type":0,"value":1}
[10:20:17] [LOG] /Engine/Deck2/ExternalMixerVolume => {"type":0,"value":1}
[10:20:17] [LOG] /Mixer/CrossfaderPosition => {"type":0,"value":0.6499999761581421}

Hope this helps?

I also pushed a small fix (fixed issue when there is no album art) and the ability to disable the filetransfer service (--disableFileTransfer).

We moved the bug discussion to Github:

Thanks! If you’ve got some Prime gear to try it on, let me know how it goes!

1 Like

I tried it out with 2xSC5000+X1800 combination and it only displays the currently playing track information and channel fader status from either one of the players but not both, depending on which player the app detected first when it started.

Ah, yes, the way it is written (currently) is that it tries to connect to the first device endpoint it can find that provides a StateMap service. If you turn off that device, it will connect to the next device and just continue on until it either finds a StateMap endpoint or no more devices exist.

I’ll see about adding better instrumentation to map out supported StateMap values for each device. With that information, I could probably figure out which devices provide which StateMap attributes. (I’m assuming the players know what song is loaded and playing, but only the mixer device knows the fader positions?)

To support more than the all-in-one Prime controllers, I’d definitely need to rewrite this so it can connect to multiple devices at once rather than just connecting to the first thing it can find.

@kkirjala - Here’s a new version with a “probe” command added.

You can run it like this:

./denonctl probe --log.level debug

It should try to connect to each device advertising a StateMap and subscribe to all 206 possible state values (that we know of according to what is present in the Go stagelinq library). It will then wait 5 seconds for a response to all of the statemap probes and dump anything it gets back as a debug log message.

It will be interesting to see what devices offer StateMap in your setup and what subscription values are valid. This should aid in figuring out how to “stitch” together multiple devices into one view in order to [hopefully] provide the “Now Playing” functionality for multiple devices one day.

You can paste the output here (it’ll be long) or you can email it to me (mhite@hotmail.com).

This is just a thought, but would it be a totally stupid idea to try to contact someone at Denon / inMusic and try to get them to release the official API specification? I mean, the more third-party software there is that can interact with the Denon Prime series equipment the more devices they’re going to sell, and not doing the same that Pioneer has done (keeping the ProDJ Link API spec secret) would bring Denon a competitive advantage.

Has anyone tried to reach out to the right people at inMusic to initiate a discussion?

2 Likes

Hey @erikrichardlarson,

Would you happen to be able to provide instructions to build the electron app for Unbox? I’ve got some time on my hands, I’d like to take a crack at some issues / features.

I’ve got my build environment ready, just need to know what you’re actually running to turn the code into an electron app.

Thanks!

I think this is a great idea, I’ll reach out to someone and report back what I can find out.

Yeah no problem, are you on Mac or Windows?

Im on mac, I can do builds on either M1 or Intel mac.

Nice Mac has been easier for me, you can run electron-builder --mac --x64 and electron-builder --mac --arm64 for Intel and M1 respectively. You might need to rebuild the native dependencies before building the app, you can do that with: GitHub - electron/electron-rebuild: Package to rebuild native Node.js modules against the currently installed Electron version

Just let me know if you run into any issues.

Cool! I was able to get it to build, but it looks like maybe im missing a style dependency? See the screenshot:

Other than the style it works :laughing:

Haha oh yeah will send you the styles

I reached out to the Director of Engineering at inMusic, we’ll see if he gets back to me haha

3 Likes

does anyone tried to hack these ?
[14:36:00] [INFO] port: 34067 => TimeSynchronization [14:36:00] [INFO] port: 37943 => BeatInfo Thanks

Just wanted to let those following this thread know that I’ve been making nice progress with my “now playing” app efforts. Check out a sneak peak here:

You can find the documentation and a link to join the alpha program on the same web site.

3 Likes