GuitarPrometheus::Midi::ExportConfig
GuitarPrometheus::Midi::ExportConfig
Top-level user-facing render configuration. More…
#include <ExportConfig.h>
Public Attributes
| Name | |
|---|---|
| std::map< juce::Uuid, int > | octaveOffsetByPart Integer number of octaves to transpose the part. |
| std::map< juce::Uuid, OctaveCorrectionMode > | octaveCorrectionByPart Per-part octave correction mode. |
| std::map< juce::Uuid, HumanizerConfig > | humanizerByPart Per-part humanizer settings. |
| std::map< juce::Uuid, bool > | stackPickDirectionByPart Per-part toggle for stacking pick-direction keyswitches alongside technique keyswitches when the resolved technique is single (not pickable). |
Detailed Description
struct GuitarPrometheus::Midi::ExportConfig;Top-level user-facing render configuration.
Holds export-time properties — things that are not owned by the source score and not owned by the VST profile, but selected per conversion: per-track octave offsets (the bass-is-an-octave-low fix), per-track humanizer settings.
Keys are [Part::getId()](/api-reference/classes/classguitarprometheus_1_1songstructure_1_1part/#function-getid) (juce::Uuid). Missing keys mean “use defaults”: octave offset 0, no-op humanizer.
Mutability: the UI (Phase 7) mutates this struct; the pipeline stages (OctaveTransposer, Humanizer) only read from it. Constructed once per conversion.
Public Attributes Documentation
variable octaveOffsetByPart
std::map< juce::Uuid, int > octaveOffsetByPart;Integer number of octaves to transpose the part.
Positive = up, negative = down. Applied by OctaveTransposer after keyswitch injection and before humanization. Drum parts (identified by per-note instrumentRef) are skipped regardless of this setting.
variable octaveCorrectionByPart
std::map< juce::Uuid, OctaveCorrectionMode > octaveCorrectionByPart;Per-part octave correction mode.
Missing entries default to Manual so the existing octaveOffsetByPart integer behaviour is preserved.
variable humanizerByPart
std::map< juce::Uuid, HumanizerConfig > humanizerByPart;Per-part humanizer settings.
Missing entries get a default-constructed (no-op) config.
variable stackPickDirectionByPart
std::map< juce::Uuid, bool > stackPickDirectionByPart;Per-part toggle for stacking pick-direction keyswitches alongside technique keyswitches when the resolved technique is single (not pickable).
Missing entries default to true so older projects keep the historic behaviour. When false for a part, single-resolution techniques on that part emit only the technique’s keyswitch — no pick-direction NoteOn alongside.
Pickable variants always own their direction internally (the variant child captures it), so this flag has no effect when the technique resolves through a pickable variant.
Updated on 2026-05-29 at 07:39:52 +0000