Bake window derives itself: %-knob fold, declick pad, Gate held to exhaustion, preview velocity; Hold is the one knob a loop needs
This commit is contained in:
@@ -15,6 +15,7 @@
|
||||
#include "core/model/bank_book.h" // BankBook::deserialize (shared bank JSON parse)
|
||||
#include "core/instrument/engine/play_params.h" // SampleData, SampleLoop, PlayParams
|
||||
#include "core/instrument/map/play_seconds.h" // PlaySeconds (the stored seconds value layer)
|
||||
#include "core/instrument/note/musical_division.h" // Division (the bake hold's value domain)
|
||||
#include "core/capture/wav_codec.h" // parseWavLayout, extractFloatFrames (shared WAV parse)
|
||||
|
||||
namespace reasampler::instrument::map {
|
||||
@@ -188,6 +189,12 @@ struct InstrumentParams {
|
||||
// tier-0 AHDSR seconds (0.003 attack / 0.060 release), hold 0, no fades, Preserve pitch
|
||||
// engine, pitch env off. An older blob lacking this tail lifts to exactly these.
|
||||
PlaySeconds play;
|
||||
|
||||
// How long the resample bake holds the gate. Read ONLY when the bake window cannot be
|
||||
// derived — a Gate voice over an active sustain loop, which sounds indefinitely
|
||||
// (bake_plan.h's bakeWindowNeedsHold is the predicate). Default one bar; a blob predating
|
||||
// the field lifts to it, and no other bake changes.
|
||||
note::Division bakeHold = note::makeDivision(2, note::DivisionModifier::Straight);
|
||||
};
|
||||
|
||||
// The loaded capture resolved for decode + build: project-relative WAV path (file seam)
|
||||
|
||||
Reference in New Issue
Block a user