@m4l-jweb/surface 0.9.5 → 1.0.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (2) hide show
  1. package/README.md +51 -0
  2. package/package.json +2 -2
package/README.md ADDED
@@ -0,0 +1,51 @@
1
+ # @m4l-jweb/surface
2
+
3
+ Declare a device's Live parameters once, as code, and get the real thing: native `live.dial` / `live.text` objects in the patcher, automatable lanes, MIDI mapping, and Push. Plus React hooks to read and write them, and a mocked-Live harness so the UI runs in an ordinary browser.
4
+
5
+ Part of **[m4l-jweb](https://github.com/alienmind/m4l-jweb)** - build Ableton Live devices (`.amxd`) from a TypeScript repo: React UI, LiveAPI glue, CI builds, no Max editor.
6
+
7
+ ## Install
8
+
9
+ ```bash
10
+ pnpm add @m4l-jweb/surface
11
+ ```
12
+
13
+ ## Usage
14
+
15
+ ```ts
16
+ // surface.ts - the declaration
17
+ import { defineSurface } from "@m4l-jweb/surface";
18
+
19
+ export default defineSurface({
20
+ params: {
21
+ cutoff: { type: "float", min: 20, max: 18000, unit: "Hz", default: 18000, exponent: 3 },
22
+ play: { type: "bool", default: 0 },
23
+ },
24
+ });
25
+
26
+ // App.tsx - the same parameter, from React
27
+ import { useParam, useStateSync } from "@m4l-jweb/surface/react";
28
+
29
+ const [cutoff, setCutoff] = useParam(surface, "cutoff"); // a real Live parameter
30
+ const [notes, setNotes] = useStateSync(surface, "notes"); // arbitrary JSON, saved in the Set
31
+ ```
32
+
33
+ ## Notes
34
+
35
+ - A parameter declared here is generated into the patcher AND into the wrapper - one declaration, both sides, so they cannot disagree.
36
+ - `useStateSync()` persists arbitrary JSON into the Ableton Live Set itself, per device instance, restored on load.
37
+ - `@m4l-jweb/surface/dev` renders the device against a mocked Live, so the UI is developed with hot reload in a browser rather than by reopening Live.
38
+
39
+ ## Requirements
40
+
41
+ Ableton Live 12 with Max 9. Devices are built on `[jweb~]`, the browser view with signal outlets; older hosts are unverified.
42
+
43
+ ## Links
44
+
45
+ - [Repository and full README](https://github.com/alienmind/m4l-jweb)
46
+ - [Architecture](https://github.com/alienmind/m4l-jweb/blob/main/doc/ARCHITECTURE.md)
47
+ - [What Max actually does: the measured facts](https://github.com/alienmind/m4l-jweb/blob/main/doc/MAX-FACTS.md)
48
+
49
+ ## License
50
+
51
+ MIT
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@m4l-jweb/surface",
3
- "version": "0.9.5",
3
+ "version": "1.0.0",
4
4
  "description": "m4l-jweb: declare a device's Live parameters as code - the surface Push actually sees - plus a mocked-Live dev harness.",
5
5
  "type": "module",
6
6
  "license": "MIT",
@@ -24,7 +24,7 @@
24
24
  ],
25
25
  "peerDependencies": {
26
26
  "react": ">=18",
27
- "@m4l-jweb/bridge": "0.9.5"
27
+ "@m4l-jweb/bridge": "1.0.0"
28
28
  },
29
29
  "peerDependenciesMeta": {
30
30
  "react": {