Any way to "Add Song" or "search" on the setlist on a Canvas?

Any way to “Add Song” or “search” on the setlist on a Canvas?

I’m trying to give access to the singer so he has control of play/pause, has lyrics, and set list but the set list window on canvas doesn’t allow to “add song” as far as I can tell. Any help or alternative option would be greatly appreciated. Thanks

Hey @StrangerBoy, welcome to the forum!

You can do this with a Script button on your Canvas. Add a Button, set its Button Type to “Script”, and enter this as the Script on Press:

sendOsc("/devices/showSongAddDialog", thisDevice);

This opens the same “Add a Song” dialog you get when pressing ⌘K, on whichever device pressed the button. That dialog already has search built in, so it covers both things you’re after — your singer can search the full song list and add anything on the fly.

If you’d also like a button that jumps to a song that’s already in the setlist, use the same setup with:

sendOsc("/devices/showSongJumpDialog", thisDevice);

And if you ever need to close the dialog from a script or another button:

sendOsc("/devices/hideSongDialog", thisDevice);

Would that work for your use case?

DUUUDE so quick with the response Thank you! and yes, works like a charm. I’m not sure what the 3rd thing you said means, though. Do you mean close the window if I don’t end up searching? I’d like to fully understand. The more I learn about ableset the more I love it.

Hey @StrangerBoy,

Glad it’s working!

Yes,/devices/hideSongDialog just closes the dialog. You usually won’t need it, since the dialog closes on its own once a song is picked or dismissed. It’s there for cases where you want to close it programmatically.

Where it gets genuinely useful is when you target a different device. The first parameter is the device you want to control, so you’re not limited to the device running the script. For example, from your own device you could close a dialog your singer left open on his iPad:

sendOsc("/devices/hideSongDialog", "singer");

That “singer” is whatever name the device is set to (you can set device names in the Devices tab). You can also pass all to close it everywhere, or an IP address. The same targeting works for showSongAddDialog and showSongJumpDialog, so you could even pop the Add Song dialog open on someone else’s screen from your device.

thisDevice is just a shortcut that fills in the device running the script, which is what you want when the button and the dialog live on the same screen.

Hope that helps!