How to select specific song from setlist mode

My band calls songs in random order, trying to map a grid of buttons to recall specific songs kind of like the korg kronos bank system.

Any idea what to do?

Thanks

There are definitely posts on this topic. Also search Dave Boulden Song Chooser.

1 Like

Check out my (paid for) Advanced Song Chooser extension:

I also have a basic free version you can try out first.

2 Likes

thank you for this, will look into it!

Two questions

can you assign a widget to recall a specific song??

and

Is it macOs combatible?

thank you

You could do this with widgets in the global rackspace panel and a simple GP script.

I couldn’t find a function in GPscript to do that. Could you forward it to me.

On the widgets, in system actions
I only see “nextsong” and “prevsong”

same with GPScripting.

SwitchToSongByIndex : Switch to the specified song and part

  • Declaration: function SwitchToSongByIndex (songIndex : integer, partIndex : integer) Returns Boolean

e.g.

SwitchToSongByIndex(5, 0)

will switch to the 6th song and first song part.

Crazy! I went to the gpscript website and didnt see it. maybe i was looking at the wrong thing

Thank you so much!

From the ‘Help’ menubar in Gig Performer, you can access the function list via ‘Documentation > GP Script System Functions’. I refer to this all the time.

Here is a slightly different approach that uses the widget caption/label to select the song. This may be better than directly selecting a song by its index, as it will handle order changes.

Select Song via Widget.gig (82.5 KB)

select-song-via-widget

It shouldn’t be too hard to figure out how to extend the script to add more widgets, if required.

Var
    SONG_1, SONG_2, SONG_3, SONG_4, SONG_5 : Widget
    SONGS : Widget Array = [SONG_1, SONG_2, SONG_3, SONG_4, SONG_5]
    
On WidgetValueChanged(w : Widget, index: integer, newValue : double) from SONG_1, SONG_2, SONG_3, SONG_4, SONG_5
    Var i : Integer
        count : Integer
        success : Boolean
    If InSetlistView() Then
        If newValue == 1 Then
            count = GetSongCount()
            For i = 0; i < count; i = i + 1 Do
                If GetWidgetLabel(SONGS[index]) == GetSongName(i) Then
                    success = SwitchToSongByIndex(i, 0)
                End
            End
        End
    End
End
2 Likes

In addition to the method @rank13 provided, you can alternatively use a System Actions plugin in the Global Rackspace and map your widgets to the Program Change parameter, each with its own scaled value to trigger the respective song. Multiple ways to achieve the same goal!

songchange

2 Likes

great! thanks!

Ill try both and see which one works best for me.

Ive been using OSC so Im used to mapping by name

I can see @rank13 has already answered that for you and is indeed a very viable free option to achieve what you need.

Yes, the extension is Windows and MacOS (Ventura or newer) compatible. Alongside the upcoming Gig Performer 5 release, I will be release a free update for current customers that has a grid layout very much akin to the Kronos Live mode grid.

The further option that my extension has that may or not be useful for you, is if your band calls the next 3 songs in one go, you can create an ad-hoc queue of songs on the fly and step through them with a mapped footswitch or controller button.

I would like the ability to queue, so I will check it out.

Thank you!

Is there a way to have the caption automatically assigned to the relative song caption?

for example

SONG_1 will get the name of Song 1 in set list mode, and assign it as the caption automatically.

So if there were an order change the order in setlist view it would sync.

relative song name*

I ended up buying your advanced song view extension.

How can i get a widget to queue a song?

I see a function / GPScript for scrolling, and selecting the next song, but nothing for queuing the songs by index.

If there is a way I can generate a code to “queuesong_1” that would be perfect

As discussed in our parallel email conversation, I believe I can add the functionality required to the extension.

1 Like