New Song Selector extension: Basic Song Chooser

Firstly, although this is rather similar to @rank13’s excellent GPSelector extension, this one is much more of a technology demonstration with the source code fully available.

The purpose of this example project is to illustrate how to build a Gig Performer extension using HTML, CSS and JavaScript to build the UI as opposed to a system like JUCE or creating graphical elements long-hand in C++ code. Instead, you create a single HTML page whereby you can bind pseudo-functions within JavaScript to C++ functions in your code that can, in turn, access the GigPerformer API. It is a “Hello World” type extension to show what is possible as a starting point. What the extension actually does is to pop-up a window that displays the current set list in a touchscreen friendly format allowing you to easily select songs from list (by touching the song name) and GigPerformer will switch you to that song.

The intention is to give you a boiler-plate starting point to write your own extensions using HTML and JavaScript for the front-end alongside C++ for the back end. It illustrates the basic techniques for 2-way binding of functions within the C++ code of the back-end to functions embedded within the JavaScript code of the front-end. It is my hope that it will enable more developers get into creating GigPerformer extensions where they can leverage the knowledge they already have of HTML, CSS and JavaScript for the UI and only need to delve into C++ coding for the actual interaction with the GigPerformer API.

In its current state it requires Gig Performer v 4.7, but could be adapted back to work with v4.5 with some code tweaks.

The code can be viewed and downloaded from GitHub here:

FULL DISCLOSURE:
I will shortly be offering a powerful advanced paid-for version of this extension with much more capability aimed at users who regularly go “off script” from the intended set list or who, like me, don’t use a set list at all.

4 Likes

People will want to know is this for v4.7 or v4.5 users can also use this extension :slight_smile:

Have been looking forward to this, but might need to wait for the paid version.

1 Like

@npudar It is for v4.7 and above only as it uses a new API function to get the artist name for the list. Some one could adapt it back to v4.5.x by changing the GIT TAG of the GigPerformer SDK to reference a v4.5 compatible release of the SDK and not use getArtistName(). I’ll update the original post to state GP v4.7 required.

I have now added a new branch to the GitHub repo (named compatible_v4.5) that should work with GP v4.5.x albeit without the ability to get the artist name for each song.

Just in case anyone may have been looking at the code in this repo, be aware I am going to be switching away from the Saucer WebView type library to a new one that better handles cross platform creation, in my case making this Windows only version code work on a Mac too. Hopefully the repo will be updated over the next few days.

2 Likes

The conversion away from Saucer WebView is now complete and the project is now cross-platform between Windows and MacOS.

2 Likes

Just curious…how did you do that?

I’ve switched to using Tracktion/choc instead (by the same guy behind JUCE) which is a much better cross-platform implementation of a WebView library.

4 Likes

This great!!!
Thank you so much.
Just what I needed!

1 Like

The choc WebView library functionality looks interesting. Do you happen to know whether that will handle displaying a pdf file?

Off and on over the past several years I’ve wanted to have something in pdf format display in a controllable GP window, but every time I go down that path I give up very shortly after getting started.

I’m afraid I don’t actually know, but it has a couple of example test programs that could easily be changed to test if it will open a PDF.

I replaced the body html code in @DaveBoulden’s project and inserted:

<object data="https://gigperformer.com/docs_4_7/GP47UserManual.pdf" type="application/pdf" width="100%" height="100%"></object>

No idea if the scrolling can be automated though.

4 Likes

Hi,
Do you plan to have a full paid version shortly? I have been trying to figure out how to build this from the code but after a couple of hours installing Visual Studio, CMake, Developper extensions, I am still nowhere near understanding how to get it to work on a Mac. I guess my programmer days are over and I prefer spending hours playing keyboards!!! :slight_smile:

Yes, the release of the paid-for version is imminent. I have PM’d you with some more info.

Can scrolling through pages in a PDF be automated in the paid version? Thanks

The paid-for version of this extension doesn’t support viewing PDF files… the example you see above was a simple test of whether or not it is possible using this extensions base technology.

Thank you for clarifying that. The PDF To Chord Pro Tool works good for converting PDF files but is a bit tedious when you have a big collection of PDF files. Mobile Sheets works really well with PDF files I just wish it was integrated directly into GP like your software so I wouldn’t have to open 2 programs but that is very minor. Your program looks impressive though.

1 Like