Skip to content

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