Skip to content

Small-screen patching, Windows touch and BLE MIDI, C3 handheld controller - #1

Draft
willbearfruits wants to merge 2 commits into
mainfrom
ally-touch-c3-controller
Draft

willbearfruits wants to merge 2 commits into
mainfrom
ally-touch-c3-controller

Conversation

@willbearfruits

Copy link
Copy Markdown
Owner

Draft, opened so CI builds the Windows app for a test on the ROG Ally.

Patching on a small screen

  • A module picker (+ ADD, A, or "Add a module..." in the menus): large tiles by family, filter by typing, d-pad and bumpers on a pad. The module goes after the selected one, or at the end of the chain, with the cables moved over.
  • On the Board, a + between each pair of pedals puts a new pedal there.
  • Module and pedal menus: add before or after, move earlier or later, remove and keep the chain connected. Each is one undo step; stereo pairs stay paired. The logic is in src/audio/ChainEdit.*, with two new tests.
  • Touch: a tap on a knob opens a large slider (exact value, steps, reset, type, fine). A taller header with finger-sized buttons, MUTE, UNDO and REDO on screen. A held finger on a plate or pedal now opens its menu (before, the drag it started blocked the long press).

Windows

  • JUCE's WinRT MIDI backend, so paired Bluetooth LE MIDI devices show up (SIGNALPATCH_WINDOWS_BLE_MIDI, on by default).
  • Windows' own press-and-hold is turned off for the window, so a press arrives at once (src/v2/PlatformWindow.cpp).
  • The first start on a screen smaller than the default window is maximised.

These Windows-only parts have not been compiled before this CI run.

C3 handheld controller

  • Firmware for an ESP32-C3 SuperMini with a 0.42" OLED, encoder, three pots, three buttons, expression jack and MPU-6050, over BLE MIDI (controller/c3-oled).
  • Protocol additions in docs/CONTROLLER.md: labels and values, mute flag, model and firmware in the hello, settings over SysEx.
  • A CONTROLLER page: assign each control (tap a knob, pick from a list, or an app action in every patch), live values, the controller's settings. Pots take over a knob only once they pass its value; mappings follow a channel change.
  • A printable case in controller/c3-oled/enclosure.

Tested

  • 59 engine tests pass, also under ASan and UBSan.
  • The touch flows were driven with the new SIGNALPATCH_UI_SCRIPT hook at the Ally's size (1920 x 1080 at 150 %). The CONTROLLER page was run against controller/tools/fakec3.c, which plays the C3 on an ALSA port.
  • Firmware: pio run -e c3 builds; 72 host tests pass.
  • Case: the enclosure build ends DONE (fit, margins, meshes).

Not tested

  • Anything on Windows, a real touch screen, or Bluetooth.
  • The firmware on a board, and the case printed.

🤖 Generated with Claude Code

willbearfruits and others added 2 commits October 7, 2026 17:50
…ller

Building a patch on the ROG Ally under Windows:
- module picker with large tiles, A / + ADD / menus; modules go after the
  selected one or at the end of the chain with cables moved (ChainEdit,
  one undo step each, stereo pairs kept); a + between pedals on the Board
- move earlier/later, remove keeping the chain connected
- tap a knob for a large value sheet; touch dead zone on knob drags
- touch header with finger-sized buttons, MUTE, UNDO/REDO on screen;
  long press now works on plates and pedals
- Windows: WinRT MIDI (Bluetooth LE devices), press-and-hold off for the
  window, maximised first start on small screens

C3 handheld controller (ESP32-C3 SuperMini with 0.42" OLED, BLE MIDI):
- firmware in controller/c3-oled (built, 72 host tests, not run on a board)
- protocol: labels and values, mute flag, model hello, settings SysEx
- CONTROLLER page: assign controls, app-wide actions with pot pickup,
  settings editor; mappings follow a channel change
- printable case in controller/c3-oled/enclosure (checked, not printed)

Also SIGNALPATCH_UI_SCRIPT for scripted UI checks and controller/tools/fakec3.c.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
MSVC has no begin/end for a braced initializer list without
<initializer_list>, which this file does not pull in.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>

This branch has not been deployed

No deployments
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant