AbleSet listens to OSC commands on port 39051
, so you can remote-control it
from any other app that supports OSC.
Here's a list of all available commands:
/global/play
starts playback/global/pause
pauses playback/global/stop
stops playback/global/startPlaying
starts playback from the last cursor position/global/continuePlaying
continues playing from the current playhead position/global/playPause
toggles playback between play and pause/global/playStop
toggles playback between play and stop/global/startRecording
starts recording, and starts playback when Live isn't already playing/global/stopRecording
stops recording, but doesn't stop playback/global/toggleRecording
starts recording and playing, or stops recording/global/quantization [quantization]
sets the global quantization of your project
8
, 4
, 2
, 1
, 1/2
, 1/2T
, 1/4
, 1/4T
, 1/8
, 1/8T
, 1/16
, 1/16T
, 1/32
, none
/global/syncToRemoteTick
syncs this computer to the playhead of connected
AbleNet instances/loop/enable
enables Live's loop bracket/loop/escape
disables Live's loop bracket
+LOOP
flag, this will also jump
to the next section/loop/toggle
toggles Live's loop bracket/setlist/jumpToTime [time]
jumps to the given time, in beats/setlist/jumpToSong [number, name, or RANDOM]
jumps to the song at the given position
in the setlist
/setlist/jumpToSong 2
jumps to the 2nd song in the setlist/setlist/jumpToSong SongTitle
jumps to the first song named "SongTitle" in
the setlist/setlist/jumpToSong RANDOM
jumps to a random song in the setlist/setlist/jumpBySongs [steps]
jumps by given number of songs
/setlist/jumpBySongs 1
jumps to the next song, /setlist/jumpBySongs -1
jumps to the previous one or to the beginning of the current song when the
playhead isn't at the start of the songforce=true
parameter when jumping back a song (e.g.
/setlist/jumpBySongs -1 force=true
) ignores the playhead's current
position inside the song and always jumps to the previous song/setlist/jumpToSection [number or name]
jumps to the section at the given
position in the current song
/setlist/jumpToSection 2
jumps to the 2nd section in the current song/setlist/jumpToSection Chorus
jumps to the first section named "Chorus" in
the current song/setlist/jumpToSection Chorus true
jumps to the first section in the
current song whose name includes the word "Chorus"/setlist/jumpBySections [float]
/setlist/jumpBySections 1
jumps to the next section in the current songforce=true
parameter when jumping back a section (e.g.
/setlist/jumpBySongs -1 force=true
) ignores the playhead's current
position inside the section and always jumps to the previous one/setlist/jumpToNextSection [string]
jumps to the next section in the current
song that matches the given name
/setlist/jumpToNextSection Chorus
jumps to the next section named "Chorus"/setlist/jumpToPrevSection [string]
jumps to the previous section in the
current song that matches the given name
/setlist/jumpToPrevSection Chorus
jumps to the previous section named
"Chorus"/setlist/jumpToQueued [boolean]
jumps to the queued song or section
true
, AbleSet jumps instantly, without respecting
Live's global quantization/setlist/playCuedSong
plays the next song after the current song has
finished
/setlist/setLocatorsFromClips
places a locator at each section clip/setlist/removeClipLocators
removes automatically placed locators at section
clips/lyrics/jumpByLines [string] [integer]
jumps by the given number of lines
/lyrics/jumpByLines leo 2
jumps ahead two lyrics lines in the lyrics track
called "Leo +LYRICS"/lyrics/jumpByLines backing-vox -2
jumps back two lyrics lines in the lyrics
track called "Backing Vox +LYRICS"/click/mute [boolean or toggle]
mute or unmute all click tracks/click/solo [boolean or toggle]
solos or unsolos all click tracks/audioInterfaces/setScene [1, 2, A, or B]
sets the active scene on the connected
audio interfaces
/audioInterfaces/setScene 1
sets the active scene to scene A/audioInterfaces/setScene B
sets the active scene to scene B/audioInterfaces/toggleScene
toggles the active scene between A and B on the
connected audio interfaces/floatingWindow [show|hide|toggle]
shows, hides, or toggles the floating setlist windowBoolean values can be an actual boolean or 0
/ 1
. You can also set them to
toggle
to toggle the setting.
/settings/ableNet [boolean]
enables or disables AbleNet/settings/ableNetDriftCorrection [boolean]
enables or disables automatic drift correction/settings/autoplay [boolean]
sets the autoplay option/settings/alwaysStopOnSongEnd [boolean]
sets whether AbleSet should stop
playback at the end of all songs/settings/autoJumpToNextSong [boolean]
sets whether AbleSet should
automatically jump to the next song at the end of a song/settings/autoLoopCurrentSection [boolean]
sets whether AbleSet should
automatically move the loop bracket to be around the current section/settings/countIn [boolean]
enables or disables the Count-In feature/settings/countInSoloClick [boolean]
sets whether the click track should be
soloed during count-in/settings/countInDuration [1, 2, or 4]
sets the count-in duration in bars/settings/jumpMode [quantized, end-of-section, end-of-song, or manual]
sets
the jump mode/settings/safeMode [boolean]
enables or disables the Safe Mode featureTo enable or disable AbleNet or the automatic drift correction, see settings OSC commands.
/ableNet/syncToRemote
brings this machine back in sync with others on the network
if it's paused, see AbleNet docsYou can use these OSC commands to control the AbleSet web app in the browser.
If you'd like a command to run on all devices, pass all
as the first parameter.
Otherwise, set the first parameter to either the IP address or host name of the
device you'd like to control. The host name is case-insensitive. Multiple devices
can be passed separated by commas.
/devices/showPage [devices] [page]
navigates to the given page
/devices/showPage all performance
navigates to the performance page on all connected devices/devices/showPage leos-ipad lyrics/leo
opens the lyrics page for the lyrics track called Leo on the device called leos-ipad/devices/showPage 192.168.1.10 setlist
opens the setlist page on the device with the IP address 192.168.1.10/devices/lock [devices]
locks the given device/devices/unlock [devices]
unlocks the given device/devices/toggleLock [devices]
toggles the lock on the given deviceThese OSC commands display a notification on one or more devices. If you'd like
the notification to be displayed on all devices, pass all
as the first parameter.
Otherwise, set the first parameter to either the IP address or host name of the
device you'd like to control. The host name is case-insensitive. Multiple devices
can be passed separated by commas.
/notify/toast [devices] [title] [description] [duration]
displays a toast notification on all browsers
/notify/big [devices] [message] [duration]
displays a message that fills the entire screen on all browsers
If you're using OSC commands in a setup with multiple computers connected via AbleNet, AbleSet automatically forwards commands to all other connected computers. For additional redundancy, you should send the same command to all computers.
For this to work well, each command you send to AbleSet via OSC should have its own
UUID. You can append it as a string parameter to any OSC command, for example
uuid=1234abcd
where "1234abcd" is a random string for each command.
When AbleSet receives multiple commands with the same UUID, it will only execute the first one and discard all others.
If you don't want AbleSet to forward OSC commands, you can add the string ableNet=false
to any OSC command that you send to AbleSet. In that case, the UUID parameter isn't necessary.
AbleSet announces its OSC server on the network using Bonjour. Apps like TouchOSC can find it automatically using the "Browse" function so you don't have to enter the IP address and port manually.
If you're writing your own OSC client, you can use any Bonjour library to look
for _osc._udp.
on the network. AbleSet's OSC server has a TXT value of
server=ableset
, so in case there are other applications announcing their OSC
servers on the network as well, you can look for that value to find AbleSet.
AbleSet can send updates on its current state to other OSC servers. This can be used to update the state of your control surfaces in real time.
To register your OSC server with AbleSet, send the /subscribe
command with the
IP address and port, and optionally a name – e.g.:
/subscribe 127.0.0.1 8000 TouchOSC
If you set the IP address to auto
, AbleSet will use the IP address the request
came from to register the OSC server, e.g.:
/subscribe auto 8000 TouchOSC
This is useful for setups where you don't always know your IP address, like using TouchOSC on a machine that gets a new IP every time it connects to the network.
To receive fine value updates, e.g. for the playhead position or song/section progress, add a fourth argument to the call:
/subscribe auto 8000 TouchOSC true
Please note that these fine updates are sent up to 30 times per second and might be taxing on low-end devices receiving them.
You'll see a notification that the device has been connected, and from this point on, AbleSet will send updates for all events to your server. You can register multiple servers with AbleSet if you want to connect multiple control surfaces.
In addition to the events, AbleSet will send a /heartbeat
every 2 seconds. You
can use this to check if the connection is still up. If you'd like to trigger a
heartbeat yourself, you can send a /getHeartbeat
command to AbleSet.
To get the current state of all values, send /getValues
to AbleSet after
registering your server.
Here's a list of all values that get sent to registered servers:
/global/isConnected [0|1]
whether AbleSet is connected to Live/global/isLoadingFile [0|1]
whether Live is loading a new song file/global/beatsPosition [float]
the current position in beats, floored to
whole numbers while Live is playing/setlist/finePosition [float]
the current position
fine
flag to be set when subscribing to updates/global/humanPosition [float] [float]
the current position in bars and beats/global/currentMeasure [string] [float] [float]
the current measure from a
measure track, if available, along with the current beat and the total number
of beats in the current measure/global/tempo [float]
the current tempo/global/isPlaying [0|1]
whether Live is currently playing/global/timeSignature [integer] [integer]
the time signature/global/quantization [quantization]
the global quantization of your project
8
, 4
, 2
, 1
, 1/2
, 1/2T
, 1/4
, 1/4T
, 1/8
, 1/8T
, 1/16
, 1/16T
, 1/32
, none
/setlist/name [string]
the setlist name/setlist/songs [...string]
a list of all song names in the setlist/setlist/songColors [...string]
a list of all songs' colors in the setlist/setlist/songDurations [...float]
a list of all songs' durations in the
setlist in seconds/setlist/sections [...string]
a list of all sections of the current song/setlist/sectionColors [...string]
a list of all sections' colors of the
current song/setlist/activeSongName [string]
the name of the current song/setlist/activeSongIndex [string]
can be referenced to the list of songs/setlist/activeSongStart [float]
the song's start position in beats/setlist/activeSongEnd [float]
the song's end position in beats/setlist/activeSongDuration [float]
the song's duration in seconds/setlist/activeSongColor [string] [string]
the color of the song, as a color
name and as a hex string/setlist/activeSongProgress [float]
the song's progress from 0 to 1
fine
flag to be set when subscribing to updates/setlist/activeSectionName [string]
the name of the current section/setlist/activeSectionIndex [float]
the index of the current section in the
current song/setlist/activeSectionStart [float]
the section's start position in beats/setlist/activeSectionEnd [float]
the section's end position in beats/setlist/activeSectionColor [string] [string]
the color of the section, as a
color name and as a hex string/setlist/activeSectionDuration [float]
the section's duration in seconds/setlist/activeSectionProgress [float]
the section's progress from 0 to 1
fine
flag to be set when subscribing to updates/setlist/nextSectionName [string]
the name of the next section/setlist/nextSectionIndex [float]
the index of the next section in the
current song/setlist/nextSectionStart [float]
the next section's start position in beats/setlist/nextSectionEnd [float]
the next section's end position in beats/setlist/nextSectionColor [string] [string]
the color of the next section,
as a color name and as a hex string/setlist/nextSectionDuration [float]
the next section's duration in seconds/setlist/queuedName [string] [string]
the name of the queued song and
section/setlist/queuedIndex [float] [float]
the index of the queued song and
section/setlist/nextSongName [string]
the next song's name/setlist/nextSongIndex [float]
the next song's index/setlist/nextSongDuration [float]
the next song's duration in seconds/setlist/nextSongColor [string] [string]
the color of the next song, as a
color name and as a hex string/setlist/loopEnabled [0|1]
whether the loop bracket is enabled/setlist/loopStart [float]
the loop's start position in beats/setlist/loopEnd [float]
the loop's end position in beats/setlist/isCountingIn [0|1]
whether AbleSet is currently counting in/setlist/remainingTimeInSong [float]
remaining time in the current song, in seconds/setlist/remainingTimeInSet [float]
remaining time in the set, in seconds/lyrics/[slug]/previous
the previous lyrics line's text/lyrics/[slug]/current
the current lyrics line's text/lyrics/[slug]/next
the next lyrics line's text/audioInterfaces/connected [0|1]
whether an audio interface is connected/audioInterfaces/all/scene [1|2]
the current scene – 1
for the main and 2
for the backup computer/audioInterfaces/names [...string]
the name of the connected audio interface/audioInterfaces/scenes [...1|2]
the interface's current scene – 1
for the
main and 2
for the backup computer