From bc643fc67241f1b36a5f4f3d1ca7b88241e4009f Mon Sep 17 00:00:00 2001 From: ChrisBeWithYou Date: Tue, 14 Jul 2026 11:31:55 -0500 Subject: [PATCH 1/4] Add Logical and Cableton keybind profiles as deltas over FeedBack Four profiles: feedback/eof keep their hand resolvers; logical (Logic defaults: K click, Q quantize, ,/. transport, C cycle, Alt+' marker, Ctrl+R repeat) and cableton (Live defaults: Ctrl+U quantize, Ctrl+1/2 grid, Ctrl+4 snap, O click, Ctrl+Shift+F follow, Ctrl+L loop) resolve an override table first and fall through to the FeedBack meaning. Shadowed commands relocate or go explicitly keyless (absent-vs-'' in the registry keys drives honest display). toggleLoopRegion and songFit join the registry; Song Fit gains a Tempo/Grid menu row. Co-Authored-By: Claude Opus 4.8 (1M context) Claude-Session: https://claude.ai/code/session_01EBQCHCNA81E9tHmSDHSe2Q --- CHANGELOG.md | 21 +++++ docs/USER-GUIDE.md | 10 ++- screen.html | 8 +- src/input.js | 24 +++++- src/menu-bar.js | 7 +- src/shortcuts.js | 119 ++++++++++++++++++++++----- tests/keybind_profiles.test.mjs | 139 ++++++++++++++++++++++++++++++++ 7 files changed, 296 insertions(+), 32 deletions(-) create mode 100644 tests/keybind_profiles.test.mjs diff --git a/CHANGELOG.md b/CHANGELOG.md index 1dcd3079..cfee64c6 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -127,6 +127,27 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0 known the editor *probably* has something but couldn't find which menu it lives in, this is the answer: type "snap", "tempo", "export", "guide" and the matching commands surface instantly, fuzzy matching included. +- **Two new shortcut profiles: Logical and Cableton.** If your hands already + know a DAW, the editor can meet them there. **Logical** (Logic-style) puts + the metronome on **K**, quantize on **Q**, steps the playhead by beat with + **`,` / `.`**, loops the selection with **C**, creates a section with + **Alt+'** (the marker key), and repeats a selection with **Ctrl+R**. + **Cableton** (Ableton-style) quantizes with **Ctrl+U**, narrows/widens the + grid with **Ctrl+1 / Ctrl+2**, toggles snap with **Ctrl+4**, clicks with + **O**, follows playback with **Ctrl+Shift+F**, and loops the selection with + **Ctrl+L**. Everything a profile doesn't remap keeps its FeedBack key, so + editor-specific commands (techniques, tempo mapping, string moves) work + identically everywhere — and where a DAW key displaces a FeedBack one, the + displaced command relocates or shows as keyless in the shortcut panel, never + silently double-bound. The old EOF profile is still here as **Legacy + (EOF)**. Switch in Help ▸ Shortcut profile, the Shortcuts panel, or the + toolbar select; the shortcut panel always shows the keys for whichever + profile is live. +- **Loop toggle and Song Fit are real commands now.** "Toggle loop playback + for the selected region" and "Song Fit" joined the command registry, so both + are reachable from anywhere commands are listed, Song Fit gained a menu home + (**Tempo/Grid ▸ Song Fit**), and profiles can bind keys to them (Logical's C + and Cableton's Ctrl+L drive the loop toggle). - **Scan for tempo zones (preview).** A new **Tempo/Grid ▸ Scan for tempo zones** action reads the recording and reports the handful of *tempo intents* it finds — e.g. "3 tempo zones detected: 120 bpm · 140 bpm · rit 140→90". It's the first diff --git a/docs/USER-GUIDE.md b/docs/USER-GUIDE.md index 0e244447..fc14d611 100644 --- a/docs/USER-GUIDE.md +++ b/docs/USER-GUIDE.md @@ -5,9 +5,13 @@ grid up to the music, place the notes, mark the tempo and sections, and build a `.feedpak` the rest of the app can practice against. This guide is the same content you get in-app from **Help ▸ User Guide**. It -covers the FeedBack shortcut profile (the default); the EOF Legacy profile -remaps some keys — switch profiles in **Help ▸ Shortcut profile** or the -shortcut panel (`?`). +covers the FeedBack shortcut profile (the default). Three other profiles remap +some keys to match muscle memory you may already have: **Logical** +(Logic-style — K clicks the metronome, Q quantizes, `,`/`.` step by beat, C +loops the selection), **Cableton** (Ableton-style — Ctrl+U quantizes, Ctrl+1/2 +narrow/widen the grid, Ctrl+4 toggles snap, Ctrl+L loops), and **Legacy +(EOF)**. Anything a profile doesn't remap keeps its FeedBack key. Switch +profiles in **Help ▸ Shortcut profile** or the shortcut panel (`?`). ![The Song Editor loaded with a song: the menu bar and toolbars up top, the timeline (waveform and colored note blocks per string) in the middle, the transport and inspector around it.](../assets/guide/workspace.png) diff --git a/screen.html b/screen.html index d6a111ab..14a2c91a 100644 --- a/screen.html +++ b/screen.html @@ -182,7 +182,9 @@ Keys: @@ -305,7 +307,9 @@ Profile Right-click