ampOSC manual

Clients and subscriptions

The OSC server starts by itself and needs no setting up. The one decision worth making is whether every client hears everything, or only what it asked for.

The OSC server

The gear on the OSC Server row opens one sheet: a UDP Port — 8765 by default — an Enable Subscriptions toggle, and the host address and Bonjour name for reference.

There is no handshake and no password. Send a message to the port and you are a client.

The port, the one switch that matters, and the two ways a client finds you.

Finding it with Bonjour

ampOSC advertises itself on the local network as _osc._udp under the name ampOSC, so a client that browses for OSC services can find it without anyone typing an address. The Host line in the sheet is what to type if yours cannot.

Talking to it

Point your client at the address in the OSC Server row, over UDP. Paths are case-insensitive and every index is 1-based.

/Input/1/Level ,f -6.0     set input 1 to -6 dB
/Input/1/Level             ask for it
/Input/1/Mute ,T           mute
/Scene/Recall ,i 42        recall scene 42
/Input/1-48/Level          address a whole range at once

Any number of clients can connect at once, each identified by its address and port. The full address list is the OSC reference, and everything there works from AppleScript too.

Flood or subscription

Enable Subscriptions changes what the server does with a value when it changes at the desk. It is on by default.

Subscription mode — the default

A client is sent only what it has asked for. Two ways to ask:

/Input/1/Level                 a GET, which also subscribes you
/Subscribe/Input/*/Level       subscribe without asking for a value first
/Unsubscribe/Input/1/Level     stop
/Unsubscribe/*                 stop everything

Asking for a value also subscribes you to it, which is the quickest way to get a control surface in sync and keep it there — one message per range, and a client can cover a whole desk in a handful of packets. Subscriptions last until dropped; there is no keepalive.

Flood mode

Turn the switch off and every value change goes to every client that has ever sent a message. Nobody has to ask for anything, /Subscribe does nothing, and the Subscriptions tile reads ALL rather than a number.

This suits a single client that wants the whole desk, and it is a quick way to get something working. On a large desk with several clients it is a lot of traffic most of them throw away.

Worth knowing when reading a client's code: the same client behaves differently under the two modes without changing a line. A surface that never subscribes is silent in the default subscription mode and fully fed the moment somebody switches to flood.

The subscription list

The Subscriptions tile opens a list grouped by client — the client's address and port, its subscription count, and every path it holds.

Export writes the list to a file, which is a quick way to capture what a surface actually asked for. Clear All drops every subscription on the server; clients that want them back have to ask again.

In flood mode the client is badged ALL — the count is everything the desk exposes.
One client, and what it is being kept up to date on.

The client list

The Clients tile lists everything that has sent at least one message, with the number of subscriptions each holds and an × to drop it.

In flood mode that number is not zero — it is everything. A flood client is treated as subscribed to the whole desk, so it shows the full addressable count while the panel tile reads ALL. Those are the same fact said two ways, not a disagreement.

A client appears on first contact and stays listed. If the list reads No active clients while your surface is plainly sending, nothing is arriving — check the port, then the firewall, then whether the client is aimed at the right address.