Skip to content

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

14 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

Sensel Morph Liberation

Access and transmit complete Sensel Morph touchpad data over OSC, Syphon, or WebSockets with Processing or Python — and with no SDK dependencies.
Golan Levin, July 2026

Image of the Sensel Morph's 185x105 pressure-image visualized in Processing
Image of the Sensel Morph's 185x105 pressure-image visualized in Processing

This repository is the first complete open-source implementation of the Sensel Morph's raw pressure data pipeline. It restores open access to one of the most expressive pressure-imaging devices ever made after its original software stack was abandoned.


Overview

Image of the Sensel Morph's main trio of data channels: pressure, labels, contacts.
Image of the Sensel Morph's trio of data channels (L-R): pressure, labels, contacts. The device can also send accelerometer and other interaction data.

The Sensel Morph is an unusually expressive pressure-sensitive input device capable of reporting not only touches, but dense force images over its entire sensing surface. Unlike conventional multitouch devices, it can measure and report continuous pressure distributions from fingers, hands, brushes, and custom physical overlays.

Although Sensel published an SDK, the key components required to access the Morph's raw pressure imagery were distributed only as closed binary libraries. After official development of the SDK ceased in 2017, those libraries became increasingly difficult to use, limiting access to much of the hardware's most interesting capabilities.

This repository reconstructs those missing pieces through an open implementation of the Morph's communication protocol, pressure and label decoding, and live data bridges. It provides standalone tools for Processing and Python that communicate directly with the hardware, without depending on Sensel's SDK. The utilities in this repository will allow you to:

  • access and visualize the Morph's complete sensing data, including pressure images, label images, contacts, and accelerometer data
  • transmit Sensel Morph data over OSC, WebSockets, and Syphon
  • record, replay, and re-transmit interaction sessions
  • calibrate the device to compensate for its fixed noise patterns
  • interface with p5.js, Processing, Python, TouchDesigner, etc.

Our OSC utilities preserve optional compatibility with morphosc and senselosc so that older Morph patches and tools can continue to run against a newly liberated data source.

Contents:


Processing Utilities for Sensel Morph

Image of Sensel Morph pressure and contacts visualized in Processing
Image of Sensel Morph pressure and contacts, visualized in Processing

This repository provides six standalone Processing applications for viewing, recording, calibrating, replaying, and broadcasting Sensel Morph data. Together they offer a complete SDK-free environment for working with the device in creative coding workflows. For complete information on the Processing implementations, please see processing/README.md.

The Processing app you probably want is sensel_morph_osc_transmitter, which connects directly to the Sensel Morph over USB serial, decodes live data frames, displays the pressure/label/contact layers, and emits this information over OSC. However, there are also other Processing apps which transmit Sensel Morph data over WebSockets or Syphon, as summarized here and in the table below.

All apps are compatible with Processing 4.5.5, with the exception of the Syphon transmitter, which due to limits in the Syphon library is currently restricted to Processing 4.3. To minimize dependencies, all apps use the Processing's built-in Serial Library to communicate with the device, and native Java UDP code for OSC; they do not depend on oscP5, the original Sensel SDK, or any of the Python code in this repository.

Summary of Processing Apps

Processing App Intended Use
sensel_morph_osc_transmitter Standalone live USB reader and OSC broadcaster. Features local display, performance recording, and playback.
sensel_morph_osc_receiver Live OSC monitor (receiver) and viewer.
sensel_morph_syphon_osc_transmitter Standalone live USB reader, which transmits device data over both OSC and Syphon (for audiovisual tools like TouchDesigner). Note: compatible up to Processing 4.3 owing to the Syphon library.
sensel_morph_websocket_transmitter Standalone live USB read and WebSocket transmitter (for browser-based/p5 clients).
sensel_morph_capture_viewer Offline recording viewer.
sensel_morph_osc_calibrator Creates optional pressure calibration files to compensate for fixed noise patterns.

Other Provided Apps

Screenshot of Processing (at right) communicating with Touchdesigner (at left) over Syphon and OSC
Screenshot of Processing (at right) communicating with Touchdesigner (at left) over Syphon and OSC

In addition to the Processing apps, this repository also provides:

A local server is not required to run the p5.js receiver apps.

processing_to_p5js_via_websocket.png
Screenshot of Processing (at right) communicating with p5.js (at left) over WebSockets.


Python Utilities for Sensel Morph

Image of the Sensel Morph's LEDs under interactive control
Image of the Sensel Morph's LEDs under interactive control

The Python tools provided here are lightweight command-line utilities intended for scripting, automation, and software integration. They provide direct USB access to the Morph, live OSC and WebSocket bridges, recording tools, and interactive LED control, making them suitable for creative coding, rapid prototyping, and protocol research.

The Python command-line tools live in python/. For installation instructons, command summaries, recording examples, and notes about behavior and implementation, please see: python/README.md

Summary of Python Tools

Python Program Intended Use
sensel_morph_osc.py Live USB reader and OSC broadcaster.
sensel_morph_ws.py Live USB reader and WebSocket broadcaster.
sensel_morph_capture_session.py Performance recording tool; produces JSONL/JSON.
sensel_morph_led.py Controls the Morph's 24 white LEDs.

Other Documentation

This repository aims to be a definitive resource for anyone hacking the Sensel Morph in the future. To that end, more information is available in the following documents:

  • Communications Protocol: Information about the Sensel Morph's low-level USB CDC/register protocol, frame formats, compression, labels, contacts, accelerometer, and built-in LEDs.
  • Implementation Details: lower-level notes on contact geometry, calibration application, serial-number handling, and contact summary semantics.
  • Reverse Engineering Lab Notes: how the raw pressure, labels, contact geometry, accelerometer, calibration, and output bridges were recovered.
  • Prior Art Survey: annotated technical bibliography of SDKs, examples, OSC bridges, decompression resources, and other prior work.
  • Third Party Archive: small archival copies of third-party files that were important to the reverse-engineering work.

About

OSC, WebSocket, and Syphon interfaces to the Sensel Morph touchpad, with support for Processing and Python, with no SDK dependencies.

Topics

Resources

Stars

Watchers

Forks

Releases

Packages

Contributors

Languages