Elgato Stream Deck?

Scott Findley's icon

Hello max friends!

As like many of you are Im sure, I am constantly on the lookout for new and interesting human-interface peripherals which might could be noodled upon within max. picked up one of these badboys, a little usb button controller with SCREENS for buttons! Really cool, and theres already a C++ / node,js lib available for it.. sadly though, max's 'hi' object cant see it, and Ive found no other way to interface with it other than assign keboard presses to the buttons in its propriatary editor and workin it that way, which obviously leaves a lot of functionality on the table.

Curious though has anybody played around with them or integrated them into max in any meaningful way? seems it could be a really great tool for all kinds of maxy things..
https://www.elgato.com/en/gaming/stream-deck

What kind of work would be involved in creating a max external which interfaces this lil guy?

Inquiring minds want to know!

Love,

s

Scott Findley's icon

No love for the stream-deck?

FriFlo's icon

Some love from me! :-) I was just looking for old keys, that can change their look. As it is, this device would not be very useful to me. However, if it was possible to change the screens on each key via Max MSP, that would be very useful! I am just not very experienced with these kind of thing, thus, I cannot be of any help ...

Scott Findley's icon

That is the idear! But I dont know C++ or have any experience developing externals much less integrating a 3rd party SDK.

Buy if anyone did, I think itd be a great asset to the max community - new features with each passing release, you can really do some interesting things with this lil guy.

FriFlo's icon

Sorry, but I have to bump that topic, as the potential is just crazy IMO and the device is pretty inexpensive compared to OLED keys ...
It is clearly possible to make the stream deck change its buttons:
https://github.com/Lange/node-elgato-stream-deck
or ...
https://www.youtube.com/watch?v=tNwUG0sPmKw
I would like to get into programming, as I wanted to do that anyway. How daunting as a first project would that be? I guess I have to start easier ... hello world! ;-)

Florian Demmer's icon

Hey,
one idea that could allow you to play around with it and test it, although with a bit of coding, would be to use the aforementioned Node API Implementation via node.script. Given that I don’t have such a device I only Looked at the Github repository in a more „theoretical“ way but yeah, ideally it might just work and could allow you to integrate it. As said, still some coding necessary but I guess way less than for a dedicated external or it could help understanding the way one interfaces with the device.

Happy to help with any questions if you guys decide to play around with that.

Florian

FriFlo's icon

https://www.youtube.com/watch?time_continue=83&v=bL4YZsWI4Bo
Seems like there is an SDK available now. That should make it easier to integrate it into Max, right?

FriFlo's icon

A slight bump ... Now, there is a bigger version (XL) with even more buttons and a software version for tablets available. I still hope, there could be an interface to be able to change pictures and connect with Max! Looks like a very cool controller to me! Full dynamic labeling, but haptic feedback - unlike tablet controllers like Lemur or Mira.
https://www.elgato.com/de

Scott Findley's icon

Im starting to futz around with this now.. but I am by no means skilled in the mysteries of node.js / js.. but my resolve is strong! If I get anywhere meaningful Ill update!

FriFlo's icon

Great!

Scott Findley's icon

Hello max home doggies,

