libmapper is an open-source, cross-platform software library for declaring data signals on a shared network and enabling arbitrary connections to be made between them. libmapper creates a distributed mapping system/network, with no central points of failure, the potential for tight collaboration and easy parallelization of media synthesis. The main focus of libmapper development is to provide tools for creating and using systems for interactive control of media synthesis.
Open Sound Control (OSC) has been adopted by the academic and experimental-music communities for interactive media programming due to its flexibility in representing control data, strong semantics/human-readability, precise time-tagging, etc. Unfortunately, different projects utilizing OSC are rarely protocol-compatible. Many proposals have been made for creating standardized address-spaces/schemas to enable intercommunication, but we believe this is the wrong approach since it destroys the most powerful and useful aspect of OSC – the flexibility it allows for each user/designer/programmer to represent control signals and structures according to their specific needs or desires.
libmapper takes a different approach: instead of enforcing preset schemas we provide simple, distributed discovery and description; instead of address standardization we provide automatic translation; instead of normalization we provide automatic scaling… but that’s not all!
In addition to the flexibility of data-representation provided by Open Sound Control, libmapper provides:
- automatic negotiation for resources (e.g. ports, unique names)
- automatic peer discovery
- a semantic abstraction of the networking layer (make connections between devices and signals by name rather than having to manually set namespaces/IP addresses/ports
- description, including extensible properties as key-value pairs
- automatic translation of OSC addresses between peers
- automatic type coercion & linear scaling between peers
- arbitrary signal processing within connections, including FIR and IIR filtering
- remote connection management for persistence, automatic recovery, session management, saving and loading mapping configurations
- the ability to query or stream the current value of remote destinations, enabling the use of supervised machine learning techniques for mapping
- a powerful abstraction of signal “instances”, supporting arbitrary interconnection of polyphonic media synthesizers, multitouch interfaces, tangible interfaces, computer-vision blob-tracking algorithms, etc.
libmapper creates a distributed mapping system/network, with no central points of failure, the potential for tight collaboration and easy parallelization of media synthesis.