One taper, one modifier law: extract param_taper, raise the stage ceiling to 10 s, and make the AHDSR schematic axis the taper itself

This commit is contained in:
2026-08-01 19:09:19 -04:00
parent e589addc54
commit 3eb72d01c4
23 changed files with 1208 additions and 193 deletions
+10
View File
@@ -15,6 +15,7 @@
#include "core/instrument/map/sample_map.h" // SampleChoice / SampleRefs (sampleLabel)
#include "core/instrument/ui/editor_geometry.h" // Rect (the shared sub-rect type)
#include "core/instrument/ui/keyboard_strip.h" // noteName (the one note-naming source)
#include "core/instrument/ui/param_taper.h" // DragModifiers (the shared interaction law)
#ifdef _WIN32
#include "wdltypes.h"
@@ -70,6 +71,15 @@ inline std::string sampleLabel(const std::vector<instrument::map::SampleChoice>&
#ifdef _WIN32
// THE modifier read, for every drag surface and every gesture resolver. One helper so the editor
// cannot grow a second modifier grammar. GetKeyState rather than WM_MOUSEMOVE's wParam because a
// modifier can be pressed or released with the mouse standing still, and the re-anchor has to see
// that on the next move it does get.
inline instrument::ui::DragModifiers dragModifiers() {
return instrument::ui::DragModifiers{(GetKeyState(VK_SHIFT) & 0x8000) != 0,
(GetKeyState(VK_CONTROL) & 0x8000) != 0};
}
// The editor's own sub-rect type is `Rect` (editor_geometry); the kit draws against
// `KitBox` (component_geometry). This is the single boundary that bridges them so every
// draw routes through the shared kit (theme roles + draw_kit).