Gig Performer + Stream Deck extension v2.0

Hi everyone!

I’ve been working on an update to the Stream Deck extension for Gig Performer, and I have a first test version to share with you. This update should solve the most common annoyances that people have with the previous version, like being limited to one GP instance, and not being able to place songs freely on the grid.

What’s new:

  • Support for multiple instances of Gig Performer: If you run multiple instances, you can pick which instance a Stream Deck action talks to from the Stream Deck inspector.
  • Updates to Songs/Songparts/Rackspaces/Variations widgets:
    • Can now optionally be set to display a single fixed item, instead of automatically getting an item assigned based on left-to-right order. This means you can now place songs anywhere you like, without being limited by page size. You can also create multiple buttons assigned to the same item if you wish.
    • Songs/Songparts/Rackspaces/Variations widgets now have a “current” mode where they will always display the current active item. So you could have a widget on your Stream Deck that always shows the current song, for example. This also pairs nicely with the previous/next song buttons.
    • Both of these settings are found in the Stream Deck inspector
  • New Stream Deck widgets:
    • “Current Song Key” widget that always displays the key of the current song
    • “Label Widget” displays the text caption of a Gig Performer widget

If you want to help out with testing, the most tricky part of this is that the Stream Deck needs to remember the correct GP instance and song/songpart/rackspace/variation index, even if that instance of Gig Performer is closed, or that list of songs no longer exists. Then, if you reopen that instance or setlist, it should recover the values correctly. I think I got it right, but it can use more testing.

I’m also curious to see if the states of the songs/songparts/rackspaces/variations widgets are preserved correctly when updating from the previous version. I have not tested that yet.

GPStreamdeck-macOS-arm-v2-beta1.zip (8.7 MB)
GPStreamdeck-macOS-x64-v2-beta1.zip (8.8 MB)
GPStreamdeck-Win64-v2-beta1.zip (8.2 MB)

8 Likes

@mattpynn

I know you use the extension extensively. You may want to test this build.

Also: @pollupice , @steenole , @OldTimerBill , @Glen , @mikekcurtis , @RGSullivan , @gbaddis , @ZappaFrank , @TimHartnell , @Gregster , @madsgranum , @SteveC-Bome , @Florian , @xpansion, @Acidpreacher , @Chewie5150 , @gregjvincent .

Please test and share your suggestions/feedback! :slight_smile:

I’m interested to hear about how the extension is evolving. However, I just had the Stream Deck for a couple of weeks to test but then decided to stick to my custom iPad/OSC creation.

Well, I think the community is also interested in reading about this route, if you’d like to share it in another (dedicated) thread.

1 Like

I’m actually using the current 1.x release version live for the first time tonight. I’ll test it out after next weekends shows as I will have 13 days to the next gig.

X

1 Like

I have a stupid question, sorry about that.

What exactly does the extension do?

It provides direct integration with a stream deck device and GP. For example, you can control widgets, change between rackspace/setlist view, view and select songs and rackspaces/variations, control the global playhead, tap tempo etc.

Without the extension, the best you could do with a steam deck is use midi to control GP.

1 Like

Here is a little feedback, after running your plugin on Windows 11

Current song key: Please wrap the text. For instance “D#/Eb Minor” Does not fit in one line

Songs: “Current song” is nice. “Next song” and “Previous song” would also be nice, so that I can see the title of the next song is in advance. I Know it would do the same as the current “Next song” action, but it would add information to me.

BPM. Does not always reflect what is in Gig Performer. It changes sometimes, when I change the song, but not always.

At one point the StreamDeck ended up in some kind of “bad state”, where it was not in sync with the current song and available song parts. I am not sure how it ended up there, but I had to unplug the StreamDeck and plug it in again, to get it working again.

Just out of curiousity from a fellow developer. How do the StreamDeck plugin and the GP extension communicate? Using a websocket connection?

Another finding.

The “Label widget” is very useful, but it would be nice, if it could wrap long texts, just like song names are wrapped.