I am pleased to report that I have found a solution for communicating w/ max. Theres a plugin for SD, called 'companion' which instanciates a server which can send/receive TCP/IP, and OSC messages among other things. Ive got the stream deck talking to max so far, and Im in the process of mapping the buttons etc. (there are 99x virtual 'pages' of buttons and you have to use a web interface to do them all.. kind of time consuming! lol.

My plan is to then integrate the stream deck with ableton b/w of Max4Live, I have an existing device which I use for live production work, which does a bunch of stuff, hotkeys, stop groups, playlists, random 'genre' plays etc.. that Id like to use my streamdeck with!

Once Im done with that, Theres quite a few titilating possibilities.. like clip presence (auto color fill buttons with presence-of-clip/ lack-thereof, auto populate colors of said clips, bank changes could move the big red square to appropriate 'banks' within abes... Im going to be a busy boy it would seem.

I will post a patcher with the mapped buttons as soon as done though, so you'all can noodle away to your hearts content.

Victory is mine! Cheers!

weirdcore's icon

Hi Scott
did you get anywhere with that SD patcher?
as i recently got an SD, mainly to use with c4d, after effetcs & premiere, which with those apps the SD works like a dream with hotkeys,, but with max, i came accorss the exact same problems you initially had.
i just got that Companion plugin which defenitly looks promising, but now really feels like jumping at the deep end for the simple commands i wanted to do with max/SD
so any tips/patche on getting started with companion/SD/max,, would be beyond appriciated,,,
thanks
Nick

Eldar Sadykov's icon

Also there is a subscription based Soundflow app, which makes everything you need (feedback through midi, osc, window focus, application activation etc.) But it is $9.99 a month... Too much for me :/

Matthew Pierce's icon

I have finally figured out two way control between max and streamdeck using Companion and OSC messages.
https://bitfocus.io/companion
You can set up Companion to send OSC messages and receive messages in max using udpreceive object.
To send from max to the streamdeck, use udpsend object in max using the info in the attached screenshot:


Scott Findley's icon

Hey, Yes! I too eventually discovered companion and have been using it reliably for a while now on live tv stuff. I trigger clips and macros by sending UDP messages to max, then to ableton using the ableton API.

Its fast (near zero latency) and I love the multi-page interface. Very good. A lot of guys on the video side use this for real broadcast tv stuff. Bit of a 'secret weapon' in my view. Little bit of a custom-job setting it up but, isnt that half the fun? :)

There is now a plugin for streamdeck for midi control but I found it to be very laggy and pretty limited.

Glad you found it too!

FriFlo's icon

That sounds great! Is this also capable of setting the icons displayed in some way from Max?

Scott Findley's icon

Not that I know of, I did that within the companion app, and I found this method to be adequate and to my liking. You could always use the midi plugin for streamdeck and do your icons that way, but you wouldnt get the multipage system that companion uses and that is cricial to me so I went with companion

FriFlo's icon

What I mean is: Can you send anything (e.g. OSC) to that companion app to make it change the icons on display? I want to use streamdeck to do key switches for sample libraries. I can convert the outgoing OSC to midi in Max, but can I also decide from Max, which Icons are shown on what key? It is ok if I have to set all the Icons in the companion app, but I want to be able to decide per key what it shows (from a collection of icons saved in companion). Is that possible?

Eldar Sadykov's icon

You can definitely change background color and displayed text (and it‘s color) of a button via OSC, but there is no way (as far as I know) to choose one of preloaded icons.

Here are the commands (from documentation):

OSC Remote Control

Remote triggering can be done by sending OSC commands to port 12321.

Commands

  • /press/bank/ <page> <bank>
    Press and release a button (run both down and up actions)

  • /press/bank/ <page> <bank> <1>
    Press the button (run down actions and hold)

  • /press/bank/ <page> <bank> <0>
    Release the button (run up actions)

  • /style/bgcolor/ <page> <bank> <red 0-255> <green 0-255> <blue 0-255>
    Change background color of button

  • /style/color/ <page> <bank> <red 0-255> <green 0-255> <blue 0-255>
    Change color of text on button

  • /style/text/ <page> <bank> <text>
    Change text on a button

FriFlo's icon

Thanks for the hint! I will check it out. Looks pretty much like what I was looking for. Ok, if you cannot remotely change icons, it is not 100%, but if the text can be switched freely it is close enough.

Eldar Sadykov's icon

Personally I find Companion app not so flexible as it could and should be in terms of GUI and layouts: icons are 72x50-something instead of 144x144, no folders (only a fixed amount of pages), no easy key command support... But official app has no feedback functionality. Idk why does it takes so long to implement these obvious functions in one app...

Scott Findley's icon

Im pretty sure its developed by regular dudes who work in live production and develop it to suit those needs specifically. It is free as well, so hard to fault them for anything :) They seem to have a fairly active discord with tech questions and people who develop it seem happy and eager to answer any q's / requests