Introduction
It’s been around 2 months since I finalised version 1.0.0 of HexTile. I’ve been using it every now and then during this time and thought I’d give an update to a small update which makes the software a lot more useable and friendly.
When I shipped HexTile v1.0.0, the goal was simple: a clean desktop interface for controlling a Line 6 HX Stomp over MIDI without needing to reach down to the pedal. Typically in a home studio environment rather than live. It worked.
After using it in real sessions it became obvious that clicking buttons with a mouse, while functional, still pulled your attention away from playing. v1.0.1 is the version that addresses this and a handful of small improvements.
If you haven’t seen version 1.0.0 you can read about it here.
What’s changed
Keyboard shortcuts: Play without touching the mouse
The headline feature. Every action HexTile can send (footswitches, snapshots, preset navigation, tuner toggle) can now be triggered from the keyboard. Shortcuts are only active when HexTile is in focus, which means they won’t bleed into your DAW, your browser, or anything else running at the same time.
The defaults are designed to be intuitive:
| Action | Default key |
|---|---|
| Footswitches 1–8 | 1 2 3 4 5 6 7 8 |
| Snapshots 1–4 | Q W E R |
| Next / Previous Snapshot | ↑ ↓ |
| Next / Previous Preset | → ← |
| Toggle Tuner | T |
Nothing is fixed. Every binding is remappable in Settings (discussed next section). Click a box, press the key you want, done. Backspace or Delete clears it. If you accidentally assign the same key twice, HexTile will catch it before saving and tell you exactly which shortcuts are conflicting.
The decision to keep shortcuts window-scoped rather than global was deliberate. Global hotkeys are powerful but risky. A wrong binding can swallow keystrokes from your DAW or any other focused application. Window-scoped keeps things predictable: HexTile only acts on key presses when you’re actually using it.
Settings: Persistent configuration across sessions
v1.0.0 had no settings at all. Your MIDI channel was hardcoded to 1. v1.0.1 introduces a proper Settings window (via Actions > Settings) backed by a JSON file stored in %APPDATA%\HexTile\settings.json.
Right now it exposes two things:
- MIDI Base Channel — configurable from 1 to 16, must match the MIDI Base Channel in your HX Stomp’s global settings
- Keyboard Shortcuts — all 17 bindings, individually remappable
The settings architecture was built to grow. Adding a new setting is a matter of adding a property to the data model, a default, and a UI row. The persistence and serialisation layer handles the rest automatically.
Note: Tech savvy of us can adjust those settings in a text editor but it’s highly advised to do so only via HexTile. If in doubt, delete the settings and defaults will recreate them.
Always on Top
A small but practically useful addition. Toggle Actions > Always on Top and HexTile will stay above every other window on your screen. You DAW, browser, tabs, everything. A checkmark in the menu confirms when it’s active. If you’re running HexTile on a secondary monitor alongside a DAW, this makes it far less likely to disappear behind another window at the wrong moment.
A faster, more responsive feel
v1.0.0 had a deliberate delay built in before each MIDI command was sent. It was added as a precaution but in practice it just made the app feel sluggish. In v1.0.1 that delay is gone entirely. Commands fire the moment you click or press a key. The visual reset delay on buttons (the brief feedback flash) has also been cut from 1000ms to 500ms. The result is an app that feels immediate rather than hesitant.
Note: This timing was tested across a number of presets I use, however if you map loopers to footswitches this timing still isn’t ideal. See Futures for more on this.
Dark theme polish
The ComboBox and MenuItem controls in v1.0.0 defaulted to the system light theme, which looked out of place in an otherwise dark UI. v1.0.1 introduces custom ControlTemplate definitions that bring both controls fully in line with the rest of the app’s styling.
What’s next
HexTile is intentionally minimal. The goal has always been to do one thing well rather than grow into a feature-heavy tool that becomes its own source of friction. It was developed for me initially but has been shared across a few people and now publicly available via Github. It was meant to primarily solve access as I’d often have my stomp on a board with other pedals, maybe into my amp that was often distanced from my laptop. The people I’ve shared this with have commented how easy it is to use with no knowledge of MIDI required.
That said, two areas are being considered for future versions:
Looper control. The HX Stomp has a looper and there’s a case for exposing record/play/stop/overdub as dedicated tiles. You can technically map them to footswitches and use the footswitch functions but due to UI delays its often sluggish to stop the recording. The open question is timing. Triggering looper functions needs to feel instantaneous, and there’s work to do in thinking through how a configurable pre-record delay (for musicians who want a count-in) would fit the existing model.
Cross-platform support. HexTile is Windows-only today. It’s built on WPF, which is Windows-specific. A cross-platform version would require a UI framework change. I initial thought of MAUI but honestly there is no demand currently, and this is only worth pursuing if there is genuine demand. The architecture of the Core layer is already platform-agnostic (if C# is used), so the UI would be the primary work.
Installation and Source
If you have an HX Stomp or the XL variant and you’re on Windows, feel free to give it a try. The installer is available here, and you can find the full repo at HexTile on GitHub.
Once the HexTile-Setup-1.0.1.exe has been downloaded, its simple as running it. No admin rights required. Plug your HX Stomp via USB and run the application. You may want to configure settings (Actions > Settings) and set your MIDI Base Channel to match your HX Stomp’s global MIDI settings. If you’ve never messed around with it then chances are its 1, which is default.