GuitarPrometheus::Project
GuitarPrometheus::Project
Namespaces
| Name |
|---|
| GuitarPrometheus::Project::ProjectSerializer Pure JSON / gzip / base64 boundary helpers. |
Classes
| Name | |
|---|---|
| struct | GuitarPrometheus::Project::ExportConfigData Serialization-friendly mirror of [Midi::ExportConfig](/api-reference/classes/structguitarprometheus_1_1midi_1_1exportconfig/). |
| struct | GuitarPrometheus::Project::HumanizerConfigData Serialization-friendly mirror of [Midi::HumanizerConfig](/api-reference/classes/structguitarprometheus_1_1midi_1_1humanizerconfig/). |
| class | GuitarPrometheus::Project::Project A user’s working state for one MusicXML arrangement. |
| struct | GuitarPrometheus::Project::ProjectIssue One diagnostic from project load / validation. |
| class | GuitarPrometheus::Project::ProjectMigrationRegistry Process-wide registry of schema-bump transformers. |
| class | GuitarPrometheus::Project::ProjectSchema Compiled-in copy of the Project v4 JSON Schema. |
| class | GuitarPrometheus::Project::ProjectStore Load / save .gpproj files. |
| struct | GuitarPrometheus::Project::RebuildResult Result of remapping a Project’s persisted state onto a freshly-parsed Score. |
| struct | GuitarPrometheus::Project::TrackBinding Per-track persistent binding from a MusicXML score-part to the VST Profile the user picked for it. |
Types
| Name | |
|---|---|
| enum class | OctaveCorrectionMode { Manual, Inferred} Per-part octave correction strategy. |
| enum class | SourceFormat { MusicXml, Gp, Gpx} Originating format of a project’s embedded score source. |
| enum class | IssueSeverity { Error, Warning} Severity of a project diagnostic. |
| using std::pair< int, int > | TempoOverrideKey Key for a single user-edited tempo override. |
| using std::map< TempoOverrideKey, int > | TempoOverrides User-edited tempo overrides keyed by (measureNumber, tickWithinMeasure) and valued in BPM. |
| using std::function< nlohmann::json(const nlohmann::json &)> | ProjectMigrationFn A single schema migration: takes a JSON object at version N and returns the equivalent at N+1. |
Functions
| Name | |
|---|---|
| RebuildResult | rebuildProjectForScore(const Project & oldProject, const SongStructure::Score & newScore) Project gains a new MusicXML payload — rewire the persisted state to match. |
| void | registerBundledMigrations(ProjectMigrationRegistry & registry) Register every production schema migration on the supplied registry. |
| nlohmann::json | profileOverridesV2ToV3(const nlohmann::json & in) |
| nlohmann::json | mergedSourcesV3ToV4(const nlohmann::json & in) |
| nlohmann::json | sourceFormatV4ToV5(const nlohmann::json & in) |
Types Documentation
enum OctaveCorrectionMode
| Enumerator | Value | Description |
|---|---|---|
| Manual | ||
| Inferred |
Per-part octave correction strategy.
Manual: the integeroctaveOffsetByPartentry is the offset that gets applied. Default.Inferred:OctaveTransposercomputes the offset from the part’s tuning + each note’s string / fret data. Manual offset is ignored when set toInferred.
enum SourceFormat
| Enumerator | Value | Description |
|---|---|---|
| MusicXml | ||
| Gp | ||
| Gpx |
Originating format of a project’s embedded score source.
Recorded in the .gpproj so a project file remembers whether its sourceGzip bytes came from MusicXML, a Guitar Pro 7/8 .gp, or a Guitar Pro 6 .gpx. Drives importer selection at project-reopen time.
enum IssueSeverity
| Enumerator | Value | Description |
|---|---|---|
| Error | ||
| Warning |
Severity of a project diagnostic.
Errors block load (Project not constructed); warnings are surfaced for the user to act on but don’t prevent the project from loading.
using TempoOverrideKey
using GuitarPrometheus::Project::TempoOverrideKey = typedef std::pair<int , int >;Key for a single user-edited tempo override.
Composed of a 1-based measure number and an in-measure tick offset (in PPQN-480 ticks from the measure downbeat). tickWithinMeasure == 0 is the downbeat — the only shape [Project](/api-reference/classes/classguitarprometheus_1_1project_1_1project/) schema v1 supported. Schema v2 (F9.6) lifted that restriction so users can change tempo mid-measure.
using TempoOverrides
using GuitarPrometheus::Project::TempoOverrides = typedef std::map<TempoOverrideKey, int>;User-edited tempo overrides keyed by (measureNumber, tickWithinMeasure) and valued in BPM.
Lives on [Project](/api-reference/classes/classguitarprometheus_1_1project_1_1project/). The MidiWriter resolves each key to an absolute MIDI tick at export time using the Score’s measure-start map plus the per-key tick offset.
using ProjectMigrationFn
using GuitarPrometheus::Project::ProjectMigrationFn = typedef std::function<nlohmann::json(const nlohmann::json&)>;A single schema migration: takes a JSON object at version N and returns the equivalent at N+1.
Pure function — must not touch I/O. Registered with [ProjectMigrationRegistry](/api-reference/classes/classguitarprometheus_1_1project_1_1projectmigrationregistry/). The registry calls registered transformers in order to lift an old document to the current schema version before ProjectValidator runs.
Functions Documentation
function rebuildProjectForScore
RebuildResult rebuildProjectForScore( const Project & oldProject, const SongStructure::Score & newScore)Project gains a new MusicXML payload — rewire the persisted state to match.
Parameters:
- oldProject The Project whose persisted state is being preserved.
- newScore Freshly-parsed Score from the replacement MusicXML.
Pure: no I/O, no AppController dependency, fully testable. The caller (AppController) is responsible for actually swapping the Project + Score after this returns.
function registerBundledMigrations
void registerBundledMigrations( ProjectMigrationRegistry & registry)Register every production schema migration on the supplied registry.
Idempotent: registering the same (from, to) edge replaces the previously-registered function with an identical one. [ProjectStore::load](/api-reference/classes/classguitarprometheus_1_1project_1_1projectstore/#function-load) calls this at the start of every load so that even tests that clear() the registry (e.g. F9.1’s ScopedMigration fixture) don’t accidentally lose the production migrations on the next load.
function profileOverridesV2ToV3
nlohmann::json profileOverridesV2ToV3( const nlohmann::json & in)function mergedSourcesV3ToV4
nlohmann::json mergedSourcesV3ToV4( const nlohmann::json & in)function sourceFormatV4ToV5
nlohmann::json sourceFormatV4ToV5( const nlohmann::json & in)Updated on 2026-05-29 at 07:39:52 +0000