L7: capture-order slot model, card metadata overlay, tertiary-border selection
Add gap-preserving per-bank SlotMap (reorder + Alt-replace mutators, JSON round-trip, insertion-order migration) to bank_book; stamp captureTimeSig on Sample; pure card_meta formatters + card_drag gesture/slot module; card metadata overlay + purple selection border in the panel. Shell drop/cursor wiring deferred. Fixes: removeSample syncs SlotMap; card_drag gap-probe coordinate.
This commit is contained in:
@@ -33,6 +33,8 @@ static Sample fullSample(const std::string& seed) {
|
||||
s.lengthSeconds = 3.141592653589793;
|
||||
s.lengthBeats = 4.0;
|
||||
s.captureTempo = 128.5;
|
||||
s.captureTimeSigNum = 6; // L7 F1 meter stamp (non-4/4 to prove it round-trips)
|
||||
s.captureTimeSigDenom = 8;
|
||||
s.key = "F#m";
|
||||
s.levels = {-0.3, -12.7, -14.2};
|
||||
s.clipped = true;
|
||||
@@ -77,6 +79,11 @@ static void testFullFieldRoundTrip() {
|
||||
if (back) {
|
||||
const Sample* full = back->query("id-a");
|
||||
CHECK(full && full->key.has_value() && *full->key == "F#m");
|
||||
// L7 F1 meter stamp survived exactly.
|
||||
CHECK(full && full->captureTimeSigNum == 6 && full->captureTimeSigDenom == 8);
|
||||
// The minimal sample never stamped a meter -> 0/0 (the unstamped default).
|
||||
const Sample* minMeter = back->query("min-b");
|
||||
CHECK(minMeter && minMeter->captureTimeSigNum == 0 && minMeter->captureTimeSigDenom == 0);
|
||||
CHECK(full && full->provenance.has_value());
|
||||
CHECK(full && full->provenance->fxChainSnapshot == "<FXCHAIN\n BYPASS 0 0 0\n>");
|
||||
|
||||
|
||||
Reference in New Issue
Block a user