CreativeInquiry/Sensel-Morph-Liberation

GitHub: CreativeInquiry/Sensel-Morph-Liberation

该项目通过开源逆向工程实现了对 Sensel Morph 压力感应触控板完整数据的无 SDK 访问,并提供 OSC、WebSocket 和 Syphon 桥接工具,服务于创意编程工作流。

Stars: 2 | Forks: 0

# Sensel Morph 解放计划 通过 Processing 或 Python,利用 OSC、Syphon 或 WebSockets 访问并传输完整的 Sensel Morph 触控板数据 —— 且无需任何 SDK 依赖。
Golan Levin,2026 年 7 月 ![在 Processing 中可视化的 Sensel Morph 185x105 压力图像](https://static.pigsec.cn/wp-content/uploads/repos/cas/2d/2d2537ef67edf32091470ab837737053c090d21082bae8f5497bdf247368e403.gif)
*在 Processing 中可视化的 Sensel Morph 185x105 压力图像* ## 概述 ![Sensel Morph 的三大主要数据通道:压力、标签、触点的图像。](https://static.pigsec.cn/wp-content/uploads/repos/cas/cb/cb2b9e87fd68f71733518abc6a6cf1ae274ce21214c78a5f24fd8cee04d97e2b.png)
*Sensel Morph 的三大数据通道图像(从左至右):压力、标签、触点。该设备还可以发送加速度计和其他交互数据。* [Sensel Morph](https://guide.sensel.com/morph/) 是一款表现力极强的压力感应输入设备,不仅能报告触摸操作,还能在其整个感应面上报告密集的受力图像。与传统的多点触控设备不同,它可以测量并报告来自手指、手掌、画笔和自定义物理覆盖层的连续压力分布。 尽管 Sensel 发布了一个 [SDK](https://github.com/sensel/sensel-api),但访问 Morph 原始压力图像所需的关键组件[仅以闭源二进制库的形式发布](docs/narrative#the-problem)。在 2017 年 SDK 官方停止开发后,这些库变得越来越难以使用,限制了人们对该硬件大部分最有趣功能的探索。 本仓库通过对 Morph 的通信协议、压力与标签解码以及实时数据桥接进行开源实现,重构了那些缺失的组件。它为 Processing 和 Python 提供了独立工具,可直接与硬件通信,而无需依赖 Sensel 的 SDK。本仓库中的实用工具允许您: * 访问并可视化 Morph 的完整感应数据,包括压力图像、标签图像、触点和加速度计数据 * 通过 OSC、WebSockets 和 Syphon 传输 Sensel Morph 数据 * 记录、回放和重新传输交互会话 * 校准设备以补偿其固定的噪声模式 * 与 p5.js、Processing、Python、TouchDesigner 等进行交互 我们的 OSC 工具保留了对 [`morphosc`](https://github.com/ctsexton/morphosc) 和 [`senselosc`](https://github.com/tai-studio/senselosc) 的可选兼容性,以便旧的 Morph 补丁和工具能够继续 针对新释放的数据源运行。 ### 目录: * [概述](#overview) * [Sensel Morph 的 Processing 工具](#processing-utilities-for-sensel-morph) * [Sensel Morph 的 Python 工具](#python-utilities-for-sensel-morph) * [其他文档](#other-documentation) ## Sensel Morph 的 Processing 工具 ![在 Processing 中可视化的 Sensel Morph 压力和触点图像](https://static.pigsec.cn/wp-content/uploads/repos/cas/38/38f24ca45dbb141762c8dd47a23c200a46d17c51cdc90642a6b0cc4d5e765bd2.gif)
*在 Processing 中可视化的 Sensel Morph 压力和触点图像* [**本仓库提供了六个独立的 Processing 应用程序**](processing/README.md),用于查看、记录、校准、回放和广播 Sensel Morph 数据。它们共同提供了一个完整的、无需 SDK 的环境,以便在创意编程工作流中使用该设备。有关 Processing 实现的完整信息,请参阅 [**`processing/README.md`**](processing/README.md)。 您可能需要的 Processing 应用程序是 [**`sensel_morph_osc_transmitter`**](processing/sensel_morph_osc_transmitter/README.md),它通过 USB 串口直接连接到 Sensel Morph,解码实时数据帧,显示压力/标签/触点层,并通过 [OSC](https://en.wikipedia.org/wiki/Open_Sound_Control) 发出此信息。不过,还有其他一些 Processing 应用程序可以通过 [WebSockets](https://en.wikipedia.org/wiki/WebSocket) 或 [Syphon](https://syphon.info/) 传输 Sensel Morph 数据,具体请参见[此处](processing/README.md)及下表汇总。 所有应用程序均兼容 Processing 4.5.5,但 Syphon 发送器除外,由于 Syphon 库的限制,目前该发送器仅限 Processing 4.3 使用。为了尽量减少依赖,所有应用程序均使用 Processing 内置的 Serial Library 与设备通信,并使用原生 Java UDP 代码进行 OSC 通信;它们不依赖于 `oscP5`、原始的 Sensel SDK 或本仓库中的任何 Python 代码。 ### Processing 应用程序汇总 | Processing 应用 | 预期用途 | |---|---| | [**sensel_morph_osc_transmitter**](processing/sensel_morph_osc_transmitter/README.md) | 独立的实时 USB 读取器和 OSC 广播器。具备本地显示、性能记录和回放功能。 | | [**sensel_morph_osc_receiver**](processing/sensel_morph_osc_receiver/README.md) | 实时 OSC 监视器(接收器)和查看器。 | | [**sensel_morph_syphon_osc_transmitter**](processing/sensel_morph_syphon_osc_transmitter/README.md) | 独立的实时 USB 读取器,可通过 OSC 和 Syphon(适用于 TouchDesigner 等视听工具)传输设备数据。注意:由于 Syphon 库的限制,最高兼容至 Processing 4.3。 | | [**sensel_morph_websocket_transmitter**](processing/sensel_morph_websocket_transmitter/README.md) | 独立的实时 USB 读取和 WebSocket 发送器(适用于基于浏览器/p5 的客户端)。 | | [**sensel_morph_capture_viewer**](processing/sensel_morph_capture_viewer/README.md) | 离线录制查看器。 | | [**sensel_morph_osc_calibrator**](processing/sensel_morph_osc_calibrator/README.md) | 创建可选的压力校准文件,以补偿固定的噪声模式。 | ### 提供的其他应用程序 ![Processing(右侧)通过 Syphon 和 OSC 与 Touchdesigner(左侧)通信的屏幕截图](https://static.pigsec.cn/wp-content/uploads/repos/cas/50/504f6e8653b5a99cbd0a5aa90d4a374d85c232ed5509425af59ad100dc0295ab.png)
*Processing(右侧)通过 Syphon 和 OSC 与 Touchdesigner(左侧)通信的屏幕截图* 除了 Processing 应用程序外,本仓库还提供: * [**sensel_morph_syphon_osc_receiver.toe**](touchdesigner/sensel_morph_syphon_osc_receiver.toe),一个示例 **TouchDesigner** 项目,用于从提供的发送器接收 Syphon 和/或 OSC 数据; * 用于在 WebSockets 上广播 Sensel Morph 数据的接收器,使用 **p5.js** 构建: * [**sensel_morph_ws_receiver_p5v1**](p5js/sensel_morph_ws_receiver_p5v1/) * [**sensel_morph_ws_receiver_p5v2**](p5js/sensel_morph_ws_receiver_p5v2/) 运行 p5.js 接收器应用程序不需要本地服务器。 ![processing_to_p5js_via_websocket.png](https://static.pigsec.cn/wp-content/uploads/repos/cas/7e/7e8d2b2c1040b8683b47005044d687e7564166624a217bd13a3daf4c05e6db46.png)
*Processing(右侧)通过 WebSockets 与 p5.js(左侧)通信的屏幕截图。* ## Sensel Morph 的 Python 工具 ![在交互控制下的 Sensel Morph LED 图像](https://static.pigsec.cn/wp-content/uploads/repos/cas/0f/0fc10c57c71c9bfbe0f503b1fdfe7c1a7408c2fbc3f5dff984baf1d5f90ad6f7.gif)
*在交互控制下的 Sensel Morph LED 图像* 这里提供的 [Python 工具](python/README.md)是轻量级的命令行实用程序,适用于脚本编写、自动化和软件集成。它们提供对 Morph 的直接 USB 访问、实时 OSC 和 WebSocket 桥接、记录工具以及交互式 LED 控制,使其非常适合创意编程、快速原型制作和协议研究。 Python 命令行工具位于 [`python/`](python/) 目录中。有关安装说明、命令汇总、录制示例以及关于行为和实现的说明,请参阅:[**`python/README.md`**](python/README.md) ### Python 工具汇总 | Python 程序 | 预期用途 | |---|---| | [`sensel_morph_osc.py`](python/tools/sensel_morph_osc.py) | 实时 USB 读取器和 OSC 广播器。 | | [`sensel_morph_ws.py`](python/tools/sensel_morph_ws.py) | 实时 USB 读取器和 WebSocket 广播器。 | | [`sensel_morph_capture_session.py`](python/tools/morph_capture_session.py) | 性能记录工具;生成 JSONL/JSON。 | | [`sensel_morph_led.py`](python/tools/sensel_morph_led.py) | 控制 Morph 的 24 个白色 LED。 | ## 其他文档 本仓库旨在为未来任何破解 Sensel Morph 的人提供权威资源。为此,以下文档提供了更多信息: - [**通信协议**](docs/communications_protocol.md):有关 Sensel Morph 的底层 USB CDC/寄存器协议、帧格式、压缩、标签、触点、加速度计和内置 LED 的信息。 - [**实现细节**](docs/implementation_details.md):关于触点几何结构、校准应用、序列号处理 以及触点摘要语义的底层说明。 - [**逆向工程实验记录**](docs/narrative.md):介绍了如何恢复原始压力、标签、触点几何结构、加速度计、校准和输出桥接。 - [**现有技术调查**](docs/prior_art_survey.md):关于 SDK、示例、OSC 桥接、解压资源以及 其他现有工作的带注释技术参考书目。 - [**第三方归档**](docs/third_party_archive/):对逆向工程工作具有重要意义的第三方文件的小型归档副本。
标签:JS文件枚举, OSC, Processing, Python, WebSocket, 依赖分析, 创意编程, 无后门, 硬件交互, 逆向工具