25#include <unordered_set>
29#include "music_theory/music_theory.hpp"
31#include "musx/util/EnigmaString.h"
32#include "musx/util/PseudoTieUtils.h"
33#include "MusxInstance.h"
34#include "BaseClasses.h"
35#include "CommonClasses.h"
49class ChordSuffixElement;
55class MultiStaffInstrumentGroup;
113 struct PseudoTieShapeContext
118 bool usesAlternateSymbol{};
147 [[nodiscard]] std::optional<utils::PseudoTieShapeInfo>
calcIsPseudoTie(utils::PseudoTieMode mode,
154 [[nodiscard]] std::optional<PseudoTieShapeContext> calcPseudoTieShapeContext(
const EntryInfoPtr& forStartEntry)
const;
183 :
DetailsBase(document, partId, shareMode, system, staff, inci) {}
209 :
Baseline(document, partId, shareMode, system, staff, std::nullopt) {}
221 constexpr static std::string_view
XmlNodeName =
"baselinesSysChords";
233 constexpr static std::string_view
XmlNodeName =
"baselinesSysExprAboveStaff";
245 constexpr static std::string_view
XmlNodeName =
"baselinesSysExprBelowStaff";
257 constexpr static std::string_view
XmlNodeName =
"baselinesSysFingerboards";
269 constexpr static std::string_view
XmlNodeName =
"baselinesSysLyricsChorus";
281 constexpr static std::string_view
XmlNodeName =
"baselinesSysLyricsSection";
293 constexpr static std::string_view
XmlNodeName =
"baselinesSysLyricsVerse";
308 constexpr static std::string_view
XmlNodeName =
"baselinesChords";
323 constexpr static std::string_view
XmlNodeName =
"baselinesExprAboveStaff";
338 constexpr static std::string_view
XmlNodeName =
"baselinesExprBelowStaff";
353 constexpr static std::string_view
XmlNodeName =
"baselinesFingerboards";
369 constexpr static std::string_view
XmlNodeName =
"baselinesLyricsChorus";
385 constexpr static std::string_view
XmlNodeName =
"baselinesLyricsSection";
401 constexpr static std::string_view
XmlNodeName =
"baselinesLyricsVerse";
413 bool m_active =
true;
417 template <
typename SecondaryBeamType>
421 template <
typename SecondaryBeamType>
458 template <
typename T,
459 std::enable_if_t<std::is_base_of_v<BeamAlterations, T>,
int> = 0>
495 constexpr static std::string_view
XmlNodeName =
"beamAltPrimDownStem";
517 constexpr static std::string_view
XmlNodeName =
"beamAltPrimUpStem";
571 constexpr static std::string_view
XmlNodeName =
"beamExtendDownStem";
583 constexpr static std::string_view
XmlNodeName =
"beamExtendUpStem";
631 :
DetailsBase(document, partId, shareMode, cmper1, cmper2, inci)
677 Cmper calcFretboardGroupCmper()
const;
690 :
DetailsBase(document, partId, shareMode, staffId, meas, inci)
771 std::string_view xmlTag()
const override {
return XmlNodeName; }
800 std::string_view xmlTag()
const override {
return XmlNodeName; }
960 constexpr static std::string_view
XmlNodeName =
"entryPartFieldDetail";
1009 :
DetailsBase(document, partId, shareMode, cmper1, cmper2)
1064 std::vector<std::shared_ptr<Cell>>
cells;
1073 MUSX_INTEGRITY_ERROR(
"FretboardDiagram " + std::to_string(
getCmper1()) +
", " + std::to_string(
getCmper2())
1074 +
" specifies the wrong number of cells (" + std::to_string(oldVal) +
").");
1079 MUSX_INTEGRITY_ERROR(
"FretboardDiagram " + std::to_string(
getCmper1()) +
", " + std::to_string(
getCmper2())
1080 +
" specifies the wrong number of barres (" + std::to_string(oldVal) +
").");
1127 return std::count_if(
frames.begin(),
frames.end(), [](
Cmper frameId) { return frameId != 0; }) > 1;
1133 return std::find_if(
frames.begin(),
frames.end(), [](
Cmper frameId) { return frameId != 0; }) !=
frames.end();
1150 MUSX_INTEGRITY_ERROR(
"GFrameHold for staff " + std::to_string(
getCmper1()) +
" and measure " + std::to_string(
getCmper2()) +
" has both clef and clef list.");
1153 MUSX_INTEGRITY_ERROR(
"GFrameHold for staff " + std::to_string(
getCmper1()) +
" and measure " + std::to_string(
getCmper2()) +
" has neither clef nor clef list.");
1180 :
DetailsBase(document, partId, shareMode, staffId, meas)
1232 :
DetailsBase(document, partId, shareMode, cmper1, cmper2) {}
1239 return static_cast<int16_t
>(
getCmper2());
1407 :
DetailsBase(document, partId, shareMode, staffId, meas, inci)
1462 :
DetailsBase(document, partId, shareMode, staffId, meas, inci)
1571 {
return calcIsFeatheredBeamImpl<SecondaryBeamAlterationsDownStem>(entryInfo, outLeftY, outRightY); }
1604 {
return calcIsFeatheredBeamImpl<SecondaryBeamAlterationsUpStem>(entryInfo, outLeftY, outRightY); }
1637 MUSX_ASSERT_IF(!
mask ||
mask >=
unsigned(NoteType::Eighth)) {
1640 for (
unsigned shift = 0;
true; shift++) {
1641 if (
mask & (
unsigned(NoteType::Note16th) >> shift)) {
1653 mask = unsigned(NoteType::Note4096th);
1654 MUSX_INTEGRITY_ERROR(
"Secondary beam break for entry" + std::to_string(
getEntryNumber()) +
" has no breaks.");
1656 if (
mask >=
unsigned(NoteType::Eighth)) {
1657 mask = unsigned(NoteType::Eighth) - 1;
1658 MUSX_INTEGRITY_ERROR(
"Secondary beam break for entry" + std::to_string(
getEntryNumber()) +
" specifies a value that cannot be a secondary beam.");
1681 :
DetailsBase(document, partId, shareMode, cmper1, cmper2)
1705 const size_t currentSize =
noteShapes.size();
1708 noteShapes.emplace_back(std::make_shared<NoteShapes>());
1710 MUSX_INTEGRITY_ERROR(
"For ShapeNoteBase cmper " + std::to_string(
getCmper1()) +
", only " + std::to_string(currentSize)
1765 :
DetailsBase(document, partId, shareMode, cmper1, cmper2) {}
1850 {
return (
startMeas == 1 &&
endMeas == (std::numeric_limits<MeasCmper>::max)()); }
1856 MUSX_INTEGRITY_ERROR(
"Staff group " + std::to_string(
getCmper2()) +
" for part " + std::to_string(
getSourcePartId())
1857 +
" starts at measure " + std::to_string(
startMeas) +
" and ends at measure " + std::to_string(
endMeas));
1893 return std::nullopt;
1930 :
DetailsBase(document, partId, shareMode, system, staffId)
Base class to enforce polymorphism across all DOM classes.
Definition BaseClasses.h:83
DocumentPtr getDocument() const
Gets a reference to the Document.
Definition BaseClasses.h:108
Cmper getSourcePartId() const
Gets the source partId for this instance. If an instance is fully shared with the score,...
Definition BaseClasses.h:124
virtual void integrityCheck(const std::shared_ptr< Base > &ptrToThis)
Allows a class to determine if it has been properly contructed by the factory and fix issues that it ...
Definition BaseClasses.h:154
ShareMode
Describes how this instance is shared between part and score.
Definition BaseClasses.h:91
Template pattern for DetailsBase items consisting of an array of a single item.
Definition BaseClasses.h:538
DetailsArray(const DocumentWeakPtr &document, Cmper partId, ShareMode shareMode, Cmper cmper1, Cmper cmper2)
Constructor function.
Definition BaseClasses.h:544
Base class for all "details" types.
Definition BaseClasses.h:415
Cmper getCmper1() const
Gets the cmper1 key value.
Definition BaseClasses.h:459
Cmper getCmper2() const
Gets the cmper2 key value.
Definition BaseClasses.h:464
Base class for all "details" types that use entnum rather than cmper and cmper.
Definition BaseClasses.h:487
EntryNumber getEntryNumber() const
Gets the entnum key value.
Definition BaseClasses.h:526
StemSelection
The options for choosing which version to retrieve for stem-specific details.
Definition BaseClasses.h:492
@ MatchEntry
match entry's stem direction
Wraps a frame of shared_ptr<const EntryInfo> and an index for per entry access. This class manages ow...
Definition Entries.h:512
Represents the default font settings for a particular element type.
Definition CommonClasses.h:66
Provides optional per-type extension methods for MusxInstanceList.
Definition MusxInstance.h:103
Base class note details. Note details are entry details associated with a note ID.
Definition BaseClasses.h:569
Wraps an EntryInfo instance and a note index.
Definition Entries.h:1553
Represents display alterations to an accidental for a specific note.
Definition Details.h:81
Evpu hOffset
Horizontal offset: positive is right. (XML node: <axDisp>)
Definition Details.h:92
NoteNumber getNoteId() const override
Required virtual function that returns the note id.
Definition Details.h:98
bool useOwnFont
Whether to use customFont.
Definition Details.h:95
std::shared_ptr< FontInfo > customFont
Font settings for the accidental (populated from <fontID>, <fontSize>, and <efx>)
Definition Details.h:94
NoteNumber noteId
The ID of the note being altered.
Definition Details.h:89
AccidentalAlterations(const DocumentWeakPtr &document, Cmper partId, ShareMode shareMode, EntryNumber entnum, Inci inci)
Constructor.
Definition Details.h:84
Evpu vOffset
Vertical offset: positive is up. (XML node: <ayDisp>)
Definition Details.h:91
char32_t altChar
If non-zero, the character to use for the accidental. (Utf-32 if the font is a Unicode font....
Definition Details.h:93
bool allowVertPos
Whether to use vOffset.
Definition Details.h:96
int percent
The percentage size for the accidental, where 100 is 100%.
Definition Details.h:90
static constexpr std::string_view XmlNodeName
The XML node name for this type.
Definition Details.h:100
static const xml::XmlElementArray< AccidentalAlterations > & xmlMappingArray()
Required for musx::factory::FieldPopulator.
Assigns an articulation to an entry.
Definition Details.h:111
ArticulationAssign(const DocumentWeakPtr &document, Cmper partId, ShareMode shareMode, EntryNumber entnum, Inci inci)
Constructor function.
Definition Details.h:130
Cmper articDef
The articulation definition ID.
Definition Details.h:133
bool hide
Inverse of "Show" option.
Definition Details.h:140
bool neverStack
Whether the articulation should never stack relative to others.
Definition Details.h:141
int numSlursAvoided
Number of slurs avoided. Used internally by Finale's stacking algorithm.
Definition Details.h:143
bool avoidSlur
Whether the articulation should avoid slurs.
Definition Details.h:142
bool aboveEntry
When overridePlacement is true: whether the articulation is forced above or below the entry.
Definition Details.h:139
Evpu horzOffset
Horizontal offset from the default position.
Definition Details.h:134
bool overridePlacement
Whether the default placement is overridden.
Definition Details.h:138
static constexpr std::string_view XmlNodeName
The XML node name for this type.
Definition Details.h:151
static const xml::XmlElementArray< ArticulationAssign > & xmlMappingArray()
Required for musx::factory::FieldPopulator.
std::optional< utils::PseudoTieShapeInfo > calcIsPseudoTie(utils::PseudoTieMode mode, const EntryInfoPtr &forStartEntry) const
Calculates the pseudo-tie shape info if this articulation is acting as a pseudo tie for the specified...
Definition Details.cpp:150
Evpu vertOffset
Vertical offset from the default position.
Definition Details.h:136
Evpu vertAdd
Vertical displacement for character copying. (E.g., arpeggiated chord lines)
Definition Details.h:137
Evpu horzAdd
Horizontal displacement for character copying. (E.g., trill lines)
Definition Details.h:135
Contains the baseline offsets for chords.
Definition Details.h:303
static constexpr std::string_view XmlNodeName
The XML node name for this type.
Definition Details.h:308
Contains the baseline offsets for expressions above the staff.
Definition Details.h:318
static constexpr std::string_view XmlNodeName
The XML node name for this type.
Definition Details.h:323
Contains the baseline offsets for expressions below the staff.
Definition Details.h:333
static constexpr std::string_view XmlNodeName
The XML node name for this type.
Definition Details.h:338
Contains the baseline offsets for fretboards.
Definition Details.h:348
static constexpr std::string_view XmlNodeName
The XML node name for this type.
Definition Details.h:353
Contains the baseline offsets for lyrics chorus records.
Definition Details.h:363
static constexpr std::string_view XmlNodeName
The XML node name for this type.
Definition Details.h:369
Contains the baseline offsets for lyrics section records.
Definition Details.h:379
static constexpr std::string_view XmlNodeName
The XML node name for this type.
Definition Details.h:385
Contains the baseline offsets for lyrics verse records.
Definition Details.h:395
static constexpr std::string_view XmlNodeName
The XML node name for this type.
Definition Details.h:401
Encapsulates inci handling for non-inci baselines.
Definition Details.h:198
BaselineNoInci(const DocumentWeakPtr &document, Cmper partId, ShareMode shareMode, Cmper system, Cmper staff)
Constructor function.
Definition Details.h:208
Contains the baseline offsets for chords.
Definition Details.h:217
static constexpr std::string_view XmlNodeName
The XML node name for this type.
Definition Details.h:221
Contains the baseline offsets for expressions above the staff.
Definition Details.h:229
static constexpr std::string_view XmlNodeName
The XML node name for this type.
Definition Details.h:233
Contains the baseline offsets for expressions below the staff.
Definition Details.h:241
static constexpr std::string_view XmlNodeName
The XML node name for this type.
Definition Details.h:245
Contains the baseline offsets for fretboards.
Definition Details.h:253
static constexpr std::string_view XmlNodeName
The XML node name for this type.
Definition Details.h:257
Contains the baseline offsets for lyrics chorus records.
Definition Details.h:265
static constexpr std::string_view XmlNodeName
The XML node name for this type.
Definition Details.h:269
Contains the baseline offsets for lyrics section records.
Definition Details.h:277
static constexpr std::string_view XmlNodeName
The XML node name for this type.
Definition Details.h:281
Contains the baseline offsets for lyrics verse records.
Definition Details.h:289
static constexpr std::string_view XmlNodeName
The XML node name for this type.
Definition Details.h:293
Contains the baseline information for all baseline types.
Definition Details.h:171
std::optional< Cmper > lyricNumber
The 1-based text number of the lyric, if this is a lyrics baseline. Otherwise unused and should be st...
Definition Details.h:188
static const xml::XmlElementArray< Baseline > & xmlMappingArray()
Required for musx::factory::FieldPopulator.
Baseline(const DocumentWeakPtr &document, Cmper partId, ShareMode shareMode, Cmper system, Cmper staff, std::optional< Inci > inci)
Constructor function.
Definition Details.h:182
Evpu baselineDisplacement
Definition Details.h:185
Beam alteration for downstem primary beams.
Definition Details.h:483
static constexpr std::string_view XmlNodeName
The XML node name for this type.
Definition Details.h:495
BeamAlterationsDownStem(const DocumentWeakPtr &document, Cmper partId, ShareMode shareMode, EntryNumber entnum)
Constructor.
Definition Details.h:492
Beam alteration for upstem primary beams.
Definition Details.h:505
BeamAlterationsUpStem(const DocumentWeakPtr &document, Cmper partId, ShareMode shareMode, EntryNumber entnum)
Constructor.
Definition Details.h:514
static constexpr std::string_view XmlNodeName
The XML node name for this type.
Definition Details.h:517
Represents beam alterations applied to a specific entry. This is used to apply additional shaping or ...
Definition Details.h:411
static const xml::XmlElementArray< BeamAlterations > & xmlMappingArray()
Required for musx::factory::FieldPopulator.
bool isActive() const
Returns whether this beam alteration record is active. Its flattenStyle must match the value in optio...
Definition Details.h:455
Edu dura
For secondary beams, specifies the duration corresponding to the secondary beam (16th beam is 256,...
Definition Details.h:443
Evpu rightOffsetY
Vertical adjustment of the beam end. (xml node is <syAdd>)
Definition Details.h:442
FlattenStyle flattenStyle
Beam shaping style (xml node is <context>).
Definition Details.h:444
static MusxInstance< BeamAlterations > getSecondaryForStem(const EntryInfoPtr &entryInfo, Edu dura, StemSelection stemSelection=StemSelection::MatchEntry)
Gets the beam extension record for the specified stemSelection.
Definition Details.cpp:322
static MusxInstance< BeamAlterations > getPrimaryForStem(const EntryInfoPtr &entryInfo, StemSelection stemSelection=StemSelection::MatchEntry)
Gets the beam extension record for the specified stemSelection.
Definition Details.cpp:314
BeamAlterations(const DocumentWeakPtr &document, Cmper partId, ShareMode shareMode, EntryNumber entnum, std::optional< Inci > inci=std::nullopt)
Constructor.
Definition Details.h:433
static bool calcIsFeatheredBeamImpl(const EntryInfoPtr &entryInfo, Evpu &outLeftY, Evpu &outRightY)
Implementation of SecondaryBeamAlterationsDownStem::calcIsFeatheredBeam and SecondaryBeamAlterationsU...
Definition Details.cpp:237
Evpu rightOffsetH
Horizontal adjustment of the beam end. (xml node is <sxAdd>)
Definition Details.h:441
static MusxInstanceList< SecondaryBeamType > getSecondaryBeamArray(const EntryInfoPtr &entryInfo)
Generalized getter for secondary beam type arrays for either stem direction.
Definition Details.cpp:299
Evpu leftOffsetY
Vertical adjustment of the beam start. (xml node is <yAdd>)
Definition Details.h:440
Evpu leftOffsetH
Horizontal adjustment of the beam start. (xml node is <xAdd>)
Definition Details.h:439
Efix calcEffectiveBeamWidth() const
Calculates the effective beam width by returning either the default width or the width override value...
Definition Details.cpp:210
static void calcAllActiveFlags(const DocumentPtr &document)
Used by the factory to set active indicators.
Definition Details.cpp:190
Efix beamWidth
The calcEffectiveBeamWidth method handles this for you.
Definition Details.h:445
Beam extension for downstem beams.
Definition Details.h:567
static constexpr std::string_view XmlNodeName
The XML node name for this type.
Definition Details.h:571
Beam extension for upstem beams.
Definition Details.h:579
static constexpr std::string_view XmlNodeName
The XML node name for this type.
Definition Details.h:583
Represents both sides of a beam extension. It is attached to the first entry in the beam....
Definition Details.h:528
unsigned calcMaxExtension() const
Calculates the maximum beam extension.
Definition Details.cpp:360
static MusxInstance< BeamExtension > getForStem(const EntryInfoPtr &entryInfo, StemSelection stemSelection=StemSelection::MatchEntry)
Gets the beam extension record for the specified stemSelection.
Definition Details.cpp:382
bool extBeyond8th
Definition Details.h:545
Evpu rightOffset
Right extension offset. (xml node is <x4Disp>)
Definition Details.h:541
unsigned mask
Definition Details.h:542
static const xml::XmlElementArray< BeamExtension > & xmlMappingArray()
Required for musx::factory::FieldPopulator.
BeamExtension(const DocumentWeakPtr &document, Cmper partId, ShareMode shareMode, EntryNumber entnum)
Constructor.
Definition Details.h:537
Evpu leftOffset
Left extension offset. (xml node is <x3Disp>)
Definition Details.h:540
Specifies the direction for beam stubs (if they are manually overridden.)
Definition Details.h:595
unsigned mask
Definition Details.h:603
static constexpr std::string_view XmlNodeName
The XML node name for this type.
Definition Details.h:610
static const xml::XmlElementArray< BeamStubDirection > & xmlMappingArray()
Required for musx::factory::FieldPopulator.
bool isLeft() const
True if the beam stub(s) point left.
Definition Details.h:608
BeamStubDirection(const DocumentWeakPtr &document, Cmper partId, ShareMode shareMode, EntryNumber entnum)
Constructor function.
Definition Details.h:598
Represents a bracket, used in two different contexts:
Definition Details.h:627
static const xml::XmlElementArray< Bracket > & xmlMappingArray()
Required for musx::factory::FieldPopulator.
static constexpr std::string_view XmlNodeName
The XML node name for this type.
Definition Details.h:664
Evpu horzAdjLeft
"Distance from Left Edge of Staff" (xml node is <bracPos>)
Definition Details.h:659
Evpu vertAdjTop
"Vertical Adjust (Top of Bracket)" (xml node is <bracTop>)
Definition Details.h:660
Bracket(const DocumentWeakPtr &document, Cmper partId, ShareMode shareMode, Cmper cmper1, Cmper cmper2, Inci inci)
Constructor for top-level instances.
Definition Details.h:630
Evpu vertAdjBot
"Vertical Adjust (Bottom of Bracket)" (xml node is <bracBot>)
Definition Details.h:661
Bracket(const DocumentWeakPtr &document)
Constructor for embedded instances.
Definition Details.h:636
BracketStyle style
Bracket style (xml node is <id>)
Definition Details.h:658
BracketStyle
Bracket types.
Definition Details.h:646
@ ThickLine
Thick line, no hooks.
@ BracketCurvedHooks
Thick bracket with curved hooks.
@ DeskBracket
Thin bracket with horizontal hook lines.
@ Unknown4
Possibly never used.
@ Unknown7
Possibly never used.
@ None
No bracket (the default)
@ Unknown5
Possibly never used.
@ BracketStraightHooks
Thick bracket with straight hooks.
bool showOnSingleStaff
"Show Bracket If Group Contains Only One Staff" (only applies to staff groups: xml node is <onSingle>...
Definition Details.h:662
Represents chord symbol assignment for a staff and measure.
Definition Details.h:676
Edu horzEdu
Edu position in measure.
Definition Details.h:736
Evpu fbHorzOff
Horizontal offset of fretboard (in EVPU)
Definition Details.h:734
bool showFretboard
Show fretboard.
Definition Details.h:716
bool rootLowerCase
Display root in lowercase (minor triad)
Definition Details.h:712
bool playRoot
Playback root.
Definition Details.h:715
bool showRoot
Show root.
Definition Details.h:714
int bassAlter
Bass alteration.
Definition Details.h:720
BassPosition
Bass position options.
Definition Details.h:699
ChordAssign(const DocumentWeakPtr &document, Cmper partId, ShareMode shareMode, Cmper staffId, Cmper meas, Inci inci)
Constructor.
Definition Details.h:689
int rootScaleNum
Root scale degree: 0–6, where zero is the tonic.
Definition Details.h:710
Evpu fbVertOff
Vertical offset of fretboard (in EVPU)
Definition Details.h:735
bool showAltBass
Show alternate bass.
Definition Details.h:723
MusxInstanceList< others::ChordSuffixElement > getChordSuffix() const
Returns the chord suffix as an array of others::ChordSuffixElement.
Definition Details.cpp:403
Evpu horzOff
Horizontal offset of chord (in EVPU)
Definition Details.h:732
bool showSuffix
Show suffix.
Definition Details.h:717
MusxInstance< others::FretboardGroup > getFretboardGroup() const
Get the others::FretboardGroup instance for this chord assignment. You can use this to get the fret i...
Definition Details.cpp:408
Cmper suffixId
Definition Details.h:705
bool useFretboardFont
Definition Details.h:730
Inci fretboardGroupInci
Definition Details.h:727
bool playFretboard
Playback fretboard.
Definition Details.h:718
Cmper fbStyleId
The others::FretboardStyle ID. (Ignored when useFretboardFont is true.)
Definition Details.h:709
int fbPercent
FretboardDiagram scaling (100 means 100%)
Definition Details.h:738
static constexpr std::string_view XmlNodeName
The XML node name for this type.
Definition Details.h:751
int bassScaleNum
Bass scale degree: 0–6, where zero is the tonic.
Definition Details.h:719
Evpu vertOff
Vertical offset of chord (in EVPU)
Definition Details.h:733
int capoValue
Capo value (if useLocalCapo is true)
Definition Details.h:725
bool playAltBass
Playback alternate bass.
Definition Details.h:724
MusxInstance< others::FretboardStyle > getFretboardStyle() const
Returns the others::FretboardStyle instance for this chord assignment.
Definition Details.cpp:417
int chPercent
Chord scaling (100 means 100%)
Definition Details.h:737
int rootAlter
Root alteration.
Definition Details.h:711
bool playSuffix
Playback suffix.
Definition Details.h:713
bool useLocalCapo
Use local capo.
Definition Details.h:726
static const xml::XmlElementArray< ChordAssign > & xmlMappingArray()
Required for musx::factory::FieldPopulator.
bool bassLowerCase
Display bass in lowercase.
Definition Details.h:721
BassPosition bassPosition
Visual position of bass relative to root.
Definition Details.h:722
Defines the octaves in which each clef should display flats in key signatures. Only linear key signat...
Definition Details.h:770
static const xml::XmlElementArray< ClefOctaveFlats > & xmlMappingArray()
Required for musx::factory::FieldPopulator.
static constexpr std::string_view XmlNodeName
The XML node name for this type.
Definition Details.h:776
Defines the octaves in which each clef should display sharps in key signatures.
Definition Details.h:799
static const xml::XmlElementArray< ClefOctaveSharps > & xmlMappingArray()
Required for musx::factory::FieldPopulator.
static constexpr std::string_view XmlNodeName
The XML node name for this type.
Definition Details.h:805
Represents a cross-staff assignment for the note, if any.
Definition Details.h:818
NoteNumber getNoteId() const override
Required virtual function that returns the note id.
Definition Details.h:829
static constexpr std::string_view XmlNodeName
The XML node name for this type.
Definition Details.h:831
static const xml::XmlElementArray< CrossStaff > & xmlMappingArray()
Required for musx::factory::FieldPopulator.
CrossStaff(const DocumentWeakPtr &document, Cmper partId, ShareMode shareMode, EntryNumber entnum, Inci inci)
Constructor function.
Definition Details.h:821
NoteNumber noteId
The ID of the note being assigned to a different staff (XML node: <noteID>)
Definition Details.h:826
StaffCmper staff
The target staff (XML node: <instrument>)
Definition Details.h:827
Custom stem for downstem context.
Definition Details.h:883
static constexpr std::string_view XmlNodeName
The XML node name for this type.
Definition Details.h:887
Represents a custom stem definition (up or down) for an entry. Which stem direction this instance con...
Definition Details.h:844
Evpu yOffset
Optional vertical displacement. (xml node is <ydisp>)
Definition Details.h:858
bool calcIsHiddenStem() const
Calculates if this custom stem record hides the stem. The stem is determined to be hidden if one of t...
Definition Details.cpp:429
static MusxInstance< CustomStem > getForStem(const EntryInfoPtr &entryInfo, StemSelection stemSelection=StemSelection::MatchEntry)
Gets the beam extension record for the specified stemSelection.
Definition Details.cpp:439
static const xml::XmlElementArray< CustomStem > & xmlMappingArray()
Required for musx::factory::FieldPopulator.
Cmper shapeDef
The Cmper of the associated others::ShapeDef. Setting this value to zero hides the stem.
Definition Details.h:856
Evpu xOffset
Optional horizontal displacement. (xml node is <xdisp>)
Definition Details.h:857
CustomStem(const DocumentWeakPtr &document, Cmper partId, ShareMode shareMode, EntryNumber entnum)
Constructor.
Definition Details.h:853
Custom stem for upstem context.
Definition Details.h:897
static constexpr std::string_view XmlNodeName
The XML node name for this type.
Definition Details.h:901
Represents display offsets and spacing adjustments for augmentation dots on a specific note.
Definition Details.h:913
static constexpr std::string_view XmlNodeName
The XML node name for this type.
Definition Details.h:928
NoteNumber noteId
The ID of the note whose dots are adjusted.
Definition Details.h:921
Evpu hOffset
Horizontal offset for the dot (XML: <xadd>)
Definition Details.h:922
Evpu vOffset
Vertical offset for the dot (XML: <yadd>)
Definition Details.h:923
static const xml::XmlElementArray< DotAlterations > & xmlMappingArray()
Required for musx::factory::FieldPopulator.
Evpu interdotSpacing
Additional spacing between dots (XML: <posIncr>)
Definition Details.h:924
DotAlterations(const DocumentWeakPtr &document, Cmper partId, ShareMode shareMode, EntryNumber entnum, Inci inci)
Constructor.
Definition Details.h:916
NoteNumber getNoteId() const override
Required virtual function that returns the note id.
Definition Details.h:926
Per-part overrides for entry properties such as manual position and stem direction.
Definition Details.h:943
bool upStem
When freezeStem is true: whether the stem is forced up (otherwise down).
Definition Details.h:957
bool freezeStem
Whether the stem direction is frozen for this entry in this part.
Definition Details.h:956
Evpu hOffset
Manual offset created with the Note Position Tool. (xml node is <posi>.)
Definition Details.h:955
static const xml::XmlElementArray< EntryPartFieldDetail > & xmlMappingArray()
Required for musx::factory::FieldPopulator.
EntryPartFieldDetail(const DocumentWeakPtr &document, Cmper partId, ShareMode shareMode, EntryNumber entnum)
Constructor function.
Definition Details.h:952
static constexpr std::string_view XmlNodeName
The XML node name for this type.
Definition Details.h:960
Specifies a custom size for an entry. It scales the entire entry, including the stem and all notehead...
Definition Details.h:972
static constexpr std::string_view XmlNodeName
The XML node name for this type.
Definition Details.h:987
int percent
The note/chord size as a percent (e.g., 65 for 65%).
Definition Details.h:984
static const xml::XmlElementArray< EntrySize > & xmlMappingArray()
Required for musx::factory::FieldPopulator.
EntrySize(const DocumentWeakPtr &document, Cmper partId, ShareMode shareMode, EntryNumber entnum)
Constructor.
Definition Details.h:981
Represents a barre (spanning multiple strings).
Definition Details.h:1048
int endString
Ending 1-based string number.
Definition Details.h:1052
int startString
Starting 1-based string number.
Definition Details.h:1051
static const xml::XmlElementArray< Barre > & xmlMappingArray()
Required for musx::factory::FieldPopulator.
int fret
0-based fret number, where 0 signifies the open string. (Finale allows nut barres....
Definition Details.h:1050
Represents a single fretboard cell (string/fret position).
Definition Details.h:1033
Shape shape
Cell shape.
Definition Details.h:1037
int fingerNum
Finger number 0..5, where 0 means there is no finger number and 5 means T (thumb).
Definition Details.h:1038
int fret
0-based fret number, where 0 signifies the open string.
Definition Details.h:1036
static const xml::XmlElementArray< Cell > & xmlMappingArray()
Required for musx::factory::FieldPopulator.
FretboardDiagram diagram for chord symbols.
Definition Details.h:1003
int fretboardNum
FretboardDiagram number: the starting fret of the fretboard diagram (xml node <fretNum>).
Definition Details.h:1058
bool showNum
Show fretboard number.
Definition Details.h:1060
std::vector< std::shared_ptr< Barre > > barres
Array of fretboard barres.
Definition Details.h:1065
static const xml::XmlElementArray< FretboardDiagram > & xmlMappingArray()
Required for musx::factory::FieldPopulator.
int numFretCells
Number of fret cells (xml node <numFretCells>).
Definition Details.h:1061
Shape
Shape type for a fretboard cell.
Definition Details.h:1020
@ Closed
Closed dot (filled).
@ None
No explicit shape. This is the default value and may not occur in the xml.
@ Custom
Custom symbol. By default this is an open diamond signifying a harmonic.
bool lock
Lock flag (xml node <lock>).
Definition Details.h:1059
void integrityCheck(const std::shared_ptr< Base > &ptrToThis) override
Allows a class to determine if it has been properly contructed by the factory and fix issues that it ...
Definition Details.h:1067
int numFretBarres
Number of fret barres (xml node <numFretBarres>).
Definition Details.h:1062
FretboardDiagram(const DocumentWeakPtr &document, Cmper partId, ShareMode shareMode, Cmper cmper1, Cmper cmper2)
Constructor function.
Definition Details.h:1008
int numFrets
Number of frets.
Definition Details.h:1057
static constexpr std::string_view XmlNodeName
XML node name for this type.
Definition Details.h:1084
std::vector< std::shared_ptr< Cell > > cells
Array of fretboard cells.
Definition Details.h:1064
Represents the attributes of a Finale frame holder.
Definition Details.h:1096
StaffCmper getStaff() const
returns the staffId (staff) number for this GFrameHold
Definition Details.h:1119
GFrameHold(const DocumentWeakPtr &document, Cmper partId, ShareMode shareMode, Cmper staffId, Cmper meas)
Constructor function.
Definition Details.h:1106
std::optional< ClefIndex > clefId
clef index when there are no mid-measure clef changes. (xml tag is <clefID>).
Definition Details.h:1110
int clefPercent
Clef percent where 100 means 100%.
Definition Details.h:1115
bool iterateRawEntries(std::function< bool(const MusxInstance< Entry > &, LayerIndex)> iterator) const
Iterates all the raw entries in a the GFrameHold, passing them to the iterator function....
Definition Details.cpp:472
ShowClefMode showClefMode
"Show Clef" mode. (xml tag is <clefMode>)
Definition Details.h:1112
bool mirrorFrame
Indicates this is a mirror frame. (Not used after Finale 14.5.)
Definition Details.h:1113
static const xml::XmlElementArray< GFrameHold > & xmlMappingArray()
Required for musx::factory::FieldPopulator.
MeasCmper getMeasure() const
returns the measure number for this GFrameHold
Definition Details.h:1122
bool calcContainsMusic() const
Returns true if the GFrameHold contains any layer frames.
Definition Details.h:1131
static constexpr std::string_view XmlNodeName
The XML node name for this type.
Definition Details.h:1157
bool calcIsMultiLayer() const
Returns true if the GFrameHold instance has more than one layer.
Definition Details.h:1125
bool clefAfterBarline
"Place Clef After Barline"
Definition Details.h:1114
Cmper clefListId
The clef list ID when there are mid-measure clef changes, if non-zero. (xml tag is <clefListID>).
Definition Details.h:1111
std::pair< MusxInstance< others::Frame >, Edu > findLayerFrame(LayerIndex layerIndex) const
Find the layer frame and Edu start position for the given layer. A non-zero start position indicates ...
Definition Details.cpp:451
std::vector< Cmper > frames
others::Frame values for layers 1..4 (layer indices 0..3) if non-zero
Definition Details.h:1116
void integrityCheck(const std::shared_ptr< Base > &ptrToThis) override
Allows a class to determine if it has been properly contructed by the factory and fix issues that it ...
Definition Details.h:1146
Represents independent time and key signature overrides for a staff.
Definition Details.h:1169
bool hasTime
If true, this item contains an independent time signature.
Definition Details.h:1200
MusxInstance< TimeSignature > createTimeSignature() const
Create a shared pointer to an instance of the TimeSignature for this instance.
Definition Details.cpp:491
Cmper divBeat
Time signature denominator in Edu or a Cmper to a composite record.
Definition Details.h:1190
bool displayAltDenTsig
If true, dispDivBeat is the Cmper of a others::TimeCompositeLower record.
Definition Details.h:1195
Cmper dispDivBeat
Display time signature denominator in Edu or a Cmper to a composite record.
Definition Details.h:1192
bool altNumTsig
If true, beats is the Cmper of a others::TimeCompositeUpper record.
Definition Details.h:1196
bool hasKey
If true, this item contains an independent key signature.
Definition Details.h:1186
std::shared_ptr< KeySignature > keySig
The key signature value if present. (xml tag is <keySig>/<key>)
Definition Details.h:1185
IndependentStaffDetails(const DocumentWeakPtr &document, Cmper partId, ShareMode shareMode, Cmper staffId, Cmper meas)
Constructor function.
Definition Details.h:1179
bool altDenTsig
If true, divBeat is the Cmper of a others::TimeCompositeLower record.
Definition Details.h:1197
static const xml::XmlElementArray< IndependentStaffDetails > & xmlMappingArray()
Required for musx::factory::FieldPopulator.
bool hasDispTime
If true, the display time signature is present.
Definition Details.h:1199
void integrityCheck(const std::shared_ptr< Base > &ptrToThis) override
Allows a class to determine if it has been properly contructed by the factory and fix issues that it ...
Definition Details.h:1209
bool displayAbbrvTime
If true, the display time signature is abbreviated.
Definition Details.h:1198
static constexpr std::string_view XmlNodeName
The XML node name for this type.
Definition Details.h:1217
Cmper dispBeats
Display time signature numerator or a Cmper to a composite record.
Definition Details.h:1191
bool displayAltNumTsig
If true, dispBeats is the Cmper of a others::TimeCompositeUpper record.
Definition Details.h:1194
MusxInstance< TimeSignature > createDisplayTimeSignature() const
Create a shared pointer to an instance of the display TimeSignature for this measure and staff.
Definition Details.cpp:496
Cmper beats
Time signature numerator or a Cmper to a composite record.
Definition Details.h:1189
Represents a single element in a Finale accidental symbol list.
Definition Details.h:1228
void integrityCheck(const std::shared_ptr< Base > &ptrToThis) override
Allows a class to determine if it has been properly contructed by the factory and fix issues that it ...
Definition Details.h:1242
int getAlterationValue() const
Returns the alteration value that this symbol corresponds with.
Definition Details.h:1238
KeySymbolListElement(const DocumentWeakPtr &document, Cmper partId, ShareMode shareMode, Cmper cmper1, Cmper cmper2)
Constructor function.
Definition Details.h:1231
static const xml::XmlElementArray< KeySymbolListElement > & xmlMappingArray()
Required for musx::factory::FieldPopulator.
static constexpr std::string_view XmlNodeName
The XML node name for this type.
Definition Details.h:1251
std::string accidentalString
Definition Details.h:1234
Contains the syllable assignments for lyrics chorus blocks.
Definition Details.h:1309
MusxInstance< texts::LyricsTextBase > getLyricText() const override
Get the raw lyric text for this assignment.
Definition Details.cpp:514
LyricTextType getLyricTextType() const override
Get the lyric text type for this assignment.
Definition Details.cpp:529
static constexpr std::string_view XmlNodeName
The XML node name for this type.
Definition Details.h:1318
Contains the syllable assignments for lyrics section blocks.
Definition Details.h:1328
static constexpr std::string_view XmlNodeName
The XML node name for this type.
Definition Details.h:1337
LyricTextType getLyricTextType() const override
Get the lyric text type for this assignment.
Definition Details.cpp:534
MusxInstance< texts::LyricsTextBase > getLyricText() const override
Get the raw lyric text for this assignment.
Definition Details.cpp:519
Contains the syllable assignments for lyrics verse blocks.
Definition Details.h:1347
LyricTextType getLyricTextType() const override
Get the lyric text type for this assignment.
Definition Details.cpp:524
MusxInstance< texts::LyricsTextBase > getLyricText() const override
Get the raw lyric text for this assignment.
Definition Details.cpp:509
static constexpr std::string_view XmlNodeName
The XML node name for this type.
Definition Details.h:1356
Contains assignment data for a lyric assignment (a single syllable)
Definition Details.h:1260
util::EnigmaParsingContext getRawTextCtx() const
Return an Enigma parsing context for the associated lyrics text block.
Definition Details.cpp:539
virtual LyricTextType getLyricTextType() const =0
Get the lyric text type for this assignment.
Evpu wext
Definition Details.h:1278
LyricAssign(const DocumentWeakPtr &document, Cmper partId, ShareMode shareMode, EntryNumber entnum, Inci inci)
Constructor function.
Definition Details.h:1270
static const xml::XmlElementArray< LyricAssign > & xmlMappingArray()
Required for musx::factory::FieldPopulator.
Cmper lyricNumber
the text number of the lyric.
Definition Details.h:1273
unsigned syllable
the 1-based syllable number. Subtract 1 for an index into texts::LyricsTextBase::syllables....
Definition Details.h:1274
Evpu floatingHorzOff
This appears to have something to do with note spacing. It may simply be a cache that Finale changes ...
Definition Details.h:1277
Evpu horzOffset
horizontal offset from default position. (xml node is <horzOff>)
Definition Details.h:1275
virtual MusxInstance< texts::LyricsTextBase > getLyricText() const =0
Get the raw lyric text for this assignment.
Evpu vertOffset
horizontal offset from default position. (xml node is <vertOff>)
Definition Details.h:1276
bool displayVerseNum
If set, the text block number displays to the left of the syllable. (E.g., when numbering verses in a...
Definition Details.h:1281
EntryInfoPtr calcWordExtensionEndpoint() const
Calculate the entry to which an automatic word extension extends.
Definition Details.cpp:548
Specifies lyric alignment and justification for a single entry. This affects all lyric assignments on...
Definition Details.h:1367
static constexpr std::string_view XmlNodeName
The XML node name for this type.
Definition Details.h:1384
std::optional< AlignJustify > align
Override default alignment if present. (xml node is <align>)
Definition Details.h:1381
static const xml::XmlElementArray< LyricEntryInfo > & xmlMappingArray()
Required for musx::factory::FieldPopulator.
LyricEntryInfo(const DocumentWeakPtr &document, Cmper partId, ShareMode shareMode, EntryNumber entnum, std::optional< Inci > inci=std::nullopt)
Constructor.
Definition Details.h:1377
std::optional< AlignJustify > justify
Override default justification if present. (xml node is <justify>)
Definition Details.h:1380
Per-staff/per-measure overrides for the position and appearance of a measure number.
Definition Details.h:1395
ForceVisibility
Force-visibility options for the measure number at this location.
Definition Details.h:1416
@ Show
Force the number to display (xml text value: "force")
@ Hide
Force the number to be hidden (xml text value: "hide")
@ None
No override (default; node may be omitted in XML)
bool useEnclosure
Whether to use an enclosure for this number. (xml node is <useEncl>)
Definition Details.h:1427
Evpu xOffset
Horizontal offset for the measure number. (xml node is <x1add>)
Definition Details.h:1423
Evpu xOffset2
Horizontal offset for the measure number range under a multimeasure rest (Page View only)....
Definition Details.h:1425
MeasureNumberIndividualPositioning(const DocumentWeakPtr &document, Cmper partId, ShareMode shareMode, Cmper staffId, Cmper meas, Inci inci)
Constructor.
Definition Details.h:1406
static const xml::XmlElementArray< MeasureNumberIndividualPositioning > & xmlMappingArray()
Required for musx::
ForceVisibility forceVisibility
Force-visibility behavior. (xml node is <forceHide>)
Definition Details.h:1426
Cmper measNumRegion
The Cmper of the others::MeasureNumberRegion that this override applies to. (xml node is <region>)
Definition Details.h:1422
std::shared_ptr< others::Enclosure > enclosure
Optional enclosure settings. (xml node is <encl>)
Definition Details.h:1428
static constexpr std::string_view XmlNodeName
The XML node name for this type.
Definition Details.h:1430
Evpu yOffset
Vertical offset for the measure number. (xml node is <y1add>)
Definition Details.h:1424
Represents a text block assignment for a staff and measure.
Definition Details.h:1450
static constexpr std::string_view XmlNodeName
The XML node name for this type.
Definition Details.h:1479
util::EnigmaParsingContext getRawTextCtx(Cmper forPartId) const
Gets the raw text for this assignment, or nullptr if none.
Definition Details.cpp:579
Evpu yDisp
Vertical displacement in Evpu (xml node is <ydisp>)
Definition Details.h:1470
Evpu xDispEvpu
Negative horizontal displacement in Evpu, when xDispEdu is zero. (xml node is <xdispEvpu>)
Definition Details.h:1469
MusxInstance< others::TextBlock > getTextBlock() const
Gets the TextBlock for this assignment, or nullptr if none.
Definition Details.cpp:574
MeasureTextAssign(const DocumentWeakPtr &document, Cmper partId, ShareMode shareMode, Cmper staffId, Cmper meas, Inci inci)
Constructor.
Definition Details.h:1461
Cmper block
Text block ID.
Definition Details.h:1466
bool hidden
Indicates the text appears only on screen (xml node is <postIt/>)
Definition Details.h:1471
static const xml::XmlElementArray< MeasureTextAssign > & xmlMappingArray()
Required for musx::factory::FieldPopulator.
Edu xDispEdu
Definition Details.h:1467
Represents graphical and notational alterations applied to a note.
Definition Details.h:1492
bool allowVertPos
Whether vertical positioning is allowed .
Definition Details.h:1506
int percent
Size percentage for the notehead. (A value of 100 means 100%.)
Definition Details.h:1501
char32_t altNhead
Alternate notehead character.
Definition Details.h:1503
static constexpr std::string_view XmlNodeName
The XML node name for this type.
Definition Details.h:1513
NoteAlterations(const DocumentWeakPtr &document, Cmper partId, ShareMode shareMode, EntryNumber entnum, Inci inci)
Constructor function.
Definition Details.h:1495
Evpu nydisp
Vertical notehead offset.
Definition Details.h:1507
std::shared_ptr< FontInfo > customFont
Custom font info (consolidates: <fontID>, <fontSize>, <efx>)
Definition Details.h:1505
bool useOwnFont
Whether to use the custom font.
Definition Details.h:1504
Evpu nxdisp
Horizontal notehead offset.
Definition Details.h:1502
NoteNumber getNoteId() const override
Required virtual function that returns the note id.
Definition Details.h:1511
bool enharmonic
Definition Details.h:1508
NoteNumber noteId
The ID of the note being altered. (xml node is <noteID>)
Definition Details.h:1500
static const xml::XmlElementArray< NoteAlterations > & xmlMappingArray()
Required for musx::factory::FieldPopulator.
Represents a percussion note code override for a single note.
Definition Details.h:1526
NoteNumber getNoteId() const override
Required virtual function that returns the note id.
Definition Details.h:1537
NoteNumber noteId
The ID of the note being assigned a code.
Definition Details.h:1534
PercussionNoteTypeId noteCode
The percussion note code. Use this to search the incis of the percussion map for the specific note.
Definition Details.h:1535
static const xml::XmlElementArray< PercussionNoteCode > & xmlMappingArray()
Required for musx::factory::FieldPopulator.
PercussionNoteCode(const DocumentWeakPtr &document, Cmper partId, ShareMode shareMode, EntryNumber entnum, Inci inci)
Constructor function.
Definition Details.h:1529
static constexpr std::string_view XmlNodeName
The XML node name for this type.
Definition Details.h:1539
Beam alteration for downstem secondary beams.
Definition Details.h:1550
static bool calcIsFeatheredBeam(const EntryInfoPtr &entryInfo, Evpu &outLeftY, Evpu &outRightY)
Calculates if the input entry starts a feathered beam and returns information about it.
Definition Details.h:1570
SecondaryBeamAlterationsDownStem(const DocumentWeakPtr &document, Cmper partId, ShareMode shareMode, EntryNumber entnum, Inci inci)
Constructor.
Definition Details.h:1561
static constexpr std::string_view XmlNodeName
The XML node name for this type.
Definition Details.h:1573
Beam alteration for downstem secondary beams.
Definition Details.h:1583
static bool calcIsFeatheredBeam(const EntryInfoPtr &entryInfo, Evpu &outLeftY, Evpu &outRightY)
Calculates if the input entry starts a feathered beam and returns information about it.
Definition Details.h:1603
static constexpr std::string_view XmlNodeName
The XML node name for this type.
Definition Details.h:1606
SecondaryBeamAlterationsUpStem(const DocumentWeakPtr &document, Cmper partId, ShareMode shareMode, EntryNumber entnum, Inci inci)
Constructor.
Definition Details.h:1594
Specifies which secondary beams break and restart on the associated entry.
Definition Details.h:1618
SecondaryBeamBreak(const DocumentWeakPtr &document, Cmper partId, ShareMode shareMode, EntryNumber entnum)
Constructor function.
Definition Details.h:1621
static constexpr std::string_view XmlNodeName
The XML node name for this type.
Definition Details.h:1662
void integrityCheck(const std::shared_ptr< Base > &ptrToThis) override
Allows a class to determine if it has been properly contructed by the factory and fix issues that it ...
Definition Details.h:1649
BeamNumber calcLowestBreak() const
Calculates the lowest (largest note-value) beam specified for a secondary beam break.
Definition Details.h:1635
bool breakThrough
True if the beam should be broken through to the largest specified beam value.
Definition Details.h:1627
unsigned mask
Composite mask of beam breaks, derived from <do16th> through <do4096th> tags.
Definition Details.h:1626
static const xml::XmlElementArray< SecondaryBeamBreak > & xmlMappingArray()
Required for musx::factory::FieldPopulator.
Embedded shape record for a single index in noteShapes.
Definition Details.h:1688
char32_t quarter
Filled (quarter) notehead symbol (xml nodename is <q>).
Definition Details.h:1693
char32_t whole
Whole notehead symbol (xml nodename is <w>).
Definition Details.h:1691
static const xml::XmlElementArray< NoteShapes > & xmlMappingArray()
Required for musx::factory::FieldPopulator.
char32_t doubleWhole
Double-whole notehead symbol (xml nodename is <d>).
Definition Details.h:1690
char32_t half
Half notehead symbol (xml nodename is <h>).
Definition Details.h:1692
Shape Note settings for staves and staffs style.
Definition Details.h:1676
void integrityCheck(const std::shared_ptr< Base > &ptrToThis) override
Allows a class to determine if it has been properly contructed by the factory and fix issues that it ...
Definition Details.h:1702
ShapeNoteBase(const DocumentWeakPtr &document, Cmper partId, ShareMode shareMode, Cmper cmper1, Cmper cmper2)
Constructor function.
Definition Details.h:1680
std::vector< std::shared_ptr< NoteShapes > > noteShapes
Notehead shapes (only the first seven elements are used).
Definition Details.h:1698
bool arrangedByPitch
Definition Details.h:1699
static const xml::XmlElementArray< ShapeNoteBase > & xmlMappingArray()
Required for musx::factory::FieldPopulator.
Shape Note settings for staff styles.
Definition Details.h:1741
static constexpr std::string_view XmlNodeName
XML node name for this type.
Definition Details.h:1745
Shape Note settings for staves.
Definition Details.h:1726
static constexpr std::string_view XmlNodeName
XML node name for this type.
Definition Details.h:1730
Provides run-time information about Staff Groups within a system or list of others::StaffUsed.
Definition Details.h:1874
std::optional< size_t > startSlot
the 0-based start slot (index) of the group in the system staves.
Definition Details.h:1876
std::optional< size_t > endSlot
the 0-based end slot (index) of the group in the system staves.
Definition Details.h:1877
std::optional< size_t > numStaves() const
The number of staves in the group for the systemStaves.
Definition Details.h:1888
MusxInstanceList< others::StaffUsed > systemStaves
the system staves referred to by startSlot and endSlot
Definition Details.h:1879
MusxInstance< StaffGroup > group
the StaffGroup record for the group.
Definition Details.h:1878
void iterateStaves(MeasCmper measId, Edu eduPosition, std::function< bool(const MusxInstance< others::StaffComposite > &)> iterator) const
Iterates the staves in the group in order according to systemStaves.
Definition Details.cpp:658
static std::vector< StaffGroupInfo > getGroupsAtMeasure(MeasCmper measureId, Cmper linkedPartId, const MusxInstanceList< others::StaffUsed > &systemStaves)
Creates a vector of StaffGroupInfo instances for the measure, part, and system staves.
Definition Details.cpp:678
Represents the attributes of a Finale staff group that brackets staves.
Definition Details.h:1754
AlignJustify abbrvNameJustify
Abbreviated name justification (xml node is <abbrvJustify>)
Definition Details.h:1803
bool abbrvNameExpand
"Expand Single Word" for abbreviated name (xml node is <abbrvExpand>)
Definition Details.h:1815
Cmper multiStaffGroupId
Definition Details.h:1818
static const xml::XmlElementArray< StaffGroup > & xmlMappingArray()
Required for musx::factory::FieldPopulator.
bool fullNameExpand
"Expand Single Word" for full name (xml node is <fullExpand>)
Definition Details.h:1814
bool ownBarline
"Use Alternate Group Barline"
Definition Details.h:1805
int abbrvNameYadj
Vertical adjustment for abbreviated name (xml node is <abbrvYadj>)
Definition Details.h:1811
DrawBarlineStyle
Enum for how to draw group barlines.
Definition Details.h:1775
@ Mensurstriche
Draw barlines between staves (xml value is "Mensurstriche" with capitalization)
@ ThroughStaves
Draw barlines through staves (xml value is "group")
@ OnlyOnStaves
Default value (may not appear in xml)
std::string getAbbreviatedInstrumentName(util::EnigmaString::AccidentalStyle accidentalStyle=util::EnigmaString::AccidentalStyle::Ascii) const
Returns the abbreviated instrument name for this group without Enigma tags and with autonumbering (if...
Definition Details.cpp:624
bool isAllMeasures() const
Returns true if this group spans all measures.
Definition Details.h:1849
Cmper abbrvNameId
Abbreviated name TextBlock cmper (xml node is <abbrvID>)
Definition Details.h:1809
StaffCmper startInst
Starting staff ID.
Definition Details.h:1793
int fullNameXadj
Horizontal adjustment for full name (xml node is <fullXadj>)
Definition Details.h:1798
std::shared_ptr< Bracket > bracket
Bracket Options. The factory guarantees this value to exist.
Definition Details.h:1800
std::string getAbbreviatedName(util::EnigmaString::AccidentalStyle accidentalStyle=util::EnigmaString::AccidentalStyle::Ascii) const
Get the abbreviated staff name without Enigma tags.
Definition Details.cpp:598
AlignJustify fullNameJustify
Full name justification (xml node is <fullJustify>)
Definition Details.h:1802
DrawBarlineStyle drawBarlines
"Draw Barlines" option (xml node is <groupBarlineStyle>)
Definition Details.h:1804
AlignJustify abbrvNameAlign
Abbreviated name horizontal alignment (xml node is <abbrvHAlign>)
Definition Details.h:1813
std::unordered_set< StaffCmper > staves
Calculated list of staves in the group.
Definition Details.h:1823
int fullNameYadj
Vertical adjustment for full name (xml node is <fullYadj>)
Definition Details.h:1799
HideStaves hideStaves
"When Hiding Empty Staves" option (xml node is <optimize>)
Definition Details.h:1816
BarlineType barlineType
Group barline type (xml node is <barline>)
Definition Details.h:1801
AlignJustify fullNameAlign
Full name horizontal alignment (xml node is <fullHAlign>)
Definition Details.h:1812
Cmper fullNameId
Full name TextBlock cmper (xml node is <fullID>)
Definition Details.h:1797
std::string getFullInstrumentName(util::EnigmaString::AccidentalStyle accidentalStyle=util::EnigmaString::AccidentalStyle::Ascii) const
Returns the full instrument name for this group without Enigma tags and with autonumbering (if any).
Definition Details.cpp:614
StaffGroup(const DocumentWeakPtr &document, Cmper partId, Base::ShareMode shareMode, Cmper cmper1, Cmper cmper2)
Constructor.
Definition Details.h:1764
StaffCmper endInst
Ending staff ID.
Definition Details.h:1794
static constexpr std::string_view XmlNodeName
XML node name for this type.
Definition Details.h:1865
void integrityCheck(const std::shared_ptr< Base > &ptrToThis) override
Allows a class to determine if it has been properly contructed by the factory and fix issues that it ...
Definition Details.h:1852
MeasCmper startMeas
Starting measure number.
Definition Details.h:1795
std::string getFullName(util::EnigmaString::AccidentalStyle accidentalStyle=util::EnigmaString::AccidentalStyle::Ascii) const
Get the full staff name without Enigma tags.
Definition Details.cpp:593
MusxInstance< others::MultiStaffInstrumentGroup > getMultiStaffInstGroup() const
Returns the others::MultiStaffInstrumentGroup for this group if it is part of one....
Definition Details.cpp:603
MeasCmper endMeas
Ending measure number.
Definition Details.h:1796
bool hideName
Inverse of "Show Group Name".
Definition Details.h:1808
bool fullNameIndivPos
Indicates if full name has individual position (xml node is <fullIndivPos>)
Definition Details.h:1806
bool abbrvNameIndivPos
Indicates if abbreviated name has individual position (xml node is <abbrvIndivPos>)
Definition Details.h:1807
int abbrvNameXadj
Horizontal adjustment for abbreviated name (xml node is <abbrvXadj>)
Definition Details.h:1810
HideStaves
Enum for optimization options.
Definition Details.h:1786
@ AsGroup
Hide staves only if all staves are empty.
@ Normally
Hide staves as if there were no StaffGroup (this is the default and may not appear in the xml)
@ None
Never hide the staves in this StaffGroup.
Represents a per-staff-size override for a specific staff in a system.
Definition Details.h:1919
static constexpr std::string_view XmlNodeName
The XML node name for this type.
Definition Details.h:1940
static const xml::XmlElementArray< StaffSize > & xmlMappingArray()
Required for musx::factory::FieldPopulator.
util::Fraction calcStaffScaling() const
Calculate the staff scaling.
Definition Details.h:1937
StaffSize(const DocumentWeakPtr &document, Cmper partId, ShareMode shareMode, Cmper system, Cmper staffId)
Constructor.
Definition Details.h:1929
int staffPercent
The staff size percentage override. (A value of 100 means 100%, i.e, no staff scaling....
Definition Details.h:1934
Specifies horizontal and vertical adjustments for stems under beam.
Definition Details.h:1979
static constexpr std::string_view XmlNodeName
The XML node name for this type.
Definition Details.h:1983
Specifies horizontal and vertical stem adjustments for upstem and downstem contexts.
Definition Details.h:1953
Evpu upVertAdjust
Vertical adjustment for upstem context (positive is up).
Definition Details.h:1961
Evpu downHorzAdjust
Horizontal adjustment for downstem context (positive is right).
Definition Details.h:1964
Evpu downVertAdjust
Vertical adjustment for downstem context (positive is up).
Definition Details.h:1962
static const xml::XmlElementArray< StemAlterations > & xmlMappingArray()
Required for musx::factory::FieldPopulator.
Evpu upHorzAdjust
Horizontal adjustment for upstem context (positive is right).
Definition Details.h:1963
StemAlterations(const DocumentWeakPtr &document, Cmper partId, ShareMode shareMode, EntryNumber entnum)
Constructor function.
Definition Details.h:1956
static constexpr std::string_view XmlNodeName
The XML node name for this type.
Definition Details.h:1966
Specifies the TAB string a note appears on. Finale automatically figures out the fret number from the...
Definition Details.h:1996
TablatureNoteMods(const DocumentWeakPtr &document, Cmper partId, ShareMode shareMode, EntryNumber entnum, Inci inci)
Constructor function.
Definition Details.h:1999
NoteNumber getNoteId() const override
Required virtual function that returns the note id.
Definition Details.h:2008
static const xml::XmlElementArray< TablatureNoteMods > & xmlMappingArray()
Required for musx::factory::FieldPopulator.
static constexpr std::string_view XmlNodeName
The XML node name for this type.
Definition Details.h:2010
NoteNumber noteId
The ID of the tablature note being modified. (xml node is <noteID>)
Definition Details.h:2004
int stringNumber
Definition Details.h:2005
Base class for tie alteration properties. (Used for both ties and tie ends.)
Definition Details.h:2019
DirectionContext
Indicates the placement context of end- and control-point adjustments.
Definition Details.h:2065
@ Under
The tie is positioned below (e.g., tie under)
@ Over
The tie is positioned above (e.g., tie over)
Evpu yEnd
Vertical end position of the tie.
Definition Details.h:2075
NoteNumber noteId
Note ID associated with the tie alteration. (xml node is <noteID>)
Definition Details.h:2071
bool outerOn
Enable "Outer" placement.
Definition Details.h:2077
bool outerLocal
Local setting for "Outer Tie".
Definition Details.h:2076
Evpu xStart
Horizontal start position of the tie.
Definition Details.h:2072
DirectionContext enPtContext
End point must match this direction context for xEnd & yEnd to apply.
Definition Details.h:2098
Evpu height1
Height of the first control point.
Definition Details.h:2100
NoteNumber getNoteId() const override
Required virtual function that returns the note id.
Definition Details.h:2107
bool afterMultiDotsLocal
Local setting for "After Multiple Dots".
Definition Details.h:2080
bool shiftForSecondsOn
Enable "Shift for Seconds".
Definition Details.h:2083
Evpu height2
Height of the second control point.
Definition Details.h:2102
ConnectionType stPtEntCnct
Start point must match this connection type for xStart & yStart to apply.
Definition Details.h:2094
TieAlterBase(const DocumentWeakPtr &document, Cmper partId, Base::ShareMode shareMode, EntryNumber entnum, Inci inci)
Constructor function.
Definition Details.h:2022
ConnectionType
Defines tie connection points for start and end attachment locations.
Definition Details.h:2040
@ NoteLeftNoteTop
Left of note, top of note.
@ EntryLeftNoteCenter
Left of entry, center of note.
@ DotRightNoteCenter
Right of dot(s), center of note.
@ NoteRightNoteTop
Right of note, top of note.
@ NoteCenterNoteBottom
Horizontal center of note, bottom of note.
@ EntryCenterNoteBottom
Horizontal center of entry, bottom of note.
@ NoteCenterNoteTop
Horizontal center of note, top of note.
@ SystemEnd
System end (for the right side across systems)
@ NoteLeftNoteCenter
Left of note, center of note.
@ EntryCenterNoteTop
Horizontal center of entry, top of note.
@ NoteRightNoteBottom
Right of note, bottom of note.
@ SystemStart
System start (for the left side across systems)
@ EntryRightNoteCenter
Right of entry, center of note.
@ NoteRightNoteCenter
Right of note, center of note.
@ AccidentalLeftNoteCenter
Left of accidental, center of note.
@ NoteLeftNoteBottom
Left of note, bottom of note.
static MusxInstance< TieAlterBase > fromNoteInfo(const NoteInfoPtr ¬eInfoPtr, bool forTieEnd=false)
Gets the the TieAlterStart or TieAlterEnd for this note, based on the input boolean.
Definition Details.cpp:704
Evpu insetRatio1
Inset ratio for the first control point.
Definition Details.h:2099
bool enPtAdjOn
Enable end point adjustment.
Definition Details.h:2096
ConnectionType enPtEntCnct
End point must match this connection type for xEnd & yEnd to apply.
Definition Details.h:2097
bool shiftForSecondsLocal
Local setting for "Shift for Seconds".
Definition Details.h:2082
bool afterSingleDotOn
Enable "After Single Dot".
Definition Details.h:2079
bool afterMultiDotsOn
Enable "After Multiple Dots".
Definition Details.h:2081
Evpu insetRatio2
Inset ratio for the second control point.
Definition Details.h:2101
bool breakKeyLocal
Local setting for "Break at Key Signature".
Definition Details.h:2089
bool ctlPtFixed
Definition Details.h:2104
bool breakKeyOn
Enable "Break at Key Signature".
Definition Details.h:2090
bool down
Downward tie. Only applicable if freezeDirection is true. (False freezes the tie up....
Definition Details.h:2086
DirectionContext stPtContext
Start point must match this direction context for xStart & yStart to apply.
Definition Details.h:2095
bool beforeSingleAcciOn
Enable "Before Single Accidental".
Definition Details.h:2085
bool noSpecialArc
Inverse of "Avoid Staff Lines". (See options::TieOptions for more information about the naming....
Definition Details.h:2092
bool stPtAdjOn
Enable start point adjustment.
Definition Details.h:2093
static const xml::XmlElementArray< TieAlterBase > & xmlMappingArray()
Required for musx::factory::FieldPopulator.
bool beforeSingleAcciLocal
Local setting for "Before Single Accidental".
Definition Details.h:2084
Evpu xEnd
Horizontal end position of the tie.
Definition Details.h:2073
bool ctlPtAdjOn
Enable control point adjustment.
Definition Details.h:2103
bool breakTimeLocal
Local setting for "Break at Time Signature".
Definition Details.h:2087
bool freezeDirection
Freeze tie direction. (xml node is <freeze>)
Definition Details.h:2091
Evpu yStart
Vertical start position of the tie.
Definition Details.h:2074
bool afterSingleDotLocal
Local setting for "After Single Dot".
Definition Details.h:2078
bool breakTimeOn
Enable "Break at Time Signature".
Definition Details.h:2088
Alterations for tie ends.
Definition Details.h:2121
static constexpr std::string_view XmlNodeName
The XML node name for this type.
Definition Details.h:2125
static const xml::XmlElementArray< TieAlterEnd > & xmlMappingArray()
Required for musx::factory::FieldPopulator.
Alterations for tie starts. (Tie starts are normal ties.)
Definition Details.h:2138
static constexpr std::string_view XmlNodeName
The XML node name for this type.
Definition Details.h:2142
static const xml::XmlElementArray< TieAlterStart > & xmlMappingArray()
Required for musx::factory::FieldPopulator.
Options controlling the appearance of tuplets.
Definition Details.h:2155
bool hidden
Inverse of "Show".
Definition Details.h:2181
util::Fraction calcRatio() const
return the tuplet ratio (reference / display)
Definition Details.h:2208
util::Fraction calcDisplayDuration() const
return the display duration as a util::Fraction of a whole note
Definition Details.h:2205
Evpu tupOffX
Horizontal offset.
Definition Details.h:2182
Evpu rightHookLen
Length of the right hook in the tuplet bracket. (This value is sign-reversed in the Finale UI....
Definition Details.h:2197
Evpu brackOffY
Vertical offset for brackets.
Definition Details.h:2185
BracketStyle brackStyle
Bracket style.
Definition Details.h:2193
bool avoidStaff
"Avoid Staff"
Definition Details.h:2179
AutoBracketStyle autoBracketStyle
Autobracket style.
Definition Details.h:2180
bool alwaysFlat
"Always Flat" (xml node is <flat>)
Definition Details.h:2176
bool fullDura
"Bracket Full Duration"
Definition Details.h:2177
bool allowHorz
"Allow Horizontal Drag"
Definition Details.h:2188
int referenceNumber
The number of notes "in the time of" (xml node is <refNum>)
Definition Details.h:2174
Evpu rightHookExt
Extension of the right hook beyond the tuplet bracket.
Definition Details.h:2198
Evpu leftHookExt
Extension of the left hook beyond the tuplet bracket.
Definition Details.h:2196
bool ignoreHorzNumOffset
"Ignore Horizontal Number Offset" (xml node is <ignoreGlOffs>)
Definition Details.h:2189
TupletDef(const DocumentWeakPtr &document, Cmper partId, ShareMode shareMode, EntryNumber entnum, Inci inci)
Constructor function.
Definition Details.h:2158
util::Fraction calcReferenceDuration() const
return the reference duration as a util::Fraction of a whole note
Definition Details.h:2202
bool smartTuplet
"Engraver Tuplets"
Definition Details.h:2194
Edu displayDuration
The duration of each note to display (xml node is <symbolicDur>)
Definition Details.h:2173
Evpu tupOffY
Vertical.
Definition Details.h:2183
NumberStyle numStyle
Number style.
Definition Details.h:2186
static const xml::XmlElementArray< TupletDef > & xmlMappingArray()
Required for musx::factory::FieldPopulator.
Evpu brackOffX
Horizontal offset for brackets.
Definition Details.h:2184
Evpu manualSlopeAdj
"Manual Slope Adjustment" in Evpu. (xml node is <slope>)
Definition Details.h:2199
static constexpr std::string_view XmlNodeName
The XML node name for this type.
Definition Details.h:2210
bool breakBracket
"Break Slur or Bracket"
Definition Details.h:2190
int displayNumber
The number of notes to display (xml node is <symbolicNum>)
Definition Details.h:2172
bool metricCenter
"Center Number Using Duration"
Definition Details.h:2178
bool useBottomNote
"Use Bottom Note" (xml node is <noteBelow>)
Definition Details.h:2192
bool matchHooks
"Match Length of Hooks"
Definition Details.h:2191
PositioningStyle posStyle
Positioning style.
Definition Details.h:2187
Edu referenceDuration
The duration of each note "in the time of" (xml node is <refDur>)
Definition Details.h:2175
Evpu leftHookLen
Length of the left hook in the tuplet bracket. (This value is sign-reversed in the Finale UI....
Definition Details.h:2195
FlattenStyle
Beaming style choices for when to flatten beams.
Definition Options.h:177
BracketStyle
Bracket style options.
Definition Options.h:1794
PositioningStyle
Positioning style options.
Definition Options.h:1781
AutoBracketStyle
Auto-bracket style options.
Definition Options.h:1753
NumberStyle
Number style options.
Definition Options.h:1768
BarlineType
Barline type for left and right barlines.
Definition Others.h:1148
Contains chorus text for lyrics.
Definition Texts.h:162
Contains section text for lyrics.
Definition Texts.h:175
Contains verse text for lyrics.
Definition Texts.h:149
Wrapper class for interpreting and rendering Enigma-style strings with insert handling.
Definition EnigmaString.h:423
AccidentalStyle
Enumeration to specify the type of accidental substitution representation.
Definition EnigmaString.h:199
@ Ascii
Use ASCII substitutions for accidentals.
A class to represent fractions with integer m_numerator and m_denominator, automatically reduced to s...
Definition Fraction.h:38
static constexpr Fraction fromPercent(int percent)
Constructs a Fraction from a percent (where 100 is 100%)
Definition Fraction.h:97
@ Verbose
Informational messages that should only displayed when verbose logging is requested.
static void log(LogLevel level, const std::string &message)
Logs a message with a specific severity level.
Definition Logger.h:87
constexpr int STANDARD_DIATONIC_STEPS
currently this is the only supported number of diatonic steps.
Definition music_theory.hpp:45
constexpr int MAX_ALTERATIONS
Maximum absolute value for chromatic alterations supported in Finale.
Definition Fundamentals.h:78
ShowClefMode
Enum representing the clef display mode for a frame.
Definition EnumClasses.h:165
LyricTextType
The lyric text type if this is a lyrics smart shape.
Definition EnumClasses.h:119
uint16_t PercussionNoteTypeId
multiple times in one layout. The rest are the "pure" note type. See percussion::PercussionNoteType.
Definition Fundamentals.h:74
int16_t MeasCmper
Enigma meas Cmper (may be negative when not applicable)
Definition Fundamentals.h:64
int32_t Efix
EFIX value (64 per EVPU, 64*288=18432 per inch)
Definition Fundamentals.h:60
std::shared_ptr< const T > MusxInstance
Defines the type of a musx instance stored in a pool.
Definition MusxInstance.h:39
unsigned int LayerIndex
Layer index (valid values are 0..3)
Definition Fundamentals.h:71
constexpr Cmper SCORE_PARTID
The part id of the score.
Definition Fundamentals.h:79
int16_t Inci
Enigma "incident" key type.
Definition Fundamentals.h:56
int32_t Evpu
EVPU value (288 per inch)
Definition Fundamentals.h:57
constexpr int MAX_LAYERS
The maximum number of music layers in a Finale document.
Definition Fundamentals.h:77
uint16_t Cmper
Enigma "comperator" key type.
Definition Fundamentals.h:55
int32_t Edu
"Enigma Durational Units" value (1024 per quarter note)
Definition Fundamentals.h:61
std::weak_ptr< Document > DocumentWeakPtr
Shared weak Document pointer.
Definition BaseClasses.h:57
int32_t EntryNumber
Entry identifier.
Definition Fundamentals.h:69
uint16_t NoteNumber
Note identifier.
Definition Fundamentals.h:70
std::shared_ptr< Document > DocumentPtr
Shared Document pointer.
Definition BaseClasses.h:55
int16_t StaffCmper
Enigma staff (staffId) Cmper (may be negative when not applicable)
Definition Fundamentals.h:65
AlignJustify
Alignment and justification options for staff and group names.
Definition EnumClasses.h:30
unsigned int BeamNumber
A number where 1 corresponds to the primary (8th note) beam, 2 the 16th beam, 3 the 32nd beam,...
Definition Fundamentals.h:72
std::vector< XmlElementDescriptor< T > > XmlElementArray
an array type for XmlElementDescriptor instances.
Definition XmlInterface.h:127
object model for musx file (enigmaxml)
Definition BaseClasses.h:36
Information about a shape that could be used as a surrogate for a tie.
Definition PseudoTieUtils.h:55