Skip to content

GuitarPrometheus::Project

GuitarPrometheus::Project

Namespaces

Name
GuitarPrometheus::Project::ProjectSerializer
Pure JSON / gzip / base64 boundary helpers.

Classes

Name
structGuitarPrometheus::Project::ExportConfigData
Serialization-friendly mirror of [Midi::ExportConfig](/api-reference/classes/structguitarprometheus_1_1midi_1_1exportconfig/).
structGuitarPrometheus::Project::HumanizerConfigData
Serialization-friendly mirror of [Midi::HumanizerConfig](/api-reference/classes/structguitarprometheus_1_1midi_1_1humanizerconfig/).
classGuitarPrometheus::Project::Project
A user’s working state for one MusicXML arrangement.
structGuitarPrometheus::Project::ProjectIssue
One diagnostic from project load / validation.
classGuitarPrometheus::Project::ProjectMigrationRegistry
Process-wide registry of schema-bump transformers.
classGuitarPrometheus::Project::ProjectSchema
Compiled-in copy of the Project v4 JSON Schema.
classGuitarPrometheus::Project::ProjectStore
Load / save .gpproj files.
structGuitarPrometheus::Project::RebuildResult
Result of remapping a Project’s persisted state onto a freshly-parsed Score.
structGuitarPrometheus::Project::TrackBinding
Per-track persistent binding from a MusicXML score-part to the VST Profile the user picked for it.

Types

Name
enum classOctaveCorrectionMode { Manual, Inferred}
Per-part octave correction strategy.
enum classSourceFormat { MusicXml, Gp, Gpx}
Originating format of a project’s embedded score source.
enum classIssueSeverity { 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
RebuildResultrebuildProjectForScore(const Project & oldProject, const SongStructure::Score & newScore)
Project gains a new MusicXML payload — rewire the persisted state to match.
voidregisterBundledMigrations(ProjectMigrationRegistry & registry)
Register every production schema migration on the supplied registry.
nlohmann::jsonprofileOverridesV2ToV3(const nlohmann::json & in)
nlohmann::jsonmergedSourcesV3ToV4(const nlohmann::json & in)
nlohmann::jsonsourceFormatV4ToV5(const nlohmann::json & in)

Types Documentation

enum OctaveCorrectionMode

EnumeratorValueDescription
Manual
Inferred

Per-part octave correction strategy.

  • Manual: the integer octaveOffsetByPart entry is the offset that gets applied. Default.
  • Inferred: OctaveTransposer computes the offset from the part’s tuning + each note’s string / fret data. Manual offset is ignored when set to Inferred.

enum SourceFormat

EnumeratorValueDescription
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

EnumeratorValueDescription
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