Would it be possible to combine this widget with an action, so that pressing the button could do something?

Thanks for the feedback! Purely by accident, I forgot to test #/b keys :man_facepalming:

The implementation is based on shared memory, through boost::interprocess. This gives us a very low-latency connection, and also allows us to use shared memory to identify the other running app more easily.

I have this planned now for next version:

  • Automatically merge text if adjacent buttons are showing the same text, instead of abbreviating
  • Fix BPM showing wrong value and state issues → I suspect there may be a small bug in my new changes to allow multi-instance communication, I’ll look into that. I’m not sure if I’ve ran into this bug yet myself though.
  • Add a “Previous song” and “Next song” option
  • Make label widget wrap around automatically
  • Possibly allow adding an action to a label button → I’ll see if I have time for this one, otherwise I’ll add it later
  • Fix #/b not fitting on button

I hope to finish that up somewhere this month, but I’ll give a better estimate when I start working on it.

3 Likes

Excellent. Looking forward to the changes.

One more idea: Could you make the BMP button flash, so it can be used as a metronome (optional of course). It would be nice to have as a reference for songs starting with keyboard alone.

1 Like

the extension is not copied to the gig performer extensions folder , and since its baked into the downloaded file I cannot add it myself .

the plugin for stream deck installs fine , but naturally it does not work.

I’m on macOS sequoia 15.6.1

I wonder why is that so :thinking:

Anyway, you can do some “hacking” and extract it manually: [blog] How to install and use the Stream Deck extension in Gig Performer - #150 by npudar

its working now , but the solution was just confusing .

i made a new folder called extensions in the shared/gig performer/ folder , since I realized it was not there , and when I did the .dylib file just appeared inside , like magic hehe .. I have no idea why , but its working now :slight_smile:

1 Like

The GP installer should have created the Extensions folder.
Are you running Gig Performer v5.1.4?

Same issue here.

After installing com.deskew.gigperformermacx64.streamDeckPlugin, I noticed that the folder

/Users/Shared/Gig Performer/Extensions was empty.

Since this was my first time installing an extension, I deleted the empty folder and manually recreated it. After doing that, the file

/Users/Shared/Gig Performer/Extensions/libgp-streamdeck.dylib finally appeared.

However, when I launch Gig Performer, I’m not prompted to install the extension.

I downloaded GPStreamdeck-macOS-x64-v2-beta1.zip, and I’m running:

  • Gig Performer 5.1.1

  • macOS Sonoma 14.4.1 (23E224)


EDIT:

I’m stupid - I should have downloaded the ARM version as pointed out in this post.

You marked that post as the solution :laughing: I have unchecked it – it is not true :slight_smile:

Please let us know how the new extension works! :slight_smile: It is beta, so beat it up properly.

1 Like

Hi

Hope this makes sense! -
I’m using a Stream Deck MK2 with GP5. When I use it to go to next song the buttons work but the text doesn’t change to the different song parts. How can I get the Stream Deck to show the current song part titles? Click to see full photos

(I have installed the GP extension)

@timothyschoen

It works like a charm. Designing and setting up buttons (using script handles) is super easy.

For my Stream Deck I do really miss the GP rotary knob option though, which is why I’m also using the MIDI functionality (also free).

The advantage of the GP extension is that it can display and update text widgets, and as far as I know that’s not possible with the MIDI add-on.

Amazing work so far, thanks @timothyschoen! :heart:

It would be great if there were an option to update the Stream Deck button/knob layout from within GP per song. Right now every button has a fixed position and I have to create pages on the deck (luckily I can swipe to the next page with the touch strip). Because of that, it currently feels more suited for global controls.

One small detail I’ve noticed so far: when you use buttons in a radio group, the currently active button isn’t displayed correctly on the Stream Deck (it does show correctly in GP and it functions fine — it’s just the Stream Deck display not deactivating the other button). Maybe I’ve got some setting wrong — like “sync radio button off” or something like that.