Implant Overview

An "implant" refers to a small program, generally built in javascript, that provides custom functionality for a Novation LaunchPad device over its specific active area.

Implants have two components: In general, implants receive button events from the LaunchPad, sends color messages to buttons in response to those events, and controls OSC data based on that information to be sent to connected audio and video software.
 * server - this controls launchpad functionality and is run within the LPToolKit's javascript engine.
 * client - this controls the user interface within the web application that runs on a tablet (currently iPad, but android support is planned) to show more information about the values being controlled by the implant.  This code is run within a web page.

Implants can also receive OSC data from software as well, and update the LaunchPad button colors accordingly. For example, an implant might supply a drum sequence to an audio program. When that audio program loads a new drum sequence, it should send that new data via OSC to the implant so it can update the LaunchPad to match.

Server Javascript API
A detailed API reference is available under Implant Server API Reference.

The following topics provide details about programming for the Server API:
 * Example Script - explains the mechanics about how the implants are loaded and operate.
 * ImplantObject - reference for the base class to all javascript implants
 * LaunchPadObject - reference for this.launchPad, which provides javascript with access to the LaunchPad hardware
 * LaunchControlObject - reference for this.launchControl, which provides javascript with access to the LaunchControl hardware
 * OSCManager - reference for this.OSC, which allows two-way OSC communication from javascript.

Client Javascript API
Coming soon. Many key features of this API have yet to be decided, although the following are the current goals:
 * using the iPad interface should be optional
 * the API should automatically sync data between the server and the client
 * the client should be able to control the values on the server side to provide extra functionality, such as dragging sliders on the touch screen or providing and XY pad and other UI elements that would be impossible with the LaunchPad alone.
 * several implants should be visible on the iPad at the same time and should work well with others
 * custom layouts that client implants should be the norm... users should be able to decide if they want their environment to similate a Maschine Studio or a laptop.