Skip to content

GuitarPrometheus::Techniques

GuitarPrometheus::Techniques

Classes

Name
classGuitarPrometheus::Techniques::ArticulationSet
Compact set of per-note articulations attached to an Engraving.
classGuitarPrometheus::Techniques::TechniqueSet
Compact set of per-note techniques attached to an Engraving.

Types

Name
enum classArticulation { Staccato, Accent, StrongAccent, Grace}
Note-shape markings parsed from MusicXML <articulations> elements.
enum classTechnique { Muting, Vibrato, VibratoWTremBar, NaturalHarmonic, PinchHarmonic, FingerPluckOpen, FingerPluckDead, TremoloPick, ThumbSlap, Pop, Tap, LhTap, ChokedNote, PickScrape, AutoSlide, HammerOn, PullOff, Slur, Slide, SlideInFromAbove, SlideInFromBelow, SlideOutDown, SlideOutUp, Bend}
Performance techniques observed in Guitar Pro 8 MusicXML exports.
enum classCategory { Sustained, PerNote, Span}
Categorization of a technique’s MIDI emission semantics.

Functions

Name
std::string_viewtoJSON(Articulation a)
Returns the PascalCase profile-JSON name of the articulation (e.g.
std::string_viewtoXML(Articulation a)
Returns the MusicXML element name of the articulation (e.g.
std::string_viewtoHumanReadable(Articulation a)
Returns a user-facing label for the articulation (e.g.
std::optional< Articulation >articulationFromJSON(std::string_view name)
Parse a profile-JSON name back to an Articulation.
std::optional< Articulation >articulationFromXML(std::string_view name)
Parse a MusicXML element name back to an Articulation.
const std::array< Technique, kNumTechniques > &allTechniques()
Canonical array of all technique enum values in declaration order.
std::string_viewtoJSON(Technique t)
Returns the PascalCase profile-JSON name of the technique (e.g.
std::string_viewtoXML(Technique t)
Returns the MusicXML element name of the technique (e.g.
std::string_viewtoHumanReadable(Technique t)
Returns a user-facing label for the technique (e.g.
CategorygetCategory(Technique t)
Returns the MIDI-emission category (Sustained, PerNote, or Span) for a technique.
boolisUniversal(Technique t)
Whether a technique belongs to the “universal” set shown by default in new profiles.
std::optional< Technique >techniqueFromJSON(std::string_view name)
Parse a profile-JSON name back to a Technique.
std::optional< Technique >techniqueFromXML(std::string_view name)
Parse a MusicXML element name back to a Technique.

Attributes

Name
constexpr std::size_tkNumArticulations
Count of Articulation enumerators.
constexpr std::size_tkNumTechniques
Count of Technique enumerators.

Types Documentation

enum Articulation

EnumeratorValueDescription
Staccato
Accent
StrongAccent
Grace

Note-shape markings parsed from MusicXML <articulations> elements.

Articulations shape the envelope of a single note (velocity, length) rather than triggering a sustained or span keyswitch. They are always per-note in keyswitch-firing semantics, so no Category accompanies them.

New articulations are added here when discovered in real files.

enum Technique

EnumeratorValueDescription
Muting
Vibrato
VibratoWTremBar
NaturalHarmonic
PinchHarmonic
FingerPluckOpen
FingerPluckDead
TremoloPick
ThumbSlap
Pop
Tap
LhTap
ChokedNote
PickScrape
AutoSlide
HammerOn
PullOff
Slur
Slide
SlideInFromAbove
SlideInFromBelow
SlideOutDown
SlideOutUp
Bend

Performance techniques observed in Guitar Pro 8 MusicXML exports.

Techniques trigger keyswitches that change how the instrument produces a sustained or span of notes (palm-mute, hammer-on, bend, …). Note-shape markings (staccato, accent, …) live in the separate Articulation enum because MusicXML separates them, and because assigning a velocity/length mod to a technique like palm-mute would be semantically meaningless.

New techniques are added here when discovered in real files.

enum Category

EnumeratorValueDescription
Sustained
PerNote
Span

Categorization of a technique’s MIDI emission semantics.

Used by Phase 5 to decide how a keyswitch is fired.

Functions Documentation

function toJSON

std::string_view toJSON(
Articulation a
)

Returns the PascalCase profile-JSON name of the articulation (e.g.

"Staccato").

function toXML

std::string_view toXML(
Articulation a
)

Returns the MusicXML element name of the articulation (e.g.

"strong-accent").

function toHumanReadable

std::string_view toHumanReadable(
Articulation a
)

Returns a user-facing label for the articulation (e.g.

"Strong Accent").

function articulationFromJSON

std::optional< Articulation > articulationFromJSON(
std::string_view name
)

Parse a profile-JSON name back to an Articulation.

Return: The matching articulation, or nullopt if the name is not recognized.

function articulationFromXML

std::optional< Articulation > articulationFromXML(
std::string_view name
)

Parse a MusicXML element name back to an Articulation.

Return: The matching articulation, or nullopt if the name is not recognized.

function allTechniques

const std::array< Technique, kNumTechniques > & allTechniques()

Canonical array of all technique enum values in declaration order.

function toJSON

std::string_view toJSON(
Technique t
)

Returns the PascalCase profile-JSON name of the technique (e.g.

"PalmMute").

function toXML

std::string_view toXML(
Technique t
)

Returns the MusicXML element name of the technique (e.g.

"palm-mute", "vibratoWTremBar").

Case-sensitive — matches the literal MusicXML emission from Guitar Pro.

function toHumanReadable

std::string_view toHumanReadable(
Technique t
)

Returns a user-facing label for the technique (e.g.

"Palm Mute").

function getCategory

Category getCategory(
Technique t
)

Returns the MIDI-emission category (Sustained, PerNote, or Span) for a technique.

function isUniversal

bool isUniversal(
Technique t
)

Whether a technique belongs to the “universal” set shown by default in new profiles.

function techniqueFromJSON

std::optional< Technique > techniqueFromJSON(
std::string_view name
)

Parse a profile-JSON name back to a Technique.

Return: The matching technique, or nullopt if the name is not recognized.

function techniqueFromXML

std::optional< Technique > techniqueFromXML(
std::string_view name
)

Parse a MusicXML element name back to a Technique.

Return: The matching technique, or nullopt if the name is not recognized.

Attributes Documentation

variable kNumArticulations

constexpr std::size_t kNumArticulations = 4;

Count of Articulation enumerators.

Used to size std::bitset containers.

Must be kept in sync with the enum. The static_assert below anchors it.

variable kNumTechniques

constexpr std::size_t kNumTechniques = 24;

Count of Technique enumerators.

Used to size std::bitset containers.

Must be kept in sync with the enum. The static_assert below anchors it.


Updated on 2026-05-29 at 07:39:52 +0000