Expand description
§Libwing SDK Documentation
Libwing is a C++ library for interfacing with Behringer Wing digital mixing consoles. It provides functionality for discovering Wing consoles on the network, connecting to them, reading/writing console parameters, and receiving any changes made on the mixer itself.
There is a C wrapper for this library. It generally follows the C++ API. You
can find it in wing_c_api.h
.
§Basic Concepts
The Wing console exposes its functionality through a tree of nodes. Each node has:
- A unique numeric ID
- A hierarchical path name (like a filesystem path)
- A type (string, float, integer, enum, etc.)
- Optional min/max values and units
- Read/write or read-only access
§Getting Started
§Connecting
If you have a Wing’s IP address, you can connect to it:
WingConsole wing = WingConsole::connect(Some("192.168.1.100"));
or just run with no IP address to discover the first Wing console on the network:
WingConsole wing = WingConsole::connect(None);
There is also WingConsole::scan()
which can be used to scan for Wing mixers.
§Communication Model
-
You can request properties from the Wing device using
WingConsole.request_node_data()
, which will result in aWingResponse::NodeData
being sent if your request was for a valid property. Note that you may get other properties as well, as the Wing device will send unsolicited property changes, so you may need to filter for your specific property change. After the NodeData is sent (or not), the Wing device will send aWingResponse::RequestEnd
message. -
You can request node definitions using
WingConsole::request_node_definition()
, which cause aWingResponse::NodeDef
message to be read. wingschema uses this request to dump the schema. Again, unsolicited messages may be sent, so you may need to filter for your specific NodeDef. After the NodeDef is sent (or not), the Wing device will send aWingResponse::RequestEnd
-
You can set properties using the
WingConsole::set_*()
functions. These do not send any response back. -
WingConsole::read()
will block and return you messages from the Wing mixer as they come in. If the device is modified either physically or via another user of the API, the Wing device sends unsolicitedWingResponse::NodeData(id, data)
messages. -
WingConsole::request_meter()
will ask the Wing to start sending meter level data (the bouncing green/yellow/red level lights on the mixer). It returns an u16 ID corresponding to this request. This ID will returned when you read the meters data. -
WingConsole::read_meters()
will block and return you messages from the Wing mixer as they come in. It includes the ID returned from therequest_meter()
call for you to help correlate.
All these calls are thread safe.