When enabling OSC in Clockworks Viewer you will see a set of endpoints streaming data. You need to set an ip address target to send to.

Endpoints

/control - [FaderA, FaderB, CrossFader] - 32bit Float - 0…1

/tc - [Hours, Min, Sec, Frame] - 32bit Int

/cue - [Next Cue Seconds, String] - Int, String

/meta - [Deck Title] - String

/event - [Event Name, Value - String, Int32

There is one receive endpoint at OSC Port +1, i.e. if port is set to 8080 you can receive OSC at 8081

/deck/select - 1..4 to set active deck

Advanced

The software has the ability to load in arbitrary lua functions to be made available in each execution unit. This is done via the extensions.lua file found in the viewer config folder. For example, below is the config for triggering transport in d3.

D3 Transport

-- Assume sendOSC(address, ...) and sendOSCWithDest(ip, port, address, ...) exist

local D3Transport = {
    ip   = nil,   -- empty by default
    port = nil
}

-- Helper to route the OSC call
local function routeOSC(address, ...)
    if D3Transport.ip ~= nil and D3Transport.port ~= nil then
        -- Use destination-aware sender
        sendOSCWithDest(D3Transport.ip, D3Transport.port, address, ...)
    else
        -- Use default sender
        sendOSC(address, ...)
    end
end

-- Setter for IP/Port (nil resets behavior)
function D3Transport.setEndpoint(ip, port)
    D3Transport.ip = ip
    D3Transport.port = port
end

-- Transport control (triggered commands)

function D3Transport.play()
    routeOSC("/d3/showcontrol/play")
end

function D3Transport.playSection()
    routeOSC("/d3/showcontrol/playsection")
end

function D3Transport.loopSection()
    routeOSC("/d3/showcontrol/loop")
end

function D3Transport.stop()
    routeOSC("/d3/showcontrol/stop")
end

function D3Transport.previousSection()
    routeOSC("/d3/showcontrol/previoussection")
end

function D3Transport.nextSection()
    routeOSC("/d3/showcontrol/nextsection")
end

function D3Transport.returnToStart()
    routeOSC("/d3/showcontrol/returntostart")
end

function D3Transport.previousTrack()
    routeOSC("/d3/showcontrol/previoustrack")
end

function D3Transport.nextTrack()
    routeOSC("/d3/showcontrol/nexttrack")
end

-- Track selection

function D3Transport.trackName(name)
    routeOSC("/d3/showcontrol/trackname", name)
end

function D3Transport.trackId(id)
    routeOSC("/d3/showcontrol/trackid", id)
end

-- Cue control

function D3Transport.cue(...)
    routeOSC("/d3/showcontrol/cue", ...)
end

function D3Transport.floatCue(value)
    routeOSC("/d3/showcontrol/floatcue", value)
end

-- Brightness & volume / master control

function D3Transport.fadeUp()
    routeOSC("/d3/showcontrol/fadeup")
end

function D3Transport.fadeDown()
    routeOSC("/d3/showcontrol/fadedown")
end

function D3Transport.hold()
    routeOSC("/d3/showcontrol/hold")
end

function D3Transport.volume(level)
    if level == nil then level = 1.0 end
    routeOSC("/d3/showcontrol/volume", level)
end

function D3Transport.brightness(level)
    if level == nil then level = 1.0 end
    routeOSC("/d3/showcontrol/brightness", level)
end