psieg / Lightpack

Lightpack and Prismatik open repository
GNU General Public License v3.0
1.56k stars 188 forks source link

Support for Chroma Connect #251

Open RZ-ayush-sharma opened 5 years ago

RZ-ayush-sharma commented 5 years ago

Hello,

This isn't an issue as such. I'm the product owner for Razer Chroma and a bunch of people from enthusiast community named Prismatik as an app they would like to see working with Chroma Connect. Let me know if you'd like to collaborate, and we'll ship you some hardware to get you started right away.

The best way to reach out to me is email - ayush(dot)sharma(at)razer(dot)com

For reference, Chroma Connect is an initiative to allow users to sync all their RGB devices, smart lighting etc from using dynamic in-game integration to changing custom lighting profiles with a single click.

https://www.youtube.com/watch?v=53YgibWO3zE

Cheers!

zomfg commented 5 years ago

Hi,

Are you talking about the HDK? (btw, the name made me think it's not an actual product) Which, if placed behind the screen would make sense, and might be reasonably "simple" to implement. Although after a quick look at your C++ SDK I don't see a namespace related to it.

...or are you talking about the entire Chroma device ecosystem? Which seems super non-trivial because it could be any device in any configuration in any location around the battlestation. The keyboard could be assumed to be at bottom-center of the screen, but the mouse/pad could be on either side (or worse, I use mine in the middle, under the keyboard most of the time), and everything else is pretty random.

For static colors (and some mood lamp stuff) this is a non-issue, but I assume that's not why people would like Prismatik to work with Chroma.

...ooor are you talking about doing it the other way round and making Lightpack/Adalight devices compatible with Chroma? Which is a whole other can of worms.

(I'm just a semi-random guy fishing for info here, don't take this as an engagement of any sort... for now at least) and kudos for listening to your community!

RZ-ayush-sharma commented 5 years ago

...ooor are you talking about doing it the other way round and making Lightpack/Adalight devices compatible with Chroma? Which is a whole other can of worms.

^ This one. And it's actually SUPER easy to implement using the APIs we've created (as easy as getting RGB values using a single function call, and then using them as you please). A couple hours work, maybe.

The idea is that Prismatik would still the go-to for Bias lighting scenarios, but Razer Chroma has custom effects and dynamic in-game lighting (such as this) which isn't available to Prismatik's target hardware today. And there's plenty of such hardware devices which rely on Prismatik as their primary software control center.

Are you talking about the HDK? (btw, the name made me think it's not an actual product) Which, if placed behind the screen would make sense, and might be reasonably "simple" to implement. Although after a quick look at your C++ SDK I don't see a namespace related to it.

There is a namespace for the HDK in our SDK, but we haven't added it to the public documentation (primarily because no one was using it, and it made the documentation more intimidating). If there is any interest in adding the HDK to Prismatik for bias lighting and such, I'm happy to support that as well.

zomfg commented 5 years ago

^ This one

Aah, in that case, you can already easily achieve this by using Prismatik's API through a (network) socket. Here's the documentation. So you can add it in a similar fashion to your Hue integration, but simpler in some ways, and it all stays centralized in Synapse for your customer's convenience. It doesn't have all of the (last) features exposed (yet), but what is exposed should cover this use case, and if need be.. You can get Prismatik and start testing it right now with a virtual device (if you don't have arduinos and led strips laying around).

There is a namespace for the HDK in our SDK, but we haven't added it to the public documentation

Well, do show it, who knows... And I see you have ChromaEmulator, does it have the HDK?

RZ-ayush-sharma commented 5 years ago

Aah, in that case, you can already easily achieve this by using Prismatik's API through a (network) socket. Here's the documentation. So you can add it in a similar fashion to your Hue integration, but simpler in some ways, and it all stays centralized in Synapse for your customer's convenience.

I know it can be done technically, but there would be legal/business hurdles in implementing it into Synapse itself.

Chroma Connect also allows for centralized controls within Synapse, so that isn't a concern in either scenario.

Well, do show it, who knows... And I see you have ChromaEmulator, does it have the HDK?

I'll ask our engineers to make the HDK documentation public again. The Chroma Emulator doesn't have special devices like the Chroma HDK, only KB/Mouse/Headset.

zomfg commented 5 years ago

I know it can be done technically, but there would be legal/business hurdles in implementing it into Synapse itself.

Interesting, how come? The way I see it, this is the least legally and technically intrusive method:

How did you go about adding Hue?

Chroma Connect also allows for centralized controls within Synapse, so that isn't a concern in either scenario.

So can I declare my random piece of software as an RGB chair for ex, and Synapse would detect it and run with it automagically? How do you manage device-type specific icons for example? Or it's limited to KB/Mouse/Headset and you have your own baked-in assets for those?

I'll ask our engineers to make the HDK documentation public again.

Great

The Chroma Emulator doesn't have special devices like the Chroma HDK, only KB/Mouse/Headset.

Bummer, that would've helped with a quick proof of concept, before needing to ship the real deal across the world for testing. Unless the HDK API is similar to the Keyboard one, given their relatively comparable number of LEDs (HDK with 4 strips).

psieg commented 5 years ago

I too don't clearly see the implementation you have in mind. Your idea is that Prismatik would load some chroma library and register itself as a device and then keep retrieving updated colors? How would the switch to bias lightning happen?

Chroma does not capture the screen, correct? I'm not sure what people mean when they say they want "Chroma to work with Prismatik". I would think people don't want to give up the matching of screen contents, so what I'd imagine is having regular bias lightning in game and then the chroma effect on top e.g. when collecting a health pack or whatever.

RZ-ayush-sharma commented 5 years ago

How did you go about adding Hue?

We have a long-term technical and strategic partnership with Philips, and were the exclusive launch partners for Philips' EDK.

I'm not a legal guy, but I understand there are boilerplate legal sign-offs we require to add any "external" hardware into Synapse (about liabilities, usage rights, marketing/communications and so-on). Being a corporate entity, Razer has to operate in a slightly different manner than an indie dev could, for example.

So can I declare my random piece of software as an RGB chair for ex, and Synapse would detect it and run with it automagically? How do you manage device-type specific icons for example? Or it's limited to KB/Mouse/Headset and you have your own baked-in assets for those?

We don't show device specific icons in Synapse. We use an abstract grid (see here) which can be mapped on to different form factor devices. The idea is not to be the last word in terms of configuration (not yet anyways), but to provide a unified interface for controlling/syncing, and allow access to our dynamic in-game Chroma lighting to everyone to multiple RGB platforms.

I too don't clearly see the implementation you have in mind. Your idea is that Prismatik would load some chroma library and register itself as a device and then keep retrieving updated colors? How would the switch to bias lightning happen? Chroma does not capture the screen, correct? I'm not sure what people mean when they say they want "Chroma to work with Prismatik". I would think people don't want to give up the matching of screen contents, so what I'd imagine is having regular bias lightning in game and then the chroma effect on top e.g. when collecting a health pack or whatever.

The service itself would just provide you RGB values, it does not take over the hardware completely. You can enable/disable, or layer Chroma RGB values on top of the bias lighting layer if you like. Please reach out to me over email, and I will share a nice illustrated summary about Chroma Connect which should help paint a clearer picture.

zomfg commented 5 years ago

I took another look at the SDK and samples and it looks like it's all about animating peripherals. I don't see how to make my random software declare itself as Chroma-compatible and how to read RGB values to pass them onto the device.

RZ-ayush-sharma commented 5 years ago

Chroma Connected devices program is invite-only. It's a different set of APIs from the Chroma SDK that you studied and its documentation is not made available publicly.

zomfg commented 5 years ago

Ah, so is there some kind of NDA? How would that work with an open project such as Prismatik, with implementation being exposed here and potentially the SDK itself in automated builds? And different people being able to work on it?

RZ-ayush-sharma commented 5 years ago

Probably has to be an external DLL of sorts (maybe a plugin) and the open-source code can sit on top of that. Open to suggestions on the "how" part, really.

ntreik commented 5 years ago

not having a clue about proggramming or how to help, just signed in to tell you how much i want this to happen. Razer ledstrip will cost too much with customs to Greece and my only hope was something like this!

psieg commented 5 years ago

@ntreik as a user, what do you imagine happening with this combination? Can you describe what you want to light up according to what?

@ayush could you please link to some posts of users requesting this integration? I'm still not sure which way people want colors to go...

zomfg commented 5 years ago

The way I understand it, they want Prismatik to just be the proxy between Synaptic and the device, and simply display whatever is sent (so no grabbing etc)

ntreik commented 5 years ago

Hi, thank you for asking! I imagine there would be a 4th mode (beyond screen grab, mood lamp, music visualizer) something called chroma connect. When enabled it will allow synapse 3 to take over and use all razer effects and all gaming profiles. I dont think that screen grab should work at the same time with razer connect, its compicated and it may lag. This should be easier to implement i think. Also somehow synapse should read the number of leds and allow addressable led changing. This pretty much sums it up! Hopping to see it live!

RZ-ayush-sharma commented 5 years ago

@psieg looks like you tagged the wrong person ;)

@ntreik basically summed up the intent of Chroma connect. The primary purpose is to be able to sync lighting with other peripherals (in-game and outside).

Also somehow synapse should read the number of leds and allow addressable led changing.

That part will definitely not happen. Chroma connect a one-way broadcast of RGB values from Synapse to external applications (Prismatik in this case). It doesn't detect LED layouts of the devices.

ntreik commented 5 years ago

Great! Them maybe you can make it a universal 4 part device for each side of a screen if possible! Everyone will have at least 4 leds and surely 4 sides covered

ntreik commented 5 years ago

Is there any possibility implementing prismatik with chroma?? :(

Hukuma1 commented 3 years ago

Bump? Would be amazing. Much like Hue and Yeelight now have Chroma Connect plugins.