From 0bc5fb8c1ea100ef2a85d3ccb7e296485a8e337f Mon Sep 17 00:00:00 2001 From: ewowi Date: Wed, 7 Oct 2026 16:49:21 +0200 Subject: [PATCH 1/3] Drive the Akai APC40 mkII from the MIDI service MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit An Akai APC40 mkII plugged into the browser now drives a board: faders and knobs move the Control slots, the track buttons toggle switches, and the 40 clip pads show and apply the presets, lit dim white when stored and green when applied. The multi-board guide is restructured around the StadBeest video and gains a section on playing it by hand with the APC40. KPI: 256lights | Desktop:2158KB | tick:1/6/8/2/7/9/340/8/9/15us(FPS:1000000/166666/125000/500000/142857/111111/2941/125000/111111/66666) | ESP32:2065KB | src:299(75949) | test:226(51065) | functions-over:334 Commit: src +198/-63 lines | test +104/-3 lines | duplicated lines 3791 -> 3791 (+0) **Core** - The MIDI service gains a `profile` select, Mackie Control or Akai APC40 mkII. The APC40 profile maps faders to CC7, track knobs to CC 0x30 to 0x37 and track buttons to note 0x32, and its hidden `hello` carries the SysEx that switches the desk to host-lit mode plus the knob ring style. - The Control module exposes pad states (empty, stored, active) and `pressPad(slot)`, and mirrors the preset grid to a surface only after a preset is stored, moved, renamed, removed or applied. - `ControlSurface.h` drops the unused ring and color verbs; its notes explain why a surface receives values rather than colors. **UI** - The browser MIDI bridge asks for SysEx access and sends the service's `hello` before the desk slots, again after a reconnect. **Tests** - Four APC40 unit tests: faders, knobs and track buttons; the greeting; the top-left pad storing and applying preset 1; the button lights and knob rings following their slots. A JS test pins the hello parsing. **Docs/CI** - The control-surface reference gains the APC40 mkII section, and the desks get transparent photos; the MIDI service card names the profile. - The multi-board guide opens with the StadBeest video, follows the build order and adds playing it by hand with the APC40. - The S31 CoreBoard and P4-ETH pages gain a board image; the MIDI desks plan gains step 2b. - Scenario observations, repo-health, code, prose and docgen metrics. **Reviews** - 👾 pad states recomputed every 20 ms → done, mirrored only after a preset change. - 👾 ring and color verbs unused → done, removed. - 👾 the pad grid assumes the Control card's width → done, `static_assert`. - 👾 a test checked part of a pad message → done, the full `902002`. - 👾 an empty pad reported as acted on → done, "pad N is empty". - 👾 the reference claimed release velocity 0 → done, "note off" only. - 👾 stale `desk_` comment → done. - 👾 hard-wrapped Sources lines → done. - 👾 a test declared its controls twice → done. Co-Authored-By: Claude Opus 5.5 --- docs/assets/how-to/multi-board/stadbeest.mp4 | Bin 0 -> 514890 bytes docs/assets/reference/akai-apc40-mkii.png | Bin 0 -> 81875 bytes docs/assets/reference/behringer-x-touch.png | Bin 0 -> 90706 bytes docs/assets/reference/icon-qcon-pro-g2.png | Bin 0 -> 62365 bytes .../microsoft-xbox-series-controller.png | Bin 0 -> 18898 bytes docs/how-to/control-surface.md | 4 +- docs/how-to/multi-board-installation.md | 170 +++++++++++------- docs/moonmodules/core/services.md | 10 +- docs/reference/hardware/control-surfaces.md | 107 ++++++++++- docs/reference/hardware/esp32-p4-eth.md | 2 + .../reference/hardware/esp32-s31-coreboard.md | 2 + docs/reference/metrics/code.md | 8 +- docs/reference/metrics/docgen.md | 14 +- docs/reference/metrics/prose.md | 8 +- docs/reference/metrics/repo-health.json | 32 ++-- docs/reference/metrics/repo-health.md | 48 ++--- ...001 - Gamepads and MIDI desks (partial).md | 20 ++- src/core/services/MidiService.h | 145 +++++++++++++-- src/core/system/ControlModule.h | 45 ++++- src/core/util/ControlSurface.h | 45 +---- src/ui/app.js | 26 ++- test/js/ui-midi-bridge.test.mjs | 10 ++ ...o_Effects_pipeline_builds_and_renders.json | 6 +- test/unit/core/unit_ControlModule.cpp | 91 ++++++++++ 24 files changed, 598 insertions(+), 195 deletions(-) create mode 100644 docs/assets/how-to/multi-board/stadbeest.mp4 create mode 100644 docs/assets/reference/akai-apc40-mkii.png create mode 100644 docs/assets/reference/behringer-x-touch.png create mode 100644 docs/assets/reference/icon-qcon-pro-g2.png create mode 100644 docs/assets/reference/microsoft-xbox-series-controller.png diff --git a/docs/assets/how-to/multi-board/stadbeest.mp4 b/docs/assets/how-to/multi-board/stadbeest.mp4 new file mode 100644 index 0000000000000000000000000000000000000000..7dba48f13a2a60a69c1e680570e995f4fd95ad53 GIT binary patch literal 514890 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 z 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%0D2}hT!E$tBRTdL%#V9hZuVGJ#r2?l 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%0Dw><9@l?hT|5oR~w>7QZt1 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¦soDx=TBM4D+4*<7Vm*OJ!9)! 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 literal 0 HcmV?d00001 diff --git a/docs/assets/reference/icon-qcon-pro-g2.png b/docs/assets/reference/icon-qcon-pro-g2.png new file mode 100644 index 0000000000000000000000000000000000000000..80d5710d4a02e8243c6ccc852e1f50d7a58d7d37 GIT binary patch literal 62365 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 literal 0 HcmV?d00001 diff --git a/docs/assets/reference/microsoft-xbox-series-controller.png b/docs/assets/reference/microsoft-xbox-series-controller.png new file mode 100644 index 0000000000000000000000000000000000000000..80d2c98eea5e0ed1fce2c49438c9f9e44718c7b5 GIT binary patch literal 18898 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 literal 0 HcmV?d00001 diff --git a/docs/how-to/control-surface.md b/docs/how-to/control-surface.md index 6713604ff..a8176dbc8 100644 --- a/docs/how-to/control-surface.md +++ b/docs/how-to/control-surface.md @@ -26,7 +26,9 @@ Every route lands on the same surface, so a desk, a phone and the web UI stay in 3. A desk: Chrome asks to use MIDI devices the first time; allow it. A pad: press any button, and the browser lists it. 4. Assign the surface's controls on the Control card, such as `fader2` to a game's paddle. -A Mackie desk in MC mode needs no setup: faders, knobs, SELECT buttons, touch sensors, motors and lights are mapped. A gamepad comes with default rows for its sticks and its A button. +A Mackie desk in MC mode needs no setup: faders, knobs, SELECT buttons, touch sensors, motors and lights are mapped. An Akai APC40 mkII needs one choice: set the MIDI service's `profile` to Akai APC40 mkII, and its faders, knobs, activator buttons and clip pads are mapped, with their lights. A gamepad comes with default rows for its sticks and its A button. + +The Akai APC40 mkII A Microsoft Xbox Series controller The browser offers MIDI and gamepads on a secure origin only. The desktop app's page on `localhost` is one; a board's own page, such as `http://192.168.1.158`, needs its address marked as secure once, as [MIDI, details](../moonmodules/core/services.md#midi-details) shows. diff --git a/docs/how-to/multi-board-installation.md b/docs/how-to/multi-board-installation.md index 0be414209..441fe72b2 100644 --- a/docs/how-to/multi-board-installation.md +++ b/docs/how-to/multi-board-installation.md @@ -6,6 +6,8 @@ An installation is several MoonLight boards that act as one piece: one creature, The worked example is the StadBeest, a walking beast whose legs and eyes run on three boards. Each section names a choice that makes it work; borrow what fits your own piece. + + > New here? Start with **[Install & first light](../gettingstarted.md)** and **[your first script](../tutorials/first-script.md)**. What follows assumes boards that run MoonLight on one network. --- @@ -14,56 +16,15 @@ Each section names a choice that makes it work; borrow what fits your own piece. | part | board | lights | layout | effect | |---|---|---|---|---| -| legs | LightCrafter 16 (ESP32-S3 N8R8) | 10 SK6812 RGBW strips of 144 | Tubes, `tubeDistance` 7 | `stadbeest-legs.mle` | -| left eye | ESP32-S3-Zero, 4 MB | a 241-light ring disc | Rings241 | `stadbeest-eyes.mle` | -| right eye | ESP32-S3-Zero, 4 MB | a 241-light ring disc | Rings241 | `stadbeest-eyes.mle` | - -See it at the [Museumnacht Den Haag](https://museumnachtdenhaag.nl/programma/het-stad-beest-ontwaakt/), where it runs through the night as *Het Stad Beest ontwaakt*. - -### The text next to the beast - -A QR code linking to the multi-board installation guide on moonmodules.org - -> **Het Stad Beest ontwaakt** -> -> Dit beest is gemaakt van wat de stad wegdoet. -> Zijn lijf is een kroonluchter, zijn nek zijn buigzame lamparmen uit de kringloopwinkel, en zijn ogen zitten in 3D-geprinte gloeilampen. -> Vanavond wordt het wakker. -> Het loopt op tien poten van licht, steeds een paar tegelijk, zoals een echt dier. -> Het hoort de muziek: op de beat zet het een stap, kijkt het om zich heen en flitst het. -> Hoe harder de muziek, hoe hoger het zijn poten optilt en hoe wijder zijn pupillen worden. -> -> Niemand bestuurt het. -> Elke paar minuten kiest het zelf nieuwe kleuren en een nieuwe stemming, van rustig tot wild. -> Drie kleine computers praten via wifi met elkaar, zodat poten en ogen samen één beest zijn. -> Ze draaien op MoonLight, open-source lichtsoftware van vrijwilligers: iedereen kan er zelf zo'n beest mee bouwen. -> -> Scan de code om te zien hoe het gemaakt is en om contact met ons op te nemen. -> -> *Door Ewoud Wijma - MoonModules* - -> **The City Beast awakens** -> -> This beast is made of what the city throws away. -> Its body is a chandelier, its neck is bendable lamp arms from a second-hand shop, and its eyes sit in 3D-printed light bulbs. -> Tonight it wakes up. -> It walks on ten legs of light, a few at a time, like a real animal. -> It hears the music: on the beat it takes a step, looks around and flashes. -> The louder the music, the higher it lifts its legs and the wider its pupils grow. -> -> Nobody steers it. -> Every few minutes it picks new colors and a new mood of its own, from calm to wild. -> Three small computers talk over WiFi, so its legs and eyes move as one beast. -> They run MoonLight, open-source lighting software made by volunteers: anyone can build a beast like this. -> -> Scan the code to see how it is made and to get in touch with us. -> -> *By Ewoud Wijma - MoonModules* +| legs | LightCrafter 16 (ESP32-S3 N8R8) | 10 SK6812 RGBW strips of 144 | Tubes, `tubeDistance` 7 | [`stadbeest-legs.mle`](https://github.com/MoonModules/MoonLight/blob/main/moonlive/effects/stadbeest-legs.mle) | +| left eye | ESP32-S3-Zero, 4 MB | a 241-light ring disc | Rings241 | [`stadbeest-eyes.mle`](https://github.com/MoonModules/MoonLight/blob/main/moonlive/effects/stadbeest-eyes.mle) | +| right eye | ESP32-S3-Zero, 4 MB | a 241-light ring disc | Rings241 | [`stadbeest-eyes.mle`](https://github.com/MoonModules/MoonLight/blob/main/moonlive/effects/stadbeest-eyes.mle) | The legs in the preview: ten tubes, one or two legs lifting at a time in a wave from back to front An eye in the preview: a dark pupil in a palette iris on the ring disc, darting and blinking The legs board leads: its control surface holds the shared settings, and the eyes follow it over OSC. Every board hears the same music through WLED audio sync, so all three step and blink on the same beat. +See it at the [Museumnacht Den Haag](https://museumnachtdenhaag.nl/programma/het-stad-beest-ontwaakt/), where it runs through the night as *Het Stad Beest ontwaakt*. --- @@ -104,12 +65,20 @@ Both StadBeest effects are [MoonLive](../moonmodules/light/moonlive.md) scripts, The legs effect card: bpm, swing, lift, stand, sensitivity and pulse The eye effect card: bpm, sensitivity, pulse, pupil, look and blink -**Draw for the medium.** A ring disc has nine rings, from one light in the center to sixty at the edge. -So the eye is built from ring zones: a dark pupil, a palette iris, a dim rim. Fine detail such as iris fibers or a thin slit pupil disappears at that resolution. +**Draw for the medium.** +A ring disc has nine rings, from one light in the center to sixty at the edge. +So the eye is built from ring zones: a dark pupil, a palette iris, a dim rim. +Fine detail such as iris fibers or a thin slit pupil disappears at that resolution. -**Move few things at once.** In a real walk most legs stand still while one or two lift. The legs effect keeps every leg lit and standing, and lifts each one briefly in a wave from back to front, the two sides half a cycle apart. A creature reads as alive when the eye can follow what moves. +**Move few things at once.** +In a real walk most legs stand still while one or two lift. +The legs effect keeps every leg lit and standing, and lifts each one briefly in a wave from back to front, the two sides half a cycle apart. +A creature reads as alive when the eye can follow what moves. -**Tie color to movement.** A standing leg holds its colors, a lifting leg carries them up with its foot, and each step moves the palette on a quarter. The eye's colors move on with each dart of its gaze. Color that drifts on its own competes with the motion instead of showing it. +**Tie color to movement.** +A standing leg holds its colors, a lifting leg carries them up with its foot, and each step moves the palette on a quarter. +The eye's colors move on with each dart of its gaze. +Color that drifts on its own competes with the motion instead of showing it. **Listen to the right signal.** @@ -119,9 +88,15 @@ So the eye is built from ring zones: a dark pupil, a palette iris, a dim rim. Fi The raw frequency bands change every frame, and driven straight into brightness or height they look random. -**Let two boards agree without talking.** The eyes pick each dart's direction from `audioPeakHz()` at the beat, which both boards read the same. +**Let two boards agree without talking.** +The eyes pick each dart's direction from `audioPeakHz()` at the beat, which both boards read the same. So they look the same way at the same moment, with no message between them. +**Use them yourself.** +The legs, the eyes and the autopilot are part of MoonLight's [script library](https://github.com/MoonModules/MoonLight/tree/main/moonlive). +Every device running MoonLight lists them in its script picker and downloads one when it is chosen. +The full code: [`stadbeest-legs.mle`](https://github.com/MoonModules/MoonLight/blob/main/moonlive/effects/stadbeest-legs.mle), [`stadbeest-eyes.mle`](https://github.com/MoonModules/MoonLight/blob/main/moonlive/effects/stadbeest-eyes.mle) and [`stadbeest-autopilot.mls`](https://github.com/MoonModules/MoonLight/blob/main/moonlive/services/stadbeest-autopilot.mls); to write your own, start with [your first script](../tutorials/first-script.md). + --- ## 3. Iterate on the board @@ -140,6 +115,7 @@ A script that does not compile leaves its effect dark, so keep the last working ## 4. One surface layout for every board Each board's [Control](../moonmodules/core/system.md#control) card is a desk of eight faders, eight encoders and eight switches, and each slot is assigned to one control by name, such as `stadbeest-legs.bpm`. + The legs board's Control card: each slot labeled after the control it drives, such as pulse, bpm, swing, lift and run Use one slot layout across the whole installation: a slot means the same thing on every board where it applies. @@ -149,6 +125,7 @@ A board with nothing for a slot leaves it unassigned. |---|---|---| | `switch1` | `Drivers.on` | `Drivers.on` | | `switch2` | legs `pulse` | eye `pulse` | +| `switch8` | autopilot `run` | | | `fader1` | `Drivers.brightness` | `Drivers.brightness` | | `fader2` | legs `bpm` | eye `bpm` | | `fader3` | legs `sensitivity` | eye `sensitivity` | @@ -159,7 +136,6 @@ A board with nothing for a slot leaves it unassigned. | `encoder2` | | eye `pupil` | | `encoder3` | | eye `look` | | `encoder4` | | eye `blink` | -| `switch8` | autopilot `run` | | A slot holds the value of the control it drives, so `fader2` at 33 means `bpm` 33, and assigning a slot changes nothing until the slot moves. Assign from the card, or with `POST /api/control` and `{"module":"Control","control":"fader2Target","value":"stadbeest-legs.bpm"}`. @@ -187,9 +163,17 @@ Three details matter: --- -## 6. Running unattended +## 6. One source of music + +Every board runs the [Audio](../moonmodules/core/services.md#audio) service in receive mode, and one machine sends WLED audio sync to all of them. +That machine is a board with a microphone, or a computer running MoonLight that captures what it plays. +One source means one beat: the legs step, the eyes dart and every flash lands on the same moment. + +--- + +## 7. Running unattended -A [MoonLiveService](../moonmodules/core/services.md#moonliveservice) on the leader runs `stadbeest-autopilot.mls`, which plays the beast through a whole museum night without anyone at the desk. +A [MoonLiveService](../moonmodules/core/services.md#moonliveservice) on the leader runs [`stadbeest-autopilot.mls`](https://github.com/MoonModules/MoonLight/blob/main/moonlive/services/stadbeest-autopilot.mls), which plays the beast through a whole museum night without anyone at the desk. The autopilot service card: script, run and minutes @@ -199,15 +183,42 @@ A [MoonLiveService](../moonmodules/core/services.md#moonliveservice) on the lead - **One slot at a time:** it writes one slot every 20 ms, every ten seconds, so no burst reaches the network. - **Handing over:** its `run` switch sits on `switch8`; off gives the beast back to people and desks. -## 7. One source of music +--- -Every board runs the [Audio](../moonmodules/core/services.md#audio) service in receive mode, and one machine sends WLED audio sync to all of them. -That machine is a board with a microphone, or a computer running MoonLight that captures what it plays. -One source means one beat: the legs step, the eyes dart and every flash lands on the same moment. +## 8. Driving it by hand: an Akai APC40 mkII + +A desk on the leader moves the whole installation, since its changes go out over OSC like any other. +The StadBeest takes an [Akai APC40 mkII](../reference/hardware/control-surfaces.md#akai-apc40-mkii): faders, knobs and buttons for the shared slots, and a pad per preset. + +The Akai APC40 mkII: eight knobs with LED rings, a grid of 40 colored clip pads, eight channel strips with faders + +**Setting it up** + +1. On the leader, add a **MIDI** service under **Services** and set its `profile` to `Akai APC40 mkII`. +2. Plug the APC40 into a laptop next to the beast, and open the leader's page in Chrome. +3. Mark the leader's address as secure in Chrome once, as [MIDI, details](../moonmodules/core/services.md#midi-details) shows, since a board's own page is plain `http`. +4. Allow MIDI, with SysEx, when Chrome asks. The desk lights up: the knob rings, the activator lights and the preset pads. + +The browser is the bridge between desk and board, so the laptop keeps the leader's page open while the desk is in use. + +**Playing it** + +| APC40 | the StadBeest | +|---|---| +| track faders 1-6 | brightness, then the legs' `bpm`, `sensitivity`, `swing`, `lift` and `stand` | +| track knobs 1-4 | the palette, then the eyes' `pupil`, `look` and `blink` | +| activator 1 | on and off | +| activator 2 | `pulse`, legs and eyes together | +| activator 8 | the autopilot's `run` | +| clip pads | the presets, the top-left pad being preset 1; a stored preset glows white and the applied one green | + +The autopilot rewrites the shared slots every ten seconds, so switch it off with activator 8 before playing by hand, and on again to hand the beast back. +The eyes follow every move over OSC, as they follow the autopilot. +A phone or a tablet reaches the same slots too: [connecting a control surface](control-surface.md). --- -## 8. Updating boards you cannot reach +## 9. Updating boards you cannot reach Boards inside a sculpture are hard to reach with a cable, so update them over the network and check before you send. @@ -218,7 +229,44 @@ Boards inside a sculpture are hard to reach with a cable, so update them over th --- -## Driving it by hand +## The text next to the beast -Every slot is also reachable from a phone, a tablet or a hardware desk: [connecting a control surface](control-surface.md). -A desk on the leader moves the whole installation, since its changes go out over OSC like any other. +The card beside the StadBeest at the Museumnacht, in Dutch and English, with a QR code to the guide. + +A QR code linking to the multi-board installation guide on moonmodules.org + +> **Het Stad Beest ontwaakt** +> +> Dit beest is gemaakt van wat de stad wegdoet. +> Zijn lijf is een kroonluchter, zijn nek zijn buigzame lamparmen uit de kringloopwinkel, en zijn ogen zitten in 3D-geprinte gloeilampen. +> Vanavond wordt het wakker. +> Het loopt op tien poten van licht, steeds een paar tegelijk, zoals een echt dier. +> Het hoort de muziek: op de beat zet het een stap, kijkt het om zich heen en flitst het. +> Hoe harder de muziek, hoe hoger het zijn poten optilt en hoe wijder zijn pupillen worden. +> +> Niemand bestuurt het. +> Elke paar minuten kiest het zelf nieuwe kleuren en een nieuwe stemming, van rustig tot wild. +> Drie kleine computers praten via wifi met elkaar, zodat poten en ogen samen één beest zijn. +> Ze draaien op MoonLight, open-source lichtsoftware van vrijwilligers: iedereen kan er zelf zo'n beest mee bouwen. +> +> Scan de code om te zien hoe het gemaakt is en om contact met ons op te nemen. +> +> *Door Ewoud Wijma - MoonModules* + +> **The City Beast awakens** +> +> This beast is made of what the city throws away. +> Its body is a chandelier, its neck is bendable lamp arms from a second-hand shop, and its eyes sit in 3D-printed light bulbs. +> Tonight it wakes up. +> It walks on ten legs of light, a few at a time, like a real animal. +> It hears the music: on the beat it takes a step, looks around and flashes. +> The louder the music, the higher it lifts its legs and the wider its pupils grow. +> +> Nobody steers it. +> Every few minutes it picks new colors and a new mood of its own, from calm to wild. +> Three small computers talk over WiFi, so its legs and eyes move as one beast. +> They run MoonLight, open-source lighting software made by volunteers: anyone can build a beast like this. +> +> Scan the code to see how it is made and to get in touch with us. +> +> *By Ewoud Wijma - MoonModules* diff --git a/docs/moonmodules/core/services.md b/docs/moonmodules/core/services.md index b03159b2d..6ec4498ae 100644 --- a/docs/moonmodules/core/services.md +++ b/docs/moonmodules/core/services.md @@ -115,7 +115,7 @@ Detail: [technical](moxygen/AnalogService.md) A Service added per board: **a gamepad's buttons and sticks**, each driving a control through the same rows the other input services use. The pad plugs into the computer showing the interface, over USB or Bluetooth, and the browser reports it, so it works on every chip. -Gamepad service controls +Gamepad service controls A Microsoft Xbox Series controller, the pad the service is verified with - `inputs`: the rows, each a button or stick of the standard layout, a `learn` and a target. @@ -127,11 +127,13 @@ Detail: [technical](moxygen/GamepadService.md) ### MIDI -A Service added per board: **a MIDI control desk** driving the control surface, decoded as Mackie Control. The desk plugs into the computer showing the interface and the browser reports it, so it works on every chip; a Mackie desk such as the iCON QCon or the Behringer X-Touch in MC mode works without setup. +A Service added per board: **a MIDI control desk** driving the control surface. The desk plugs into the computer showing the interface and the browser reports it, so it works on every chip. A Mackie desk such as the iCON QCon or the Behringer X-Touch works without setup, an Akai APC40 mkII after one choice. MIDI service controls -Faders move the surface's faders, the knobs turn its encoders, and each channel's SELECT button flips its switch. The desk follows the surface back: motors, SELECT lights and knob rings. A hand on a fader holds its motor still. ⌄ details. +- `profile`: the desk's layout, `Mackie Control` or `Akai APC40 mkII`. + +Faders move the surface's faders, the knobs turn its encoders, and each channel's SELECT button flips its switch. The desk follows the surface back: motors, SELECT lights and knob rings. A hand on a fader holds its motor still. An APC40's clip pads apply presets. ⌄ details. Detail: [technical](moxygen/MidiService.md) @@ -182,6 +184,8 @@ A device's own page, such as `http://192.168.1.158`, is not a secure origin, so The decoding follows Mackie Control: a fader is 14-bit pitch bend on its own channel, its touch sensor a note from 0x68, a knob a relative turn on a control change from 0x10, and SELECT a note from 0x18. The master fader has no slot on the surface and is ignored. The way back uses the same messages: pitch bend moves a motor, a SELECT note at full velocity lights its button, and a control change from 0x30 fills a knob's ring. The device keeps what the desk should show and pushes it up to 25 times a second; the browser sends only what changed, so a page opened later moves the motors to where the surface already is. +**The Akai APC40 mkII profile.** The browser greets the desk with the SysEx that puts it in Alternate Ableton Live mode, where every light is the host's, so Chrome asks once to send SysEx as well. Track faders 1-8 move the surface's faders and track knobs 1-8 set its encoders, each reading 0 to 127. Activator buttons 1-8 flip its switches. The 40 clip pads apply presets 1-40, the top-left pad being preset 1 as on the Control card. The way back lights each activator while its switch is on, fills each knob's ring like a meter, and colors each pad: dark when empty, dim white when a preset is stored, green for the one applied. The faders have no motors. Every message is in [the APC40 reference](../../reference/hardware/control-surfaces.md#akai-apc40-mkii). + ## Audio, details #### Microphone wiring diff --git a/docs/reference/hardware/control-surfaces.md b/docs/reference/hardware/control-surfaces.md index 1699b64a8..d7b586e9a 100644 --- a/docs/reference/hardware/control-surfaces.md +++ b/docs/reference/hardware/control-surfaces.md @@ -2,14 +2,16 @@ The physical desks on the bench, and Mackie Control as it travels on the wire. A desk here drives [ControlModule](../../moonmodules/core/system.md#control)'s encoders, faders and switches, which were laid out to match this class of hardware. How to connect one: [Connecting a control surface](../../how-to/control-surface.md). -**Neither desk speaks OSC.** Both are **Mackie Control** surfaces over MIDI, which MoonLight reads through its [MIDI service](../../moonmodules/core/services.md#midi). +**None of these desks speaks OSC.** The X-Touch and the QCon are **Mackie Control** surfaces over MIDI, which MoonLight reads through its [MIDI service](../../moonmodules/core/services.md#midi). +The APC40 mkII has a MIDI layout of its own. ## Behringer X-Touch (Universal) -The larger of the two, and the only one with a network port. +The larger of the Mackie desks, and the only desk here with a network port. -**Sources:** [product page](https://www.behringer.com/product.html?modelCode=0808-AAF) · -[Ardour's notes on Behringer in MCU mode](https://manual.ardour.org/using-control-surfaces/mackie-control-protocol/behringer-devices-in-mackielogic-control-mode/) +The Behringer X-Touch: eight channel strips with encoders, small displays and motorized faders, a master fader, transport and a jog wheel + +**Sources:** [product page](https://www.behringer.com/product.html?modelCode=0808-AAF) · [Ardour's notes on Behringer in MCU mode](https://manual.ardour.org/using-control-surfaces/mackie-control-protocol/behringer-devices-in-mackielogic-control-mode/) | | | |---|---| @@ -20,13 +22,14 @@ The larger of the two, and the only one with a network port. | Connectivity | USB-B (MIDI), 5-pin DIN MIDI in/out, **RJ45 Ethernet for RTP-MIDI** | | Not supported | OSC | -**The Ethernet port carries RTP-MIDI, not OSC.** RTP-MIDI (RFC 6295, UDP port 5004) is MIDI -tunnelled over a network with a session layer: an invitation handshake, synchronization, and a journal so a dropped packet can be recovered rather than losing a note. It is a real protocol to implement, not a framing detail, which is what separates "reach this desk over the LAN" from "reach it over USB". +**The Ethernet port carries RTP-MIDI, not OSC.** RTP-MIDI (RFC 6295, UDP port 5004) is MIDI tunneled over a network with a session layer. +That layer is an invitation handshake, synchronization, and a journal, so a dropped packet can be recovered rather than losing a note. It is a real protocol to implement, not a framing detail, which is what separates "reach this desk over the LAN" from "reach it over USB". ## iCON QCon Pro G2 -**Sources:** [product page](https://iconproaudio.com/product/qcon-pro-g2/) · -[user manual (PDF)](https://c3.zzounds.com/media/QCONPX-User-manual-English-7481d0b0d7b94af8a008c7e2634d0f59.pdf) +The iCON QCon Pro G2: eight channel strips with knobs and motorized faders, a master fader, a long display and a jog wheel + +**Sources:** [product page](https://iconproaudio.com/product/qcon-pro-g2/) · [user manual (PDF)](https://c3.zzounds.com/media/QCONPX-User-manual-English-7481d0b0d7b94af8a008c7e2634d0f59.pdf) | | | |---|---| @@ -54,3 +57,91 @@ MCU is ordinary MIDI carrying agreed meanings, so a parser is small; the work is | Scribble strips | SysEx, `0x12` after the header, then the text | **It is bidirectional by nature, and that is the point of the hardware.** The motors move only because the host sends fader positions back, and the scribble strips show only what the host writes. MoonLight's [MIDI service](../../moonmodules/core/services.md#midi) sends the positions, the button lights and the rings, so a preset change moves the faders. + +## Akai APC40 mkII + +A clip launcher built for Ableton Live: a grid of RGB pads above a row of eight channel strips, and no motors. + +The Akai APC40 mkII: eight knobs with LED rings, a grid of 40 colored clip pads with 5 scene pads, eight channel strips with faders, and device knobs on the right + +**Sources:** [product page](https://www.akaipro.com/apc40-mkii) · [communications protocol v1.2 (PDF)](https://cdn.inmusicbrands.com/akai/attachments/apc40II/APC40Mk2_Communications_Protocol_v1.2.pdf), the reference for every number below + +| | | +|---|---| +| Faders | 9 x 45 mm, **not motorized** (8 track + 1 master), plus a crossfader | +| Knobs | 8 track knobs and 8 device knobs, each with a 15-segment LED ring; a tempo and a cue knob without rings | +| Pads | 40 RGB clip-launch pads (8 wide, 5 high) and 5 RGB scene-launch pads | +| Buttons per track | clip stop, track select, activator (numbered 1-8), crossfader A/B, solo, record arm | +| Other buttons | transport (play, record, session record), navigation (up, down, left, right, bank), shift, tap tempo, nudge, device and bank controls | +| Protocols | its own MIDI layout; not Mackie Control | +| Connectivity | **USB only** (class-compliant MIDI, bus-powered), one MIDI port, a footswitch input | +| Not supported | OSC, Ethernet, Mackie Control | + +### Three modes + +The host picks the mode with a SysEx message: `F0 47 7F 29 60 00 04 F7`. +The APC40 starts in Generic mode on every power-up. + +| mode | byte | buttons | lights | knobs | +|---|---|---|---|---| +| Generic | `0x40` | activator, solo and record arm toggle themselves; track select sends nothing | the APC40 runs them | the device knobs follow the selected track | +| Ableton Live | `0x41` | momentary | the host, except the knob rings | not banked | +| Alternate Ableton Live | `0x42` | momentary | **all of them the host's** | not banked | + +**Alternate Ableton Live mode suits a host that owns the state**, as MoonLight's control surface does. +Every press only reports and every light shows what the host sends, so a value changed elsewhere never leaves a light out of step. +A browser needs the user's permission to send SysEx. + +### On the wire + +| control | message | channel | number | value | +|---|---|---|---|---| +| Track fader 1-8 | control change | track 1-8 = 0-7 | 7 | 0-127, absolute | +| Master fader | control change | 0 | 14 | 0-127 | +| Crossfader | control change | 0 | 15 | 0-127 | +| Device knob 1-8 | control change | 0 (banked per track in Generic mode) | 16-23 | 0-127, absolute | +| Track knob 1-8 | control change | 0 | 48-55 | 0-127, absolute | +| Tempo, cue level | control change | 0 | 13, 47 | relative: 1-63 up, 127 down to 64 | +| Footswitch | control change | 0 | 64 | 127 pressed, 0 released | +| Clip launch 1-40 | note | 0 | 0-39, bottom-left first | press 127, release note off | +| Record arm, solo, activator, track select, clip stop | note | track 1-8 = 0-7 | 48, 49, 50, 51, 52 | press 127 | +| Crossfader A/B | note | track 1-8 = 0-7 | 66 | press 127 | +| Scene launch 1-5 | note | 0 | 82-86 | press 127 | +| Device and bank controls | note | 0 | 58-65 | press 127 | +| Master, stop all clips | note | 0 | 80, 81 | press 127 | +| Pan, sends, user, metronome | note | 0 | 87-90 | press 127 | +| Play, stop, record | note | 0 | 91, 92, 93 | press 127 | +| Up, down, right, left | note | 0 | 94, 95, 96, 97 | press 127 | +| Shift, tap tempo, nudge -, nudge + | note | 0 | 98, 99, 100, 101 | press 127 | +| Session record, bank lock | note | 0 | 102, 103 | press 127 | + +The clip pads count from the bottom-left: notes 0-7 are the bottom row and 32-39 the top row, left to right. +The protocol does not say so; it was measured on the device. +A release arrives as a note off. + +### The way back + +A light takes the same number its control sends, in the other direction. + +- **A one-color light** (activator, solo, record arm, track select and the rest): a note on with velocity 1-127 lights it, velocity 0 or a note off clears it. Clip stop also blinks at velocity 2, in step with the tempo; crossfader A/B shows yellow at 1 and orange at 2-127. +- **An RGB pad** (clip launch and scene launch): the velocity picks one of 128 colors from Akai's palette, 0 being off. + The channel picks how it shows: 0 is steady, 1-5 a one-shot, 6-10 pulsing and 11-15 blinking. + Each of the last three runs at a rate from 1/24 to 1/2 of the tempo. +- **A knob ring**: the knob's own control change, 0-127, sets its position. The ring style is a second control change, 56-63 for the track knobs and 24-31 for the device knobs. + Its value 0 is off, 1 a single light, 2 fills like a volume meter and 3 fills out from the center like a pan control. + +### Where it fits MoonLight + +The [Control](../../moonmodules/core/system.md#control) surface has eight faders, eight encoders, eight switches and a grid of preset pads. +The APC40 has a control for each: + +| APC40 | Control surface | +|---|---| +| Track faders 1-8 | `fader1` to `fader8` | +| Track knobs 1-8, with their rings | `encoder1` to `encoder8` | +| Activator buttons 1-8, with their lights | `switch1` to `switch8` | +| Clip pads 1-40, with their colors | the first 40 preset pads | + +Left over for later: the master fader and crossfader, the 8 device knobs, the 5 scene pads, and the transport and navigation buttons. +Scene pads could recall a scene, and tap tempo could set the beat when no music plays. + diff --git a/docs/reference/hardware/esp32-p4-eth.md b/docs/reference/hardware/esp32-p4-eth.md index d6f7916f7..fed839c2f 100644 --- a/docs/reference/hardware/esp32-p4-eth.md +++ b/docs/reference/hardware/esp32-p4-eth.md @@ -1,5 +1,7 @@ # Waveshare ESP32-P4-ETH hardware reference +![Waveshare ESP32-P4-ETH](../../assets/deviceModels/esp32-p4-waveshare-eth.png) + Pin maps and onboard features for the **Waveshare ESP32-P4-ETH**, read from the schematic so MoonLight work reads this instead of re-scraping the PDF. The board runs the plain `esp32p4rev1-eth` firmware, the same build the P4-NANO uses, and is `"Waveshare ESP32-P4-ETH"` in the device catalog. **Sources** diff --git a/docs/reference/hardware/esp32-s31-coreboard.md b/docs/reference/hardware/esp32-s31-coreboard.md index b63f0712c..7e4958f95 100644 --- a/docs/reference/hardware/esp32-s31-coreboard.md +++ b/docs/reference/hardware/esp32-s31-coreboard.md @@ -1,5 +1,7 @@ # ESP32-S31 Function-CoreBoard-1 hardware reference +![Espressif ESP32-S31 Function-CoreBoard-1](../../assets/deviceModels/esp32-s31-function-coreboard-1.jpg) + Pin maps and onboard features for the Espressif **ESP32-S31 Function-CoreBoard-1**, read from the official schematic so MoonLight work (Ethernet, audio, SD, USB-host) reads this instead of re-scraping the PDF. The board is the bench S31 (`esp32s31` firmware). **Sources** diff --git a/docs/reference/metrics/code.md b/docs/reference/metrics/code.md index 913740afb..52d900c18 100644 --- a/docs/reference/metrics/code.md +++ b/docs/reference/metrics/code.md @@ -64,7 +64,7 @@ The next function worth simplifying is at the top of each file's list. | `src/ui/migrate.js` | 41 | `line 29: 'I2cBusModule'`, module type in the UI 1 | | `test/unit/core/unit_FilesystemModule_persistence.cpp` | 34 | `lines 158-170, also in test/unit/core/unit_FilesystemModule_persistence.cpp:124`, duplicated block 13 | | `src/core/system/MqttModule.cpp` | 31 | `MqttModule::routePublish`, complex function 29 | -| `src/ui/app.js` | 29 | `app.js`, large file 8976 | +| `src/ui/app.js` | 29 | `app.js`, large file 8994 | | `src/core/moonlive/MoonLiveCompiler.cpp` | 27 | `moonlive::Parser::parseCall`, complex function 59 | | `src/light/drivers/ParallelLedDriver.h` | 27 | `ParallelLedDriver::reinit`, complex function 36 | | `src/light/drivers/PreviewDriver.h` | 27 | `PreviewDriver::buildCoordTable`, complex function 37 | @@ -90,7 +90,7 @@ The next function worth simplifying is at the top of each file's list. | `src/light/layers/Layer.h` | 13 | `Layer in 132 files`, name spread 132 | | `test/unit/light/unit_HlsDriver.cpp` | 13 | `lines 30-47, also in test/unit/light/unit_PanelCardDriver.cpp:22`, duplicated block 18 | | `test/unit/light/unit_RandomMapModifier.cpp` | 13 | `lines 116-132, also in test/unit/light/unit_BlurzEffect.cpp:49`, duplicated block 17 | -| `src/core/system/ControlModule.h` | 12 | `ControlModule::storePreset, line 930`, large stack frame 1296 | +| `src/core/system/ControlModule.h` | 12 | `ControlModule::storePreset, line 967`, large stack frame 1296 | | `src/core/system/DevicesModule.h` | 12 | `lines 73-80, also in src/core/system/DevicesModule.h:59`, duplicated block 8 | | `src/light/drivers/HlsDriver.h` | 12 | `lines 105-117, also in src/light/drivers/RtspDriver.h:92`, duplicated block 13 | | `src/light/moonlive/MoonLiveBuiltins_light.h` | 12 | `moonlive::mm_light_escape`, complex function 13 | @@ -227,7 +227,7 @@ The next function worth simplifying is at the top of each file's list. | `moondeck/moontube/reset_device.py` | 2 | `lines 241-246, also in moondeck/moontube/reset_device.py:219`, duplicated block 6 | | `moondeck/scenario/run_scenario.py` | 2 | `lines 33-39, also in moondeck/docs/build_docs.py:43`, duplicated block 7 | | `src/core/moonlive/MoonLiveBuiltins.h` | 2 | `lines 208-219, also in src/core/moonlive/MoonLiveBuiltins.h:111`, duplicated block 12 | -| `src/core/services/MidiService.h` | 2 | `MidiService::decode`, complex function 18 | +| `src/core/services/MidiService.h` | 2 | `MidiService::decodeMackie`, complex function 17 | | `src/core/system/DevicePlugin.h` | 2 | `lines 94-100, also in src/core/system/DevicePlugin.h:75`, duplicated block 7 | | `src/core/system/HttpServerModule.h` | 2 | `HttpServerModule in 21 files`, name spread 21 | | `src/core/system/I2cBusModule.h` | 2 | `I2cBusModule::scan`, complex function 18 | @@ -362,7 +362,7 @@ The next function worth simplifying is at the top of each file's list. | `test/js/ui-visibility.test.mjs` | 1 | `lines 7-16, also in test/js/ui-ws-scheme.test.mjs:13`, duplicated block 10 | | `test/python/test_check_docgen.py` | 1 | `test_check_docgen.py`, large file 1577 | | `test/scenario_runner.cpp` | 1 | `scenario_runner.cpp`, large file 1266 | -| `test/unit/core/unit_ControlModule.cpp` | 1 | `unit_ControlModule.cpp`, large file 1574 | +| `test/unit/core/unit_ControlModule.cpp` | 1 | `unit_ControlModule.cpp`, large file 1665 | | `test/unit/core/unit_Control_apply_absent_key.cpp` | 1 | `lines 92-103, also in test/unit/core/unit_HttpServerModule_apply.cpp:39`, duplicated block 12 | | `test/unit/core/unit_moonlive_compiler.cpp` | 1 | `unit_moonlive_compiler.cpp`, large file 1865 | | `test/unit/core/unit_moonlive_fill.cpp` | 1 | `unit_moonlive_fill.cpp`, large file 1380 | diff --git a/docs/reference/metrics/docgen.md b/docs/reference/metrics/docgen.md index 47ebcb8ab..76d146f53 100644 --- a/docs/reference/metrics/docgen.md +++ b/docs/reference/metrics/docgen.md @@ -4,9 +4,9 @@ Generated by [`moondeck/check/check_docgen.py`](../../../moondeck/check/check_do Every place the generated documentation breaks the shape [the standards](../../contributing/documentation-standards.md#the-card) define. Current state only: the trend is this file's git history. The list only shrinks. -**0 error(s)** and **2871 warning(s)** across 356 page(s). +**0 error(s)** and **2870 warning(s)** across 356 page(s). -**5627 appendix line(s)** after `@moreinfo`. This only falls as well: a cleanup cuts first, and moves only what neither the code, the test name nor the spec says. +**5617 appendix line(s)** after `@moreinfo`. This only falls as well: a cleanup cuts first, and moves only what neither the code, the test name nor the spec says. An error is in a file that generates a documentation page, a header or a catalog page, so the finding is a defect in what gets published and it fails the gate. A warning is worth fixing without being worth stopping a commit for: any finding in an implementation file, which publishes nothing, and the rules still staged as counts in a header too, the over-wide line and the appendix section nothing refers to. Both are counted here, because a warning nobody sees is a warning nobody fixes. @@ -18,7 +18,7 @@ The split is temporary. It stages the sweep rather than ranking the two kinds of |---|---:|---:| | over-wide comment lines | 0 | 1750 | | multi-line comment blocks | 0 | 447 | -| appendix sections nothing refers to | 0 | 427 | +| appendix sections nothing refers to | 0 | 426 | | over-long sentences | 0 | 89 | | over-wide doc lines | 0 | 83 | | member deep dives | 0 | 75 | @@ -34,7 +34,7 @@ The unit a sweep runs in: one summary page and the headers it owns, as the [hier | `core/system.md` | 0 | 321 | | `light/effects.md` | 0 | 81 | | `light/drivers.md` | 0 | 56 | -| `core/supporting.md` | 0 | 50 | +| `core/supporting.md` | 0 | 49 | | `light/power-functions.md` | 0 | 44 | | `light/supporting.md` | 0 | 31 | | `core/services.md` | 0 | 27 | @@ -148,13 +148,13 @@ By rule, warnings: 56 appendix sections nothing refers to. ### core/supporting.md -**0 error(s)** and **50 warning(s)** across 23 file(s). +**0 error(s)** and **49 warning(s)** across 23 file(s). | Findings | File | | |---:|---|---| | 6 | `src/core/util/BinaryBroadcaster.h` | warning | | 4 | `src/core/util/AudioFrame.h` | warning | -| 4 | `src/core/util/ControlSurface.h` | warning | +| 3 | `src/core/util/ControlSurface.h` | warning | | 3 | `src/core/util/LightOutput.h` | warning | | 3 | `src/core/util/PinList.h` | warning | | 3 | `src/core/util/build_info.h` | warning | @@ -164,7 +164,7 @@ By rule, warnings: 56 appendix sections nothing refers to. | 2 | `src/core/util/ImprovFrame.h` | warning | | 1-2 each | *13 more warning files, 18 findings* | | -By rule, warnings: 50 appendix sections nothing refers to. +By rule, warnings: 49 appendix sections nothing refers to. ### light/power-functions.md diff --git a/docs/reference/metrics/prose.md b/docs/reference/metrics/prose.md index 339951ee7..8ce2e446d 100644 --- a/docs/reference/metrics/prose.md +++ b/docs/reference/metrics/prose.md @@ -9,14 +9,14 @@ This number is the debt behind that gate, and it RATCHETS: a rise fails the chec docgen.md does. A comment is prose wherever it lives, so a `//` in the web interface and a `#` in a script are counted beside a `///` in a header. -**3174 finding(s)** across 376 file(s). +**3170 finding(s)** across 374 file(s). | rule | findings | |---|---| -| `MoonLight.EmDash` | 1626 | +| `MoonLight.EmDash` | 1625 | | `MoonLight.Weasel` | 738 | -| `MoonLight.SentenceLength` | 474 | -| `MoonLight.Temporal` | 247 | +| `MoonLight.SentenceLength` | 472 | +| `MoonLight.Temporal` | 246 | | `MoonLight.Spelling` | 43 | | `MoonLight.SelfReference` | 33 | | `MoonLight.NegatedHeading` | 13 | diff --git a/docs/reference/metrics/repo-health.json b/docs/reference/metrics/repo-health.json index 9f15a373c..b27a7eaaa 100644 --- a/docs/reference/metrics/repo-health.json +++ b/docs/reference/metrics/repo-health.json @@ -1,11 +1,11 @@ { - "commit": "9df5b93b", + "commit": "131bca9c", "flash": { "esp32s3-n16r8": 2245600, "esp32": 2194704, "esp32p4rev1-eth": 2177776, "esp32p4rev1-eth-wifi": 2358896, - "esp32s3-n8r8": 2245584, + "esp32s3-n8r8": 2247248, "esp32s31": 2549760, "esp32-16mb": 2060368, "esp32-eth": 1681040, @@ -14,7 +14,7 @@ "esp32p4rev3-eth": 2073888, "esp32s3-zero": 2181296, "esp32-pico": 2107168, - "desktop-macos": 2193864, + "desktop-macos": 2210632, "desktop-windows": 1925120 }, "measured": { @@ -509,7 +509,7 @@ "Effects_pipeline_builds_and_renders": { "desktop-macos": { "p50": 6, - "p95": 11, + "p95": 10, "n": 32, "last": "2026-10-07" }, @@ -647,7 +647,7 @@ "scenario_p50": { "Effects_pipeline_builds_and_renders": { "p50": 6, - "p95": 11, + "p95": 10, "n": 32, "last": "2026-10-07" }, @@ -679,17 +679,17 @@ } }, "loc": { - "core": 27121, + "core": 27247, "light": 30733, "platform": 17209, - "ui": 12227, - "test": 63075, + "ui": 12245, + "test": 63152, "moondeck": 30598 }, "comments": { "core": { - "lines": 6491, - "ratio": 0.265 + "lines": 6496, + "ratio": 0.264 }, "light": { "lines": 7410, @@ -700,11 +700,11 @@ "ratio": 0.234 }, "ui": { - "lines": 3469, + "lines": 3473, "ratio": 0.3 }, "test": { - "lines": 6947, + "lines": 6952, "ratio": 0.128 }, "moondeck": { @@ -713,19 +713,19 @@ } }, "tests": { - "cases": 2326, + "cases": 2330, "scenarios": 30 }, "docs": { - "md_files": 142, - "md_lines": 30771, + "md_files": 143, + "md_lines": 30998, "plans_files": 41, "backlog_lines": 3247, "lessons_lines": 532, "claude_md_lines": 283 }, "complexity": { - "functions": 4162, + "functions": 4141, "over_threshold": 334, "worst_ccn": 128 } diff --git a/docs/reference/metrics/repo-health.md b/docs/reference/metrics/repo-health.md index e7381e81f..cc1f096b4 100644 --- a/docs/reference/metrics/repo-health.md +++ b/docs/reference/metrics/repo-health.md @@ -1,6 +1,6 @@ # Repo health -Measured at `9df5b93b`. Generated by [`moondeck/check/repo_health.py`](../../../moondeck/check/repo_health.py) on every KPI-gate run. **Do not edit by hand.** +Measured at `131bca9c`. Generated by [`moondeck/check/repo_health.py`](../../../moondeck/check/repo_health.py) on every KPI-gate run. **Do not edit by hand.** Current state only; the trend is this file's git history (`git log -p docs/reference/metrics/repo-health.md`). Nothing here fails a build: the numbers make growth visible, the judgment stays human. @@ -8,22 +8,22 @@ Current state only; the trend is this file's git history (`git log -p docs/refer | Metric | v6.0.0 | Now | Change | |---|---:|---:|---:| -| flash desktop-macos | 1,963 KB | 2,142 KB | +179.4 KB (+9.1%) | +| flash desktop-macos | 1,963 KB | 2,159 KB | +195.8 KB (+10.0%) | | flash esp32 | 2,061 KB | 2,143 KB | +82.1 KB (+4.0%) | | flash esp32p4rev1-eth | 2,022 KB | 2,127 KB | +105.0 KB (+5.2%) | | flash esp32s3-n16r8 | 2,111 KB | 2,193 KB | +81.5 KB (+3.9%) | -| flash esp32s3-n8r8 | 2,038 KB | 2,193 KB | +154.7 KB (+7.6%) | +| flash esp32s3-n8r8 | 2,038 KB | 2,195 KB | +156.3 KB (+7.7%) | | flash esp32s3-zero | 1,977 KB | 2,130 KB | +153.4 KB (+7.8%) | | flash esp32s31 | 2,395 KB | 2,490 KB | +94.6 KB (+3.9%) | | tick Effects_pipeline_builds_and_renders (desktop-macos) | 7 µs | 6 µs | -1 (-14.3%) | | tick Layouts_resize_reallocates_live (desktop-macos) | 12 µs | 10 µs | -2 (-16.7%) | -| lines core | 22,299 | 27,121 | +4,822 (+21.6%) | +| lines core | 22,299 | 27,247 | +4,948 (+22.2%) | | lines light | 31,054 | 30,733 | -321 (-1.0%) | | lines platform | 16,798 | 17,209 | +411 (+2.4%) | -| lines ui | 11,394 | 12,227 | +833 (+7.3%) | -| lines test | 57,759 | 63,075 | +5,316 (+9.2%) | +| lines ui | 11,394 | 12,245 | +851 (+7.5%) | +| lines test | 57,759 | 63,152 | +5,393 (+9.3%) | | lines moondeck | 29,325 | 30,598 | +1,273 (+4.3%) | -| unit tests | 2,120 | 2,326 | +206 (+9.7%) | +| unit tests | 2,120 | 2,330 | +210 (+9.9%) | | scenarios | 21 | 30 | +9 (+42.9%) | Against the release `v6.0.0`, the fixed point a user compares with; the tables below compare against the last commit. A firmware not rebuilt since `v6.0.0` is left out, and a measure the release did not record yet, such as the code report, joins from the next one. @@ -32,7 +32,7 @@ Against the release `v6.0.0`, the fixed point a user compares with; the tables b | Target | Flash | Capacity | Used | Built | |---|---:|---:|---:|:--:| -| desktop-macos | 2,142 KB | - | - | yes | +| desktop-macos | 2,159 KB (+16 KB) ⚠ | - | - | yes | | desktop-windows | 1,880 KB | - | - | **STALE 7d** | | esp32 | 2,143 KB | 2,496 KB | 86% | carried 0d | | esp32-16mb | 2,012 KB | 4,096 KB | 49% | **STALE 28d** | @@ -42,8 +42,8 @@ Against the release `v6.0.0`, the fixed point a user compares with; the tables b | esp32p4rev1-eth | 2,127 KB | 4,096 KB | 52% | carried 0d | | esp32p4rev1-eth-wifi | 2,304 KB | 4,096 KB | 56% | **STALE 7d** | | esp32p4rev3-eth | 2,025 KB | 4,096 KB | 49% | **STALE 8d** | -| esp32s3-n16r8 | 2,193 KB (+272 B) ⚠ | 4,096 KB | 54% | yes | -| esp32s3-n8r8 | 2,193 KB | 3,072 KB | 71% | yes | +| esp32s3-n16r8 | 2,193 KB | 4,096 KB | 54% | yes | +| esp32s3-n8r8 | 2,195 KB (+2 KB) ⚠ | 3,072 KB | 71% | yes | | esp32s3-zero | 2,130 KB | 2,496 KB | 85% | yes | | esp32s31 | 2,490 KB | 4,096 KB | 61% | carried 0d | | qemu | 1,351 KB | - | - | carried (age?) | @@ -54,14 +54,14 @@ Against the release `v6.0.0`, the fixed point a user compares with; the tables b | Target | Net | New | Removed | Grown | Shrunk | Other | Since | |---|---:|---:|---:|---:|---:|---:|---| -| esp32s3-n16r8 | +0.3 KB | +0.6 KB | -0.6 KB | +1.7 KB | -1.4 KB | +0.1 KB | `9df5b93b` | -| esp32s3-n8r8 | +0.0 KB | +0.0 KB | +0.0 KB | +0.0 KB | +0.0 KB | +0.0 KB | `9df5b93b` | -| esp32s3-zero | +0.0 KB | +0.0 KB | +0.0 KB | +0.0 KB | +0.0 KB | +0.0 KB | `9df5b93b` | +| esp32s3-n16r8 | +0.0 KB | +0.0 KB | +0.0 KB | +0.0 KB | +0.0 KB | +0.0 KB | `131bca9c` | +| esp32s3-n8r8 | +1.6 KB | +1.3 KB | -0.9 KB | +2.3 KB | -1.0 KB | -0.1 KB | `131bca9c` | +| esp32s3-zero | +0.0 KB | +0.0 KB | +0.0 KB | +0.0 KB | +0.0 KB | +0.0 KB | `131bca9c` | Largest moves: -- **esp32s3-n16r8**: `mm::moonlive::compileSource(char const*, mm::moonlive::Built` +543 B, `mm::IpSettings::problem() const` +361 B, `mm::ipv4::staticProblem(unsigned char const*, unsigned char ` -337 B, `_ZN2mm8moonlive15XtensaAssembler8slotAddrENS0_3RegEh$part$0` +180 B, `mm::Drivers::firstOutputRgb(unsigned char*) const` -139 B -- **esp32s3-n8r8**: none +- **esp32s3-n16r8**: none +- **esp32s3-n8r8**: `mm::MidiService::decode(unsigned char const*, unsigned char)` -528 B, `mm::MidiService::decodeBatch(char const*)` +522 B, `mm::ModuleFactory::registerType(char cons` -471 B, `mm::MidiService::decodeMackie(unsigned char const*)` +426 B, `mm::HueDriver::HueDriver()` +416 B - **esp32s3-zero**: none What this commit's flash went to, symbol by symbol against the measurement at `Since`. New is new functionality, removed and shrunk are what a cleanup saved, and other is what no symbol owns, such as merged strings and alignment. A rename reads as removed plus new, which the largest moves expose. @@ -79,7 +79,7 @@ What this commit's flash went to, symbol by symbol against the measurement at `S | Scenario | desktop-macos | desktop-windows | esp32 | esp32s3-n16r8 | esp32p4rev1-eth | esp32s31 | esp32-eth | esp32-eth-wifi | desktop-docker-arm64 | esp32p4rev1-eth-wifi | |---|---|---|---|---|---|---|---|---|---|---| | Aurora_fps | 1,549 | 6,661 ? | 217,295 ? | 188,782 ? | 83,632 ? | 87,613 ? | - | - | 7,532 ? | 6,343,087 ? | -| Control_a_palette_preset_changes_only_the_palette | 5 (−1) ✓ | - | - | 2,073 | - | - | - | - | - | - | +| Control_a_palette_preset_changes_only_the_palette | 5 | - | - | 2,073 | - | - | - | - | - | - | | Drivers_output_and_brightness | 7 | 4 ? | - | 8,690 ? | - | - | - | - | 218 ? | - | | Effects_pipeline_builds_and_renders | 6 | 4 ? | - | - | - | - | - | - | - | - | | Effects_swap_while_running | 1 | 4 ? | - | 10,000 ? | - | - | - | - | 287 ? | - | @@ -106,7 +106,7 @@ Microseconds. `?` marks a cell backed by fewer than 4 samples, which is a first | Scenario | p50 | p95 | n | |---|---:|---:|---:| -| Effects_pipeline_builds_and_renders | 6 µs | 11 µs | 32 | +| Effects_pipeline_builds_and_renders | 6 µs | 10 µs | 32 | | Layouts_resize_reallocates_live | 10 µs | 19 µs | 32 | These build a bare pipeline with no optional modules, so a change here is a change in the pipeline itself rather than in what was measured. A new module belongs in an advanced scenario, which keeps its own numbers. @@ -124,25 +124,25 @@ These build a bare pipeline with no optional modules, so a change here is a chan | Area | Lines | Comments | Comment share | |---|---:|---:|---:| -| core | 27,121 (−1) ✓ | 6,491 | 26.5 % | +| core | 27,247 (+126) ⚠ | 6,496 | 26.4 % (−0.1 %) ✓ | | light | 30,733 | 7,410 | 27.1 % | | platform | 17,209 | 3,614 | 23.4 % | -| ui | 12,227 | 3,469 | 30.0 % | -| test | 63,075 | 6,947 | 12.8 % | +| ui | 12,245 (+18) ⚠ | 3,473 | 30.0 % | +| test | 63,152 (+77) ⚠ | 6,952 | 12.8 % | | moondeck | 30,598 | 4,969 | 18.5 % | ## Tests | Kind | Count | |---|---:| -| unit cases | 2,326 | +| unit cases | 2,330 (+4) ✓ | | scenarios | 30 | ## Complexity | Metric | Value | |---|---:| -| functions | 4,162 | +| functions | 4,141 (−21) ⚠ | | over threshold | 334 | | worst CCN | 128 | @@ -150,8 +150,8 @@ These build a bare pipeline with no optional modules, so a change here is a chan | Metric | Value | |---|---:| -| markdown files | 142 | -| markdown lines | 30,771 (+1) ⚠ | +| markdown files | 143 (+1) ⚠ | +| markdown lines | 30,998 (+227) ⚠ | | plan files | 41 | | backlog lines | 3,247 | | lessons lines | 532 | diff --git a/docs/work/present/Plan-20261001 - Gamepads and MIDI desks (partial).md b/docs/work/present/Plan-20261001 - Gamepads and MIDI desks (partial).md index 8ccc10940..b7070baf7 100644 --- a/docs/work/present/Plan-20261001 - Gamepads and MIDI desks (partial).md +++ b/docs/work/present/Plan-20261001 - Gamepads and MIDI desks (partial).md @@ -169,6 +169,24 @@ Checked against the tools a lighting or VJ operator already knows. The shape mat - ✅ Verified the outbound half with the QCon: the motors follow the surface, a self-playing Pong included, and a touched fader holds only the desk's own motor while OSC boards keep following. - 🚧 Verify the outbound half with the X-Touch, and a preset change moving the faders. +### 2b. MidiService, the Akai APC40 mkII profile + +The APC40 mkII is on the bench, so the Akai profile the Decided section waited for is next. Every number comes from [the reference](../../reference/hardware/control-surfaces.md#akai-apc40-mkii). + +- A `profile` select on `MidiService`: Mackie Control (as now) or Akai APC40 mkII. The browser bridge already passes bytes both ways unchanged, so only the service's decoding and its desk state differ per profile. +- **Alternate Ableton Live mode**, set by SysEx whenever the desk connects: every press only reports and every light is the host's, so the board owns each value and the desk shows it. The service offers the SysEx in a hidden control the bridge sends on connect; Web MIDI asks the user once for SysEx permission. +- Inbound: + - track faders 1-8 (CC 7, channels 0-7) onto `fader1`-`fader8`; + - track knobs 1-8 (CC 48-55, absolute) onto `encoder1`-`encoder8`; + - activator buttons 1-8 (note 50, channels 0-7) toggle `switch1`-`switch8` on a press; + - clip pads (notes 0-39, counted from the bottom-left) apply presets 1-40, the rows flipped so the top-left pad is preset 1 as on the Control card. +- Outbound: each knob's ring shows its encoder (set to the volume style once), each activator lights when its switch is on, and each pad shows its preset slot: off when empty, dim when stored, bright when active. +- The Control module lets a surface press a preset pad and tells surfaces each pad's state, through the existing `SurfaceControl::Pad`. +- Tests: decoding each message kind, the desk state per kind, the row flip, the mode SysEx and the pad states. +- Docs: the MIDI section on the services page and [Connecting a control surface](../../how-to/control-surface.md). +- Verify on the desktop app with the APC40 on the product owner's Mac in Chrome on `localhost`, then on the StadBeest, where the eyes follow over OSC. +- Left for later: the master fader and crossfader, the device knobs, the scene pads, transport and tap tempo. + ### 3. Surface-only input targets ✅ - `ButtonService`, `AnalogService`, `InfraredService`, `GamepadService` and OSC's `/mm/control//` path lose their direct `Module.control` targets; every input reaches a control through the surface. @@ -193,6 +211,6 @@ The X-Touch over Ethernet with no computer: RFC 6295's session handshake and jou - **The pad is an Xbox Series X|S controller** (it has the Share button). The browser reaches it as a standard gamepad, over USB or Bluetooth on the computer; USB on the board needs GIP, so that route waits. - **No Bluetooth on the board**, for its flash, RAM and shared-radio cost; Bluetooth devices come in through the browser. -- **Akai desks are in scope, through learn.** They work through `MidiService` like every MIDI desk; a dedicated Akai profile, for pad LEDs and rings, waits until an Akai is on the bench. The MCU profile is verified with the X-Touch and the QCon. +- **Akai desks are in scope.** They work through `MidiService` like every MIDI desk. The APC40 mkII is on the bench and gets its own profile (step 2b); other Akai desks come in through learn. The MCU profile is verified with the X-Touch and the QCon. - **The hand-back is a fixed ten seconds.** A control for it was built and removed again: nobody tunes it, and it cost a control on three games. - **Rows point at the surface**, and direct targets go for every input service (step 3). diff --git a/src/core/services/MidiService.h b/src/core/services/MidiService.h index e1b99f002..f382b3438 100644 --- a/src/core/services/MidiService.h +++ b/src/core/services/MidiService.h @@ -14,7 +14,7 @@ namespace mm { -/// A MIDI control desk driving the control surface, decoded as Mackie Control: faders, their touch sensors, knobs and channel buttons. +/// A MIDI control desk driving the control surface, decoded by its `profile`: Mackie Control, or the Akai APC40 mkII. /// @card MidiService.png /// /// The desk plugs into the computer showing the interface; the browser reads it with the Web MIDI API and writes each batch of messages into the hidden, live `midi` control. @@ -22,13 +22,18 @@ namespace mm { /// /// The way back is a surface: the hidden `desk` control holds what the desk shows, one message per fader motor, button light and knob ring. /// It is state rather than a log, so the browser sends only the slots that changed, and a page opened later still finds the motors' positions. +/// The hidden `hello` control holds what the browser sends whenever the desk connects, such as the SysEx that hands an APC40's lights to the host. class MidiService : public MoonModule, public ControlSurface { public: /// A service, so the container accepts it as a child. ModuleRole role() const MM_NONBLOCKING override { return ModuleRole::Service; } - /// Declare the inbound batch and the desk's state. + /// Which desk this is, since each desk lays its controls out in its own messages. + uint8_t profile = 0; + + /// Declare the desk's profile, the inbound batch, the desk's state and its greeting. void defineControls() override { + controls_.addSelect("profile", profile, kProfiles, kProfileCount); controls_.addText("midi", midi_, sizeof(midi_)); controls_.setHidden(controls_.count() - 1, true); controls_.setLive(controls_.count() - 1); @@ -36,6 +41,11 @@ class MidiService : public MoonModule, public ControlSurface { controls_.setHidden(controls_.count() - 1, true); controls_.setReadOnly(controls_.count() - 1, true); controls_.setLive(controls_.count() - 1); + controls_.addText("hello", hello_, sizeof(hello_)); + controls_.setHidden(controls_.count() - 1, true); + controls_.setReadOnly(controls_.count() - 1, true); + controls_.setLive(controls_.count() - 1); + writeHello(); MoonModule::defineControls(); } @@ -52,10 +62,42 @@ class MidiService : public MoonModule, public ControlSurface { MoonModule::release(); } - /// Show one surface control on the desk: a fader's motor, a switch's SELECT light, an encoder's ring. + /// Show one surface control on the desk, in the profile's messages. void sendValue(SurfaceControl kind, uint8_t index, uint8_t value) override { uint8_t m[3]; uint8_t slot; + if (profile == kApc40 ? !apcMessage(kind, index, value, m, slot) : !mackieMessage(kind, index, value, m, slot)) return; + writeSlot(slot, m); + } + + /// Decode each batch the interface writes, and rebuild the desk's state if a client overwrote it or the profile changed. + void onControlChanged(const char* name) override { + if (std::strcmp(name, "desk") == 0 || std::strcmp(name, "profile") == 0) { + desk_[0] = 0; + writeHello(); + if (auto* c = ControlModule::active(); c && attached_) c->resendTo(this); + return; + } + if (std::strcmp(name, "midi") != 0) return; + statusBuf_[0] = 0; + decodeBatch(midi_); + if (statusBuf_[0]) setStatus(statusBuf_); + } + + /// Decode one message of up to three bytes, as the profile lays the desk out. + void decode(const uint8_t* m, uint8_t len) { + if (len < 3) return; + if (profile == kApc40) decodeApc(m); + else decodeMackie(m); + } + +private: + static constexpr uint8_t kApc40 = 1; + static constexpr uint8_t kProfileCount = 2; + static constexpr const char* kProfiles[kProfileCount] = {"Mackie Control", "Akai APC40 mkII"}; + + /// A Mackie desk's message for one surface control: a fader's motor, a switch's SELECT light, an encoder's ring. + static bool mackieMessage(SurfaceControl kind, uint8_t index, uint8_t value, uint8_t m[3], uint8_t& slot) { if (kind == SurfaceControl::Fader && index < ControlModule::kFaderCount) { // The byte back to 14 bits, so the desk's own pitch bend decodes to this byte again. const uint16_t v14 = static_cast((value << 6) | (value >> 2)); @@ -69,8 +111,38 @@ class MidiService : public MoonModule, public ControlSurface { m[0] = 0xB0; m[1] = static_cast(kRingCC + index); m[2] = static_cast(kRingFill | (1 + value * 10 / 255)); slot = static_cast(kDeskFaders + ControlModule::kSwitchCount + index); } else { - return; + return false; + } + return true; + } + + // The APC40 runs in Alternate Ableton Live mode, set by `hello`, so every light is the host's to set. + /// An APC40's message for one surface control: an activator's light, a knob's ring, a preset pad's color. + static bool apcMessage(SurfaceControl kind, uint8_t index, uint8_t value, uint8_t m[3], uint8_t& slot) { + if (kind == SurfaceControl::Switch && index < ControlModule::kSwitchCount) { + m[0] = static_cast((value ? 0x90 : 0x80) | index); m[1] = kApcActivatorNote; m[2] = value ? 0x7F : 0x00; + slot = static_cast(kDeskFaders + index); + } else if (kind == SurfaceControl::Encoder && index < ControlModule::kEncoderCount) { + m[0] = 0xB0; m[1] = static_cast(kApcKnobCC + index); m[2] = static_cast(value >> 1); + slot = static_cast(kDeskFaders + ControlModule::kSwitchCount + index); + } else if (kind == SurfaceControl::Pad && index < kApcPads) { + static constexpr uint8_t kColor[] = {0, kApcStoredColor, kApcActiveColor}; + m[0] = 0x90; m[1] = apcNoteOfPad(index); m[2] = kColor[value < 3 ? value : 0]; + slot = static_cast(kPadSlot + index); + } else { + return false; // the faders have no motors } + return true; + } + + // The APC40 counts its pads from the bottom-left, where the Control card counts from the top-left. + /// The note of the pad on preset cell `pad`. + static uint8_t apcNoteOfPad(uint8_t pad) { + return static_cast((kApcRows - 1 - pad / kApcCols) * kApcCols + pad % kApcCols); + } + + /// Store one message in its slot of the desk's state, which the browser sends on. + void writeSlot(uint8_t slot, const uint8_t m[3]) { if (!desk_[0]) { // Every slot is written in the same call that attaches, before the state is read, so no placeholder reaches a desk. for (uint8_t i = 0; i < kDeskSlots; i++) std::memcpy(desk_ + i * kSlotChars, "000000 ", kSlotChars); @@ -83,22 +155,45 @@ class MidiService : public MoonModule, public ControlSurface { notifyValuesChanged(); } - /// Decode each batch the interface writes, and rebuild the desk's state if a client overwrote it. - void onControlChanged(const char* name) override { - if (std::strcmp(name, "desk") == 0) { - desk_[0] = 0; - if (auto* c = ControlModule::active(); c && attached_) c->resendTo(this); + /// What the browser sends when the desk connects: for an APC40, Alternate Ableton Live mode and rings that fill like a meter. + void writeHello() { + hello_[0] = 0; + if (profile != kApc40) return; + int n = mm::formatTo(hello_, sizeof(hello_), "f0477f29600004%02x010000f7", kApcHostLightsMode); + for (uint8_t i = 0; i < ControlModule::kEncoderCount && n + 7 < static_cast(sizeof(hello_)); i++) + n += mm::formatTo(hello_ + n, sizeof(hello_) - static_cast(n), " b0%02x%02x", kApcRingTypeCC + i, kApcRingVolume); + } + + /// An APC40 message: a control change from a fader or knob, or a press. + void decodeApc(const uint8_t* m) { + const uint8_t status = m[0] & 0xF0, channel = m[0] & 0x0F; + if (status == 0xB0) apcControlChange(channel, m[1], m[2]); + else if (status == 0x90 && m[2] > 0) apcPress(channel, m[1]); // the release does nothing + } + + /// A track fader or a track knob, both reading 0..127, stretched so the top of the travel is the surface's 255. + void apcControlChange(uint8_t channel, uint8_t cc, uint8_t raw) { + const uint8_t value = static_cast(raw * 255 / 127); + if (cc == kApcFaderCC && channel < ControlModule::kFaderCount) writeSurface("fader", channel, value); + else if (channel == 0 && cc >= kApcKnobCC && cc < kApcKnobCC + ControlModule::kEncoderCount) + writeSurface("encoder", static_cast(cc - kApcKnobCC), value); + } + + /// An activator flips its switch, and a clip pad applies the preset on its cell. + void apcPress(uint8_t channel, uint8_t note) { + if (note == kApcActivatorNote && channel < ControlModule::kSwitchCount) { + toggleSwitch(channel); return; } - if (std::strcmp(name, "midi") != 0) return; - statusBuf_[0] = 0; - decodeBatch(midi_); - if (statusBuf_[0]) setStatus(statusBuf_); + if (channel != 0 || note >= kApcPads) return; + const uint8_t pad = apcNoteOfPad(note); // its own inverse: the row flip undoes itself + auto* c = ControlModule::active(); + const bool applied = c && c->pressPad(pad); + mm::formatTo(statusBuf_, sizeof(statusBuf_), applied ? "pad %u" : "pad %u is empty", static_cast(pad) + 1u); } - /// Decode one message of up to three bytes, as Mackie Control lays a desk out. - void decode(const uint8_t* m, uint8_t len) { - if (len < 3) return; + /// A Mackie Control message: a fader, a fader touch, a channel button or a knob turn. + void decodeMackie(const uint8_t* m) { const uint8_t status = m[0] & 0xF0, channel = m[0] & 0x0F; if (status == 0xE0) { // A fader: 14-bit pitch bend, one channel per fader; channel 8 is the master, which the surface has no slot for. @@ -131,14 +226,25 @@ class MidiService : public MoonModule, public ControlSurface { } } -private: static constexpr uint8_t kTouchNote = 0x68; ///< the first fader's touch sensor static constexpr uint8_t kSelectNote = 0x18; ///< the first channel's SELECT button static constexpr uint8_t kVPotCC = 0x10; ///< the first knob's rotation static constexpr uint8_t kRingCC = 0x30; ///< the first knob's light ring static constexpr uint8_t kRingFill = 0x20; ///< the ring mode that fills up to the position + static constexpr uint8_t kApcFaderCC = 0x07; ///< a track fader, one channel per track + static constexpr uint8_t kApcKnobCC = 0x30; ///< the first track knob, and its ring + static constexpr uint8_t kApcRingTypeCC = 0x38; ///< the first track knob's ring style + static constexpr uint8_t kApcRingVolume = 2; ///< the ring style that fills like a meter + static constexpr uint8_t kApcActivatorNote = 0x32; ///< a track's activator button, one channel per track + static constexpr uint8_t kApcHostLightsMode = 0x42; ///< Alternate Ableton Live mode: the host sets every light + static constexpr uint8_t kApcCols = 8, kApcRows = 5; + static constexpr uint8_t kApcPads = kApcCols * kApcRows; + static_assert(kApcCols == ControlModule::kGridCols, "a pad row is a row of the Control card's preset grid"); + static constexpr uint8_t kApcStoredColor = 2; ///< a dim white, from the APC40's palette + static constexpr uint8_t kApcActiveColor = 21; ///< green static constexpr uint8_t kDeskFaders = ControlModule::kFaderCount; - static constexpr uint8_t kDeskSlots = ControlModule::kFaderCount + ControlModule::kSwitchCount + ControlModule::kEncoderCount; + static constexpr uint8_t kPadSlot = ControlModule::kFaderCount + ControlModule::kSwitchCount + ControlModule::kEncoderCount; + static constexpr uint8_t kDeskSlots = kPadSlot + kApcPads; static constexpr uint8_t kSlotChars = 7; ///< "e07f7f " per message /// Read "hex hex...", each token one message; a malformed token ends the batch. @@ -183,7 +289,8 @@ class MidiService : public MoonModule, public ControlSurface { } char midi_[512] = {}; ///< the newest batch the interface wrote - char desk_[kDeskSlots * kSlotChars] = {}; ///< the faders, then the switches, then the encoders, as the desk should show them + char desk_[kDeskSlots * kSlotChars] = {}; ///< the faders, the switches, the encoders, then the preset pads, as the desk should show them + char hello_[96] = {}; ///< what the browser sends when the desk connects char statusBuf_[40] = {}; ///< what the last message did bool attached_ = false; }; diff --git a/src/core/system/ControlModule.h b/src/core/system/ControlModule.h index efc656638..4da4a87ea 100644 --- a/src/core/system/ControlModule.h +++ b/src/core/system/ControlModule.h @@ -103,9 +103,35 @@ class ControlModule : public MoonModule, public ListSource { else resendTo(s); } - /// Push EVERY value to one surface, whatever the mirror last sent. + /// Push EVERY value to one surface, whatever the mirror last sent, the preset pads included. void resendTo(ControlSurface* s) { for (uint8_t slot = 0; slot < kSlotCount; slot++) resendOne(s, slot); + if (!s) return; + uint8_t pads[kMaxPresets]; + padStates(pads); + for (uint8_t i = 0; i < kMaxPresets; i++) s->sendValue(SurfaceControl::Pad, i, pads[i]); + } + + /// What a preset pad shows: empty, a stored preset, or the one applied. + enum PadState : uint8_t { kPadEmpty = 0, kPadStored = 1, kPadActive = 2 }; + + /// Every pad's state, one per grid cell. + void padStates(uint8_t out[kMaxPresets]) const { + std::memset(out, kPadEmpty, kMaxPresets); + for (uint8_t r = 0; r < presetCount_; r++) { + const Preset& p = presets_[r]; + if (p.slot >= kMaxPresets) continue; + bool active = false; + for (uint8_t i = 0; i < kCaptureCount && !active; i++) active = p.name[0] && std::strcmp(p.name, current_[i]) == 0; + out[p.slot] = active ? kPadActive : kPadStored; + } + } + + /// Apply the preset on grid cell `slot`, as a click on its pad does; false for an empty cell. + bool pressPad(uint8_t slot) { + for (uint8_t r = 0; r < presetCount_; r++) + if (presets_[r].slot == slot) return applyPreset(presets_[r].name); + return false; } // A network surface asks for this rather than resendTo, since a burst of datagrams is what WiFi drops. @@ -175,9 +201,15 @@ class ControlModule : public MoonModule, public ListSource { mirrorOne(SurfaceControl::Encoder, i, encoders_[i], sentEncoders_[i]); for (uint8_t i = 0; i < kFaderCount; i++) mirrorOne(SurfaceControl::Fader, i, faders_[i], sentFaders_[i]); + // The pads change only when a preset is stored, moved, renamed, removed or applied, so they are read only then. + if (padsMirrored_ == padsRevision_) return; + padsMirrored_ = padsRevision_; + uint8_t pads[kMaxPresets]; + padStates(pads); + for (uint8_t i = 0; i < kMaxPresets; i++) mirrorOne(SurfaceControl::Pad, i, pads[i], sentPads_[i]); } - /// Follow every assignment and push what moved, so a value changing underneath, such as a self-playing game, reaches a desk at once. A pass costs about 1.3 us with all 24 assigned, on a desktop. + /// Follow every assignment and push what moved, so a value changing underneath, such as a self-playing game, reaches a desk at once. A pass costs about 1.3 us with all 24 assigned, on a desktop; the preset pads add a pass only when one of them changed. void tick20ms() MM_NONBLOCKING override { MoonModule::tick20ms(); mirrorToSurfaces(); @@ -670,6 +702,7 @@ class ControlModule : public MoonModule, public ListSource { return false; } presetsRevision_++; // the surface changed: consumers caching the list must re-read + padsRevision_++; sortBySlot(); return true; } @@ -704,6 +737,7 @@ class ControlModule : public MoonModule, public ListSource { /// Re-read the folder. void rescan() { presetsRevision_++; // consumers caching the list re-read it + padsRevision_++; presetCount_ = 0; platform::fsList(kPresetDir, &onEntry, this); for (uint8_t i = 0; i < presetCount_; i++) readHeader(presets_[i]); @@ -717,6 +751,7 @@ class ControlModule : public MoonModule, public ListSource { /// Re-read one preset after its file changed, which costs one file where a folder walk on an ESP32 costs tens of milliseconds per preset. void refreshPreset(const char* name) { presetsRevision_++; + padsRevision_++; uint8_t at = 0; while (at < presetCount_ && std::strcmp(presets_[at].name, name) != 0) at++; char path[128]; @@ -784,6 +819,7 @@ class ControlModule : public MoonModule, public ListSource { void clearCurrentIfNamed(const char* name) { for (uint8_t i = 0; i < kCaptureCount; i++) if (std::strcmp(current_[i], name) == 0) current_[i][0] = '\0'; + padsRevision_++; } /// Move an active-role claim to a preset's new name, so a rename does not silently unlight it. @@ -791,6 +827,7 @@ class ControlModule : public MoonModule, public ListSource { for (uint8_t i = 0; i < kCaptureCount; i++) if (std::strcmp(current_[i], from) == 0) std::snprintf(current_[i], sizeof(current_[i]), "%s", to); + padsRevision_++; } /// A preset name becomes a FILE name, so it must not be able to steer the path. @@ -978,6 +1015,7 @@ class ControlModule : public MoonModule, public ListSource { // The preset now holds each role it sets; the others keep whoever held them, so a look and a layout stay active together. for (uint8_t i = 0; p && i < kCaptureCount; i++) if (p->roles & (1u << i)) std::snprintf(current_[i], sizeof(current_[i]), "%s", presetName); + padsRevision_++; setSurfaceStatusf("applied %s", presetName); return true; } @@ -1049,6 +1087,7 @@ class ControlModule : public MoonModule, public ListSource { /// The last value KNOWN to a surface, so only changes go out. uint8_t sentSwitches_[kSwitchCount] = {}; uint8_t sentFaders_[kFaderCount] = {}; + uint8_t sentPads_[kMaxPresets] = {}; ///< per preset pad, the PadState surfaces were last sent /// One bit per control, per bank, per attached surface: a hand is on it there. See setTouched. struct Touch { uint32_t switches = 0, encoders = 0, faders = 0; }; Touch touched_[kMaxSurfaces] = {}; @@ -1113,6 +1152,8 @@ class ControlModule : public MoonModule, public ListSource { Preset presets_[kMaxPresets]; uint8_t presetCount_ = 0; uint32_t presetsRevision_ = 0; ///< see presetsRevision(): drives HA's preset re-fetch + uint32_t padsRevision_ = 1; ///< bumped by every change to what a preset pad shows + uint32_t padsMirrored_ = 0; ///< the padsRevision_ surfaces were last mirrored at uint32_t nextId_ = 0; char name_[kMaxNameLen] = {}; /// The module the next save writes, a look by default. diff --git a/src/core/util/ControlSurface.h b/src/core/util/ControlSurface.h index e7fe9249e..d9be20a24 100644 --- a/src/core/util/ControlSurface.h +++ b/src/core/util/ControlSurface.h @@ -18,23 +18,13 @@ /// On a motorized desk the motors move because the host sends positions back, and on an Akai APC the pads have no meaning until the host lights them. /// The surface is often the output device, and this interface is how it gets driven. /// -/// ## Why four verbs +/// ## Why a value, not a color /// -/// The hardware has four kinds of feedback, and folding them into one would force every transport to pretend: -/// -/// | Verb | What it carries | -/// |------|-----------------| -/// | `sendValue` | a position: a motor, an Open Stage Control widget, an LED bar | -/// | `sendRing` | a position and the style the ring draws, which the APC40 mk2 (CC 0x18/0x38) and the X-Touch MINI (CC 1-8) both carry on a separate CC | -/// | `sendColor` | a color, for an RGB grid, in per-vendor SysEx with no shared structure | -/// | `sendLabel` | text, where the transport has somewhere to put it, such as a scribble strip | -/// -/// ## Why the unimplemented three stay -/// -/// Everything past `sendValue` has a default, so a transport implements only what its hardware can do. -/// OSC overrides one method, a GPIO surface lights an LED, and an APC transport overrides the color verbs. -/// OSC and MIDI are the transports today, and both override the value verb only, so the other three have no implementer yet. -/// They are kept because their shapes come from the hardware rather than a guess, and a default each means a transport that cannot do one writes no code for it. +/// The surface sends what a control holds, and the transport turns it into what its hardware shows. +/// A fader's value becomes a motor position, an encoder's a ring and a switch's a button light. +/// A preset pad's state (empty, stored, applied) becomes a color the APC40 picks from its own palette. +/// So one verb covers every desk, and no hardware detail such as a color or a ring style crosses into ControlModule. +/// `sendLabel` is the one other verb, for text a desk can show, such as a scribble strip. #include @@ -43,36 +33,15 @@ namespace mm { /// Which bank a surface control belongs to, so a kind plus an index names exactly one control. enum class SurfaceControl : uint8_t { Switch, Encoder, Fader, Pad }; -/// What an LED ring draws as well as where it points, a pan ring filling from the center and a volume ring from one end. -enum class RingStyle : uint8_t { Single, Volume, Pan, Fan, Off }; - /// One attached surface, implemented by a transport and called when the state it mirrors changes. class ControlSurface { public: /// Destroyed through this interface, since ControlModule holds surfaces by base pointer. virtual ~ControlSurface() = default; - /// A control's position changed, `value` being 0..255, the unit every surface control uses. + /// A control's value changed, `value` being 0..255, the unit every surface control uses; for a preset pad, a ControlModule::PadState. virtual void sendValue(SurfaceControl kind, uint8_t index, uint8_t value) = 0; - /// An encoder's ring: where it points and what it draws, defaulting to the position alone. - virtual void sendRing(uint8_t index, uint8_t value, RingStyle style) { - (void)style; - sendValue(SurfaceControl::Encoder, index, value); - } - - /// A pad's color. Does nothing by default: most transports have no color at all. - virtual void sendColor(uint8_t index, uint8_t r, uint8_t g, uint8_t b) { - (void)index; (void)r; (void)g; (void)b; - } - - /// Several colors at once, `rgb` being `count` RGB triples, defaulting to a `sendColor` loop. - virtual void sendColors(const uint8_t* rgb, uint8_t count) { - if (!rgb) return; - for (uint8_t i = 0; i < count; i++) - sendColor(i, rgb[i * 3], rgb[i * 3 + 1], rgb[i * 3 + 2]); - } - /// A name for a control, where the transport can show one. Does nothing by default. virtual void sendLabel(uint8_t index, const char* text) { (void)index; (void)text; } }; diff --git a/src/ui/app.js b/src/ui/app.js index 6893bf62e..81b1065ce 100644 --- a/src/ui/app.js +++ b/src/ui/app.js @@ -8911,7 +8911,9 @@ requestAnimationFrame(gamepadLoop); // offer Web MIDI on a secure origin (localhost); Safari has none. Access is requested only once a // MidiService exists, since asking shows the user a permission prompt. // The way back: the service's hidden `desk` control is what the desk shows, one message per slot, -// and the bridge sends the desk the slots that changed since it last sent them. +// and the bridge sends the desk the slots that changed since it last sent them. Its hidden `hello` +// goes out whenever a desk connects, such as the SysEx that hands an APC40's lights to the host, +// which is why access asks for SysEx. const MIDI_SEND_MS = 33; const MIDI_BATCH_MAX = 40; // messages per write, inside the device's 400-byte frame limit @@ -8921,6 +8923,13 @@ function encodeMidi(messages) { return messages.map(hex).join(" "); } +// A greeting's messages: a channel message or a whole SysEx per token; anything else is skipped. +function helloMessages(hello) { + return hello.split(" ") + .filter(tok => /^[89a-e][0-9a-f]{5}$/.test(tok) || /^f0([0-7][0-9a-f])*f7$/.test(tok)) + .map(tok => Uint8Array.from(tok.match(/../g), h => parseInt(h, 16))); +} + // The slots of `desk` that differ from what was sent, as messages, remembering them as sent. // A slot that is not a channel message (0x80..0xEF) is skipped, so nothing malformed reaches a desk. function deskChanges(sent, desk) { @@ -8937,6 +8946,7 @@ let midiAsked = false; let midiAccess = null; let midiSentAt = 0; let midiDeskSent = []; // per slot, what the desk was last sent +let midiHelloSent = null; // the greeting the connected desks were last sent const midiQueue = []; function midiListen(access) { for (const input of access.inputs.values()) @@ -8955,13 +8965,21 @@ function midiLoop(now) { if (!services.length) return; if (!midiAsked) { midiAsked = true; - navigator.requestMIDIAccess().then(access => { + navigator.requestMIDIAccess({ sysex: true }).then(access => { midiAccess = access; midiListen(access); - // A desk plugged in later is listened to, and sent every slot. - access.onstatechange = () => { midiListen(access); midiDeskSent = []; }; + // A desk plugged in later is listened to, greeted, and sent every slot. + access.onstatechange = () => { midiListen(access); midiDeskSent = []; midiHelloSent = null; }; }).catch(err => console.warn("[midi] access refused", err)); } + const hello = midiAccess && services[0].controls?.find(c => c.name === "hello")?.value; + if (midiAccess && hello !== undefined && hello !== midiHelloSent) { + // Before the slots, so a desk is in the mode its lights are written for; a new greeting resends them too. + for (const msg of helloMessages(hello || "")) + for (const output of midiAccess.outputs.values()) output.send(msg); + midiHelloSent = hello; + midiDeskSent = []; + } const desk = midiAccess && services[0].controls?.find(c => c.name === "desk")?.value; if (desk) for (const msg of deskChanges(midiDeskSent, desk)) diff --git a/test/js/ui-midi-bridge.test.mjs b/test/js/ui-midi-bridge.test.mjs index 6107e634e..f3e10a827 100644 --- a/test/js/ui-midi-bridge.test.mjs +++ b/test/js/ui-midi-bridge.test.mjs @@ -37,3 +37,13 @@ test("the desk is sent every slot once, then only the slots that changed", () => test("a slot that is not a channel message never reaches the desk", () => { assert.deepEqual(hex(deskChanges([], "000000 f07f7f e07f zz7f7f 90187f")), ["90187f"]); }); + +const helloSrc = app.match(/function helloMessages\(hello\) \{[\s\S]*?\n\}/); +assert.ok(helloSrc, "helloMessages is in app.js"); +const helloMessages = new Function(`${helloSrc[0]}; return helloMessages;`)(); + +test("a desk's greeting goes out as whole SysEx and channel messages, and nothing malformed", () => { + assert.deepEqual(hex(helloMessages("f0477f2960000442010000f7 b03802 f0477f zz 000000")), + ["f0477f2960000442010000f7", "b03802"]); + assert.deepEqual(helloMessages(""), []); +}); diff --git a/test/scenarios/light/scenario_Effects_pipeline_builds_and_renders.json b/test/scenarios/light/scenario_Effects_pipeline_builds_and_renders.json index 24db4cdf0..9472b63c0 100644 --- a/test/scenarios/light/scenario_Effects_pipeline_builds_and_renders.json +++ b/test/scenarios/light/scenario_Effects_pipeline_builds_and_renders.json @@ -80,7 +80,7 @@ "min": 1, "max": 2, "n": 32, - "samples": [2, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 2, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 2, 1, 1, 1] + "samples": [1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 2, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 2, 1, 1, 1, 1] }, "last_updated": "2026-10-07" }, @@ -124,11 +124,11 @@ "desktop-macos": { "tick_us": { "p50": 6, - "p95": 11, + "p95": 10, "min": 6, "max": 46, "n": 32, - "samples": [11, 6, 6, 6, 7, 6, 6, 6, 6, 6, 6, 6, 7, 7, 7, 46, 7, 6, 6, 6, 6, 7, 7, 7, 7, 7, 6, 6, 10, 7, 7, 7] + "samples": [6, 6, 6, 7, 6, 6, 6, 6, 6, 6, 6, 7, 7, 7, 46, 7, 6, 6, 6, 6, 7, 7, 7, 7, 7, 6, 6, 10, 7, 7, 7, 7] }, "last_updated": "2026-10-07" }, diff --git a/test/unit/core/unit_ControlModule.cpp b/test/unit/core/unit_ControlModule.cpp index 220eb85a4..aca526f6c 100644 --- a/test/unit/core/unit_ControlModule.cpp +++ b/test/unit/core/unit_ControlModule.cpp @@ -1552,6 +1552,97 @@ TEST_CASE("a fader position sent to a MIDI desk decodes back to the same value") midi.release(); } +namespace { +/// A MIDI service set to the Akai APC40 mkII profile, as picking it on the card does. +void useApc40(mm::MidiService& midi) { + midi.defineControls(); + midi.profile = 1; + midi.onControlChanged("profile"); +} + +/// A control's text value, read straight from its buffer. +std::string textOf(mm::MoonModule& m, const char* name) { + auto& cs = m.controls(); + for (uint8_t i = 0; i < cs.count(); i++) + if (std::strcmp(cs[i].name, name) == 0) return static_cast(cs[i].ptr); + return {}; +} +} // namespace + +// The APC40 reports positions, 0 to 127, and its activator buttons only as presses. +TEST_CASE("an APC40's track faders, track knobs and activator buttons drive the surface") { + Device d; + mm::MidiService midi; + useApc40(midi); + const uint8_t fader1Top[3] = {0xB0, 0x07, 0x7F}, fader2Bottom[3] = {0xB1, 0x07, 0x00}, knob2Half[3] = {0xB0, 0x31, 0x40}; + midi.decode(fader1Top, 3); + midi.decode(fader2Bottom, 3); + midi.decode(knob2Half, 3); + CHECK(surfaceValue(d, "fader1") == 255); + CHECK(surfaceValue(d, "fader2") == 0); + CHECK(surfaceValue(d, "encoder2") == 128); + const uint8_t before = surfaceValue(d, "switch2"); + const uint8_t press[3] = {0x91, 0x32, 0x7F}, release[3] = {0x81, 0x32, 0x00}; + midi.decode(press, 3); + midi.decode(release, 3); + CHECK(surfaceValue(d, "switch2") != before); // a press flips it, the release does nothing +} + +// Alternate Ableton Live mode hands every light to the host, and the rings fill like a meter. +TEST_CASE("an APC40 is greeted into the mode where the host sets every light") { + mm::MidiService midi; + midi.defineControls(); + CHECK(textOf(midi, "hello").empty()); // a Mackie desk needs no greeting + midi.profile = 1; + midi.onControlChanged("profile"); + const std::string hello = textOf(midi, "hello"); + CHECK(hello.rfind("f0477f2960000442010000f7", 0) == 0); + CHECK(hello.find(" b03802") != std::string::npos); // track knob 1's ring + CHECK(hello.find(" b03f02") != std::string::npos); // track knob 8's ring +} + +// The APC40 counts its pads from the bottom-left and the Control card from the top-left, so the top-left pad is preset 1. +TEST_CASE("an APC40's top-left pad applies the first preset, and its pads show which are stored and applied") { + Device d; + auto* layer = d.add(d.layers, "Layer"); + d.add(layer, "NoiseEffect"); + d.setText("name", "sunset"); + d.press("save"); + REQUIRE(d.control->listRowCount() == 1); + auto* old = layer->replaceChildAt(0, mm::ModuleFactory::create("RainbowEffect")); + if (old) { old->release(); mm::Scheduler::deleteTree(old); } + + mm::MidiService midi; + useApc40(midi); + midi.tick20ms(); // attaching seeds every light + CHECK(deskSlot(midi, 24) == "902002"); // preset 1, stored, lights the top-left pad (note 32) dim white + CHECK(deskSlot(midi, 25) == "902100"); // an empty cell's pad is dark + const uint8_t topLeft[3] = {0x90, 0x20, 0x7F}; + midi.decode(topLeft, 3); + CHECK(std::strcmp(d.effectType(), "NoiseEffect") == 0); + d.control->tick20ms(); // the surface mirrors the pads + CHECK(deskSlot(midi, 24) == "902015"); // the applied preset is green + const uint8_t bottomLeft[3] = {0x90, 0x00, 0x7F}; + midi.decode(bottomLeft, 3); // preset 33 is empty: nothing happens + CHECK(std::strcmp(d.effectType(), "NoiseEffect") == 0); + midi.release(); +} + +// The way back: an activator lights while its switch is on, and a knob's ring shows its encoder; the faders have no motors. +TEST_CASE("an APC40 shows the surface: activator lights and knob rings") { + Device d; + REQUIRE(d.scheduler.setControl("Control", "switch2", "{\"value\":true}") == mm::Scheduler::SetControlResult::Ok); + REQUIRE(d.scheduler.setControl("Control", "encoder2", "{\"value\":255}") == mm::Scheduler::SetControlResult::Ok); + mm::MidiService midi; + useApc40(midi); + midi.tick20ms(); + CHECK(deskSlot(midi, 9) == "91327f"); // activator 2 lit + CHECK(deskSlot(midi, 10) == "823200"); // activator 3 dark + CHECK(deskSlot(midi, 17) == "b0317f"); // track knob 2's ring full + CHECK(deskSlot(midi, 0) == "000000"); // no fader message + midi.release(); +} + // An echo of a value the target already holds is not written again, so a self-playing game never reads it as a player. TEST_CASE("a surface does not rewrite a target that already holds the value") { struct Game : mm::MoonModule { From 4aabaf4f11fe36e6c1b9d32a4dd23ffe4422b587 Mon Sep 17 00:00:00 2001 From: ewowi Date: Wed, 7 Oct 2026 21:53:00 +0200 Subject: [PATCH 2/3] Plug a MIDI desk into a board and let boards follow over OSC MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit A MIDI desk now plugs straight into an S3 board's USB port, with no computer, and a board can follow another over OSC: it takes that board's values and presets, and sends back only what changes on its own desk. Together they make a MIDI-OSC bridge, a small board that turns any class-compliant USB MIDI desk into a network controller; the StadBeest runs one with an iCON QCon. KPI: 256lights | Desktop:2160KB | tick:1/6/7/2/6/7/300/7/7/11us(FPS:1000000/166666/142857/500000/166666/142857/3333/142857/142857/90909) | ESP32:2017KB | src:301(76611) | test:227(51341) | functions-over:333 Commit: src +825/-150 lines | test +307/-18 lines | code findings 1665 -> 1664 (complex function -1) | duplicated lines 3791 -> 3791 (+0) **Core** - USB MIDI host behind a platform seam (`usbMidiBegin/End/Connected/Read/Write`): two blocking tasks own the espressif/usb host stack and reach the render thread only through two packet queues. Built into the n8r8 and n16r8 images (`CONFIG_MM_USB_MIDI_HOST`); the S3 images grow 57 KB, of which 43 KB is the USB host stack. - `UsbMidi.h`: USB-MIDI 1.0 event packets in and out, SysEx included. - MidiService gains `usb`: the desk on the board's own port, greeted once, then sent only the slots that changed, at once rather than on the next tick. - OscModule: pads over OSC (`/mm/pad/N` presses a preset, a pad's state goes out as an int), `follow` (what arrives is the followed board's feedback; pads show its presets and a press is relayed; no seeding, a greeting instead), no value sent back to the host it came from, and a half-second hold-off for a control being moved here. - ControlModule: `setValue`/`value`/`turn` for a desk's input, remote pads, a `Seed` choice for attaching surfaces, and the paced resend covering the pads. - One OSC message encoder for both directions (`encodeSurface`, `encodeInt`), and the default feedback port and group as shared constants. **UI** - The browser asks for SysEx only when a desk's greeting carries one, so a Mackie desk works with SysEx refused; an unplug no longer re-greets every desk. **Scripts/MoonDeck** - `deviceModels.json`: the MIDI-OSC bridge device model; check_devices knows MIDI and OSC as capabilities. **Tests** - A follower test (values, echo, hold-off, pads, relayed press), a USB desk test on a desktop test desk (greeted once, changes only, no re-greet on prepare, input drives the surface), OSC pad press and paced pad resend, USB-MIDI packets, the int golden vector, and a pad that cannot apply. **Docs/CI** - services.md: OSC `follow`, pads and the echo rule; MIDI `usb`. The multi-board guide gains the bridge board; the control surfaces reference says the QCon works on a board's port. - A LightCrafter 16 reference page; its open questions go to the light backlog. - The MIDI plan's step 4 records what shipped and backlogs the legs pause and the QCon fader slide-back. - Repo health, code, docgen and prose metrics; scenario observations. **Reviews** - 🐇 the plan said other Akai desks come in through learn → done, they wait for MIDI learn. - 🐇 an occupied pad that fails to apply reported as empty → done, "did not apply", pinned. - 🐇 the paced resend skipped the pads → done earlier in this change, `kSurfaceValues`. - 🐇 SysEx asked for every desk → done, only when a greeting carries one, pinned. - 👾 releasing the interface with a transfer in flight wedged the host → done, endpoints halted and flushed first, returns checked. - 👾 every prepare re-greeted the USB desk → done, the port is taken only on a change, pinned. - 👾 a refused start was never retried → done, retried on the tick. - 👾 ratchets rose → done, docgen and prose even, code one lower. - 👾 a preset press over OSC applies on the render thread → no change: a press is a user action, and a preset apply runs at a frame boundary by design, as prepareTree does. - 👾 a long greeting token read past its buffer → done, bounded. - 👾 the follower's two pad grids → documented: a desk's pads show the followed board's presets, the card's grid this board's. - 👾 an IN error resubmitted in a loop → done, resubmit on completion only, an error closes the desk. - 👾 docs: long sentences, negatives in the LightCrafter page, a work link from reference, the leftover list, MC mode on the card, empty hosts → done; `//` above `hasUsbMidiHost` kept, as its sibling `hasHls` has it. - 👾 an unplug re-greeted every desk → done. - 👾 the USB path untested → done, a desktop test desk. Co-Authored-By: Claude Opus 5.5 --- docs/how-to/control-surface.md | 3 +- docs/how-to/multi-board-installation.md | 13 + docs/moonmodules/core/services.md | 26 +- .../examples/open-stage-control.json | 4 +- docs/reference/hardware/control-surfaces.md | 5 +- docs/reference/hardware/lightcrafter-16.md | 90 ++++++ docs/reference/metrics/code.md | 22 +- docs/reference/metrics/prose.md | 4 +- docs/reference/metrics/repo-health.json | 54 ++-- docs/reference/metrics/repo-health.md | 71 ++--- docs/work/future/backlog-core.md | 23 +- docs/work/future/backlog-light.md | 14 + ...001 - Gamepads and MIDI desks (partial).md | 9 +- esp32/main/CMakeLists.txt | 1 + esp32/main/Kconfig.projbuild | 13 +- esp32/main/idf_component.yml | 29 +- esp32/sdkconfig.defaults.esp32s3-n16r8 | 7 +- esp32/sdkconfig.defaults.esp32s3-n8r8 | 9 +- mkdocs.yml | 1 + moondeck/check/check_devices.py | 2 +- mooninstaller/deviceModels.json | 50 ++++ src/core/services/MidiService.h | 192 ++++++++++--- src/core/services/OscModule.h | 215 ++++++++++----- src/core/services/OscPacket.h | 48 +++- src/core/system/ControlModule.h | 114 ++++++-- src/core/util/ControlSurface.h | 7 +- src/core/util/UsbMidi.h | 56 ++++ src/platform/desktop/platform_config.h | 2 + src/platform/desktop/platform_desktop.cpp | 33 +++ src/platform/esp32/platform_config.h | 7 + .../esp32/platform_esp32_usb_midi.cpp | 258 ++++++++++++++++++ src/platform/platform.h | 24 ++ src/ui/app.js | 19 +- test/CMakeLists.txt | 1 + test/js/ui-midi-bridge.test.mjs | 12 + ...lette_preset_changes_only_the_palette.json | 6 +- test/unit/core/unit_ControlModule.cpp | 224 ++++++++++++++- test/unit/core/unit_OscModule.cpp | 12 +- test/unit/core/unit_OscPacket.cpp | 20 ++ test/unit/core/unit_UsbMidi.cpp | 50 ++++ 40 files changed, 1453 insertions(+), 297 deletions(-) create mode 100644 docs/reference/hardware/lightcrafter-16.md create mode 100644 src/core/util/UsbMidi.h create mode 100644 src/platform/esp32/platform_esp32_usb_midi.cpp create mode 100644 test/unit/core/unit_UsbMidi.cpp diff --git a/docs/how-to/control-surface.md b/docs/how-to/control-surface.md index a8176dbc8..8569affb0 100644 --- a/docs/how-to/control-surface.md +++ b/docs/how-to/control-surface.md @@ -213,11 +213,12 @@ Each control sends to an address naming **the surface**, not the thing it drives /mm/switch/1 … /mm/switch/8 /mm/encoder/1 … /mm/encoder/8 /mm/fader/1 … /mm/fader/8 +/mm/pad/1 … /mm/pad/64 ``` The device decides what each one drives. That is deliberate: reassign `fader3` from brightness to speed, and the layout does not change, because the layout never knew. It also means a hardware desk added later lands on the same addresses. -The session also draws a **pad grid**. Those pads are inert for now: `/mm/pad/N` has no route yet, so pressing one sends a message nothing reads. It ships because the grid is the layout a preset launcher will want. +A pad applies the preset stored on that pad of the Control card's grid, counted from the top left. --- diff --git a/docs/how-to/multi-board-installation.md b/docs/how-to/multi-board-installation.md index 441fe72b2..0113316f3 100644 --- a/docs/how-to/multi-board-installation.md +++ b/docs/how-to/multi-board-installation.md @@ -216,6 +216,19 @@ The autopilot rewrites the shared slots every ten seconds, so switch it off with The eyes follow every move over OSC, as they follow the autopilot. A phone or a tablet reaches the same slots too: [connecting a control surface](control-surface.md). +**Without a laptop: a MIDI-OSC bridge board** + +A desk can also plug into a small board of its own, which drives the leader over OSC: no laptop, and no cable to the beast. +The StadBeest uses an ESP32-S3 N16R8 for it, with an [iCON QCon Pro G2](../reference/hardware/control-surfaces.md#icon-qcon-pro-g2), which has its own power adapter. + +1. Install it as the **MIDI-OSC bridge** device model, which sets up its MIDI and OSC services. +2. Plug the desk into the board's own USB port, the one marked USB, and power the board from its other port. +3. Pick the desk's `profile` on the bridge's MIDI service. + +The bridge follows the leader, as the eyes do, and sends back only what changes on the desk. +Its desk lights and motors show the leader's state, and its pads apply the leader's presets. +An APC40 mkII takes its power from USB, which this board's port does not supply, so it stays on the laptop or goes through an active, powered USB hub. A hub needs the firmware's hub support, `CONFIG_USB_HOST_HUBS_SUPPORTED`, switched on in the S3 images. + --- ## 9. Updating boards you cannot reach diff --git a/docs/moonmodules/core/services.md b/docs/moonmodules/core/services.md index 6ec4498ae..548226637 100644 --- a/docs/moonmodules/core/services.md +++ b/docs/moonmodules/core/services.md @@ -57,6 +57,7 @@ Receives [OSC](https://opensoundcontrol.stanford.edu/) over UDP and writes it on - `hosts`: (unicast) addresses or names; empty answers whoever wrote last. - `group`: (multicast) the group feedback goes to and this board joins, `239.255.77.78` by default. - `feedbackPort`: where the client listens, 9001 by default. +- `follow`: this board follows another, taking its feedback and showing its presets. - `status`: listening, off, or why the port could not be opened. Detail: [technical](moxygen/OscModule.md) @@ -127,11 +128,12 @@ Detail: [technical](moxygen/GamepadService.md) ### MIDI -A Service added per board: **a MIDI control desk** driving the control surface. The desk plugs into the computer showing the interface and the browser reports it, so it works on every chip. A Mackie desk such as the iCON QCon or the Behringer X-Touch works without setup, an Akai APC40 mkII after one choice. +A Service added per board: **a MIDI control desk** driving the control surface. The desk plugs into the computer showing the interface and the browser reports it, so it works on every chip. A Mackie desk such as the iCON QCon or the Behringer X-Touch in MC mode works without setup, an Akai APC40 mkII after one choice. MIDI service controls - `profile`: the desk's layout, `Mackie Control` or `Akai APC40 mkII`. +- `usb`: the desk is on this board's own USB port; S3 boards with 8 MB of flash or more. Faders move the surface's faders, the knobs turn its encoders, and each channel's SELECT button flips its switch. The desk follows the surface back: motors, SELECT lights and knob rings. A hand on a fader holds its motor still. An APC40's clip pads apply presets. ⌄ details. @@ -184,7 +186,9 @@ A device's own page, such as `http://192.168.1.158`, is not a secure origin, so The decoding follows Mackie Control: a fader is 14-bit pitch bend on its own channel, its touch sensor a note from 0x68, a knob a relative turn on a control change from 0x10, and SELECT a note from 0x18. The master fader has no slot on the surface and is ignored. The way back uses the same messages: pitch bend moves a motor, a SELECT note at full velocity lights its button, and a control change from 0x30 fills a knob's ring. The device keeps what the desk should show and pushes it up to 25 times a second; the browser sends only what changed, so a page opened later moves the motors to where the surface already is. -**The Akai APC40 mkII profile.** The browser greets the desk with the SysEx that puts it in Alternate Ableton Live mode, where every light is the host's, so Chrome asks once to send SysEx as well. Track faders 1-8 move the surface's faders and track knobs 1-8 set its encoders, each reading 0 to 127. Activator buttons 1-8 flip its switches. The 40 clip pads apply presets 1-40, the top-left pad being preset 1 as on the Control card. The way back lights each activator while its switch is on, fills each knob's ring like a meter, and colors each pad: dark when empty, dim white when a preset is stored, green for the one applied. The faders have no motors. Every message is in [the APC40 reference](../../reference/hardware/control-surfaces.md#akai-apc40-mkii). +**The Akai APC40 mkII profile.** The browser greets the desk with the SysEx that puts it in Alternate Ableton Live mode, where every light is the host's. Chrome asks once to allow SysEx for it. Track faders 1-8 move the surface's faders and track knobs 1-8 set its encoders, each reading 0 to 127. Activator buttons 1-8 flip its switches. The 40 clip pads apply presets 1-40, the top-left pad being preset 1 as on the Control card. The way back lights each activator while its switch is on and fills each knob's ring like a meter. Each pad is dark when empty, dim white when a preset is stored, and green for the one applied. The faders have no motors. Every message is in [the APC40 reference](../../reference/hardware/control-surfaces.md#akai-apc40-mkii). + +**A desk on the board's own USB port.** With `usb` on, the desk plugs into the board instead of the computer, and the board is the USB host. It reads the desk as USB-MIDI 1.0 packets, greets it, and sends it its state. The port then carries no serial log and no USB flashing, so a board with a second USB port keeps that one for the computer. The desk takes its power from the port, so the board supplies 5 V there, or a powered hub between them does; an APC40 mkII draws about 0.15 A. ## Audio, details #### Microphone wiring @@ -238,24 +242,26 @@ A received magnitude is clamped to 255, since a real WLED source reaches ~9500 a Prior art: the WLED-MM audio-reactive usermod by **Frank ([@softhack007](https://github.com/softhack007))**, the most-used open-source audio-reactive LED implementation, whose adaptive noise-gate concept the analysis here descends from (analyzed with his permission); and **[@troyhacks](https://github.com/troyhacks/WLED)**, who reworked that DSP onto Espressif's [esp-dsp](https://github.com/espressif/esp-dsp) FFT, the same choice this service makes. The line-in path exists because **wladi ([myhome-control](https://shop.myhome-control.de))** supplied the hardware and pinout for the [MHC-WLED ESP32-P4 shield](../../reference/hardware/mhc-wled-esp32-p4-shield.md): its onboard PCM1808 I2S ADC is what `mclkPin` is for. ## OSC, details -**Feedback: the device answers.** With `feedback` on, a control that changes anywhere (the web UI, a -preset recall, an audio-reactive effect) is mirrored back to the surface, which is what keeps a client honest and what moves a motorized fader. `addressing` picks where it goes: `unicast` to each of `hosts`, addresses or names, or to whoever last wrote when `hosts` is empty; `multicast` to `group`, which every listening board with the same `group` joins; the default, `239.255.77.78`, sits beside discovery's own group, so multicast works with nothing to fill in, and a second rig on the same network picks another. `feedbackPort` is where that client LISTENS, which is not the port we listen on (Open Stage Control calls its own `osc-port`). +**Feedback: the device answers.** With `feedback` on, a control that changes anywhere (the web UI, a preset recall, an audio-reactive effect) is mirrored back to the surface, which is what keeps a client honest and what moves a motorized fader. `addressing` picks where it goes: `unicast` to each of `hosts`, addresses or names, or to whoever last wrote when `hosts` is empty; `multicast` to `group`, which every listening board with the same `group` joins; the default, `239.255.77.78`, sits beside discovery's own group, so multicast works with nothing to fill in, and a second rig on the same network picks another. `feedbackPort` is where that client LISTENS, which is not the port we listen on (Open Stage Control calls its own `osc-port`). A client learns the current state three ways: when it first writes to us from a new address, when its address changes, and whenever it sends **`/mm/hello`**. The last one exists because a client restarting on the SAME address is invisible to the other two, and most controllers send nothing of their own on load, so every widget would show its layout file's defaults until the user moved one. The shipped session has a `sync from device` button for exactly this. Every value also goes out again every 30 seconds, one every 20 ms, so a datagram lost on WiFi, or a client that rebooted, is repaired within that time. +A pad's state goes out as an int on its own address: 0 for an empty pad, 1 for a stored preset, 2 for the one applied. +A value is never sent back to the host it came from, so two boards feeding each other cannot echo it between them. + +**Following another board.** With `follow` on, what arrives is another board's feedback: this board takes its values, and a desk's pads here show that board's presets. That is what tells a pad's state from a press, since both arrive on `/mm/pad/N`. The Control card's own grid keeps showing this board's presets. With `feedback` on as well, pointed at that board's `port`, a change made here goes there, and a pad pressed on the desk applies that board's preset. A follower asks for every value with `/mm/hello` when it starts, and sends only what changes here, since the board it follows owns the state. A control moved here ignores feedback for half a second, so echoes of its earlier positions cannot pull it back. `hosts` can stay empty: the follower then answers the board it follows once that board's first datagram arrives. A desk at the side of a room drives an installation in the middle this way, with no cable between them. On the desk's board, set `listen` on port 9001, `follow` on, and `feedback` to port 9000. -**Setting one up**, from installing the app to using it from a phone, is its own page: -[Connecting a control surface](../../how-to/control-surface.md). It needs no checkout and no tooling, just the app and the session file from the latest release. +**Setting one up**, from installing the app to using it from a phone, is its own page: [Connecting a control surface](../../how-to/control-surface.md). It needs no checkout and no tooling: the app and the session file from the latest release do. -**Addresses.** These are a public contract: a TouchOSC layout built against them keeps working, so -they stay small and boring. +**Addresses.** These are a public contract: a TouchOSC layout built against them keeps working, so they stay small and boring. | address | argument | drives | |---|---|---| | `/mm/fader/1` .. `/mm/fader/8` | float 0..1 or int 0..255 | the Control surface's faders | | `/mm/encoder/1` .. `/mm/encoder/8` | float 0..1 or int 0..255 | its rotary encoders | | `/mm/switch/1` .. `/mm/switch/8` | float 0..1 or int 0..255 | its on/off switch row (nonzero = on) | +| `/mm/pad/1` .. `/mm/pad/64` | nonzero = press, zero ignored | applies the preset on that pad of the grid, counted from the top left; an empty pad does nothing | | `/mm/hello` | anything, or nothing | resend every value to the sender | Both argument forms are accepted because controllers disagree: apps send a float in 0..1, hardware bridges send an int in the target's range. Out-of-range values are clamped rather than ignored, so a controller sending 0..127 does something sensible instead of appearing dead. @@ -294,9 +300,9 @@ Editing the layout needs `read-only` off in the launcher. Driving the device from that session, beside the Control card it mirrors. -It binds only to `/mm/switch/N`, `/mm/encoder/N` and `/mm/fader/N`, N being 1 to 8, on purpose. A surface addresses the SURFACE, and [Control](system.md#control) decides what each one drives, so one layout keeps working as assignments change and a hardware desk lands on the same bindings. By default `switch1` drives `Drivers.on` and `fader1` drives `Drivers.brightness`; the Control card assigns the rest. +It binds only to `/mm/switch/N`, `/mm/encoder/N` and `/mm/fader/N`, N being 1 to 8, and to `/mm/pad/N`, N being 1 to 64, on purpose. A surface addresses the SURFACE, and [Control](system.md#control) decides what each one drives, so one layout keeps working as assignments change and a hardware desk lands on the same bindings. By default `switch1` drives `Drivers.on` and `fader1` drives `Drivers.brightness`; the Control card assigns the rest. -The session also carries a **pad grid**, and those pads are inert: `/mm/pad/N` has no route in the OSC module yet, so pressing one sends a message nothing reads. It ships anyway because the grid is the layout a preset launcher wants and the addresses are the ones it will use; treat it as a placeholder rather than as part of the contract above. +The session also carries a **pad grid** of the 64 preset pads. **A Mackie desk reaches the surface through the [MIDI service](#midi)**, since the X-Touch and QCon Pro G2 speak Mackie Control over MIDI rather than OSC. diff --git a/docs/reference/examples/open-stage-control.json b/docs/reference/examples/open-stage-control.json index 537d43e7b..1fc893b2f 100644 --- a/docs/reference/examples/open-stage-control.json +++ b/docs/reference/examples/open-stage-control.json @@ -1038,8 +1038,8 @@ "colorBg": "#16213e", "colorStroke": "#6b5b9a", "colorText": "#a0a0b0", - "address": "/mm/pad/#{$}", - "label": "#{$}", + "address": "/mm/pad/#{$+1}", + "label": "#{$+1}", "on": 1, "off": 0 }, diff --git a/docs/reference/hardware/control-surfaces.md b/docs/reference/hardware/control-surfaces.md index d7b586e9a..dee7b3524 100644 --- a/docs/reference/hardware/control-surfaces.md +++ b/docs/reference/hardware/control-surfaces.md @@ -41,7 +41,8 @@ That layer is an invitation handshake, synchronization, and a journal, so a drop | Connectivity | **USB 2.0 only** (class-compliant) | | Not supported | OSC, Ethernet | -**No network port at all.** It reaches MoonLight through a computer's USB port and the browser. +**No network port at all.** It reaches MoonLight through a computer's USB port and the browser, or straight through a board's own USB port, the MIDI service's `usb` setting. +It brings its own power adapter, so a board's port needs to supply no 5 V for it. ## What Mackie Control looks like on the wire @@ -142,6 +143,4 @@ The APC40 has a control for each: | Activator buttons 1-8, with their lights | `switch1` to `switch8` | | Clip pads 1-40, with their colors | the first 40 preset pads | -Left over for later: the master fader and crossfader, the 8 device knobs, the 5 scene pads, and the transport and navigation buttons. -Scene pads could recall a scene, and tap tempo could set the beat when no music plays. diff --git a/docs/reference/hardware/lightcrafter-16.md b/docs/reference/hardware/lightcrafter-16.md new file mode 100644 index 000000000..eb6721cf1 --- /dev/null +++ b/docs/reference/hardware/lightcrafter-16.md @@ -0,0 +1,90 @@ +# LightCrafter 16 hardware reference + +The LightCrafter 16 LED controller, an ESP32-S3 board with sixteen LED outputs and a WIZnet Ethernet module + +Pin maps and onboard features for the **LightCrafter 16**, a 16-output LED controller by Mathieu Stephan (limpkin) of Stephan Electronics SàRL, Switzerland. +The board is the SE16 v2 ("SE16V2 / Lightcrafter16"), listed as `"LightCrafter 16"` in the device catalog. +It runs the `esp32s3-n8r8` firmware. +The pins below come from the catalog entry and from the maker's pull requests. + +**Sources** +- Maker: , , Discord +- Contributed by limpkin in (board support), (WS2814 white-first), (voltage and current readout) and (pins, RS-485, layout, docs, photo) +- Device model `LightCrafter 16`: `mooninstaller/deviceModels.json` +- Firmware list: `mooninstaller/firmwares.json` +- Layout script: `moonlive/layouts/lightcrafter16.mll` +- Performance: [performance.md](../performance.md) + +## Module and firmware + +The chip is an ESP32-S3 with 8 MB flash and 8 MB octal PSRAM. +The matching MoonLight firmware is `esp32s3-n8r8`. +The N16R8 image overruns the 8 MB flash. + +## LED outputs + +The board has 16 LED outputs, driven by the parallel LCD (LCD_CAM i80) driver with one lane per output. +The data pins, in output order 0 to 15: + +`47, 21, 14, 9, 8, 16, 15, 7, 1, 2, 42, 41, 40, 39, 38, 48` + +The order follows the board layout. +Outputs 0 to 7 run along one edge, then outputs 8 to 15 run back from 7 to 0 along the other edge. +X0Y0 is the top left corner, next to the Ethernet connector. +The `lightcrafter16.mll` layout script places the lights in that order. + +The catalog entry sets the driver's two unused signal lines to `clockPin` 19 and `dcPin` 20. +Those are the S3's own USB data pins, so a USB device on that port and this choice exclude each other. + +A long LED encode on core 0 starves the W5500 network stack, so the encode runs on core 1 (see [performance.md](../performance.md)). +The strips used in practice are SK6812 RGBW. +The board runs the StadBeest legs, 10 SK6812 RGBW strips of 144 lights (see [multi-board installation](../../how-to/multi-board-installation.md)). +A brown-out at high brightness on the StadBeest came from the wiring resistance of its power feed. + +## Ethernet (WIZ850io, W5500 over SPI) + +Ethernet comes from a WIZnet **WIZ850io** module carrying a W5500, connected over SPI. + +| Signal | GPIO | +|---|---| +| MISO | 13 | +| MOSI | 11 | +| SCK | 12 | +| CS | 10 | +| INT | 45 | +| Reset | 3 | + +GPIO 3 must be driven high. +The WIZ850io holds its own reset until then. +The same line also enables the RS485_DE, VBUS_DET and W5500 INT signals and drives an LED. + +## RS-485 + +| Signal | GPIO | +|---|---| +| TX | 17 | +| RX | 18 | +| DE | 46 | + +MoonLight leaves the RS-485 port unused. + +## Infrared receiver + +The infrared receiver is on GPIO 4 and is read by the InfraredService. + +## Power sensing + +The board measures its input voltage and input current on two ADC pins. +The catalog lists power monitoring as planned. + +| Quantity | GPIO | Circuit | Conversion | +|---|---|---|---| +| Input voltage | 5 | Divider of 10k and 1k43 | volts = adc_mV × 11.43 / 1430 | +| Input current | 6 | Hall sensor, 40 mV/A, 0.5 V quiescent output, behind a divider of 10k and 5k1 | amps = (adc_mV − 330) × 37.75 / 1000 | + + +## USB + +GPIO 0 detects VBUS on the S3's native USB port, which uses GPIO 19 and GPIO 20. +A USB-to-serial bridge on UART0 (GPIO 43 and 44) is what the bench uses for flashing. +It enumerates as `/dev/cu.usbserial-*`. diff --git a/docs/reference/metrics/code.md b/docs/reference/metrics/code.md index 52d900c18..c81a6af7f 100644 --- a/docs/reference/metrics/code.md +++ b/docs/reference/metrics/code.md @@ -4,14 +4,14 @@ Generated by [`moondeck/check/check_code.py`](../../../moondeck/check/check_code Every function, block and file over a limit the [coding standards](../../contributing/coding-standards.md#static-checks) set. Current state only: the trend is this file's git history. The list only shrinks, per rule and in total, and a touched file clears its own rows. -**1665 finding(s)** across 320 file(s). 3.00% of all lines are duplicated, 3791 lines. +**1664 finding(s)** across 320 file(s). 2.99% of all lines are duplicated, 3791 lines. ## By rule | Rule | Findings | |---|---:| | duplicated block | 786 | -| complex function | 286 | +| complex function | 285 | | blocking call on the render path | 191 | | deeply nested | 114 | | module type in the UI | 69 | @@ -46,7 +46,7 @@ Each rule is a code smell with a named move from the refactoring catalog, the ta |---|---:| | `test` | 584 | | `light` | 423 | -| `core` | 382 | +| `core` | 381 | | `platform` | 173 | | `ui` | 72 | | `moondeck` | 24 | @@ -64,7 +64,7 @@ The next function worth simplifying is at the top of each file's list. | `src/ui/migrate.js` | 41 | `line 29: 'I2cBusModule'`, module type in the UI 1 | | `test/unit/core/unit_FilesystemModule_persistence.cpp` | 34 | `lines 158-170, also in test/unit/core/unit_FilesystemModule_persistence.cpp:124`, duplicated block 13 | | `src/core/system/MqttModule.cpp` | 31 | `MqttModule::routePublish`, complex function 29 | -| `src/ui/app.js` | 29 | `app.js`, large file 8994 | +| `src/ui/app.js` | 29 | `app.js`, large file 9007 | | `src/core/moonlive/MoonLiveCompiler.cpp` | 27 | `moonlive::Parser::parseCall`, complex function 59 | | `src/light/drivers/ParallelLedDriver.h` | 27 | `ParallelLedDriver::reinit`, complex function 36 | | `src/light/drivers/PreviewDriver.h` | 27 | `PreviewDriver::buildCoordTable`, complex function 37 | @@ -90,20 +90,20 @@ The next function worth simplifying is at the top of each file's list. | `src/light/layers/Layer.h` | 13 | `Layer in 132 files`, name spread 132 | | `test/unit/light/unit_HlsDriver.cpp` | 13 | `lines 30-47, also in test/unit/light/unit_PanelCardDriver.cpp:22`, duplicated block 18 | | `test/unit/light/unit_RandomMapModifier.cpp` | 13 | `lines 116-132, also in test/unit/light/unit_BlurzEffect.cpp:49`, duplicated block 17 | -| `src/core/system/ControlModule.h` | 12 | `ControlModule::storePreset, line 967`, large stack frame 1296 | +| `src/core/system/ControlModule.h` | 12 | `ControlModule::storePreset, line 1031`, large stack frame 1296 | | `src/core/system/DevicesModule.h` | 12 | `lines 73-80, also in src/core/system/DevicesModule.h:59`, duplicated block 8 | | `src/light/drivers/HlsDriver.h` | 12 | `lines 105-117, also in src/light/drivers/RtspDriver.h:92`, duplicated block 13 | | `src/light/moonlive/MoonLiveBuiltins_light.h` | 12 | `moonlive::mm_light_escape`, complex function 13 | | `test/unit/light/unit_RubiksCubeEffect.cpp` | 12 | `lines 60-78, also in test/unit/light/unit_RubiksCubeEffect.cpp:28`, duplicated block 19 | | `src/platform/esp32/platform_esp32_i80.cpp` | 11 | `platform::createState`, complex function 27 | | `test/unit/light/unit_StarFieldEffect.cpp` | 11 | `lines 88-103, also in test/unit/light/unit_StarFieldEffect.cpp:13`, duplicated block 16 | -| `src/core/services/OscModule.h` | 10 | `OscModule::sendValue`, complex function 18 | | `src/light/drivers/Drivers.h` | 10 | `Drivers in 63 files`, name spread 63 | | `src/light/effects/GEQ3DEffect.h` | 10 | `lines 140-150, also in src/light/effects/GEQ3DEffect.h:113`, duplicated block 11 | | `src/light/effects/GameOfLifeEffect.h` | 10 | `GameOfLifeEffect::evolveAutomaton`, complex function 67 | | `test/unit/light/unit_BlendMap.cpp` | 10 | `lines 283-289, also in test/unit/light/unit_BlendMap.cpp:212`, duplicated block 7 | | `test/unit/light/unit_Effects_container.cpp` | 10 | `lines 188-199, also in test/unit/light/unit_Effects_container.cpp:139`, duplicated block 12 | | `src/core/services/InfraredService.h` | 9 | `lines 113-135, also in src/core/services/GamepadService.h:108`, duplicated block 23 | +| `src/core/services/OscModule.h` | 9 | `OscModule::onControlChanged`, complex function 20 | | `src/core/system/FilesystemModule.cpp` | 9 | `FilesystemModule::reapplyNode, line 177`, large stack frame 2368 | | `src/light/drivers/PanelCardDriver.h` | 9 | `lines 187-195, also in src/light/drivers/NetworkSendDriver.h:212`, duplicated block 9 | | `test/unit/light/unit_ParallelLedDriver_swap.cpp` | 9 | `lines 176-184, also in test/unit/light/unit_ParallelLedDriver_swap.cpp:112`, duplicated block 9 | @@ -263,7 +263,7 @@ The next function worth simplifying is at the top of each file's list. | `test/unit/core/unit_AudioService_sync.cpp` | 2 | `lines 259-266, also in test/unit/core/unit_AudioService_sync.cpp:173`, duplicated block 8 | | `test/unit/core/unit_DevicesModule_hue.cpp` | 2 | `lines 63-69, also in test/unit/core/unit_DevicesModule_hue.cpp:42`, duplicated block 7 | | `test/unit/core/unit_FilesystemModule_subtree.cpp` | 2 | `lines 284-289, also in test/unit/core/unit_FilesystemModule_subtree.cpp:240`, duplicated block 6 | -| `test/unit/core/unit_OscPacket.cpp` | 2 | `lines 165-172, also in test/unit/core/unit_OscPacket.cpp:14`, duplicated block 8 | +| `test/unit/core/unit_OscPacket.cpp` | 2 | `lines 185-192, also in test/unit/core/unit_OscPacket.cpp:14`, duplicated block 8 | | `test/unit/core/unit_SystemModule.cpp` | 2 | `lines 109-115, also in test/unit/core/unit_SystemModule.cpp:41`, duplicated block 7 | | `test/unit/core/unit_moonlive_spill.cpp` | 2 | `lines 162-172, also in test/unit/core/unit_moonlive_spill.cpp:136`, duplicated block 11 | | `test/unit/light/unit_AudioBands.cpp` | 2 | `lines 161-166, also in test/unit/light/unit_AudioBands.cpp:141`, duplicated block 6 | @@ -343,12 +343,12 @@ The next function worth simplifying is at the top of each file's list. | `src/light/util/E131Packet.h` | 1 | `parseE131Packet`, complex function 17 | | `src/module_types.cpp` | 1 | `registerModuleTypes`, long function 148 | | `src/platform/desktop/moonlive_asm_host.h` | 1 | `lines 36-43, also in src/platform/esp32/moonlive_asm_riscv.h:36`, duplicated block 8 | -| `src/platform/desktop/platform_config.h` | 1 | `lines 71-85, also in src/platform/esp32/platform_config.h:225`, duplicated block 15 | +| `src/platform/desktop/platform_config.h` | 1 | `lines 71-85, also in src/platform/esp32/platform_config.h:232`, duplicated block 15 | | `src/platform/esp32/moonlive_asm_xtensa.h` | 1 | `lines 79-96, also in src/platform/esp32/moonlive_asm_riscv.h:74`, duplicated block 18 | -| `src/platform/esp32/platform_config.h` | 1 | `lines 225-239, also in src/platform/desktop/platform_config.h:71`, duplicated block 15 | +| `src/platform/esp32/platform_config.h` | 1 | `lines 232-246, also in src/platform/desktop/platform_config.h:71`, duplicated block 15 | | `src/platform/esp32/platform_esp32_i2s.cpp` | 1 | `platform::audioMicInit`, complex function 11 | | `src/platform/esp32/platform_esp32_tasks.cpp` | 1 | `platform::taskSnapshot`, complex function 12 | -| `src/platform/platform.h` | 1 | `platform.h`, large file 1192 | +| `src/platform/platform.h` | 1 | `platform.h`, large file 1216 | | `src/ui/install-picker.js` | 1 | `install-picker.js`, large file 1048 | | `src/ui/preview3d.js` | 1 | `preview3d.js`, large file 1431 | | `test/js/installer-eth-only.test.mjs` | 1 | `lines 13-23, also in test/js/ui-mooncloud.test.mjs:6`, duplicated block 11 | @@ -362,7 +362,7 @@ The next function worth simplifying is at the top of each file's list. | `test/js/ui-visibility.test.mjs` | 1 | `lines 7-16, also in test/js/ui-ws-scheme.test.mjs:13`, duplicated block 10 | | `test/python/test_check_docgen.py` | 1 | `test_check_docgen.py`, large file 1577 | | `test/scenario_runner.cpp` | 1 | `scenario_runner.cpp`, large file 1266 | -| `test/unit/core/unit_ControlModule.cpp` | 1 | `unit_ControlModule.cpp`, large file 1665 | +| `test/unit/core/unit_ControlModule.cpp` | 1 | `unit_ControlModule.cpp`, large file 1871 | | `test/unit/core/unit_Control_apply_absent_key.cpp` | 1 | `lines 92-103, also in test/unit/core/unit_HttpServerModule_apply.cpp:39`, duplicated block 12 | | `test/unit/core/unit_moonlive_compiler.cpp` | 1 | `unit_moonlive_compiler.cpp`, large file 1865 | | `test/unit/core/unit_moonlive_fill.cpp` | 1 | `unit_moonlive_fill.cpp`, large file 1380 | diff --git a/docs/reference/metrics/prose.md b/docs/reference/metrics/prose.md index 8ce2e446d..b90badca5 100644 --- a/docs/reference/metrics/prose.md +++ b/docs/reference/metrics/prose.md @@ -9,14 +9,14 @@ This number is the debt behind that gate, and it RATCHETS: a rise fails the chec docgen.md does. A comment is prose wherever it lives, so a `//` in the web interface and a `#` in a script are counted beside a `///` in a header. -**3170 finding(s)** across 374 file(s). +**3169 finding(s)** across 374 file(s). | rule | findings | |---|---| | `MoonLight.EmDash` | 1625 | | `MoonLight.Weasel` | 738 | | `MoonLight.SentenceLength` | 472 | -| `MoonLight.Temporal` | 246 | +| `MoonLight.Temporal` | 245 | | `MoonLight.Spelling` | 43 | | `MoonLight.SelfReference` | 33 | | `MoonLight.NegatedHeading` | 13 | diff --git a/docs/reference/metrics/repo-health.json b/docs/reference/metrics/repo-health.json index b27a7eaaa..b98844982 100644 --- a/docs/reference/metrics/repo-health.json +++ b/docs/reference/metrics/repo-health.json @@ -1,20 +1,20 @@ { - "commit": "131bca9c", + "commit": "0bc5fb8c", "flash": { - "esp32s3-n16r8": 2245600, - "esp32": 2194704, + "esp32s3-n16r8": 2304160, + "esp32": 2201088, "esp32p4rev1-eth": 2177776, "esp32p4rev1-eth-wifi": 2358896, - "esp32s3-n8r8": 2247248, + "esp32s3-n8r8": 2304160, "esp32s31": 2549760, "esp32-16mb": 2060368, "esp32-eth": 1681040, "esp32-wrover": 1843760, "qemu": 1383648, - "esp32p4rev3-eth": 2073888, - "esp32s3-zero": 2181296, + "esp32p4rev3-eth": 2190288, + "esp32s3-zero": 2187504, "esp32-pico": 2107168, - "desktop-macos": 2210632, + "desktop-macos": 2212392, "desktop-windows": 1925120 }, "measured": { @@ -28,7 +28,7 @@ "esp32-16mb": "2026-09-09", "esp32p4rev1-eth-wifi": "2026-09-30", "esp32-eth": "2026-09-11", - "esp32p4rev3-eth": "2026-09-29", + "esp32p4rev3-eth": "2026-10-07", "desktop-macos": "2026-10-07", "desktop-windows": "2026-09-30" }, @@ -40,9 +40,9 @@ "scenario_matrix": { "Control_a_palette_preset_changes_only_the_palette": { "desktop-macos": { - "p50": 5, + "p50": 6, "p95": 462, - "n": 18, + "n": 19, "last": "2026-10-07" }, "esp32s3-n16r8": { @@ -679,33 +679,33 @@ } }, "loc": { - "core": 27247, + "core": 27585, "light": 30733, - "platform": 17209, - "ui": 12245, - "test": 63152, + "platform": 17533, + "ui": 12258, + "test": 63428, "moondeck": 30598 }, "comments": { "core": { - "lines": 6496, - "ratio": 0.264 + "lines": 6547, + "ratio": 0.263 }, "light": { "lines": 7410, "ratio": 0.271 }, "platform": { - "lines": 3614, - "ratio": 0.234 + "lines": 3644, + "ratio": 0.232 }, "ui": { - "lines": 3473, + "lines": 3474, "ratio": 0.3 }, "test": { - "lines": 6952, - "ratio": 0.128 + "lines": 6972, + "ratio": 0.127 }, "moondeck": { "lines": 4969, @@ -713,20 +713,20 @@ } }, "tests": { - "cases": 2330, + "cases": 2338, "scenarios": 30 }, "docs": { - "md_files": 143, - "md_lines": 30998, + "md_files": 144, + "md_lines": 31099, "plans_files": 41, - "backlog_lines": 3247, + "backlog_lines": 3250, "lessons_lines": 532, "claude_md_lines": 283 }, "complexity": { - "functions": 4141, - "over_threshold": 334, + "functions": 4191, + "over_threshold": 333, "worst_ccn": 128 } } diff --git a/docs/reference/metrics/repo-health.md b/docs/reference/metrics/repo-health.md index cc1f096b4..ea3fc5b13 100644 --- a/docs/reference/metrics/repo-health.md +++ b/docs/reference/metrics/repo-health.md @@ -1,6 +1,6 @@ # Repo health -Measured at `131bca9c`. Generated by [`moondeck/check/repo_health.py`](../../../moondeck/check/repo_health.py) on every KPI-gate run. **Do not edit by hand.** +Measured at `0bc5fb8c`. Generated by [`moondeck/check/repo_health.py`](../../../moondeck/check/repo_health.py) on every KPI-gate run. **Do not edit by hand.** Current state only; the trend is this file's git history (`git log -p docs/reference/metrics/repo-health.md`). Nothing here fails a build: the numbers make growth visible, the judgment stays human. @@ -8,22 +8,23 @@ Current state only; the trend is this file's git history (`git log -p docs/refer | Metric | v6.0.0 | Now | Change | |---|---:|---:|---:| -| flash desktop-macos | 1,963 KB | 2,159 KB | +195.8 KB (+10.0%) | -| flash esp32 | 2,061 KB | 2,143 KB | +82.1 KB (+4.0%) | +| flash desktop-macos | 1,963 KB | 2,161 KB | +197.5 KB (+10.1%) | +| flash esp32 | 2,061 KB | 2,150 KB | +88.3 KB (+4.3%) | | flash esp32p4rev1-eth | 2,022 KB | 2,127 KB | +105.0 KB (+5.2%) | -| flash esp32s3-n16r8 | 2,111 KB | 2,193 KB | +81.5 KB (+3.9%) | -| flash esp32s3-n8r8 | 2,038 KB | 2,195 KB | +156.3 KB (+7.7%) | -| flash esp32s3-zero | 1,977 KB | 2,130 KB | +153.4 KB (+7.8%) | +| flash esp32p4rev3-eth | 2,025 KB | 2,139 KB | +113.7 KB (+5.6%) | +| flash esp32s3-n16r8 | 2,111 KB | 2,250 KB | +138.7 KB (+6.6%) | +| flash esp32s3-n8r8 | 2,038 KB | 2,250 KB | +211.9 KB (+10.4%) | +| flash esp32s3-zero | 1,977 KB | 2,136 KB | +159.5 KB (+8.1%) | | flash esp32s31 | 2,395 KB | 2,490 KB | +94.6 KB (+3.9%) | | tick Effects_pipeline_builds_and_renders (desktop-macos) | 7 µs | 6 µs | -1 (-14.3%) | | tick Layouts_resize_reallocates_live (desktop-macos) | 12 µs | 10 µs | -2 (-16.7%) | -| lines core | 22,299 | 27,247 | +4,948 (+22.2%) | +| lines core | 22,299 | 27,585 | +5,286 (+23.7%) | | lines light | 31,054 | 30,733 | -321 (-1.0%) | -| lines platform | 16,798 | 17,209 | +411 (+2.4%) | -| lines ui | 11,394 | 12,245 | +851 (+7.5%) | -| lines test | 57,759 | 63,152 | +5,393 (+9.3%) | +| lines platform | 16,798 | 17,533 | +735 (+4.4%) | +| lines ui | 11,394 | 12,258 | +864 (+7.6%) | +| lines test | 57,759 | 63,428 | +5,669 (+9.8%) | | lines moondeck | 29,325 | 30,598 | +1,273 (+4.3%) | -| unit tests | 2,120 | 2,330 | +210 (+9.9%) | +| unit tests | 2,120 | 2,338 | +218 (+10.3%) | | scenarios | 21 | 30 | +9 (+42.9%) | Against the release `v6.0.0`, the fixed point a user compares with; the tables below compare against the last commit. A firmware not rebuilt since `v6.0.0` is left out, and a measure the release did not record yet, such as the code report, joins from the next one. @@ -32,19 +33,19 @@ Against the release `v6.0.0`, the fixed point a user compares with; the tables b | Target | Flash | Capacity | Used | Built | |---|---:|---:|---:|:--:| -| desktop-macos | 2,159 KB (+16 KB) ⚠ | - | - | yes | +| desktop-macos | 2,161 KB (+2 KB) ⚠ | - | - | yes | | desktop-windows | 1,880 KB | - | - | **STALE 7d** | -| esp32 | 2,143 KB | 2,496 KB | 86% | carried 0d | +| esp32 | 2,150 KB (+6 KB) ⚠ | 2,496 KB | 86% | yes | | esp32-16mb | 2,012 KB | 4,096 KB | 49% | **STALE 28d** | | esp32-eth | 1,642 KB | 2,496 KB | 66% | **STALE 26d** | | esp32-pico | 2,058 KB | 3,072 KB | 67% | **STALE 28d** | | esp32-wrover | 1,801 KB | 2,496 KB | 72% | carried (age?) | | esp32p4rev1-eth | 2,127 KB | 4,096 KB | 52% | carried 0d | | esp32p4rev1-eth-wifi | 2,304 KB | 4,096 KB | 56% | **STALE 7d** | -| esp32p4rev3-eth | 2,025 KB | 4,096 KB | 49% | **STALE 8d** | -| esp32s3-n16r8 | 2,193 KB | 4,096 KB | 54% | yes | -| esp32s3-n8r8 | 2,195 KB (+2 KB) ⚠ | 3,072 KB | 71% | yes | -| esp32s3-zero | 2,130 KB | 2,496 KB | 85% | yes | +| esp32p4rev3-eth | 2,139 KB (+114 KB) ⚠ | 4,096 KB | 52% | yes | +| esp32s3-n16r8 | 2,250 KB (+57 KB) ⚠ | 4,096 KB | 55% | yes | +| esp32s3-n8r8 | 2,250 KB (+56 KB) ⚠ | 3,072 KB | 73% | yes | +| esp32s3-zero | 2,136 KB (+6 KB) ⚠ | 2,496 KB | 86% | yes | | esp32s31 | 2,490 KB | 4,096 KB | 61% | carried 0d | | qemu | 1,351 KB | - | - | carried (age?) | @@ -54,15 +55,17 @@ Against the release `v6.0.0`, the fixed point a user compares with; the tables b | Target | Net | New | Removed | Grown | Shrunk | Other | Since | |---|---:|---:|---:|---:|---:|---:|---| -| esp32s3-n16r8 | +0.0 KB | +0.0 KB | +0.0 KB | +0.0 KB | +0.0 KB | +0.0 KB | `131bca9c` | -| esp32s3-n8r8 | +1.6 KB | +1.3 KB | -0.9 KB | +2.3 KB | -1.0 KB | -0.1 KB | `131bca9c` | -| esp32s3-zero | +0.0 KB | +0.0 KB | +0.0 KB | +0.0 KB | +0.0 KB | +0.0 KB | `131bca9c` | +| esp32 | +6.2 KB | +5.9 KB | -1.6 KB | +3.7 KB | -2.0 KB | +0.2 KB | `0bc5fb8c` | +| esp32s3-n16r8 | +57.2 KB | +42.9 KB | -1.5 KB | +4.5 KB | -1.3 KB | +12.5 KB | `0bc5fb8c` | +| esp32s3-n8r8 | +55.6 KB | +42.6 KB | -1.6 KB | +3.9 KB | -1.9 KB | +12.7 KB | `0bc5fb8c` | +| esp32s3-zero | +6.1 KB | +5.8 KB | -1.7 KB | +2.8 KB | -1.1 KB | +0.3 KB | `0bc5fb8c` | Largest moves: -- **esp32s3-n16r8**: none -- **esp32s3-n8r8**: `mm::MidiService::decode(unsigned char const*, unsigned char)` -528 B, `mm::MidiService::decodeBatch(char const*)` +522 B, `mm::ModuleFactory::registerType(char cons` -471 B, `mm::MidiService::decodeMackie(unsigned char const*)` +426 B, `mm::HueDriver::HueDriver()` +416 B -- **esp32s3-zero**: none +- **esp32**: `mm::MidiService::onControlChanged(char const*)` +744 B, `mm::MidiService::readUsb()` +710 B, `mm::ControlModule::mirrorToSurfaces()` +639 B, `mm::OscModule::writeSurface(mm::SurfaceControl, char const*,` +587 B, `mm::OscModule::handle(unsigned char const*, unsigned int, un` +538 B +- **esp32s3-n16r8**: `enum_process` +2,810 B, `hcd_port_command` +1,572 B, `intr_hdlr_main` +1,301 B, `_buffer_fill` +1,278 B, `usb_new_phy` +1,219 B +- **esp32s3-n8r8**: `enum_process` +2,810 B, `hcd_port_command` +1,572 B, `intr_hdlr_main` +1,301 B, `_buffer_fill` +1,278 B, `usb_new_phy` +1,219 B +- **esp32s3-zero**: `mm::MidiService::onControlChanged(char const*)` +760 B, `mm::MidiService::readUsb()` +722 B, `mm::ControlModule::mirrorToSurfaces()` +639 B, `mm::OscModule::writeSurface(mm::SurfaceControl, char const*,` +587 B, `mm::OscModule::handle(unsigned char const*, unsigned int, un` +538 B What this commit's flash went to, symbol by symbol against the measurement at `Since`. New is new functionality, removed and shrunk are what a cleanup saved, and other is what no symbol owns, such as merged strings and alignment. A rename reads as removed plus new, which the largest moves expose. @@ -79,7 +82,7 @@ What this commit's flash went to, symbol by symbol against the measurement at `S | Scenario | desktop-macos | desktop-windows | esp32 | esp32s3-n16r8 | esp32p4rev1-eth | esp32s31 | esp32-eth | esp32-eth-wifi | desktop-docker-arm64 | esp32p4rev1-eth-wifi | |---|---|---|---|---|---|---|---|---|---|---| | Aurora_fps | 1,549 | 6,661 ? | 217,295 ? | 188,782 ? | 83,632 ? | 87,613 ? | - | - | 7,532 ? | 6,343,087 ? | -| Control_a_palette_preset_changes_only_the_palette | 5 | - | - | 2,073 | - | - | - | - | - | - | +| Control_a_palette_preset_changes_only_the_palette | 6 (+1) ⚠ | - | - | 2,073 | - | - | - | - | - | - | | Drivers_output_and_brightness | 7 | 4 ? | - | 8,690 ? | - | - | - | - | 218 ? | - | | Effects_pipeline_builds_and_renders | 6 | 4 ? | - | - | - | - | - | - | - | - | | Effects_swap_while_running | 1 | 4 ? | - | 10,000 ? | - | - | - | - | 287 ? | - | @@ -124,36 +127,36 @@ These build a bare pipeline with no optional modules, so a change here is a chan | Area | Lines | Comments | Comment share | |---|---:|---:|---:| -| core | 27,247 (+126) ⚠ | 6,496 | 26.4 % (−0.1 %) ✓ | +| core | 27,585 (+338) ⚠ | 6,547 | 26.3 % (−0.1 %) ✓ | | light | 30,733 | 7,410 | 27.1 % | -| platform | 17,209 | 3,614 | 23.4 % | -| ui | 12,245 (+18) ⚠ | 3,473 | 30.0 % | -| test | 63,152 (+77) ⚠ | 6,952 | 12.8 % | +| platform | 17,533 (+324) ⚠ | 3,644 | 23.2 % (−0.2 %) ✓ | +| ui | 12,258 (+13) ⚠ | 3,474 | 30.0 % | +| test | 63,428 (+276) ⚠ | 6,972 | 12.7 % (−0.1 %) ✓ | | moondeck | 30,598 | 4,969 | 18.5 % | ## Tests | Kind | Count | |---|---:| -| unit cases | 2,330 (+4) ✓ | +| unit cases | 2,338 (+8) ✓ | | scenarios | 30 | ## Complexity | Metric | Value | |---|---:| -| functions | 4,141 (−21) ⚠ | -| over threshold | 334 | +| functions | 4,191 (+50) ✓ | +| over threshold | 333 (−1) ✓ | | worst CCN | 128 | ## Documentation | Metric | Value | |---|---:| -| markdown files | 143 (+1) ⚠ | -| markdown lines | 30,998 (+227) ⚠ | +| markdown files | 144 (+1) ⚠ | +| markdown lines | 31,099 (+101) ⚠ | | plan files | 41 | -| backlog lines | 3,247 | +| backlog lines | 3,250 (+3) ⚠ | | lessons lines | 532 | | CLAUDE.md lines | 283 | diff --git a/docs/work/future/backlog-core.md b/docs/work/future/backlog-core.md index 7f798e417..a7547ae52 100644 --- a/docs/work/future/backlog-core.md +++ b/docs/work/future/backlog-core.md @@ -1524,26 +1524,15 @@ The appealing shape is one where every instrument on stage arrives as MIDI: the Build trigger: a stage with more than one instrument to point at it. The first honest experiment is one drum channel through a direct out, because it answers the cost question and the usefulness question at the same time. -## OSC pads and the Open Stage Control session's labels (2026-08-30) +## The Open Stage Control session's labels (2026-08-30) -Two gaps found wiring a real control surface to the [OSC module](../../moonmodules/core/services.md). - -**`/mm/pad/N` has no handler.** The [OSC plan](../past/plans/Plan-20260829%20-%20OSC%20control%20ingest%20(shipped).md) -lists it (`i 1 -> apply preset in slot 12`), and `OscModule::handle` routes `/mm/fader/`, -`/mm/encoder/` and `/mm/switch/` but not pads. So a surface can drive every -continuous control and every switch, but cannot fire a preset, which is the one thing a pad grid -exists for. The route is small; what needs deciding is what a pad press means when the slot is -empty, and whether a nonzero value is a press or a press-and-hold. +Found wiring a real control surface to the [OSC module](../../moonmodules/core/services.md). **The shipped Open Stage Control session renders no labels, and its pad matrix draws nothing.** -[`docs/reference/examples/open-stage-control.json`](../../reference/examples/open-stage-control.json) -works for every fader, encoder and switch, but the widget names never appear and the `matrix` of -pads is an empty box. Five attempts at the label property failed (`@{}`, `JS{}`, `#{}` with `unit`, -an explicit string, omitting it so `"auto"` applies), and notably a session SAVED by Open Stage -Control itself carries no `label` key on a fader at all, so the name is drawn from something else. -The session was written by reading a minified app's bundled HTML docs; the reliable fix is to build -one widget of each kind by hand in its editor, save, and copy the shape it produces. Cosmetic: the -control path works, only the labels and the pad grid are missing. +[`docs/reference/examples/open-stage-control.json`](../../reference/examples/open-stage-control.json) works for every fader, encoder and switch, but the widget names never appear and the `matrix` of pads is an empty box. +Five attempts at the label property failed (`@{}`, `JS{}`, `#{}` with `unit`, an explicit string, omitting it so `"auto"` applies), and notably a session SAVED by Open Stage Control itself carries no `label` key on a fader at all, so the name is drawn from something else. +The session was written by reading a minified app's bundled HTML docs; the reliable fix is to build one widget of each kind by hand in its editor, save, and copy the shape it produces. +Cosmetic: the control path works, only the labels and the pad grid are missing. ## POST /api/file reports success while writing an empty file (no Content-Length) diff --git a/docs/work/future/backlog-light.md b/docs/work/future/backlog-light.md index 02597612e..93dddf4b6 100644 --- a/docs/work/future/backlog-light.md +++ b/docs/work/future/backlog-light.md @@ -204,6 +204,20 @@ Worth doing because it also gives the ADC seam a real bench rig: an on-board ana hand-wired potentiometer. NOTE the pin move is unverified on hardware, both boards being offline when it was made: confirm LED output still works after the change before trusting it. +### LightCrafter 16: questions for the maker (2026-10-07) + +The [LightCrafter 16 page](../../reference/hardware/lightcrafter-16.md) holds what the catalog and limpkin's pull requests say. +These are open, to ask limpkin: + +- The module part, the level shifter, the output voltage and the connectors. +- The power input: the connector, the voltage range, the fusing and the reverse-polarity protection. +- Which USB-C connector is the S3's own USB and which the serial bridge, and which chip the bridge is. +- Whether the S3's own port supplies 5 V to a plugged-in device, such as a MIDI desk. +- The RS-485 transceiver and the Hall current sensor parts. +- A schematic and a pin-layout image. + +The device model uses GPIO 19 and 20 as the LCD driver's unused signal lines, which are the S3's own USB data pins; that choice is unverified on hardware, and a USB desk on the board would need them. + ### MoonI80 streaming ring — 48×256 shipped; open instruments and cleanups The ring's two regimes ship and are wall-verified through 48 strands × 256 (12,288 lights): prime-only when the frame fits the pool, the clock-oracle lapping ring above it (the near-prime pool — the ISR encodes only `nSlices − ringBufs` slices per frame), with `ringAuto` deriving the geometry per config and `shiftOverclock` trading the fps ceiling against '595 shift margin. The mechanism lives in the code + the technical page; the design arc in `docs/work/past/plans/` (the MoonI80 plans, all marked). Open items: diff --git a/docs/work/present/Plan-20261001 - Gamepads and MIDI desks (partial).md b/docs/work/present/Plan-20261001 - Gamepads and MIDI desks (partial).md index b7070baf7..a0f14b54b 100644 --- a/docs/work/present/Plan-20261001 - Gamepads and MIDI desks (partial).md +++ b/docs/work/present/Plan-20261001 - Gamepads and MIDI desks (partial).md @@ -194,8 +194,11 @@ The APC40 mkII is on the bench, so the Akai profile the Decided section waited f ### 4. USB host on S3 and P4 🚧 -- USB host bring-up in the platform layer, behind a seam. -- USB MIDI first, since it is one class with no per-vendor parsing: the QCon without a computer. +- ✅ USB host bring-up in the platform layer, behind a seam: `platform_esp32_usb_midi.cpp`, built into the n8r8 and n16r8 images (`CONFIG_MM_USB_MIDI_HOST`). +- ✅ USB MIDI first, since it is one class with no per-vendor parsing: `MidiService`'s `usb` setting. Verified with the QCon on the MIDI-OSC bridge board, driving the StadBeest legs over OSC with `follow` on. +- The APC40 mkII on a board waits for a powered hub: it takes its power from USB, and the dev board's port supplies none. The hub needs `CONFIG_USB_HOST_HUBS_SUPPORTED` in the S3 images. +- **The legs LEDs stop briefly on each QCon move.** About half a second, at once, and only when the change arrives from the bridge: moving the same control on the legs board's own page shows nothing. Not yet found; the next step is timing the legs board's OSC receive path and the Control slot path it drives. +- **A QCon fader sometimes slides back after release.** Sending the release position at once (no tick wait, USB tasks woken on send) made it rarer but did not end it. Next: log what the desk sends around the touch release, and whether a feedback value from the legs board arrives after the hold-off has expired. - HID gamepads next, with controller translations seeded from GameControllerDB. Xbox pads over USB need a GIP driver on top, and only if wanted, since the browser already reaches them over USB or Bluetooth on the computer. - The S31 joins if its datasheet confirms a USB host. @@ -211,6 +214,6 @@ The X-Touch over Ethernet with no computer: RFC 6295's session handshake and jou - **The pad is an Xbox Series X|S controller** (it has the Share button). The browser reaches it as a standard gamepad, over USB or Bluetooth on the computer; USB on the board needs GIP, so that route waits. - **No Bluetooth on the board**, for its flash, RAM and shared-radio cost; Bluetooth devices come in through the browser. -- **Akai desks are in scope.** They work through `MidiService` like every MIDI desk. The APC40 mkII is on the bench and gets its own profile (step 2b); other Akai desks come in through learn. The MCU profile is verified with the X-Touch and the QCon. +- **Akai desks are in scope.** They work through `MidiService` like every MIDI desk. The APC40 mkII is on the bench and gets its own profile (step 2b); other Akai desks wait for MIDI learn. The MCU profile is verified with the X-Touch and the QCon. - **The hand-back is a fixed ten seconds.** A control for it was built and removed again: nobody tunes it, and it cost a control on three games. - **Rows point at the surface**, and direct targets go for every input service (step 3). diff --git a/esp32/main/CMakeLists.txt b/esp32/main/CMakeLists.txt index 4039f8993..66152d8d4 100644 --- a/esp32/main/CMakeLists.txt +++ b/esp32/main/CMakeLists.txt @@ -40,6 +40,7 @@ idf_component_register( "../../src/platform/esp32/platform_esp32_i2s.cpp" "../../src/platform/esp32/platform_esp32_i2c.cpp" "../../src/platform/esp32/platform_esp32_ir.cpp" + "../../src/platform/esp32/platform_esp32_usb_midi.cpp" "../../src/platform/esp32/platform_esp32_es8311.cpp" INCLUDE_DIRS "../../src" diff --git a/esp32/main/Kconfig.projbuild b/esp32/main/Kconfig.projbuild index ef0b24964..10ac74fc2 100644 --- a/esp32/main/Kconfig.projbuild +++ b/esp32/main/Kconfig.projbuild @@ -4,7 +4,7 @@ # main/idf_component.yml) can branch on them: a rule's `if:` clause can test a # Kconfig symbol, but only one that is *declared* (an undeclared symbol raises # MissingKconfigError and fails the solve), so a plain sdkconfig.defaults line is -# not enough — the option must be declared here too. +# not enough: the option must be declared here too. menu "MoonLight" @@ -17,7 +17,7 @@ menu "MoonLight" esp_wifi_* API over SDIO. The P4 has no native radio. OFF by default so the Ethernet-only P4 firmware (esp32p4-eth) does - NOT compile or boot esp_hosted — esp_hosted self-initialises at boot + NOT compile or boot esp_hosted, which self-initializes at boot and claims the default netif, which breaks the EMAC Ethernet DHCP path on an eth-only build (link up but no IP). Only the WiFi build (esp32p4-eth-wifi) sets this, via sdkconfig.defaults.esp32p4-eth-wifi. @@ -37,4 +37,13 @@ menu "MoonLight" the same HlsDriver the desktop uses. Only the P4 has the encoder silicon; other chips keep this off and build nothing. + config MM_USB_MIDI_HOST + bool "USB MIDI host on the chip's own USB port" + default n + help + Pulls the espressif/usb managed component and compiles the USB MIDI + host, so a class-compliant MIDI desk plugged into the board drives the + MIDI service with no computer. Set by the S3 images with flash to spare + (n8r8, n16r8); the 4 MB S3-Zero leaves it off. + endmenu diff --git a/esp32/main/idf_component.yml b/esp32/main/idf_component.yml index 37d51863b..0bd0e92d9 100644 --- a/esp32/main/idf_component.yml +++ b/esp32/main/idf_component.yml @@ -9,7 +9,7 @@ dependencies: # out of esp_eth core into managed components; only referenced on the P4 build # (ethInit's IP101 ctor is behind `#ifdef CONFIG_IDF_TARGET_ESP32P4`; the # generic PHY, Olimex LAN8720, stays in core). The `rules` gate scopes the - # *dependency* to the P4 too — without it, every target tries to resolve ip101 + # *dependency* to the P4 too. Without it, every target tries to resolve ip101 # even though only the P4 compiles the symbol, and the **S3 build fails the # solve**: ip101 is an EMAC PHY, the registry has no esp32s3-compatible version # (the S3 has no internal EMAC), so `^1.0.0` "doesn't match any versions". The @@ -31,10 +31,6 @@ dependencies: version: "^1.0.0" rules: - if: "target == esp32s3" - # esp-dsp — Espressif's signal-processing library; we use its float radix-2 FFT - # (dsps_fft2r_fc32) for the microphone spectrum. Float (not fixed-point) because - # every mic-capable target here has an FPU, where float is faster. Referenced - # only from platform_esp32_i2s.cpp's audioFft. # H.264 hardware encoder wrapper for the P4's encoder silicon (HLS streaming). Gated on # MM_HLS, not the target: a bare target rule would land it in every P4 image; the Kconfig # gate keeps it out wherever HLS is off. $CONFIG{NAME} syntax per the esp_wifi_remote note. @@ -42,8 +38,19 @@ dependencies: version: "^1.0.0" rules: - if: "$CONFIG{MM_HLS} == True" + # esp-dsp: Espressif's signal-processing library; we use its float radix-2 FFT + # (dsps_fft2r_fc32) for the microphone spectrum. Float (not fixed-point) because + # every mic-capable target here has an FPU, where float is faster. Referenced + # only from platform_esp32_i2s.cpp's audioFft. espressif/esp-dsp: version: "^1.5.0" + # USB host stack, which IDF v6 moved out of core into this managed component. The MIDI + # service's USB source is its only user (platform_esp32_usb_midi.cpp), so the Kconfig gate + # keeps it out of every image that does not set MM_USB_MIDI_HOST. + espressif/usb: + version: "^1.0.0" + rules: + - if: "$CONFIG{MM_USB_MIDI_HOST} == True" # esp_codec_dev: Espressif's audio-codec library, whose ES8311 part configures an analog mic # behind an ES8311 I2S codec. Which board has one, and on which pins, is AudioService's runtime # configuration from the device model, so the component is built for every chip a codec board @@ -53,24 +60,24 @@ dependencies: version: "^1.3.0" rules: - if: "target in [esp32s31, esp32p4]" - # esp_wifi_remote + esp_hosted — WiFi for the ESP32-P4 via the on-board ESP32-C6 + # esp_wifi_remote + esp_hosted: WiFi for the ESP32-P4 via the on-board ESP32-C6 # co-processor over SDIO. The P4 has no native radio; these present the C6's # radio through the standard esp_wifi_* API (API-compatible, so the WiFi seam in # platform_esp32.cpp is unchanged; esp_hosted self-inits at boot, no bring-up # code needed). DELIBERATE v6.0-floor exception (docs/how-to/building.md § ESP-IDF # version): these are managed components outside mainline v6.0, accepted # explicitly. The `rules` gate pulls them ONLY when CONFIG_MM_P4_WIFI is set - # (declared in main/Kconfig.projbuild, set by sdkconfig.defaults.esp32p4rev1-eth-wifi) - # — i.e. the WiFi build only. Gating on `target == esp32p4` alone was WRONG: it + # (declared in main/Kconfig.projbuild, set by sdkconfig.defaults.esp32p4rev1-eth-wifi), + # that is, the WiFi build only. Gating on `target == esp32p4` alone was WRONG: it # also pulled them into the Ethernet-only esp32p4rev1-eth build, where esp_hosted's # boot-time self-init claims the default netif and breaks the EMAC Ethernet DHCP - # (link up, no IP — bench-found 2026-06-15). Versions pinned to patch-level (the + # (link up, no IP, bench-found 2026-06-15). Versions pinned to patch-level (the # versions validated on the P4-NANO bench) so the build doesn't drift to a new minor. # Kconfig gate uses the `$CONFIG{NAME}` form (NO `CONFIG_` prefix inside the - # braces) — that is the ONLY syntax the component manager's KCONFIG_VAR_REGEX + # braces): that is the ONLY syntax the component manager's KCONFIG_VAR_REGEX # (`\$CONFIG\{([^}]+)}`) recognises. A bare `CONFIG_MM_P4_WIFI == True` is NOT # matched: it falls through to plain string-eval, resolves to false, and the - # dependency is silently skipped (`NOTICE: Skipping optional dependency`) — which + # dependency is silently skipped (`NOTICE: Skipping optional dependency`), which # is what broke the esp32p4rev1-eth-wifi build after the IDF/component-manager update. espressif/esp_wifi_remote: version: "~1.6.1" diff --git a/esp32/sdkconfig.defaults.esp32s3-n16r8 b/esp32/sdkconfig.defaults.esp32s3-n16r8 index 50e2ae1b2..639eb9d0f 100644 --- a/esp32/sdkconfig.defaults.esp32s3-n16r8 +++ b/esp32/sdkconfig.defaults.esp32s3-n16r8 @@ -1,7 +1,7 @@ # ESP32-S3-N16R8 (16 MB flash, 8 MB PSRAM) # Append to sdkconfig.defaults or copy as sdkconfig.defaults -# Custom partition table — shared 16 MB layout (app0/app1 = 4 MB each, spiffs +# Custom partition table: shared 16 MB layout (app0/app1 = 4 MB each, spiffs # ~7.9 MB). Chip-independent flash map; same file for classic-16mb and P4-NANO. CONFIG_PARTITION_TABLE_CUSTOM=y CONFIG_PARTITION_TABLE_CUSTOM_FILENAME="partitions/ota_16mb.csv" @@ -15,10 +15,13 @@ CONFIG_SPIRAM_MODE_OCT=y # MoonLive native codegen needs an executable heap (allocExec → MALLOC_CAP_EXEC IRAM). # MALLOC_CAP_EXEC is gated behind CONFIG_HEAP_HAS_EXEC_HEAP, which IDF disables whenever -# memory protection (PMP/PMS W^X) is on — the same write-XOR-execute rule we handle on +# memory protection (PMP/PMS W^X) is on, the same write-XOR-execute rule we handle on # macOS. A JIT fundamentally needs writable-then-executable memory, so disable memprot # (which enables the exec heap). This is the standard ESP32-JIT configuration (ESPLiveScript # runs the same way); the safety story for scripted code is the staged bounds/watchdog # checks, not the hardware W^X wall. CONFIG_ESP_SYSTEM_MEMPROT_FEATURE=n CONFIG_HEAP_HAS_EXEC_HEAP=y + +# A MIDI desk on the board's own USB port: the MIDI service's USB source. +CONFIG_MM_USB_MIDI_HOST=y diff --git a/esp32/sdkconfig.defaults.esp32s3-n8r8 b/esp32/sdkconfig.defaults.esp32s3-n8r8 index 356cea9b5..daeed04b2 100644 --- a/esp32/sdkconfig.defaults.esp32s3-n8r8 +++ b/esp32/sdkconfig.defaults.esp32s3-n8r8 @@ -2,23 +2,26 @@ # Append to sdkconfig.defaults (later fragment wins, overriding the base 4 MB + # esp32dev.csv partition the classic default sets). -# Custom partition table — 8MB layout (app0/app1 = 3 MB each, spiffs = ~1.9 MB) +# Custom partition table: 8MB layout (app0/app1 = 3 MB each, spiffs = ~1.9 MB) CONFIG_PARTITION_TABLE_CUSTOM=y CONFIG_PARTITION_TABLE_CUSTOM_FILENAME="partitions/esp32s3_n8r8.csv" # Flash size override (default is 2MB on ESP32-S3) CONFIG_ESPTOOLPY_FLASHSIZE_8MB=y -# PSRAM — same 8 MB octal as N16R8 +# PSRAM: same 8 MB octal as N16R8 CONFIG_SPIRAM=y CONFIG_SPIRAM_MODE_OCT=y # MoonLive native codegen needs an executable heap (allocExec → MALLOC_CAP_EXEC IRAM). # MALLOC_CAP_EXEC is gated behind CONFIG_HEAP_HAS_EXEC_HEAP, which IDF disables whenever -# memory protection (PMP/PMS W^X) is on — the same write-XOR-execute rule we handle on +# memory protection (PMP/PMS W^X) is on, the same write-XOR-execute rule we handle on # macOS. A JIT fundamentally needs writable-then-executable memory, so disable memprot # (which enables the exec heap). This is the standard ESP32-JIT configuration (ESPLiveScript # runs the same way); the safety story for scripted code is the staged bounds/watchdog # checks, not the hardware W^X wall. (Same config as the N16R8 fragment.) CONFIG_ESP_SYSTEM_MEMPROT_FEATURE=n CONFIG_HEAP_HAS_EXEC_HEAP=y + +# A MIDI desk on the board's own USB port: the MIDI service's USB source. +CONFIG_MM_USB_MIDI_HOST=y diff --git a/mkdocs.yml b/mkdocs.yml index 9d8755eed..daed68184 100644 --- a/mkdocs.yml +++ b/mkdocs.yml @@ -232,6 +232,7 @@ nav: - Firmware variants and memory: reference/hardware/firmware-variants.md - GPIO usage per MCU: reference/hardware/gpio-usage.md - ESP32-S31 coreboard: reference/hardware/esp32-s31-coreboard.md + - LightCrafter 16: reference/hardware/lightcrafter-16.md - MHC-WLED ESP32-P4 shield: reference/hardware/mhc-wled-esp32-p4-shield.md - Waveshare ESP32-P4-ETH: reference/hardware/esp32-p4-eth.md - Light fixtures and DMX nodes: reference/hardware/light-fixtures.md diff --git a/moondeck/check/check_devices.py b/moondeck/check/check_devices.py index 4d034e0ae..17d3e4f3a 100644 --- a/moondeck/check/check_devices.py +++ b/moondeck/check/check_devices.py @@ -42,7 +42,7 @@ # in lockstep with the modules that actually exist. planned = peripherals with no # module yet (the backlog seed) — open-ended by design, so it is NOT whitelisted, # only type-checked. Adding a new supported capability means a module backs it. -SUPPORTED_VOCAB = {"LEDs", "WiFi", "Ethernet", "Audio", "IR", "MQTT", "Hue"} +SUPPORTED_VOCAB = {"LEDs", "WiFi", "Ethernet", "Audio", "IR", "MQTT", "Hue", "MIDI", "OSC"} # Flash bauds a board may pin via `flashBaud` — the standard esptool rates. The default # differs by audience: the CLI / MoonDeck path defaults FAST (921600 — DIY bench, modern diff --git a/mooninstaller/deviceModels.json b/mooninstaller/deviceModels.json index 05e10631a..84a14d2d3 100644 --- a/mooninstaller/deviceModels.json +++ b/mooninstaller/deviceModels.json @@ -573,6 +573,56 @@ } ] }, + { + "name": "MIDI-OSC bridge", + "chip": "ESP32-S3", + "firmwares": [ + "esp32s3-n16r8" + ], + "image": "assets/deviceModels/esp32-s3-n16r8-dev.png", + "supported": [ + "WiFi", + "MIDI", + "OSC" + ], + "modules": [ + { + "type": "System", + "id": "System", + "controls": { + "deviceModel": "MIDI-OSC bridge" + } + }, + { + "type": "WiFiModule", + "id": "WiFi", + "parent_id": "Network", + "controls": { + "txPowerSetting": 8 + } + }, + { + "type": "MidiService", + "id": "Midi", + "parent_id": "Services", + "controls": { + "usb": true + } + }, + { + "type": "OscModule", + "id": "OscModule", + "parent_id": "Services", + "controls": { + "listen": true, + "port": 9001, + "follow": true, + "feedback": true, + "feedbackPort": 9000 + } + } + ] + }, { "name": "MM testbench S3", "chip": "ESP32-S3", diff --git a/src/core/services/MidiService.h b/src/core/services/MidiService.h index f382b3438..082354fd7 100644 --- a/src/core/services/MidiService.h +++ b/src/core/services/MidiService.h @@ -1,11 +1,13 @@ #pragma once #include "core/module/MoonModule.h" -#include "core/module/Scheduler.h" #include "core/system/ControlModule.h" // the surface a desk's faders, knobs and buttons land on #include "core/util/ControlSurface.h" // the way back: motors, rings and button lights +#include "core/util/UsbMidi.h" // a desk on this board's own USB port +#include "platform/platform.h" #include "core/util/format.h" // formatTo: nonblocking formatting into a fixed buffer +#include #include #include #include @@ -23,6 +25,7 @@ namespace mm { /// The way back is a surface: the hidden `desk` control holds what the desk shows, one message per fader motor, button light and knob ring. /// It is state rather than a log, so the browser sends only the slots that changed, and a page opened later still finds the motors' positions. /// The hidden `hello` control holds what the browser sends whenever the desk connects, such as the SysEx that hands an APC40's lights to the host. +/// With `usb` on, the desk plugs into this board's own USB port instead, with no computer: the same messages travel as USB-MIDI packets. class MidiService : public MoonModule, public ControlSurface { public: /// A service, so the container accepts it as a child. @@ -30,10 +33,14 @@ class MidiService : public MoonModule, public ControlSurface { /// Which desk this is, since each desk lays its controls out in its own messages. uint8_t profile = 0; + /// Whether the desk is on this board's own USB port, which then carries no serial log or USB flashing. + bool usb = false; - /// Declare the desk's profile, the inbound batch, the desk's state and its greeting. + /// Declare the desk's profile, its port, the inbound batch, the desk's state and its greeting. void defineControls() override { controls_.addSelect("profile", profile, kProfiles, kProfileCount); + controls_.addControl("usb", usb); + controls_.setHidden(controls_.count() - 1, !platform::hasUsbMidiHost); controls_.addText("midi", midi_, sizeof(midi_)); controls_.setHidden(controls_.count() - 1, true); controls_.setLive(controls_.count() - 1); @@ -49,16 +56,23 @@ class MidiService : public MoonModule, public ControlSurface { MoonModule::defineControls(); } - /// Attach to the surface once it exists, which seeds every slot of the desk. + /// Attach to the surface, which seeds every slot of the desk, and take the USB port when asked. + void prepare() override { + if (auto* c = ControlModule::active()) { c->addSurface(this); attached_ = true; } + if (usb != usbBegun_) followUsb(); + } + + /// Serve a desk on the USB port. void tick20ms() MM_NONBLOCKING override { - if (attached_) return; - if (auto* c = ControlModule::active()) { attached_ = true; c->addSurface(this); } + if (usb) serveUsb(); } /// Detach, since the surface list is walked from the render thread. void release() override { if (auto* c = ControlModule::active()) c->removeSurface(this); attached_ = false; + if (usbBegun_) platform::usbMidiEnd(); + usbBegun_ = false; MoonModule::release(); } @@ -68,20 +82,26 @@ class MidiService : public MoonModule, public ControlSurface { uint8_t slot; if (profile == kApc40 ? !apcMessage(kind, index, value, m, slot) : !mackieMessage(kind, index, value, m, slot)) return; writeSlot(slot, m); + // At once rather than on this service's next tick, so a desk released after a move lands where it ended without a step back. + if (usbConnected_ && usbGreeted_) sendChangedSlots(); } /// Decode each batch the interface writes, and rebuild the desk's state if a client overwrote it or the profile changed. void onControlChanged(const char* name) override { + if (std::strcmp(name, "usb") == 0) { + followUsb(); + return; + } if (std::strcmp(name, "desk") == 0 || std::strcmp(name, "profile") == 0) { desk_[0] = 0; + usbGreeted_ = false; writeHello(); if (auto* c = ControlModule::active(); c && attached_) c->resendTo(this); return; } if (std::strcmp(name, "midi") != 0) return; - statusBuf_[0] = 0; decodeBatch(midi_); - if (statusBuf_[0]) setStatus(statusBuf_); + showLastMessage(); } /// Decode one message of up to three bytes, as the profile lays the desk out. @@ -174,9 +194,9 @@ class MidiService : public MoonModule, public ControlSurface { /// A track fader or a track knob, both reading 0..127, stretched so the top of the travel is the surface's 255. void apcControlChange(uint8_t channel, uint8_t cc, uint8_t raw) { const uint8_t value = static_cast(raw * 255 / 127); - if (cc == kApcFaderCC && channel < ControlModule::kFaderCount) writeSurface("fader", channel, value); + if (cc == kApcFaderCC && channel < ControlModule::kFaderCount) writeSurface(SurfaceControl::Fader, channel, value); else if (channel == 0 && cc >= kApcKnobCC && cc < kApcKnobCC + ControlModule::kEncoderCount) - writeSurface("encoder", static_cast(cc - kApcKnobCC), value); + writeSurface(SurfaceControl::Encoder, static_cast(cc - kApcKnobCC), value); } /// An activator flips its switch, and a clip pad applies the preset on its cell. @@ -188,8 +208,11 @@ class MidiService : public MoonModule, public ControlSurface { if (channel != 0 || note >= kApcPads) return; const uint8_t pad = apcNoteOfPad(note); // its own inverse: the row flip undoes itself auto* c = ControlModule::active(); - const bool applied = c && c->pressPad(pad); - mm::formatTo(statusBuf_, sizeof(statusBuf_), applied ? "pad %u" : "pad %u is empty", static_cast(pad) + 1u); + if (!c) return; + const bool empty = c->padState(pad) == ControlModule::kPadEmpty; + const bool applied = !empty && c->pressPad(pad); + mm::formatTo(lastMessage_, sizeof(lastMessage_), empty ? "pad %u is empty" : applied ? "pad %u" : "pad %u did not apply", + static_cast(pad) + 1u); } /// A Mackie Control message: a fader, a fader touch, a channel button or a knob turn. @@ -199,7 +222,7 @@ class MidiService : public MoonModule, public ControlSurface { // A fader: 14-bit pitch bend, one channel per fader; channel 8 is the master, which the surface has no slot for. if (channel >= ControlModule::kFaderCount) return; const uint16_t v14 = static_cast(m[1] | (m[2] << 7)); - writeSurface("fader", channel, static_cast(v14 >> 6)); + writeSurface(SurfaceControl::Fader, channel, static_cast(v14 >> 6)); return; } const bool noteOn = status == 0x90 && m[2] > 0; @@ -221,8 +244,8 @@ class MidiService : public MoonModule, public ControlSurface { // A knob turn: bit 6 is the direction, the low six bits how far. const int steps = m[2] & 0x3F; const int8_t delta = static_cast((m[2] & 0x40) ? -steps : steps); - if (auto* c = ControlModule::active()) c->applyEncoderDelta(static_cast(m[1] - kVPotCC), delta); - mm::formatTo(statusBuf_, sizeof(statusBuf_), "encoder %u %+d", static_cast(m[1] - kVPotCC + 1), delta); + if (auto* c = ControlModule::active()) c->turn(static_cast(m[1] - kVPotCC), delta); + mm::formatTo(lastMessage_, sizeof(lastMessage_), "encoder %u %+d", static_cast(m[1] - kVPotCC + 1), delta); } } @@ -247,52 +270,135 @@ class MidiService : public MoonModule, public ControlSurface { static constexpr uint8_t kDeskSlots = kPadSlot + kApcPads; static constexpr uint8_t kSlotChars = 7; ///< "e07f7f " per message + /// Read one hex token at `p` into up to `max` bytes, moving `p` past it; the token's length in bytes, 0 at the end or at junk. + static size_t hexToken(const char*& p, uint8_t* out, size_t max) { + while (*p == ' ') p++; + size_t len = 0; + while (std::isxdigit(static_cast(p[0])) && std::isxdigit(static_cast(p[1]))) { + const char hex[3] = {p[0], p[1], 0}; + if (len < max) out[len] = static_cast(std::strtoul(hex, nullptr, 16)); + len++; + p += 2; + } + return len; + } + /// Read "hex hex...", each token one message; a malformed token ends the batch. void decodeBatch(const char* s) { const char* p = s; - while (*p) { - while (*p == ' ') p++; - uint8_t m[3] = {}; - uint8_t len = 0; - while (std::isxdigit(static_cast(p[0])) && std::isxdigit(static_cast(p[1]))) { - const char hex[3] = {p[0], p[1], 0}; - if (len < sizeof(m)) m[len] = static_cast(std::strtoul(hex, nullptr, 16)); - len++; - p += 2; + uint8_t m[3] = {}; + for (size_t len; (len = hexToken(p, m, sizeof(m))) > 0;) decode(m, len > 3 ? 3 : static_cast(len)); + } + + /// Take or give back the USB port as `usb` says, the status saying when this board has none. + void followUsb() { + usbGreeted_ = false; + usbConnected_ = false; + if (!usb) { + if (usbBegun_) platform::usbMidiEnd(); + usbBegun_ = false; + return; + } + if (!usbBegun_) usbBegun_ = platform::usbMidiBegin(); + if (platform::hasUsbMidiHost) setStatus("USB: waiting for a desk"); + else setStatus("this board has no USB host", Severity::Warning); + } + + /// The desk on the USB port: decode what it sent, greet it once it appears, and send each slot of its state that changed. + void serveUsb() { + // The port may still be on its way back from an earlier off, so a refused start is asked again. + if (!usbBegun_) usbBegun_ = platform::usbMidiBegin(); + const bool connected = usbBegun_ && platform::usbMidiConnected(); + if (connected != usbConnected_) { + usbConnected_ = connected; + setStatus(connected ? "USB: desk connected" : "USB: waiting for a desk"); + } + if (!connected) { + usbGreeted_ = false; + return; + } + readUsb(); + showLastMessage(); + if (!usbGreeted_) { + // The greeting first, so the desk is in the mode its lights are written for, then every slot again. + const char* p = hello_; + uint8_t msg[24]; + for (size_t len; (len = hexToken(p, msg, sizeof(msg))) > 0;) sendUsb(msg, std::min(len, sizeof(msg))); + std::memset(usbShown_, 0, sizeof(usbShown_)); + usbGreeted_ = true; + } + sendChangedSlots(); + } + + /// Decode what the desk on the USB port sent since the last tick. + void readUsb() { + uint8_t packets[16][4]; + for (int round = 0; round < kUsbReadRounds; round++) { + const size_t n = platform::usbMidiRead(packets, 16); + for (size_t i = 0; i < n; i++) { + uint8_t m[3]; + if (const uint8_t len = usbmidi::decode(packets[i], m)) decode(m, len); } - if (len == 0) return; - decode(m, len > 3 ? 3 : len); + if (n < 16) break; + } + } + + /// Send the desk on the USB port every slot of its state it was not sent yet. + void sendChangedSlots() { + for (uint8_t slot = 0; slot < kDeskSlots && desk_[0]; slot++) { + const char* hex = desk_ + slot * kSlotChars; + if (std::memcmp(hex, usbShown_ + slot * 6, 6) == 0) continue; + const char* p = hex; + uint8_t m[3]; + // The placeholder of a slot nothing was written to is not a message, so it is only remembered. + if (std::memcmp(hex, "000000", 6) != 0 && hexToken(p, m, sizeof(m)) == 3 && !sendUsb(m, 3)) return; // full: the rest go next tick + std::memcpy(usbShown_ + slot * 6, hex, 6); } } - /// Write one surface control through the primitive every transport uses. - void writeSurface(const char* bank, uint8_t index, uint8_t value) { - auto* sched = Scheduler::instance(); - if (!sched) return; - char control[16], body[24]; - mm::formatTo(control, sizeof(control), "%s%u", bank, static_cast(index) + 1u); - mm::formatTo(body, sizeof(body), "{\"value\":%u}", static_cast(value)); - sched->setControl("Control", control, body); - mm::formatTo(statusBuf_, sizeof(statusBuf_), "%s %u", control, static_cast(value)); + /// Show what the last decoded message did, once: the status borrows statusBuf_, so it is written only here. + void showLastMessage() { + if (!lastMessage_[0]) return; + std::memcpy(statusBuf_, lastMessage_, sizeof(statusBuf_)); + lastMessage_[0] = 0; + setStatus(statusBuf_); + } + + /// Send one MIDI message to the desk on the USB port, false when its queue is full. + static bool sendUsb(const uint8_t* msg, size_t len) { + uint8_t packets[8][4]; + const size_t n = usbmidi::encode(msg, len, packets, 8); + return n == 0 || platform::usbMidiWrite(packets, n); + } + + static constexpr int kUsbReadRounds = 4; ///< at most 64 packets a tick, far more than a hand moves + + /// Set one surface control. + void writeSurface(SurfaceControl kind, uint8_t index, uint8_t value) { + if (auto* c = ControlModule::active()) c->setValue(kind, index, value); + mm::formatTo(lastMessage_, sizeof(lastMessage_), "%s%u %u", kind == SurfaceControl::Fader ? "fader" : "encoder", + static_cast(index) + 1u, static_cast(value)); } /// Flip one switch of the surface. void toggleSwitch(uint8_t index) { - auto* sched = Scheduler::instance(); - if (!sched) return; - char control[16]; - mm::formatTo(control, sizeof(control), "switch%u", static_cast(index) + 1u); - uint8_t now = 0; - sched->getControl("Control", control, now); - sched->setControl("Control", control, now ? "{\"value\":false}" : "{\"value\":true}"); - mm::formatTo(statusBuf_, sizeof(statusBuf_), "%s %s", control, now ? "off" : "on"); + auto* c = ControlModule::active(); + if (!c) return; + const bool on = c->value(SurfaceControl::Switch, index) == 0; + c->setValue(SurfaceControl::Switch, index, on ? 255 : 0); + mm::formatTo(lastMessage_, sizeof(lastMessage_), "switch%u %s", static_cast(index) + 1u, on ? "on" : "off"); } char midi_[512] = {}; ///< the newest batch the interface wrote char desk_[kDeskSlots * kSlotChars] = {}; ///< the faders, the switches, the encoders, then the preset pads, as the desk should show them char hello_[96] = {}; ///< what the browser sends when the desk connects - char statusBuf_[40] = {}; ///< what the last message did + char statusBuf_[40] = {}; ///< the status shown, what the last message did + char lastMessage_[40] = {}; ///< what the message being decoded did, shown once the batch is done bool attached_ = false; + bool usbBegun_ = false; ///< whether this board's USB port is the desk's + bool usbGreeted_ = false; ///< whether the desk on it was greeted since it appeared + bool usbConnected_ = false; ///< what the status last said about the desk on it + char usbShown_[kDeskSlots * 6] = {}; ///< per slot, the hex the USB desk was last sent }; } // namespace mm diff --git a/src/core/services/OscModule.h b/src/core/services/OscModule.h index 91bddefb5..859b4b9ce 100644 --- a/src/core/services/OscModule.h +++ b/src/core/services/OscModule.h @@ -1,6 +1,5 @@ #pragma once -#include "core/util/format.h" // formatTo: nonblocking formatting into a fixed buffer #include "core/system/ControlModule.h" #include "core/util/ControlSurface.h" #include "core/module/MoonModule.h" @@ -8,7 +7,6 @@ #include "core/util/Addressing.h" // sendAddressed: feedback to hosts, a group, or everyone #include "core/util/HostList.h" // parseHostList: the feedback hosts #include "core/util/HostResolver.h" // a named host's address, looked up off the render thread -#include "core/module/Scheduler.h" #include "platform/platform.h" #include @@ -31,12 +29,12 @@ namespace mm { /// A client learns the state three ways: on its first write, on an address change, and on asking. /// The last exists because a restart on the same address is invisible to the other two. /// Most controllers send nothing on load, so every widget would otherwise show its own defaults. +/// A value is never sent back to the host it came from, so two boards feeding each other cannot echo it between them. /// /// ## What it refuses /// /// The port is unauthenticated and writes controls, so it is off until turned on. /// Feedback is off for the same reason, sending unasked-for traffic to whatever last wrote. -/// OSC control ingest: a fader move in another application becomes a control write here. /// /// @moreinfo /// @@ -47,6 +45,9 @@ namespace mm { /// Sending OSC, bundles and address wildcards are all out of scope. class OscModule : public MoonModule, public ControlSurface { public: + /// Start on the default group, so multicast works with nothing filled in. + OscModule() { std::memcpy(group_, osc::kDefaultGroup, sizeof(osc::kDefaultGroup)); } + /// A service, so the container accepts it as a child. ModuleRole role() const MM_NONBLOCKING override { return ModuleRole::Service; } @@ -60,7 +61,9 @@ class OscModule : public MoonModule, public ControlSurface { /// How feedback travels, an Addressing value up to multicast + broadcast. uint8_t addressing = 0; /// Where the client listens, which is not where we do. - uint16_t feedbackPort = 9001; + uint16_t feedbackPort = osc::kDefaultFeedbackPort; + /// Whether this board follows another: what arrives is its feedback and its pads' states, and only changes made here go back. + bool follow = false; /// Declare the receive settings and the feedback settings. void defineControls() override { @@ -73,6 +76,7 @@ class OscModule : public MoonModule, public ControlSurface { controls_.setHidden(controls_.count() - 1, addressing != 0); controls_.addText("group", group_, sizeof(group_)); controls_.addControl("feedbackPort", feedbackPort, 1, 65535); + controls_.addControl("follow", follow); } /// Reopen the socket on a receive change, and re-seed the client on a feedback change. @@ -84,11 +88,14 @@ class OscModule : public MoonModule, public ControlSurface { if (std::strcmp(name, "group") == 0) parseGroup(); if (std::strcmp(name, "addressing") == 0 || std::strcmp(name, "group") == 0 || std::strcmp(name, "hosts") == 0) reportPeer(); - // A receiver pointed here anew knows nothing, and would stay wrong until something moved. + // A receiver pointed here anew knows nothing, and would stay wrong until something moved; a follower asks instead. if (std::strcmp(name, "feedback") == 0 || std::strcmp(name, "addressing") == 0 || std::strcmp(name, "hosts") == 0 - || std::strcmp(name, "group") == 0 || std::strcmp(name, "feedbackPort") == 0) { - if (feedback) resendAll_ = true; + || std::strcmp(name, "group") == 0 || std::strcmp(name, "feedbackPort") == 0 || std::strcmp(name, "follow") == 0) { + if (feedback && !follow) resendAll_ = true; + greeted_ = false; } + if (std::strcmp(name, "follow") == 0 && !follow) + if (auto* c = ControlModule::active()) c->forgetRemotePads(); } /// Parse the saved hosts and group, starting the name lookups here where allocating is allowed. @@ -99,36 +106,36 @@ class OscModule : public MoonModule, public ControlSurface { /// Detach from the surface list before closing, since it is walked from the render thread. void release() override { - if (auto* c = ControlModule::active()) c->removeSurface(this); + if (auto* c = ControlModule::active()) { + c->removeSurface(this); + if (follow) c->forgetRemotePads(); + } attached_ = false; closeSocket(); } - // Only the value verb is implemented, the others keeping their no-op defaults. - - /// Mirror one control's value back to the client, as the float an application expects. + /// Mirror one control's value back to the client, as the float an application expects, or a pad's state as an int. void sendValue(SurfaceControl kind, uint8_t index, uint8_t value) override { - if (!feedback || !open_) return; - const char* bank = kind == SurfaceControl::Fader ? "fader" - : kind == SurfaceControl::Encoder ? "encoder" - : kind == SurfaceControl::Switch ? "switch" : nullptr; - if (!bank) return; // a pad has no address yet - char addr[32]; - std::snprintf(addr, sizeof(addr), "/mm/%s/%u", bank, static_cast(index) + 1u); + if (!feedback) return; + if (follow && kind == SurfaceControl::Pad) return; // the pads shown here are the followed board's own uint8_t pkt[64]; - // The inverse of what the read path does. - const size_t len = osc::encodeFloat(pkt, sizeof(pkt), addr, static_cast(value) / 255.0f); + const size_t len = osc::encodeSurface(pkt, sizeof(pkt), kind, index, value); if (len == 0) return; - if (!hostsParsed_) parseHosts(/*mayStart=*/false); - const auto send = [&](const uint8_t ip[4]) { sock_.sendToAddr(ip, feedbackPort, pkt, len); }; - const Addressing mode = static_cast(addressing < kModeCount ? addressing : 0); - if (mode == Addressing::Unicast && hostCount_ == 0) { - // No hosts: answer whoever wrote last. - if (peer_[0] || peer_[1] || peer_[2] || peer_[3]) send(peer_); - return; + Heard* h = heardFor(kind, index); + const bool echo = h && h->known && h->value == value; + sendFeedback(pkt, len, echo ? h->from : nullptr); + if (h && !echo) { + h->known = false; // a change made here: whatever comes back next is news + h->movedMs = platform::millis(); + h->moved = true; } - if (mode != Addressing::Unicast && !groupValid_) return; // no group, nowhere to send; the status says so - sendAddressed(mode, Traffic::Occasional, hostList_, hostCount_, groupIp_, send); + } + + /// Press a pad on the followed board, whose presets the grid here shows. + void sendPress(uint8_t pad) override { + if (!feedback || !follow) return; + uint8_t pkt[48]; + sendFeedback(pkt, osc::encodeSurface(pkt, sizeof(pkt), SurfaceControl::Pad, pad, 1), nullptr); } /// Refresh the status, which is time-dependent because a peer goes stale. @@ -136,7 +143,7 @@ class OscModule : public MoonModule, public ControlSurface { MoonModule::tick1s(); // Only when the answer changes, since the string is identical in between. if (!enabledOsc) return; - if (feedback && ++secondsSinceRefresh_ >= kRefreshSeconds) { + if (feedback && !follow && ++secondsSinceRefresh_ >= kRefreshSeconds) { secondsSinceRefresh_ = 0; if (auto* c = ControlModule::active()) c->resendPaced(this); } @@ -161,10 +168,10 @@ class OscModule : public MoonModule, public ControlSurface { lastRecvMs_ = platform::millis(); if (std::memcmp(peer_, src, 4) != 0) { std::memcpy(peer_, src, 4); - resendAll_ = true; + resendAll_ = !follow; // a follower's values are the followed board's, not news for it peerWasFresh_ = false; // a new address: let the next tick1s say so } - handle(pkt, static_cast(n)); + handle(pkt, static_cast(n), src); } // After the drain, so a burst re-seeds once rather than per packet. if (resendAll_) { @@ -173,63 +180,124 @@ class OscModule : public MoonModule, public ControlSurface { } } -private: - static constexpr long kSurfaceWidth = 8; ///< how wide the surface is - static constexpr size_t kMaxPacket = 256; ///< an address plus a few arguments - static constexpr int kMaxPerTick = 16; ///< the drain's own bound - static constexpr uint32_t kOpenRetryMs = 2000; ///< how long a failed open waits - - /// Route one datagram, an unknown address being ignored rather than reported. - void handle(const uint8_t* pkt, size_t len) { + /// Route one datagram from `src`, an unknown address being ignored rather than reported. + void handle(const uint8_t* pkt, size_t len, const uint8_t src[4] = nullptr) { osc::Message m; if (!osc::parse(pkt, len, m)) return; const char* a = m.address; if (std::strncmp(a, "/mm/fader/", 10) == 0) { - writeSurface("fader", a + 10, m); + writeSurface(SurfaceControl::Fader, a + 10, m, src); } else if (std::strncmp(a, "/mm/encoder/", 12) == 0) { - writeSurface("encoder", a + 12, m); + writeSurface(SurfaceControl::Encoder, a + 12, m, src); } else if (std::strncmp(a, "/mm/switch/", 11) == 0) { - // A boolean rather than a byte, since any nonzero value means on. - writeSurface("switch", a + 11, m, /*asBool=*/true); + writeSurface(SurfaceControl::Switch, a + 11, m, src); + } else if (std::strncmp(a, "/mm/pad/", 8) == 0) { + pad(a + 8, m); } else if (std::strcmp(a, "/mm/hello") == 0) { // A client restarting on the same address is invisible to the checks above. - resendAll_ = true; + resendAll_ = !follow; } received_++; + // The followed board wrote, so an empty host list now knows where it is. + if (follow && feedback && !greeted_) greet(); + } + + /// Ask the followed board for every value, once per start or setting change, as soon as it can be reached. + void greet() { + uint8_t pkt[24]; // "/mm/hello" padded to 12, the tag to 4, the int 4 + greeted_ = sendFeedback(pkt, osc::encodeInt(pkt, sizeof(pkt), "/mm/hello", 1), nullptr); + } + +protected: + /// Send one datagram to a feedback destination, the seam a test captures. + virtual void transmit(const uint8_t ip[4], const uint8_t* pkt, size_t len) { + if (open_) sock_.sendToAddr(ip, feedbackPort, pkt, len); + } + +private: + static constexpr long kSurfaceWidth = 8; ///< how wide the surface is + static constexpr size_t kMaxPacket = 256; ///< an address plus a few arguments + static constexpr int kMaxPerTick = 16; ///< the drain's own bound + static constexpr uint32_t kOpenRetryMs = 2000; ///< how long a failed open waits + + /// Send one datagram where feedback goes, leaving out `skip`, the host a value came from; false when it went nowhere. + bool sendFeedback(const uint8_t* pkt, size_t len, const uint8_t* skip) { + if (len == 0) return false; + if (!hostsParsed_) parseHosts(/*mayStart=*/false); + bool sent = false; + const auto send = [&](const uint8_t ip[4]) { + if (skip && std::memcmp(ip, skip, 4) == 0) return; + transmit(ip, pkt, len); + sent = true; + }; + const Addressing mode = static_cast(addressing < kModeCount ? addressing : 0); + if (mode == Addressing::Unicast && hostCount_ == 0) { + // No hosts: answer whoever wrote last. + if (peer_[0] || peer_[1] || peer_[2] || peer_[3]) send(peer_); + return sent; + } + if (mode != Addressing::Unicast && !groupValid_) return false; // no group, nowhere to send; the status says so + sendAddressed(mode, Traffic::Occasional, hostList_, hostCount_, groupIp_, send); + return sent; + } + + /// The last value a host sent for one slot, so it is not sent straight back to it. + struct Heard { + uint8_t value = 0; + uint8_t from[4] = {}; + bool known = false; + bool moved = false; ///< whether this control ever changed here + uint32_t movedMs = 0; ///< when it last did + }; + /// How long a control moved here ignores feedback: longer than a round trip to the followed board and back. + static constexpr uint32_t kHoldMs = 500; + Heard heard_[ControlModule::kSlotCount] = {}; + + /// The record for one switch, encoder or fader, null for a pad. + Heard* heardFor(SurfaceControl kind, uint8_t index) { + if (index >= kSurfaceWidth) return nullptr; + switch (kind) { + case SurfaceControl::Switch: return &heard_[index]; + case SurfaceControl::Fader: return &heard_[ControlModule::kSwitchCount + index]; + case SurfaceControl::Encoder: return &heard_[ControlModule::kSwitchCount + ControlModule::kFaderCount + index]; + default: return nullptr; + } } /// Write one of the surface's own controls, so it reacts exactly as it does to a click. - void writeSurface(const char* prefix, const char* indexText, const osc::Message& m, - bool asBool = false) { + void writeSurface(SurfaceControl kind, const char* indexText, const osc::Message& m, const uint8_t src[4]) { // Unvalidated input, so a parse that cannot tell zero from junk will not do. char* end = nullptr; const long idx = std::strtol(indexText, &end, 10); if (end == indexText || *end != '\0') return; if (idx < 1 || idx > kSurfaceWidth) return; // anything wider is not ours - char control[16]; - mm::formatTo(control, sizeof(control), "%s%ld", prefix, idx); - // The raw value, since scaling would round a small positive one down to off. - if (asBool) setBool(control, osc::isTruthy(m)); - else setValue(control, osc::toByte(m)); - } - - /// Write a boolean surface control, whose body is the literal rather than a number. - void setBool(const char* control, bool on) { - auto* sched = Scheduler::instance(); - if (!sched) return; - char body[32]; - std::snprintf(body, sizeof(body), "{\"value\":%s}", on ? "true" : "false"); - sched->setControl(kSurfaceModule, control, body); + auto* c = ControlModule::active(); + if (!c) return; + // A switch reads any nonzero value as on; the rest take the raw value, since scaling would round a small positive one down to off. + const uint8_t value = kind == SurfaceControl::Switch ? (osc::isTruthy(m) ? 255 : 0) : osc::toByte(m); + Heard* h = heardFor(kind, static_cast(idx - 1)); + // A follower's control still being moved here: this is an echo of an earlier position. + if (follow && h && h->moved && platform::millis() - h->movedMs < kHoldMs) return; + if (h && src) { + h->value = value; + std::memcpy(h->from, src, 4); + h->known = true; + } + c->setValue(kind, static_cast(idx - 1), value); } - /// Write a numeric surface control through the shared primitive. - void setValue(const char* control, uint8_t value) { - auto* sched = Scheduler::instance(); - if (!sched) return; - char body[32]; - mm::formatTo(body, sizeof(body), "{\"value\":%u}", static_cast(value)); - sched->setControl(kSurfaceModule, control, body); + /// A pad: for a follower, the followed board's state to show; otherwise a press, the release a button sends after it doing nothing. + void pad(const char* indexText, const osc::Message& m) { + char* end = nullptr; + const long idx = std::strtol(indexText, &end, 10); + if (end == indexText || *end != '\0') return; + if (idx < 1 || idx > ControlModule::kMaxPresets) return; + auto* c = ControlModule::active(); + if (!c) return; + const uint8_t slot = static_cast(idx - 1); + if (follow) c->showRemotePad(slot, osc::toByte(m)); + else if (osc::isTruthy(m)) c->pressPad(slot); } /// Open and bind, deferred to the tick and throttled, so a busy port costs one socket. @@ -243,10 +311,15 @@ class OscModule : public MoonModule, public ControlSurface { // Join the group a sender multicasts feedback to; a failed join leaves unicast working. if (groupValid_) sock_.joinMulticast(group_); if (!attached_) { - if (auto* c = ControlModule::active()) { c->addSurface(this, /*paced=*/true); attached_ = true; } + // A follower is not seeded: the board it follows owns the values. + if (auto* c = ControlModule::active()) { + c->addSurface(this, follow ? ControlModule::Seed::None : ControlModule::Seed::Paced); + attached_ = true; + } } lastFailMs_ = 0; reportPeer(); + if (follow && feedback) greet(); // with no hosts set, the first datagram from the followed board greets instead return true; } sock_.close(); @@ -296,7 +369,8 @@ class OscModule : public MoonModule, public ControlSurface { } char hosts_[64] = {}; ///< where unicast feedback goes, empty meaning whoever wrote to us - char group_[16] = "239.255.77.78"; ///< the multicast group feedback goes to and this board joins, beside discovery's 239.255.77.77 + char group_[16] = {}; ///< the multicast group feedback goes to and this board joins + static_assert(sizeof(osc::kDefaultGroup) <= sizeof(group_), "the default group fits its control"); Host hostList_[kMaxHosts] = {}; uint8_t hostCount_ = 0; bool hostsParsed_ = false; ///< the list is parsed on first use and after every edit @@ -329,6 +403,7 @@ class OscModule : public MoonModule, public ControlSurface { bool peerWasFresh_ = false; ///< what the status last said, so it is rewritten only on a change bool attached_ = false; ///< whether we are on the surface list bool resendAll_ = false; ///< a new peer appeared, so push every value once + bool greeted_ = false; ///< whether a follower asked the followed board for every value uint8_t secondsSinceRefresh_ = 0; ///< counts to kRefreshSeconds /// How often every value goes out again, so a lost datagram or a rebooted follower catches up. static constexpr uint8_t kRefreshSeconds = 30; diff --git a/src/core/services/OscPacket.h b/src/core/services/OscPacket.h index 778c435a5..32bc7caf7 100644 --- a/src/core/services/OscPacket.h +++ b/src/core/services/OscPacket.h @@ -3,8 +3,11 @@ #include #include #include // std::lround: correct float-to-byte rounding +#include #include +#include "core/util/ControlSurface.h" // SurfaceControl: the banks the addresses name + /// @defgroup OscPacket The OSC 1.0 wire format /// @{ /// The one place the layout lives, with the constants and an inline parse. @@ -55,6 +58,10 @@ namespace mm::osc { /// The de-facto OSC receive port. inline constexpr uint16_t kDefaultPort = 9000; +/// Where a board sends its feedback by default, the port a controller listens on. +inline constexpr uint16_t kDefaultFeedbackPort = 9001; +/// The multicast group feedback goes to by default, beside discovery's 239.255.77.77. +inline constexpr char kDefaultGroup[] = "239.255.77.78"; /// One parsed message: the address, and the first numeric argument as both forms. struct Message { @@ -154,24 +161,22 @@ inline bool parse(const uint8_t* pkt, size_t len, Message& out) { return true; // a valid message that simply carries no number } -/// Write one message carrying a single float, returning its length or 0 when it will not fit. -inline size_t encodeFloat(uint8_t* out, size_t cap, const char* address, float value) { +/// Write one message carrying a single 32-bit argument of type `tag`, returning its length or 0 when it will not fit. +inline size_t encodeWord(uint8_t* out, size_t cap, const char* address, char tag, uint32_t bits) { if (!out || !address) return 0; const size_t addrLen = std::strlen(address); if (addrLen == 0 || address[0] != '/') return 0; // not an address pattern const size_t addrPad = pad4(addrLen + 1); - const size_t tagsPad = pad4(3); // ",f" + NUL + const size_t tagsPad = pad4(3); // "," + the tag + NUL const size_t total = addrPad + tagsPad + 4; if (total > cap) return 0; - std::memset(out, 0, total); // the padding IS NULs; write them once + std::memset(out, 0, total); // the padding IS NULs, the address's terminator among them std::memcpy(out, address, addrLen); out[addrPad] = ','; - out[addrPad + 1] = 'f'; + out[addrPad + 1] = tag; - // Big-endian, the network order parse() reads. memcpy for the type pun, as beFloat32 does. - uint32_t bits; - std::memcpy(&bits, &value, 4); + // Big-endian, the network order parse() reads. uint8_t* arg = out + addrPad + tagsPad; arg[0] = static_cast((bits >> 24) & 0xFF); arg[1] = static_cast((bits >> 16) & 0xFF); @@ -180,6 +185,33 @@ inline size_t encodeFloat(uint8_t* out, size_t cap, const char* address, float v return total; } +/// Write one message carrying a single float, returning its length or 0 when it will not fit. +inline size_t encodeFloat(uint8_t* out, size_t cap, const char* address, float value) { + uint32_t bits; + std::memcpy(&bits, &value, 4); // the type pun, as beFloat32 does + return encodeWord(out, cap, address, 'f', bits); +} + +/// Write one message carrying a single int32, returning its length or 0 when it will not fit. +inline size_t encodeInt(uint8_t* out, size_t cap, const char* address, int32_t value) { + return encodeWord(out, cap, address, 'i', static_cast(value)); +} + +/// The address word of each surface bank, as `/mm//` names one control. +inline const char* surfaceBank(SurfaceControl kind) { + return kind == SurfaceControl::Switch ? "switch" : kind == SurfaceControl::Encoder ? "encoder" + : kind == SurfaceControl::Fader ? "fader" : "pad"; +} + +/// Write the message for one surface control, `index` zero-based: a switch, an encoder or a fader as a fraction of the byte range, a pad as an int. +inline size_t encodeSurface(uint8_t* out, size_t cap, SurfaceControl kind, uint8_t index, uint8_t value) { + char addr[24]; + std::snprintf(addr, sizeof(addr), "/mm/%s/%u", surfaceBank(kind), static_cast(index) + 1u); + // A pad's state is an enum, and a pad press a 1, so they travel as ints. + return kind == SurfaceControl::Pad ? encodeInt(out, cap, addr, value) + : encodeFloat(out, cap, addr, static_cast(value) / 255.0f); +} + /// Whether this message means on, for a boolean destination where any nonzero value does. inline bool isTruthy(const Message& m) { if (!m.hasValue) return false; diff --git a/src/core/system/ControlModule.h b/src/core/system/ControlModule.h index 4da4a87ea..b6f16dd2a 100644 --- a/src/core/system/ControlModule.h +++ b/src/core/system/ControlModule.h @@ -80,60 +80,88 @@ class ControlModule : public MoonModule, public ListSource { static constexpr uint8_t kSwitchCount = 8; static_assert(kTargetTypeMaxNumber[1] == kSwitchCount && kTargetTypeMaxNumber[2] == kEncoderCount && kTargetTypeMaxNumber[3] == kFaderCount, "an input row names exactly the surface's banks"); - /// Every surface value one surface can be sent, switches first, then faders, then encoders. + /// The slots a surface moves, switches first, then faders, then encoders. static constexpr uint8_t kSlotCount = kSwitchCount + kFaderCount + kEncoderCount; + /// Every value one surface can be sent: the slots, then the preset pads. + static constexpr uint8_t kSurfaceValues = kSlotCount + kMaxPresets; /// The boot ControlModule (exactly one exists). static ControlModule* active() { return ActiveInstance::active(); } // --- Control surfaces ------------------------------------------------------------------- A. - /// Attach a surface, seeded with every value at once or, `paced`, one per tick. - void addSurface(ControlSurface* s, bool paced = false) { + /// How a surface attaching learns the values: all at once, one per tick for a network that drops bursts, or not at all for a board following another. + enum class Seed : uint8_t { Burst, Paced, None }; + + /// Attach a surface, seeded as `seed` says. + void addSurface(ControlSurface* s, Seed seed = Seed::Burst) { if (!s) return; for (uint8_t i = 0; i < surfaceCount_; i++) if (surfaces_[i] == s) return; if (surfaceCount_ >= kMaxSurfaces) return; touched_[surfaceCount_] = Touch{}; - resendNext_[surfaceCount_] = kSlotCount; + resendNext_[surfaceCount_] = kSurfaceValues; surfaces_[surfaceCount_++] = s; // Read the targets BEFORE seeding: followTargets(); - if (paced) resendPaced(s); - else resendTo(s); + if (seed == Seed::Paced) resendPaced(s); + else if (seed == Seed::Burst) resendTo(s); } /// Push EVERY value to one surface, whatever the mirror last sent, the preset pads included. void resendTo(ControlSurface* s) { - for (uint8_t slot = 0; slot < kSlotCount; slot++) resendOne(s, slot); - if (!s) return; - uint8_t pads[kMaxPresets]; - padStates(pads); - for (uint8_t i = 0; i < kMaxPresets; i++) s->sendValue(SurfaceControl::Pad, i, pads[i]); + for (uint8_t n = 0; n < kSurfaceValues; n++) resendOne(s, n); } /// What a preset pad shows: empty, a stored preset, or the one applied. enum PadState : uint8_t { kPadEmpty = 0, kPadStored = 1, kPadActive = 2 }; - /// Every pad's state, one per grid cell. + /// Every pad's state, one per grid cell, in one pass over the presets. void padStates(uint8_t out[kMaxPresets]) const { + if (padsRemote_) { std::memcpy(out, remotePads_, kMaxPresets); return; } std::memset(out, kPadEmpty, kMaxPresets); - for (uint8_t r = 0; r < presetCount_; r++) { - const Preset& p = presets_[r]; - if (p.slot >= kMaxPresets) continue; - bool active = false; - for (uint8_t i = 0; i < kCaptureCount && !active; i++) active = p.name[0] && std::strcmp(p.name, current_[i]) == 0; - out[p.slot] = active ? kPadActive : kPadStored; - } + for (uint8_t r = 0; r < presetCount_; r++) + if (presets_[r].slot < kMaxPresets) out[presets_[r].slot] = padStateOf(presets_[r]); + } + + /// The state of the pad on grid cell `slot`. + uint8_t padState(uint8_t slot) const { + if (padsRemote_) return slot < kMaxPresets ? remotePads_[slot] : static_cast(kPadEmpty); + for (uint8_t r = 0; r < presetCount_; r++) + if (presets_[r].slot == slot) return padStateOf(presets_[r]); + return kPadEmpty; } /// Apply the preset on grid cell `slot`, as a click on its pad does; false for an empty cell. bool pressPad(uint8_t slot) { + if (padsRemote_) { + // The presets are another board's, so the press goes there. + if (slot >= kMaxPresets || remotePads_[slot] == kPadEmpty) return false; + for (uint8_t i = 0; i < surfaceCount_; i++) surfaces_[i]->sendPress(slot); + return true; + } for (uint8_t r = 0; r < presetCount_; r++) if (presets_[r].slot == slot) return applyPreset(presets_[r].name); return false; } + /// Show another board's pad on the grid, as a board following another does, in place of this board's presets. + void showRemotePad(uint8_t slot, uint8_t state) { + if (slot >= kMaxPresets) return; + if (padsRemote_ && remotePads_[slot] == state) return; + if (!padsRemote_) std::memset(remotePads_, kPadEmpty, kMaxPresets); + padsRemote_ = true; + remotePads_[slot] = state; + padsRevision_++; + } + + /// Show this board's own presets again. + void forgetRemotePads() { + if (!padsRemote_) return; + padsRemote_ = false; + padsRevision_++; + } + // A network surface asks for this rather than resendTo, since a burst of datagrams is what WiFi drops. /// Push every value to one attached surface, one per tick20ms, starting over if a resend is already running. void resendPaced(ControlSurface* s) { @@ -141,9 +169,13 @@ class ControlModule : public MoonModule, public ListSource { if (surfaces_[i] == s) resendNext_[i] = 0; } - /// Push the value at `slot`, counted as kSlotCount orders them, to one surface. + /// Push value `slot`, counted as kSurfaceValues orders them, to one surface. void resendOne(ControlSurface* s, uint8_t slot) { - if (!s || slot >= kSlotCount) return; + if (!s || slot >= kSurfaceValues) return; + if (slot >= kSlotCount) { + s->sendValue(SurfaceControl::Pad, slot - kSlotCount, padState(slot - kSlotCount)); + return; + } const SurfaceControl kind = slot < kSwitchCount ? SurfaceControl::Switch : slot < kSwitchCount + kFaderCount ? SurfaceControl::Fader : SurfaceControl::Encoder; @@ -166,8 +198,33 @@ class ControlModule : public MoonModule, public ListSource { } } + /// Set a switch, an encoder or a fader through the control path, so it drives its target exactly as a click does. + void setValue(SurfaceControl kind, uint8_t index, uint8_t value) { + const char* control = slotName(kind, index); + auto* sched = Scheduler::instance(); + if (!control || !sched) return; + char body[24]; + // A switch takes the literal, since the boolean parser reads true but not 255. + if (kind == SurfaceControl::Switch) mm::formatTo(body, sizeof(body), "{\"value\":%s}", value ? "true" : "false"); + else mm::formatTo(body, sizeof(body), "{\"value\":%u}", static_cast(value)); + sched->setControl(name(), control, body); + } + + /// The value a switch, an encoder or a fader holds now. + uint8_t value(SurfaceControl kind, uint8_t index) const { return currentValue(kind, index); } + + /// A switch's, an encoder's or a fader's control name, null for anything else. + static const char* slotName(SurfaceControl kind, uint8_t index) { + switch (kind) { + case SurfaceControl::Switch: return index < kSwitchCount ? kSwitchNames[index] : nullptr; + case SurfaceControl::Encoder: return index < kEncoderCount ? kEncoderNames[index] : nullptr; + case SurfaceControl::Fader: return index < kFaderCount ? kFaderNames[index] : nullptr; + default: return nullptr; + } + } + /// A TURN, not a position. - void applyEncoderDelta(uint8_t index, int8_t delta) { + void turn(uint8_t index, int8_t delta) { if (index >= kEncoderCount) return; // THE hardware boundary, and the only place a delta exists. const int v = static_cast(encoders_[index]) + delta; @@ -215,7 +272,7 @@ class ControlModule : public MoonModule, public ListSource { mirrorToSurfaces(); // One value of each paced resend. for (uint8_t i = 0; i < surfaceCount_; i++) - if (resendNext_[i] < kSlotCount) resendOne(surfaces_[i], resendNext_[i]++); + if (resendNext_[i] < kSurfaceValues) resendOne(surfaces_[i], resendNext_[i]++); } void tick1s() MM_NONBLOCKING override { @@ -734,6 +791,13 @@ class ControlModule : public MoonModule, public ListSource { bool hasSlot = false; // false for a file with no stored slot: assignFreeSlots places it }; + /// A stored preset's pad: applied when it is the current preset of any role. + PadState padStateOf(const Preset& p) const { + for (uint8_t i = 0; i < kCaptureCount; i++) + if (p.name[0] && std::strcmp(p.name, current_[i]) == 0) return kPadActive; + return kPadStored; + } + /// Re-read the folder. void rescan() { presetsRevision_++; // consumers caching the list re-read it @@ -1082,12 +1146,14 @@ class ControlModule : public MoonModule, public ListSource { static constexpr uint8_t kMaxSurfaces = 4; ControlSurface* surfaces_[kMaxSurfaces] = {}; uint8_t surfaceCount_ = 0; - /// Per surface, the value a paced resend sends next, kSlotCount when none is running. + /// Per surface, the value a paced resend sends next, kSurfaceValues when none is running. uint8_t resendNext_[kMaxSurfaces] = {}; /// The last value KNOWN to a surface, so only changes go out. uint8_t sentSwitches_[kSwitchCount] = {}; uint8_t sentFaders_[kFaderCount] = {}; uint8_t sentPads_[kMaxPresets] = {}; ///< per preset pad, the PadState surfaces were last sent + uint8_t remotePads_[kMaxPresets] = {}; ///< the pads of the board this one follows, while padsRemote_ + bool padsRemote_ = false; ///< whether the grid shows another board's presets /// One bit per control, per bank, per attached surface: a hand is on it there. See setTouched. struct Touch { uint32_t switches = 0, encoders = 0, faders = 0; }; Touch touched_[kMaxSurfaces] = {}; diff --git a/src/core/util/ControlSurface.h b/src/core/util/ControlSurface.h index d9be20a24..843215639 100644 --- a/src/core/util/ControlSurface.h +++ b/src/core/util/ControlSurface.h @@ -11,7 +11,7 @@ /// ControlModule owns the state: `switch1..8`, `encoder1..8`, `fader1..8`, and what each drives. /// A surface holds no copy, which is what lets two attach at once and stay in step, a phone running Open Stage Control and a desk on the rack. /// It is also why inbound is not a method here. -/// A surface writes through the same control path the HTTP API and the UI use, so it gains no privilege and there is no second copy to reconcile. +/// A desk writes through ControlModule's `setValue`, the same control path the HTTP API and the UI use, so it gains no privilege and there is no second copy to reconcile. /// /// ## Feedback is not an echo /// @@ -24,7 +24,7 @@ /// A fader's value becomes a motor position, an encoder's a ring and a switch's a button light. /// A preset pad's state (empty, stored, applied) becomes a color the APC40 picks from its own palette. /// So one verb covers every desk, and no hardware detail such as a color or a ring style crosses into ControlModule. -/// `sendLabel` is the one other verb, for text a desk can show, such as a scribble strip. +/// `sendLabel` is for text a desk can show, such as a scribble strip, and `sendPress` carries a pad press to the board whose presets the grid shows. #include @@ -44,6 +44,9 @@ class ControlSurface { /// A name for a control, where the transport can show one. Does nothing by default. virtual void sendLabel(uint8_t index, const char* text) { (void)index; (void)text; } + + /// A pad pressed on a board whose grid shows another board's presets, for the transport that reaches that board. Does nothing by default. + virtual void sendPress(uint8_t pad) { (void)pad; } }; /// @} diff --git a/src/core/util/UsbMidi.h b/src/core/util/UsbMidi.h new file mode 100644 index 000000000..6c8f1f3f3 --- /dev/null +++ b/src/core/util/UsbMidi.h @@ -0,0 +1,56 @@ +#pragma once + +#include +#include + +namespace mm::usbmidi { + +/// @defgroup UsbMidi USB-MIDI event packets +/// @{ +/// MIDI over USB travels in 4-byte event packets, as the USB MIDI 1.0 class lays them out. +/// The first byte holds the cable in its high nibble and the Code Index Number (CIN) in its low one; the other three carry the message, padded with zeros. + +/// How many MIDI bytes a packet with this CIN carries, 0 for the reserved ones. +inline uint8_t length(uint8_t cin) { + static constexpr uint8_t kLength[16] = {0, 0, 2, 3, 3, 1, 2, 3, 3, 3, 3, 3, 2, 2, 3, 1}; + return kLength[cin & 0x0F]; +} + +/// The channel or system message in one packet, written to `m` with its length; 0 for a SysEx piece, which a desk's input never needs. +inline uint8_t decode(const uint8_t p[4], uint8_t m[3]) { + const uint8_t cin = p[0] & 0x0F; + if (cin >= 0x4 && cin <= 0x7) return 0; + const uint8_t len = length(cin); + for (uint8_t i = 0; i < len; i++) m[i] = p[1 + i]; + return len; +} + +/// One channel message of up to three bytes as one packet, its CIN the status nibble; 0 when it is not one. +inline size_t encodeChannel(const uint8_t* msg, size_t len, uint8_t (*out)[4], size_t max) { + if (max == 0 || len > 3 || msg[0] >= 0xF0) return 0; + out[0][0] = static_cast(msg[0] >> 4); + for (uint8_t i = 0; i < 3; i++) out[0][1 + i] = i < len ? msg[i] : 0; + return 1; +} + +/// A SysEx message three bytes a packet: CIN 4 starts or continues it, and CIN 5, 6 or 7 ends it with that many bytes. +inline size_t encodeSysex(const uint8_t* msg, size_t len, uint8_t (*out)[4], size_t max) { + const size_t packets = (len + 2) / 3; + if (packets > max || msg[len - 1] != 0xF7) return 0; + for (size_t k = 0; k < packets; k++) { + const size_t at = k * 3, left = len - at; + const bool last = k + 1 == packets; + out[k][0] = last ? static_cast(0x4 + left) : 0x4; + for (uint8_t i = 0; i < 3; i++) out[k][1 + i] = i < left ? msg[at + i] : 0; + } + return packets; +} + +/// Cut one complete MIDI message into packets on cable 0, a SysEx one included; the count written, 0 when it does not fit or is not a message. +inline size_t encode(const uint8_t* msg, size_t len, uint8_t (*out)[4], size_t max) { + if (!msg || len == 0 || !(msg[0] & 0x80)) return 0; + return msg[0] == 0xF0 ? encodeSysex(msg, len, out, max) : encodeChannel(msg, len, out, max); +} + +/// @} +} // namespace mm::usbmidi diff --git a/src/platform/desktop/platform_config.h b/src/platform/desktop/platform_config.h index 94a9bfe9c..33d0f69d4 100644 --- a/src/platform/desktop/platform_config.h +++ b/src/platform/desktop/platform_config.h @@ -99,6 +99,8 @@ constexpr bool hasHls = true; /// True: ffmpeg encodes the elementary stream and MoonLight's own RTSP server ships it. constexpr bool hasRtsp = true; +/// False: a desk on the computer reaches the MIDI service through the browser. +constexpr bool hasUsbMidiHost = false; /// True: ffmpeg offers several encoders, so the pick is the user's. constexpr bool hasEncoderChoice = true; /// True: ffmpeg writes the playlist to disk, so the server serves segments as files. diff --git a/src/platform/desktop/platform_desktop.cpp b/src/platform/desktop/platform_desktop.cpp index f7bb879f1..6252bda15 100644 --- a/src/platform/desktop/platform_desktop.cpp +++ b/src/platform/desktop/platform_desktop.cpp @@ -169,6 +169,7 @@ #ifndef _WIN32 #include // dlopen/dlsym: the NDI runtime is resolved on demand, never linked #endif +#include // the test USB desk's packets #include // HostBus frame buffers: the memory-backed parallel bus #include #include // encoder frame queue between the render tick and the writer thread @@ -2542,6 +2543,38 @@ bool irRead(uint16_t /*pin*/, uint32_t& /*codeOut*/) { return false; } void irStop() {} // no IR hardware on desktop bool irChannelReady(uint16_t /*pin*/) { return true; } // no channel to fail on desktop +// A desk on the computer reaches the MIDI service through the browser, so the USB host here is a test desk only. +namespace { +struct TestUsbDesk { + bool attached = false; + std::vector> in, out; +} g_usbDesk; +} // namespace +bool usbMidiBegin() { return g_usbDesk.attached; } +void usbMidiEnd() {} +bool usbMidiConnected() { return g_usbDesk.attached; } +size_t usbMidiRead(uint8_t (*packets)[4], size_t max) { + size_t n = 0; + for (; n < max && n < g_usbDesk.in.size(); n++) std::memcpy(packets[n], g_usbDesk.in[n].data(), 4); + g_usbDesk.in.erase(g_usbDesk.in.begin(), g_usbDesk.in.begin() + static_cast(n)); + return n; +} +bool usbMidiWrite(const uint8_t (*packets)[4], size_t count) { + if (!g_usbDesk.attached) return false; + for (size_t i = 0; i < count; i++) g_usbDesk.out.push_back({packets[i][0], packets[i][1], packets[i][2], packets[i][3]}); + return true; +} +void setTestUsbMidiDesk(bool attached) { g_usbDesk = TestUsbDesk{}; g_usbDesk.attached = attached; } +void injectTestUsbMidi(const uint8_t (*packets)[4], size_t count) { + for (size_t i = 0; i < count; i++) g_usbDesk.in.push_back({packets[i][0], packets[i][1], packets[i][2], packets[i][3]}); +} +size_t takeTestUsbMidiSent(uint8_t (*packets)[4], size_t max) { + size_t n = 0; + for (; n < max && n < g_usbDesk.out.size(); n++) std::memcpy(packets[n], g_usbDesk.out[n].data(), 4); + g_usbDesk.out.erase(g_usbDesk.out.begin(), g_usbDesk.out.begin() + static_cast(n)); + return n; +} + // Video output, resolved on demand and never linked: @xref{the-video-runtimes-structures-are-transcribed-not-included|why the declarations below must not be tidied}. namespace { diff --git a/src/platform/esp32/platform_config.h b/src/platform/esp32/platform_config.h index def0e4f22..705ed69b5 100644 --- a/src/platform/esp32/platform_config.h +++ b/src/platform/esp32/platform_config.h @@ -197,6 +197,13 @@ constexpr bool hasHls = false; #endif /// True with the same encoder HLS uses: RTSP ships that encoder's frames without muxing them. constexpr bool hasRtsp = hasHls; + +// True on the images that set the build symbol, mirroring it so flag and dependency cannot disagree. +#if defined(CONFIG_MM_USB_MIDI_HOST) +constexpr bool hasUsbMidiHost = true; +#else +constexpr bool hasUsbMidiHost = false; +#endif /// False: one hardware encoder, so there is nothing to choose and the control stays hidden. constexpr bool hasEncoderChoice = false; /// False: segments live in a PSRAM ring, flash wear buying nothing for a file stale within seconds. diff --git a/src/platform/esp32/platform_esp32_usb_midi.cpp b/src/platform/esp32/platform_esp32_usb_midi.cpp new file mode 100644 index 000000000..b40e3e46a --- /dev/null +++ b/src/platform/esp32/platform_esp32_usb_midi.cpp @@ -0,0 +1,258 @@ +/// @defgroup platform_esp32_usb_midi USB MIDI host +/// The USB MIDI seam: one class-compliant desk on the chip's own USB port, the board being the host. +/// Two blocking tasks own the host stack, as in Espressif's examples, and the render thread reaches them only through two queues of USB-MIDI packets. + +#include "platform/platform.h" + +#if defined(CONFIG_MM_USB_MIDI_HOST) + +#include "freertos/FreeRTOS.h" +#include "freertos/queue.h" +#include "freertos/task.h" +#include "esp_log.h" +#include "usb/usb_host.h" + +#include +#include + +namespace mm::platform { + +namespace { + +constexpr const char* kTag = "usbmidi"; +constexpr uint8_t kSubclassMidiStreaming = 0x03; +constexpr size_t kRxPackets = 64; ///< queued packets from the desk: a burst of knob turns between two ticks +constexpr size_t kTxPackets = 160; ///< queued packets to the desk: every light of an APC40 at once, plus its greeting +constexpr size_t kTransferBytes = 64; ///< one full-speed bulk packet, 16 USB-MIDI packets + +/// Everything the task owns; the render thread touches only the queues and the flags. +struct UsbMidi { + QueueHandle_t rx = nullptr; + QueueHandle_t tx = nullptr; + TaskHandle_t libTask = nullptr; + TaskHandle_t clientTask = nullptr; + std::atomic connected{false}; + std::atomic stop{false}; + usb_host_client_handle_t client = nullptr; + usb_device_handle_t dev = nullptr; + uint8_t pendingAddr = 0; ///< a device enumerated and waiting to be opened, 0 for none + bool gone = false; ///< the open device was unplugged + uint8_t intf = 0; + uint8_t epIn = 0, epOut = 0; + usb_transfer_t* in = nullptr; + usb_transfer_t* out = nullptr; + bool outBusy = false; + bool inBusy = false; ///< whether the bulk IN transfer is in flight +}; +UsbMidi s; + +/// A bulk IN completed: queue its packets and ask for the next; an error or a cancel ends the reading, and an error closes the desk. +void onIn(usb_transfer_t* t) { + if (t->status == USB_TRANSFER_STATUS_COMPLETED) { + for (int at = 0; at + 4 <= t->actual_num_bytes; at += 4) { + const uint8_t* p = t->data_buffer + at; + if (p[0] == 0 && p[1] == 0) continue; // padding some desks send in a short packet + xQueueSend(s.rx, p, 0); // full: the oldest are what a hand already moved past + } + if (s.connected && usb_host_transfer_submit(t) == ESP_OK) return; + } else if (t->status != USB_TRANSFER_STATUS_CANCELED) { + s.gone = true; // a stall, an error or an unplug: close it, and a replug opens it again + } + s.inBusy = false; +} + +/// A bulk OUT completed: the next batch may go. +void onOut(usb_transfer_t*) { s.outBusy = false; } // runs on the client task, which sends the next batch after it + +/// The client's events, run inside usb_host_client_handle_events on the task. +void onClientEvent(const usb_host_client_event_msg_t* msg, void*) { + if (msg->event == USB_HOST_CLIENT_EVENT_NEW_DEV && !s.dev) s.pendingAddr = msg->new_dev.address; + else if (msg->event == USB_HOST_CLIENT_EVENT_DEV_GONE && msg->dev_gone.dev_hdl == s.dev) s.gone = true; +} + +/// Find the first MIDI Streaming interface (USB Audio, subclass 3) and its two bulk endpoints, false when the device has none. +bool findMidi(const usb_config_desc_t* cfg) { + int offset = 0; + const auto* d = reinterpret_cast(cfg); + while ((d = usb_parse_next_descriptor_of_type(d, cfg->wTotalLength, USB_B_DESCRIPTOR_TYPE_INTERFACE, &offset))) { + const auto* i = reinterpret_cast(d); + if (i->bInterfaceClass != USB_CLASS_AUDIO || i->bInterfaceSubClass != kSubclassMidiStreaming) continue; + s.epIn = s.epOut = 0; + for (int e = 0; e < i->bNumEndpoints; e++) { + int epOffset = offset; + const usb_ep_desc_t* ep = usb_parse_endpoint_descriptor_by_index(i, e, cfg->wTotalLength, &epOffset); + if (!ep || USB_EP_DESC_GET_XFERTYPE(ep) != USB_TRANSFER_TYPE_BULK) continue; + if (USB_EP_DESC_GET_EP_DIR(ep)) s.epIn = ep->bEndpointAddress; + else s.epOut = ep->bEndpointAddress; + } + if (s.epIn && s.epOut) { + s.intf = i->bInterfaceNumber; + return true; + } + } + return false; +} + +/// Open the device that enumerated, claim its MIDI interface and start reading; a device that is not a desk is closed again. +void openDesk(uint8_t addr) { + if (usb_host_device_open(s.client, addr, &s.dev) != ESP_OK) { s.dev = nullptr; return; } + const usb_config_desc_t* cfg = nullptr; + if (usb_host_get_active_config_descriptor(s.dev, &cfg) != ESP_OK || !findMidi(cfg) + || usb_host_interface_claim(s.client, s.dev, s.intf, 0) != ESP_OK) { + usb_host_device_close(s.client, s.dev); + s.dev = nullptr; + return; + } + s.in->device_handle = s.dev; + s.in->bEndpointAddress = s.epIn; + s.in->num_bytes = kTransferBytes; + s.out->device_handle = s.dev; + s.out->bEndpointAddress = s.epOut; + s.outBusy = false; + s.connected = true; + s.inBusy = usb_host_transfer_submit(s.in) == ESP_OK; + ESP_LOGI(kTag, "desk on address %u, interface %u", addr, s.intf); +} + +/// Let go of the desk, unplugged or given back: an interface with a transfer in flight cannot be released, so both endpoints are flushed and their callbacks run first. +void closeDesk() { + if (!s.dev) return; + s.connected = false; + const uint8_t endpoints[] = {s.epIn, s.epOut}; + for (const uint8_t ep : endpoints) { + usb_host_endpoint_halt(s.dev, ep); + usb_host_endpoint_flush(s.dev, ep); + } + for (int i = 0; i < 50 && (s.inBusy || s.outBusy); i++) usb_host_client_handle_events(s.client, 1); + for (const uint8_t ep : endpoints) usb_host_endpoint_clear(s.dev, ep); + if (usb_host_interface_release(s.client, s.dev, s.intf) != ESP_OK) ESP_LOGW(kTag, "interface release failed"); + if (usb_host_device_close(s.client, s.dev) != ESP_OK) ESP_LOGW(kTag, "device close failed"); + s.dev = nullptr; + xQueueReset(s.tx); +} + +/// Hand the next batch of queued packets to a bulk OUT transfer. +void sendQueued() { + if (!s.connected || s.outBusy) return; + int n = 0; + while (n + 4 <= static_cast(kTransferBytes) && xQueueReceive(s.tx, s.out->data_buffer + n, 0) == pdTRUE) n += 4; + if (n == 0) return; + s.out->num_bytes = n; + s.outBusy = true; + if (usb_host_transfer_submit(s.out) != ESP_OK) s.outBusy = false; +} + +/// The client task: the desk's events, its transfers and the send queue, until the port is given back. +void runClient(void*) { + usb_host_client_config_t client = {}; + client.max_num_event_msg = 5; + client.async.client_event_callback = onClientEvent; + if (usb_host_client_register(&client, &s.client) != ESP_OK + || usb_host_transfer_alloc(kTransferBytes, 0, &s.in) != ESP_OK || usb_host_transfer_alloc(kTransferBytes, 0, &s.out) != ESP_OK) { + ESP_LOGE(kTag, "USB client did not start"); + s.clientTask = nullptr; + vTaskDelete(nullptr); + return; + } + s.in->callback = onIn; + s.out->callback = onOut; + while (!s.stop) { + usb_host_client_handle_events(s.client, portMAX_DELAY); // woken by a desk, a transfer, or usbMidiWrite + if (s.gone) { s.gone = false; closeDesk(); } + if (s.pendingAddr) { const uint8_t a = s.pendingAddr; s.pendingAddr = 0; openDesk(a); } + sendQueued(); + } + closeDesk(); + usb_host_transfer_free(s.in); + usb_host_transfer_free(s.out); + s.in = s.out = nullptr; + // The library task sees no clients left and finishes; a failed deregister leaves the stack installed, which the log says. + if (usb_host_client_deregister(s.client) != ESP_OK) ESP_LOGE(kTag, "client deregister failed: the port stays a host until a reboot"); + s.client = nullptr; + s.clientTask = nullptr; + vTaskDelete(nullptr); +} + +/// The library task: installs the host stack, starts the client, and uninstalls once the client is gone. +void runLibrary(void*) { + usb_host_config_t host = {}; + host.intr_flags = ESP_INTR_FLAG_LEVEL1; + if (usb_host_install(&host) != ESP_OK) { + ESP_LOGE(kTag, "USB host did not start"); + s.libTask = nullptr; + vTaskDelete(nullptr); + return; + } + // Same priority as this task, so the client registers before the first event is handled. + xTaskCreate(runClient, "mmUsbMidiCl", 4096, nullptr, uxTaskPriorityGet(nullptr), &s.clientTask); + for (;;) { + uint32_t flags = 0; + usb_host_lib_handle_events(portMAX_DELAY, &flags); + if (flags & USB_HOST_LIB_EVENT_FLAGS_NO_CLIENTS) { + if (usb_host_device_free_all() == ESP_OK) break; // nothing left to free + } + if (flags & USB_HOST_LIB_EVENT_FLAGS_ALL_FREE) break; + } + usb_host_uninstall(); + s.libTask = nullptr; + vTaskDelete(nullptr); +} + +} // namespace + +bool usbMidiBegin() { + if (s.libTask) return !s.stop; // still giving the port back: the next tick asks again + if (!s.rx) s.rx = xQueueCreate(kRxPackets, 4); + if (!s.tx) s.tx = xQueueCreate(kTxPackets, 4); + if (!s.rx || !s.tx) return false; + s.stop = false; + // Below the render loop: both tasks block until the desk or a send needs them. + return xTaskCreate(runLibrary, "mmUsbMidi", 4096, nullptr, 4, &s.libTask) == pdPASS; +} + +void usbMidiEnd() { + s.stop = true; + if (s.client) usb_host_client_unblock(s.client); +} + +bool usbMidiConnected() { return s.connected; } + +size_t usbMidiRead(uint8_t (*packets)[4], size_t max) { + if (!s.rx) return 0; + size_t n = 0; + while (n < max && xQueueReceive(s.rx, packets[n], 0) == pdTRUE) n++; + return n; +} + +bool usbMidiWrite(const uint8_t (*packets)[4], size_t count) { + if (!s.connected || !s.tx || uxQueueSpacesAvailable(s.tx) < count) return false; + for (size_t i = 0; i < count; i++) xQueueSend(s.tx, packets[i], 0); + usb_host_client_unblock(s.client); // the client task sends them now, not on its next event + return true; +} + +} // namespace mm::platform + +#else + +namespace mm::platform { + +// This image has no USB host: the S3-Zero's 4 MB leaves no room, and other chips have no OTG port here. +bool usbMidiBegin() { return false; } +void usbMidiEnd() {} +bool usbMidiConnected() { return false; } +size_t usbMidiRead(uint8_t (*)[4], size_t) { return 0; } +bool usbMidiWrite(const uint8_t (*)[4], size_t) { return false; } + +} // namespace mm::platform + +#endif + +namespace mm::platform { + +// The test desk is the desktop's; a board's USB host has a real one. +void setTestUsbMidiDesk(bool) {} +void injectTestUsbMidi(const uint8_t (*)[4], size_t) {} +size_t takeTestUsbMidiSent(uint8_t (*)[4], size_t) { return 0; } + +} // namespace mm::platform diff --git a/src/platform/platform.h b/src/platform/platform.h index fca68bf01..094e59bb0 100644 --- a/src/platform/platform.h +++ b/src/platform/platform.h @@ -1187,6 +1187,30 @@ void irStop(); /// Open or confirm the IR channel and report whether it is live, which irRead cannot distinguish. bool irChannelReady(uint16_t pin); +// --- USB MIDI host, gated by `hasUsbMidiHost`: one class-compliant desk on the chip's own port --- + +/// Take the chip's USB port as a host for a MIDI desk, which then carries no serial log or USB flashing; false where the build has no USB host. +bool usbMidiBegin(); + +/// Give the USB port back. +void usbMidiEnd(); + +/// Whether a MIDI desk is attached and its endpoints are open. +bool usbMidiConnected(); + +/// Take up to `max` received USB-MIDI event packets of 4 bytes each, without waiting; the count taken. +size_t usbMidiRead(uint8_t (*packets)[4], size_t max); + +/// Queue USB-MIDI event packets for the desk, without waiting; false when no desk is attached or the queue is full. +bool usbMidiWrite(const uint8_t (*packets)[4], size_t count); + +/// Make the desktop a USB MIDI host with a desk attached, so the MIDI service's USB path is host-testable; false detaches. +void setTestUsbMidiDesk(bool attached); +/// Deliver packets as if the attached test desk sent them. +void injectTestUsbMidi(const uint8_t (*packets)[4], size_t count); +/// Take up to `max` of the packets sent to the test desk, oldest first; the count taken. +size_t takeTestUsbMidiSent(uint8_t (*packets)[4], size_t max); + /// @} } // namespace mm::platform diff --git a/src/ui/app.js b/src/ui/app.js index 81b1065ce..80d816837 100644 --- a/src/ui/app.js +++ b/src/ui/app.js @@ -8942,7 +8942,13 @@ function deskChanges(sent, desk) { return out; } +// SysEx only when a greeting carries one, so a desk that needs none keeps working when SysEx is refused. +function midiWantsSysex(services) { + return services.some(m => /(^| )f0/.test(m.controls?.find(c => c.name === "hello")?.value || "")); +} + let midiAsked = false; +let midiSysex = false; // whether the access asked for carries SysEx let midiAccess = null; let midiSentAt = 0; let midiDeskSent = []; // per slot, what the desk was last sent @@ -8963,13 +8969,20 @@ function midiLoop(now) { if (!state || !Array.isArray(state.modules) || !navigator.requestMIDIAccess) return; const services = allModules().filter(m => m.type === "MidiService"); if (!services.length) return; - if (!midiAsked) { + const sysex = midiWantsSysex(services); + if (!midiAsked || (sysex && !midiSysex)) { midiAsked = true; - navigator.requestMIDIAccess({ sysex: true }).then(access => { + midiSysex = sysex; + navigator.requestMIDIAccess({ sysex }).then(access => { midiAccess = access; midiListen(access); // A desk plugged in later is listened to, greeted, and sent every slot. - access.onstatechange = () => { midiListen(access); midiDeskSent = []; midiHelloSent = null; }; + access.onstatechange = e => { + if (e.port?.state !== "connected") return; // an unplug changes nothing a desk is shown + midiListen(access); + midiDeskSent = []; + midiHelloSent = null; + }; }).catch(err => console.warn("[midi] access refused", err)); } const hello = midiAccess && services[0].controls?.find(c => c.name === "hello")?.value; diff --git a/test/CMakeLists.txt b/test/CMakeLists.txt index e7e22116a..26c238c6e 100644 --- a/test/CMakeLists.txt +++ b/test/CMakeLists.txt @@ -150,6 +150,7 @@ add_executable(mm_tests unit/light/unit_effects_render.cpp unit/light/unit_Effects_gridsweep.cpp unit/core/unit_OscPacket.cpp + unit/core/unit_UsbMidi.cpp unit/light/unit_Effects_golden.cpp unit/light/unit_SpritePopulation.cpp unit/light/unit_Canvas.cpp diff --git a/test/js/ui-midi-bridge.test.mjs b/test/js/ui-midi-bridge.test.mjs index f3e10a827..e73d2e9de 100644 --- a/test/js/ui-midi-bridge.test.mjs +++ b/test/js/ui-midi-bridge.test.mjs @@ -47,3 +47,15 @@ test("a desk's greeting goes out as whole SysEx and channel messages, and nothin ["f0477f2960000442010000f7", "b03802"]); assert.deepEqual(helloMessages(""), []); }); + +const sysexSrc = app.match(/function midiWantsSysex\(services\) \{[\s\S]*?\n\}/); +assert.ok(sysexSrc, "midiWantsSysex is in app.js"); +const midiWantsSysex = new Function(`${sysexSrc[0]}; return midiWantsSysex;`)(); +const service = hello => ({ type: "MidiService", controls: [{ name: "hello", value: hello }] }); + +test("SysEx is asked for only when a desk's greeting carries one, so a Mackie desk works with SysEx refused", () => { + assert.equal(midiWantsSysex([service("")]), false); + assert.equal(midiWantsSysex([service("f0477f29600004420100 00f7 b03802")]), true); + assert.equal(midiWantsSysex([service(""), service("b03802 f0f7")]), true); + assert.equal(midiWantsSysex([{ type: "MidiService" }]), false); +}); diff --git a/test/scenarios/core/scenario_Control_a_palette_preset_changes_only_the_palette.json b/test/scenarios/core/scenario_Control_a_palette_preset_changes_only_the_palette.json index d8ccb3eaf..303cb37c6 100644 --- a/test/scenarios/core/scenario_Control_a_palette_preset_changes_only_the_palette.json +++ b/test/scenarios/core/scenario_Control_a_palette_preset_changes_only_the_palette.json @@ -189,12 +189,12 @@ "observed": { "desktop-macos": { "tick_us": { - "p50": 5, + "p50": 6, "p95": 462, "min": 5, "max": 462, - "n": 18, - "samples": [5, 462, 324, 5, 5, 5, 7, 5, 6, 5, 6, 6, 6, 5, 5, 13, 6, 5] + "n": 19, + "samples": [5, 462, 324, 5, 5, 5, 7, 5, 6, 5, 6, 6, 6, 5, 5, 13, 6, 5, 11] }, "last_updated": "2026-10-07" }, diff --git a/test/unit/core/unit_ControlModule.cpp b/test/unit/core/unit_ControlModule.cpp index aca526f6c..7781f7503 100644 --- a/test/unit/core/unit_ControlModule.cpp +++ b/test/unit/core/unit_ControlModule.cpp @@ -5,7 +5,9 @@ #include "doctest.h" #include "core/services/MidiService.h" +#include "core/services/OscModule.h" +#include #include #include "core/system/ControlModule.h" #include "core/system/FilesystemModule.h" @@ -1211,15 +1213,15 @@ TEST_CASE("an encoder detent steps its target, which owns the value and its boun REQUIRE(max > 4); const uint8_t start = palette(); - d.control->applyEncoderDelta(0, 3); + d.control->turn(0, 3); CHECK(palette() == start + 3); - d.control->applyEncoderDelta(0, -2); + d.control->turn(0, -2); CHECK(palette() == start + 1); // The bound is the control's, so the target stops at its range rather than wrapping. `max` on a Select or Palette is the option count, so the last index is one below. - for (int i = 0; i < 200; i++) d.control->applyEncoderDelta(0, 5); + for (int i = 0; i < 200; i++) d.control->turn(0, 5); CHECK(palette() == max - 1); - for (int i = 0; i < 200; i++) d.control->applyEncoderDelta(0, -5); + for (int i = 0; i < 200; i++) d.control->turn(0, -5); CHECK(palette() == 0); } @@ -1490,7 +1492,7 @@ TEST_CASE("a MIDI desk's fader touch holds its own motor, not the other surfaces d.control->addSurface(&s); mm::MidiService midi; midi.defineControls(); - midi.tick20ms(); // attached, so the touch is the desk's own + midi.prepare(); // attached, so the touch is the desk's own const uint8_t touch[3] = {0x90, 0x68, 0x7F}, letGo[3] = {0x90, 0x68, 0x00}; REQUIRE(d.scheduler.setControl("Control", "fader1", "{\"value\":100}") == mm::Scheduler::SetControlResult::Ok); const std::string before = deskSlot(midi, 0); @@ -1525,7 +1527,7 @@ TEST_CASE("a MIDI desk shows the surface: fader motors, SELECT lights and knob r REQUIRE(d.scheduler.setControl("Control", "fader1", "{\"value\":255}") == mm::Scheduler::SetControlResult::Ok); REQUIRE(d.scheduler.setControl("Control", "switch2", "{\"value\":true}") == mm::Scheduler::SetControlResult::Ok); REQUIRE(d.scheduler.setControl("Control", "encoder1", "{\"value\":0}") == mm::Scheduler::SetControlResult::Ok); - midi.tick20ms(); // attaching seeds every slot + midi.prepare(); // attaching seeds every slot CHECK(deskSlot(midi, 0) == "e07f7f"); // fader1 at the top CHECK(deskSlot(midi, 9) == "90197f"); // switch2's light on CHECK(deskSlot(midi, 16) == "b03021"); // encoder1's ring, filled to its first light @@ -1539,7 +1541,7 @@ TEST_CASE("a fader position sent to a MIDI desk decodes back to the same value") Device d; mm::MidiService midi; midi.defineControls(); - midi.tick20ms(); + midi.prepare(); for (const int v : {0, 1, 127, 128, 254, 255}) { midi.sendValue(mm::SurfaceControl::Fader, 3, static_cast(v)); const std::string hex = deskSlot(midi, 3); @@ -1614,7 +1616,7 @@ TEST_CASE("an APC40's top-left pad applies the first preset, and its pads show w mm::MidiService midi; useApc40(midi); - midi.tick20ms(); // attaching seeds every light + midi.prepare(); // attaching seeds every light CHECK(deskSlot(midi, 24) == "902002"); // preset 1, stored, lights the top-left pad (note 32) dim white CHECK(deskSlot(midi, 25) == "902100"); // an empty cell's pad is dark const uint8_t topLeft[3] = {0x90, 0x20, 0x7F}; @@ -1628,6 +1630,210 @@ TEST_CASE("an APC40's top-left pad applies the first preset, and its pads show w midi.release(); } +namespace { +/// One OSC message with an int argument, as a controller puts it on the wire. +std::vector oscInt(const char* address, int32_t value) { + std::vector p(64); + p.resize(mm::osc::encodeInt(p.data(), p.size(), address, value)); + return p; +} +} // namespace + +// A pad grid on a phone or on another board fires a preset, and learns which pads hold one. +TEST_CASE("an OSC pad press applies the preset on that pad, and a paced resend sends every pad's state") { + Device d; + auto* layer = d.add(d.layers, "Layer"); + d.add(layer, "NoiseEffect"); + d.setText("name", "sunset"); + d.press("save"); + REQUIRE(d.control->listRowCount() == 1); + auto* old = layer->replaceChildAt(0, mm::ModuleFactory::create("RainbowEffect")); + if (old) { old->release(); mm::Scheduler::deleteTree(old); } + + mm::OscModule osc; + const auto send = [&](const char* address, int32_t value) { + const auto p = oscInt(address, value); + osc.handle(p.data(), p.size()); + }; + send("/mm/pad/1", 0); // a button's release + send("/mm/pad/2", 1); // an empty pad + send("/mm/pad/0", 1); // before the grid + send("/mm/pad/65", 1); // past it + CHECK(std::strcmp(d.effectType(), "RainbowEffect") == 0); + send("/mm/pad/1", 1); + CHECK(std::strcmp(d.effectType(), "NoiseEffect") == 0); + + RecordingSurface s; + d.control->addSurface(&s, mm::ControlModule::Seed::Paced); + for (int i = 0; i < mm::ControlModule::kSurfaceValues; i++) d.control->tick20ms(); + const auto lastPad = [&](uint8_t index) { + int v = -1; + for (const auto& c : s.calls) if (c.kind == mm::SurfaceControl::Pad && c.index == index) v = c.value; + return v; + }; + CHECK(lastPad(0) == mm::ControlModule::kPadActive); + CHECK(lastPad(1) == mm::ControlModule::kPadEmpty); + CHECK(lastPad(mm::ControlModule::kMaxPresets - 1) == mm::ControlModule::kPadEmpty); + d.control->removeSurface(&s); +} + +namespace { +/// An OSC module whose datagrams are kept rather than sent, so the test is the network between two boards. +struct WiredOsc : mm::OscModule { + struct Sent { uint8_t ip[4]; std::vector pkt; }; + std::vector out; + /// The addresses sent, in order, so a test reads what went where. + std::vector addresses() const { + std::vector a; + for (const auto& s : out) { + mm::osc::Message m; + if (mm::osc::parse(s.pkt.data(), s.pkt.size(), m)) a.emplace_back(m.address); + } + return a; + } +protected: + void transmit(const uint8_t ip[4], const uint8_t* pkt, size_t len) override { + Sent s{}; + std::memcpy(s.ip, ip, 4); + s.pkt.assign(pkt, pkt + len); + out.push_back(std::move(s)); + } +}; + +/// One feedback datagram from the followed board, as its OSC module sends it. +std::vector feedbackFrom(mm::SurfaceControl kind, uint8_t index, uint8_t value) { + std::vector p(64); + p.resize(mm::osc::encodeSurface(p.data(), p.size(), kind, index, value)); + return p; +} +} // namespace + +// A desk board follows the board it drives: it takes its values and presets, and sends back only what changes here. +TEST_CASE("an OSC follower takes the followed board's values and pads, and sends only its own changes there") { + Device desk; + WiredOsc osc; + osc.defineControls(); + osc.feedback = true; + osc.follow = true; + auto& cs = osc.controls(); + for (uint8_t i = 0; i < cs.count(); i++) + if (std::strcmp(cs[i].name, "hosts") == 0) std::strcpy(static_cast(cs[i].ptr), "192.168.1.103"); + osc.onControlChanged("hosts"); + const uint8_t legs[4] = {192, 168, 1, 103}; + desk.control->addSurface(&osc, mm::ControlModule::Seed::None); + REQUIRE(desk.scheduler.setControl("Control", "fader4", "{\"value\":0}") == mm::Scheduler::SetControlResult::Ok); + desk.control->tick20ms(); + osc.out.clear(); + + osc.greet(); + REQUIRE(osc.addresses() == std::vector{"/mm/hello"}); + CHECK(std::memcmp(osc.out[0].ip, legs, 4) == 0); + osc.out.clear(); + + // The followed board's fader lands here, and is not sent back to it. + const auto f = feedbackFrom(mm::SurfaceControl::Fader, 3, 200); + osc.handle(f.data(), f.size(), legs); + desk.control->tick20ms(); + CHECK(surfaceValue(desk, "fader4") == 200); + CHECK(osc.out.empty()); + + // A change made here goes there, even back to a value heard before. + REQUIRE(desk.scheduler.setControl("Control", "fader4", "{\"value\":90}") == mm::Scheduler::SetControlResult::Ok); + desk.control->tick20ms(); + REQUIRE(desk.scheduler.setControl("Control", "fader4", "{\"value\":200}") == mm::Scheduler::SetControlResult::Ok); + desk.control->tick20ms(); + CHECK(osc.addresses() == std::vector{"/mm/fader/4", "/mm/fader/4"}); + osc.out.clear(); + + // While fader 4 is being moved here, an echo of an earlier position does not pull it back; after the hold, the followed board's values land again. + mm::platform::setTestNowMs(10000); + REQUIRE(desk.scheduler.setControl("Control", "fader4", "{\"value\":120}") == mm::Scheduler::SetControlResult::Ok); + desk.control->tick20ms(); + const auto stale = feedbackFrom(mm::SurfaceControl::Fader, 3, 90); + osc.handle(stale.data(), stale.size(), legs); + CHECK(surfaceValue(desk, "fader4") == 120); + mm::platform::setTestNowMs(10600); + const auto later = feedbackFrom(mm::SurfaceControl::Fader, 3, 130); + osc.handle(later.data(), later.size(), legs); + CHECK(surfaceValue(desk, "fader4") == 130); + mm::platform::setTestNowMs(0); + desk.control->tick20ms(); + osc.out.clear(); + + // Its pads show the followed board's presets, a press goes there, and the states are never sent back as presses. + const auto stored = feedbackFrom(mm::SurfaceControl::Pad, 2, mm::ControlModule::kPadStored); + osc.handle(stored.data(), stored.size(), legs); + desk.control->tick20ms(); + CHECK(desk.control->padState(2) == mm::ControlModule::kPadStored); + CHECK(osc.out.empty()); + CHECK_FALSE(desk.control->pressPad(0)); // empty there: nothing is sent + CHECK(desk.control->pressPad(2)); + CHECK(osc.addresses() == std::vector{"/mm/pad/3"}); + desk.control->removeSurface(&osc); +} + +// A pad that holds a preset which cannot be applied says so, rather than claiming the pad is empty. +TEST_CASE("an APC40 pad holding a preset that cannot apply reports that, not an empty pad") { + Device d; + const char older[] = "{\"$slot\":0,\"captures\":[\"Effects\"]}"; + REQUIRE(mm::platform::fsWriteAtomic("/.config/presets/old.json", older, sizeof(older) - 1)); + d.control->onFileChanged("/.config/presets/old.json"); + REQUIRE(d.control->padState(0) == mm::ControlModule::kPadStored); + mm::MidiService midi; + useApc40(midi); + auto& cs = midi.controls(); + for (uint8_t i = 0; i < cs.count(); i++) // the top-left pad, note 32 + if (std::strcmp(cs[i].name, "midi") == 0) std::strcpy(static_cast(cs[i].ptr), "90207f"); + midi.onControlChanged("midi"); + CHECK(std::string(midi.status()) == "pad 1 did not apply"); + midi.release(); +} + +namespace { +/// What the test desk on the USB port was sent, packet by packet. +std::vector> sentToDesk() { + std::vector> all; + uint8_t p[16][4]; + for (size_t n; (n = mm::platform::takeTestUsbMidiSent(p, 16)) > 0;) + for (size_t i = 0; i < n; i++) all.push_back({p[i][0], p[i][1], p[i][2], p[i][3]}); + return all; +} +} // namespace + +// A desk on the board's own USB port, with no computer: greeted once, then sent only what changed, and its moves drive the surface. +TEST_CASE("a desk on the USB port is greeted once, sent only changes, and not greeted again when the tree is prepared") { + Device d; + mm::platform::setTestUsbMidiDesk(true); + mm::MidiService midi; + useApc40(midi); + midi.usb = true; + midi.prepare(); + midi.tick20ms(); + const auto greeting = sentToDesk(); + REQUIRE(greeting.size() > 4); + CHECK((greeting[0][0] == 0x04 && greeting[0][1] == 0xF0)); // the mode SysEx first + CHECK(std::string(midi.status()) == "USB: desk connected"); + + midi.tick20ms(); + CHECK(sentToDesk().empty()); // nothing changed, nothing sent + midi.prepare(); // as every preset apply does + midi.tick20ms(); + CHECK(sentToDesk().empty()); // not greeted again + + REQUIRE(d.scheduler.setControl("Control", "switch2", "{\"value\":true}") == mm::Scheduler::SetControlResult::Ok); + d.control->tick20ms(); + const auto light = sentToDesk(); + REQUIRE(light.size() == 1); + CHECK((light[0][0] == 0x09 && light[0][1] == 0x91 && light[0][2] == 0x32 && light[0][3] == 0x7F)); // activator 2 lit, at once + + const uint8_t faderTop[1][4] = {{0x0B, 0xB0, 0x07, 0x7F}}; + mm::platform::injectTestUsbMidi(faderTop, 1); + midi.tick20ms(); + CHECK(surfaceValue(d, "fader1") == 255); + mm::platform::setTestUsbMidiDesk(false); + midi.release(); +} + // The way back: an activator lights while its switch is on, and a knob's ring shows its encoder; the faders have no motors. TEST_CASE("an APC40 shows the surface: activator lights and knob rings") { Device d; @@ -1635,7 +1841,7 @@ TEST_CASE("an APC40 shows the surface: activator lights and knob rings") { REQUIRE(d.scheduler.setControl("Control", "encoder2", "{\"value\":255}") == mm::Scheduler::SetControlResult::Ok); mm::MidiService midi; useApc40(midi); - midi.tick20ms(); + midi.prepare(); CHECK(deskSlot(midi, 9) == "91327f"); // activator 2 lit CHECK(deskSlot(midi, 10) == "823200"); // activator 3 dark CHECK(deskSlot(midi, 17) == "b0317f"); // track knob 2's ring full diff --git a/test/unit/core/unit_OscModule.cpp b/test/unit/core/unit_OscModule.cpp index 1dadc9610..4655b1dad 100644 --- a/test/unit/core/unit_OscModule.cpp +++ b/test/unit/core/unit_OscModule.cpp @@ -65,22 +65,22 @@ TEST_CASE("OSC feedback asks for every surface value again every 30 seconds, and REQUIRE(scheduler.setControl("Osc", "listen", "{\"value\":true}") == Scheduler::SetControlResult::Ok); // Attached as the module attaches itself: seeded one value per tick, not in one burst. - control->addSurface(osc, /*paced=*/true); + control->addSurface(osc, ControlModule::Seed::Paced); CHECK(osc->sent == 0); - for (int i = 0; i < ControlModule::kSlotCount; i++) { + for (int i = 0; i < ControlModule::kSurfaceValues; i++) { const int before = osc->sent; control->tick20ms(); CHECK(osc->sent - before == 1); } control->tick20ms(); - CHECK(osc->sent == ControlModule::kSlotCount); // every value once, then quiet + CHECK(osc->sent == ControlModule::kSurfaceValues); // every value once, the pads included, then quiet for (int s = 0; s < 29; s++) osc->tick1s(); control->tick20ms(); - CHECK(osc->sent == ControlModule::kSlotCount); // nothing before the 30 seconds are up + CHECK(osc->sent == ControlModule::kSurfaceValues); // nothing before the 30 seconds are up osc->tick1s(); - for (int i = 0; i < ControlModule::kSlotCount + 2; i++) control->tick20ms(); - CHECK(osc->sent == 2 * ControlModule::kSlotCount); // and every value once more + for (int i = 0; i < ControlModule::kSurfaceValues + 2; i++) control->tick20ms(); + CHECK(osc->sent == 2 * ControlModule::kSurfaceValues); // and every value once more control->removeSurface(osc); scheduler.release(); } diff --git a/test/unit/core/unit_OscPacket.cpp b/test/unit/core/unit_OscPacket.cpp index d07acadcb..023fce7b7 100644 --- a/test/unit/core/unit_OscPacket.cpp +++ b/test/unit/core/unit_OscPacket.cpp @@ -62,6 +62,26 @@ TEST_CASE("golden vector: the exact bytes of an OSC message with a float") { CHECK(m.f == doctest::Approx(1.0f)); } +// A pad's state is an enum, so it travels as an OSC int rather than as a fraction of a float. +TEST_CASE("golden vector: the exact bytes of an OSC message with an int") { + uint8_t p[32]; + const size_t len = osc::encodeInt(p, sizeof(p), "/mm/pad/1", 2); + + // "/mm/pad/1" is 9 chars + NUL = 10, padded to 12. ",i" is 2 + NUL = 3, padded to 4. Then 4 bytes of big-endian 2. + const uint8_t golden[] = { + '/','m','m','/','p','a','d','/','1','\0','\0','\0', + ',','i','\0','\0', + 0x00, 0x00, 0x00, 0x02, + }; + REQUIRE(len == sizeof(golden)); + CHECK(std::memcmp(p, golden, sizeof(golden)) == 0); + + osc::Message m; + REQUIRE(osc::parse(p, len, m)); + CHECK_FALSE(m.wasFloat); + CHECK(m.i == 2); +} + // The pad rule is where a hand-rolled parser goes wrong: an address whose length is already a multiple of 4 gets a WHOLE extra word of padding, not none. TEST_CASE("Addresses of every length parse, including the padding boundary") { for (const char* addr : {"/a", "/ab", "/abc", "/abcd", "/abcde", "/abcdef", "/abcdefg"}) { diff --git a/test/unit/core/unit_UsbMidi.cpp b/test/unit/core/unit_UsbMidi.cpp new file mode 100644 index 000000000..a2861a287 --- /dev/null +++ b/test/unit/core/unit_UsbMidi.cpp @@ -0,0 +1,50 @@ +/// @module UsbMidi + +/// USB-MIDI event packets: a desk's messages in and out of the 4-byte packets the USB MIDI class carries. + +#include "doctest.h" +#include "core/util/UsbMidi.h" + +#include + +using namespace mm; + +// A knob turn and a pad press, as an APC40 sends them over USB. +TEST_CASE("a USB-MIDI packet carries one channel message, its CIN the status nibble") { + const uint8_t knob[4] = {0x0B, 0xB0, 0x30, 0x40}, press[4] = {0x09, 0x90, 0x20, 0x7F}; + uint8_t m[3] = {}; + REQUIRE(usbmidi::decode(knob, m) == 3); + CHECK((m[0] == 0xB0 && m[1] == 0x30 && m[2] == 0x40)); + REQUIRE(usbmidi::decode(press, m) == 3); + CHECK((m[0] == 0x90 && m[1] == 0x20 && m[2] == 0x7F)); + const uint8_t sysexPiece[4] = {0x04, 0xF0, 0x47, 0x7F}; + CHECK(usbmidi::decode(sysexPiece, m) == 0); // a desk's input never needs SysEx +} + +// The way back: a light, and the APC40's greeting cut into SysEx packets that end with however many bytes are left. +TEST_CASE("a message is cut into USB-MIDI packets, a SysEx one ending with the bytes that are left") { + uint8_t out[8][4] = {}; + const uint8_t light[3] = {0x90, 0x20, 0x15}; + REQUIRE(usbmidi::encode(light, 3, out, 8) == 1); + CHECK((out[0][0] == 0x09 && out[0][1] == 0x90 && out[0][2] == 0x20 && out[0][3] == 0x15)); + + const uint8_t hello[12] = {0xF0, 0x47, 0x7F, 0x29, 0x60, 0x00, 0x04, 0x42, 0x01, 0x00, 0x00, 0xF7}; + REQUIRE(usbmidi::encode(hello, 12, out, 8) == 4); + CHECK(out[0][0] == 0x04); + CHECK(out[2][0] == 0x04); + CHECK((out[2][3] == 0x01 && out[3][0] == 0x07 && out[3][3] == 0xF7)); // three bytes left: CIN 7 + const uint8_t two[5] = {0xF0, 0x01, 0x02, 0x03, 0xF7}; + REQUIRE(usbmidi::encode(two, 5, out, 8) == 2); + CHECK((out[1][0] == 0x06 && out[1][1] == 0x03 && out[1][2] == 0xF7 && out[1][3] == 0x00)); // two left: CIN 6 +} + +// Robustness: what is not a message, or does not fit, writes nothing. +TEST_CASE("a malformed or oversized message is not cut into packets") { + uint8_t out[2][4] = {}; + const uint8_t data[2] = {0x20, 0x30}, unterminated[4] = {0xF0, 0x01, 0x02, 0x03}; + const uint8_t longSysex[9] = {0xF0, 1, 2, 3, 4, 5, 6, 7, 0xF7}; + CHECK(usbmidi::encode(data, 2, out, 2) == 0); + CHECK(usbmidi::encode(unterminated, 4, out, 2) == 0); + CHECK(usbmidi::encode(longSysex, 9, out, 2) == 0); // three packets do not fit in two + CHECK(usbmidi::encode(nullptr, 3, out, 2) == 0); +} From 9873d257d5ceedd3041aaa3c2d09c85ea84a3963 Mon Sep 17 00:00:00 2001 From: ewowi Date: Wed, 7 Oct 2026 22:14:13 +0200 Subject: [PATCH 3/3] Process CodeRabbit's review of the MIDI desk commit MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit A pad pressed on a board following another now reports success only when the press went out, and a USB client that fails to start cleans up so the port can be given back. The installer marks MIDI and OSC as active capabilities, and the browser asks for SysEx by the desk it greets. KPI: unchanged from 4aabaf4f; code findings 1664 -> 1664, docgen and prose even. **Core** - `ControlSurface::sendPress` returns whether the press went out, and `ControlModule::pressPad` reports success only then. - The USB MIDI client task frees its transfers and deregisters through one cleanup, on a failed start as on a normal stop. **UI** - `midiWantsSysex` reads the first MIDI service, the one the browser greets. - The installer's device picker marks MIDI and OSC active for models carrying a MIDI service or an OSC module. **Tests** - The follower test restores the real clock through a scope guard, even when a check throws; the SysEx test pins first-service precedence. **Reviews** - 🐇 MIDI and OSC missing from the picker's capability predicates → done. - 🐇 MidiService calls the platform layer directly → skipped: core reaching the platform through its seam is the architecture, as the OSC module does for the network. - 🐇 sendPress reported success without sending → done. - 🐇 call usbMidiBegin on every tick → skipped: after a failed install that retries it 50 times a second; the retry covers a port still being given back. - 🐇 a failed client start leaked and blocked uninstall → done, one shared cleanup. - 🐇 SysEx decided across all services → done, the first one. - 🐇 the test clock restore could be skipped by a failing check → done, a scope guard. Co-Authored-By: Claude Opus 5.5 --- docs/reference/metrics/code.md | 6 +++--- mooninstaller/install.js | 2 ++ src/core/services/OscModule.h | 6 +++--- src/core/system/ControlModule.h | 7 ++++--- src/core/util/ControlSurface.h | 4 ++-- src/platform/esp32/platform_esp32_usb_midi.cpp | 17 +++++++++++------ src/ui/app.js | 4 ++-- test/js/ui-midi-bridge.test.mjs | 5 +++-- test/unit/core/unit_ControlModule.cpp | 1 + 9 files changed, 31 insertions(+), 21 deletions(-) diff --git a/docs/reference/metrics/code.md b/docs/reference/metrics/code.md index c81a6af7f..4c46502d0 100644 --- a/docs/reference/metrics/code.md +++ b/docs/reference/metrics/code.md @@ -90,7 +90,7 @@ The next function worth simplifying is at the top of each file's list. | `src/light/layers/Layer.h` | 13 | `Layer in 132 files`, name spread 132 | | `test/unit/light/unit_HlsDriver.cpp` | 13 | `lines 30-47, also in test/unit/light/unit_PanelCardDriver.cpp:22`, duplicated block 18 | | `test/unit/light/unit_RandomMapModifier.cpp` | 13 | `lines 116-132, also in test/unit/light/unit_BlurzEffect.cpp:49`, duplicated block 17 | -| `src/core/system/ControlModule.h` | 12 | `ControlModule::storePreset, line 1031`, large stack frame 1296 | +| `src/core/system/ControlModule.h` | 12 | `ControlModule::storePreset, line 1032`, large stack frame 1296 | | `src/core/system/DevicesModule.h` | 12 | `lines 73-80, also in src/core/system/DevicesModule.h:59`, duplicated block 8 | | `src/light/drivers/HlsDriver.h` | 12 | `lines 105-117, also in src/light/drivers/RtspDriver.h:92`, duplicated block 13 | | `src/light/moonlive/MoonLiveBuiltins_light.h` | 12 | `moonlive::mm_light_escape`, complex function 13 | @@ -294,7 +294,7 @@ The next function worth simplifying is at the top of each file's list. | `moondeck/moontube/mtrun.py` | 1 | `mtrun.py`, large file 1711 | | `moondeck/scenario/run_live_scenario.py` | 1 | `run_live_scenario.py`, large file 1856 | | `mooninstaller/install-orchestrator.js` | 1 | `install-orchestrator.js`, large file 1284 | -| `mooninstaller/install.js` | 1 | `install.js`, large file 1449 | +| `mooninstaller/install.js` | 1 | `install.js`, large file 1451 | | `src/core/module/Control.h` | 1 | `sanitizeHostname`, complex function 16 | | `src/core/module/StateDocument.cpp` | 1 | `(anonymous namespace)::Applier::apply(mm::MoonModule*, mm::json::JsonNode const*), line 371`, large stack frame 1264 | | `src/core/moonlive/MoonLive.h` | 1 | `moonlive::MoonLive::addDeclaredControl`, complex function 14 | @@ -362,7 +362,7 @@ The next function worth simplifying is at the top of each file's list. | `test/js/ui-visibility.test.mjs` | 1 | `lines 7-16, also in test/js/ui-ws-scheme.test.mjs:13`, duplicated block 10 | | `test/python/test_check_docgen.py` | 1 | `test_check_docgen.py`, large file 1577 | | `test/scenario_runner.cpp` | 1 | `scenario_runner.cpp`, large file 1266 | -| `test/unit/core/unit_ControlModule.cpp` | 1 | `unit_ControlModule.cpp`, large file 1871 | +| `test/unit/core/unit_ControlModule.cpp` | 1 | `unit_ControlModule.cpp`, large file 1872 | | `test/unit/core/unit_Control_apply_absent_key.cpp` | 1 | `lines 92-103, also in test/unit/core/unit_HttpServerModule_apply.cpp:39`, duplicated block 12 | | `test/unit/core/unit_moonlive_compiler.cpp` | 1 | `unit_moonlive_compiler.cpp`, large file 1865 | | `test/unit/core/unit_moonlive_fill.cpp` | 1 | `unit_moonlive_fill.cpp`, large file 1380 | diff --git a/mooninstaller/install.js b/mooninstaller/install.js index 43e81f509..592ba77b9 100644 --- a/mooninstaller/install.js +++ b/mooninstaller/install.js @@ -1173,6 +1173,8 @@ document.addEventListener('DOMContentLoaded', () => { Ethernet: m => m.type === "EthernetModule" && ethConfigured(m), WiFi: m => /^(Network|Ethernet|WiFi)Module$/.test(m.type || ""), Audio: m => /^Audio/.test(m.type || ""), + MIDI: m => m.type === "MidiService", + OSC: m => m.type === "OscModule", }; function capActive(b, cap) { const test = CAP_MODULE[cap]; diff --git a/src/core/services/OscModule.h b/src/core/services/OscModule.h index 859b4b9ce..d9ccea70d 100644 --- a/src/core/services/OscModule.h +++ b/src/core/services/OscModule.h @@ -132,10 +132,10 @@ class OscModule : public MoonModule, public ControlSurface { } /// Press a pad on the followed board, whose presets the grid here shows. - void sendPress(uint8_t pad) override { - if (!feedback || !follow) return; + bool sendPress(uint8_t pad) override { + if (!feedback || !follow) return false; uint8_t pkt[48]; - sendFeedback(pkt, osc::encodeSurface(pkt, sizeof(pkt), SurfaceControl::Pad, pad, 1), nullptr); + return sendFeedback(pkt, osc::encodeSurface(pkt, sizeof(pkt), SurfaceControl::Pad, pad, 1), nullptr); } /// Refresh the status, which is time-dependent because a peer goes stale. diff --git a/src/core/system/ControlModule.h b/src/core/system/ControlModule.h index b6f16dd2a..32978c224 100644 --- a/src/core/system/ControlModule.h +++ b/src/core/system/ControlModule.h @@ -135,10 +135,11 @@ class ControlModule : public MoonModule, public ListSource { /// Apply the preset on grid cell `slot`, as a click on its pad does; false for an empty cell. bool pressPad(uint8_t slot) { if (padsRemote_) { - // The presets are another board's, so the press goes there. + // The presets are another board's, so the press goes there; true only when a surface sent it. if (slot >= kMaxPresets || remotePads_[slot] == kPadEmpty) return false; - for (uint8_t i = 0; i < surfaceCount_; i++) surfaces_[i]->sendPress(slot); - return true; + bool sent = false; + for (uint8_t i = 0; i < surfaceCount_; i++) sent = surfaces_[i]->sendPress(slot) || sent; + return sent; } for (uint8_t r = 0; r < presetCount_; r++) if (presets_[r].slot == slot) return applyPreset(presets_[r].name); diff --git a/src/core/util/ControlSurface.h b/src/core/util/ControlSurface.h index 843215639..bd813ab76 100644 --- a/src/core/util/ControlSurface.h +++ b/src/core/util/ControlSurface.h @@ -45,8 +45,8 @@ class ControlSurface { /// A name for a control, where the transport can show one. Does nothing by default. virtual void sendLabel(uint8_t index, const char* text) { (void)index; (void)text; } - /// A pad pressed on a board whose grid shows another board's presets, for the transport that reaches that board. Does nothing by default. - virtual void sendPress(uint8_t pad) { (void)pad; } + /// A pad pressed on a board whose grid shows another board's presets, for the transport that reaches that board; true when it went out. Does nothing by default. + virtual bool sendPress(uint8_t pad) { (void)pad; return false; } }; /// @} diff --git a/src/platform/esp32/platform_esp32_usb_midi.cpp b/src/platform/esp32/platform_esp32_usb_midi.cpp index b40e3e46a..8b8afe3d6 100644 --- a/src/platform/esp32/platform_esp32_usb_midi.cpp +++ b/src/platform/esp32/platform_esp32_usb_midi.cpp @@ -142,6 +142,15 @@ void sendQueued() { if (usb_host_transfer_submit(s.out) != ESP_OK) s.outBusy = false; } +/// Free the transfers and deregister the client, whatever of them started; the library task then sees no clients and uninstalls. +void releaseClient() { + if (s.in) usb_host_transfer_free(s.in); + if (s.out) usb_host_transfer_free(s.out); + s.in = s.out = nullptr; + if (s.client && usb_host_client_deregister(s.client) != ESP_OK) ESP_LOGE(kTag, "client deregister failed: the port stays a host until a reboot"); + s.client = nullptr; +} + /// The client task: the desk's events, its transfers and the send queue, until the port is given back. void runClient(void*) { usb_host_client_config_t client = {}; @@ -150,6 +159,7 @@ void runClient(void*) { if (usb_host_client_register(&client, &s.client) != ESP_OK || usb_host_transfer_alloc(kTransferBytes, 0, &s.in) != ESP_OK || usb_host_transfer_alloc(kTransferBytes, 0, &s.out) != ESP_OK) { ESP_LOGE(kTag, "USB client did not start"); + releaseClient(); s.clientTask = nullptr; vTaskDelete(nullptr); return; @@ -163,12 +173,7 @@ void runClient(void*) { sendQueued(); } closeDesk(); - usb_host_transfer_free(s.in); - usb_host_transfer_free(s.out); - s.in = s.out = nullptr; - // The library task sees no clients left and finishes; a failed deregister leaves the stack installed, which the log says. - if (usb_host_client_deregister(s.client) != ESP_OK) ESP_LOGE(kTag, "client deregister failed: the port stays a host until a reboot"); - s.client = nullptr; + releaseClient(); s.clientTask = nullptr; vTaskDelete(nullptr); } diff --git a/src/ui/app.js b/src/ui/app.js index 80d816837..e19a387f4 100644 --- a/src/ui/app.js +++ b/src/ui/app.js @@ -8942,9 +8942,9 @@ function deskChanges(sent, desk) { return out; } -// SysEx only when a greeting carries one, so a desk that needs none keeps working when SysEx is refused. +// SysEx only when the greeting carries one, so a desk that needs none keeps working when SysEx is refused; the first service is the one greeted. function midiWantsSysex(services) { - return services.some(m => /(^| )f0/.test(m.controls?.find(c => c.name === "hello")?.value || "")); + return /(^| )f0/.test(services[0]?.controls?.find(c => c.name === "hello")?.value || ""); } let midiAsked = false; diff --git a/test/js/ui-midi-bridge.test.mjs b/test/js/ui-midi-bridge.test.mjs index e73d2e9de..85a863d10 100644 --- a/test/js/ui-midi-bridge.test.mjs +++ b/test/js/ui-midi-bridge.test.mjs @@ -53,9 +53,10 @@ assert.ok(sysexSrc, "midiWantsSysex is in app.js"); const midiWantsSysex = new Function(`${sysexSrc[0]}; return midiWantsSysex;`)(); const service = hello => ({ type: "MidiService", controls: [{ name: "hello", value: hello }] }); -test("SysEx is asked for only when a desk's greeting carries one, so a Mackie desk works with SysEx refused", () => { +test("SysEx is asked for only when the greeted desk's greeting carries one, so a Mackie desk works with SysEx refused", () => { assert.equal(midiWantsSysex([service("")]), false); assert.equal(midiWantsSysex([service("f0477f29600004420100 00f7 b03802")]), true); - assert.equal(midiWantsSysex([service(""), service("b03802 f0f7")]), true); + assert.equal(midiWantsSysex([service(""), service("b03802 f0f7")]), false); // only the first service is greeted assert.equal(midiWantsSysex([{ type: "MidiService" }]), false); + assert.equal(midiWantsSysex([]), false); }); diff --git a/test/unit/core/unit_ControlModule.cpp b/test/unit/core/unit_ControlModule.cpp index 7781f7503..7e4409800 100644 --- a/test/unit/core/unit_ControlModule.cpp +++ b/test/unit/core/unit_ControlModule.cpp @@ -1746,6 +1746,7 @@ TEST_CASE("an OSC follower takes the followed board's values and pads, and sends osc.out.clear(); // While fader 4 is being moved here, an echo of an earlier position does not pull it back; after the hold, the followed board's values land again. + struct RealClockAfter { ~RealClockAfter() { mm::platform::setTestNowMs(0); } } realClockAfter; // even when a check throws mm::platform::setTestNowMs(10000); REQUIRE(desk.scheduler.setControl("Control", "fader4", "{\"value\":120}") == mm::Scheduler::SetControlResult::Ok); desk.control->tick20ms();