MUSX Document Model
Loading...
Searching...
No Matches
Others.h
1/*
2 * Copyright (C) 2025, Robert Patterson
3 *
4 * Permission is hereby granted, free of charge, to any person obtaining a copy
5 * of this software and associated documentation files (the "Software"), to deal
6 * in the Software without restriction, including without limitation the rights
7 * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
8 * copies of the Software, and to permit persons to whom the Software is
9 * furnished to do so, subject to the following conditions:
10 *
11 * The above copyright notice and this permission notice shall be included in
12 * all copies or substantial portions of the Software.
13 *
14 * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
15 * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
16 * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
17 * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
18 * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
19 * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
20 * THE SOFTWARE.
21 */
22#pragma once
23
24#include <string>
25#include <unordered_map>
26#include <vector>
27#include <memory>
28#include <stdexcept>
29#include <map>
30#include <tuple>
31
32#include "musx/util/EnigmaString.h"
33#include "musx/util/Logger.h"
34#include "musx/util/Fraction.h"
35
36#include "BaseClasses.h"
37#include "CommonClasses.h"
38// do not add other dom class dependencies. Use Implementations.cpp for implementations that need total class access.
39
40namespace musx {
41namespace dom {
42
43class Entry;
44
45namespace details {
46class GFrameHold;
47class IndependentStaffDetails;
48class StaffGroup;
49}
50
55namespace others {
56
74class AcciAmountFlats : public OthersArray<int, 7>
75{
76 std::string_view xmlTag() const override { return XmlNodeName; }
77
78public:
80
81 constexpr static std::string_view XmlNodeName = "acciAmountFlats";
83};
84
107class AcciAmountSharps : public OthersArray<int, 7>
108{
109 std::string_view xmlTag() const override { return XmlNodeName; }
110
111public:
113
114 constexpr static std::string_view XmlNodeName = "acciAmountSharps";
116};
117
133class AcciOrderFlats : public OthersArray<unsigned, 7>
134{
135 std::string_view xmlTag() const override { return XmlNodeName; }
136
137public:
139
140 constexpr static std::string_view XmlNodeName = "acciOrderFlats";
142};
143
164class AcciOrderSharps : public OthersArray<unsigned, 7>
165{
166 std::string_view xmlTag() const override { return XmlNodeName; }
167
168public:
170
171 constexpr static std::string_view XmlNodeName = "acciOrderSharps";
173};
174
185{
186public:
192 {
195 StemSide,
197 AboveEntry,
198 BelowEntry,
199 };
200
204 enum class CopyMode
205 {
206 None,
207 Vertical,
209 };
210
215 {
216 Ignore,
217 InsideSlur,
218 AvoidSlur
219 };
220
226 explicit ArticulationDef(const DocumentWeakPtr& document, Cmper partId, ShareMode shareMode, Cmper cmper)
227 : OthersBase(document, partId, shareMode, cmper), fontMain(new FontInfo(document)), fontAlt(new FontInfo(document)) {}
228
229 char32_t charMain{};
230 std::shared_ptr<FontInfo> fontMain;
232 bool autoHorz{};
233 bool autoVert{};
237 bool insideSlur{};
238 bool autoStack{};
241 char32_t charAlt{};
242 std::shared_ptr<FontInfo> fontAlt;
247 bool playArtic{};
250 bool mainIsShape{};
251 bool altIsShape{};
267
268 bool requireAllFields() const override { return false; }
269
270 constexpr static std::string_view XmlNodeName = "articDef";
272};
273
316{
317public:
319 explicit BeatChartElement(const DocumentWeakPtr& document, Cmper partId, ShareMode shareMode, Cmper cmper, Inci inci)
320 : OthersBase(document, partId, shareMode, cmper, inci)
321 {
322 }
323
339
340 // Populated only when the XML node includes a <control> element
341 std::shared_ptr<Control> control;
342
343 // Populated for standard beat entries (inci > 0)
348
349 void integrityCheck() override
350 {
352 if (control && getInci() != 0) {
353 MUSX_INTEGRITY_ERROR("Beat chart for measure " + std::to_string(getCmper()) + " has a control instance in inci " + std::to_string(*getInci()));
354 }
355 if (getInci() == 0 && !control) {
356 control = std::make_shared<Control>();
357 MUSX_INTEGRITY_ERROR("Beat chart for measure " + std::to_string(getCmper()) + " is missing its control instance.");
358 }
359 }
360
361 constexpr static std::string_view XmlNodeName = "beatChart";
363};
364
378{
379public:
384 enum class Prefix
385 {
386 None,
387 Minus,
388 Plus,
389 Sharp,
390 Flat
391 };
392
394 explicit ChordSuffixElement(const DocumentWeakPtr& document, Cmper partId, ShareMode shareMode, Cmper cmper, Inci inci)
395 : OthersBase(document, partId, shareMode, cmper, inci), font(new FontInfo(document))
396 {
397 }
398
399 std::shared_ptr<FontInfo> font;
400 char32_t symbol{};
403 bool isNumber{};
405
406 constexpr static std::string_view XmlNodeName = "chordSuffix";
408};
409
424class ChordSuffixPlayback : public OthersArray<int16_t>
425{
426 std::string_view xmlTag() const override { return XmlNodeName; }
427
428public:
430
431 constexpr static std::string_view XmlNodeName = "chordSuffixPlay";
433};
434
444class ClefList : public OthersBase
445{
446public:
448 explicit ClefList(const DocumentWeakPtr& document, Cmper partId, ShareMode shareMode, Cmper cmper, Inci inci)
449 : OthersBase(document, partId, shareMode, cmper, inci)
450 {
451 }
452
453 // Public properties corresponding to the XML structure, in the same order as in the XML.
459 int percent{};
462 bool unlockVert{};
464
465 constexpr static std::string_view XmlNodeName = "clefEnum";
467};
468
475class DrumStaff : public OthersBase
476{
477public:
479 explicit DrumStaff(const DocumentWeakPtr& document, Cmper partId, ShareMode shareMode, Cmper cmper)
480 : OthersBase(document, partId, shareMode, cmper) {}
481
484
485 constexpr static std::string_view XmlNodeName = "drumStaff";
487};
488
496{
497public:
499
500 constexpr static std::string_view XmlNodeName = "drumStaffStyle";
501};
502
512{
513 static constexpr uint32_t SYMBOL_CHARSET_MAC = 0xfff; // (4095)
514 static constexpr uint32_t SYMBOL_CHARSET_WIN = 2;
515
516public:
518 explicit FontDefinition(const DocumentWeakPtr& document, Cmper partId, ShareMode shareMode, Cmper cmper)
519 : OthersBase(document, partId, shareMode, cmper) {}
520
524 {
525 MacOS,
526 Windows
527 };
528
529 // Public properties corresponding to the XML structure
536 int pitch{};
537 int family{};
538 std::string name;
539
553 bool calcIsSymbolFont() const
554 {
555 if (charsetBank == CharacterSetBank::MacOS && charsetVal == SYMBOL_CHARSET_MAC) {
556 return true;
557 }
558 if (charsetBank == CharacterSetBank::Windows && charsetVal == SYMBOL_CHARSET_WIN) {
559 return true;
560 }
561 return false;
562 }
563
564 constexpr static std::string_view XmlNodeName = "fontName";
566};
567
579class Frame : public OthersBase
580{
581public:
583 explicit Frame(const DocumentWeakPtr& document, Cmper partId, ShareMode shareMode, Cmper cmper, Inci inci = 0)
584 : OthersBase(document, partId, shareMode, cmper, inci) {}
585
586 // Public properties corresponding to the XML structure
590
593 void iterateRawEntries(std::function<bool(const std::shared_ptr<Entry>& entry)> iterator) const;
594
599 std::vector<std::shared_ptr<const Entry>> getEntries() const;
600
601 void integrityCheck() override
602 {
604 if (startTime && (startEntry || endEntry)) {
605 MUSX_INTEGRITY_ERROR("Frame " + std::to_string(getCmper()) + " has non-zero startTime and non-zero startEntry or endEntry.");
606 }
607 if (!startTime && !startEntry) {
608 MUSX_INTEGRITY_ERROR("Frame " + std::to_string(getCmper()) + " has no start entry.");
609 }
610 if (!startTime && !endEntry) {
611 MUSX_INTEGRITY_ERROR("Frame " + std::to_string(getCmper()) + " has no end entry.");
612 }
613 }
614
615 constexpr static std::string_view XmlNodeName = "frameSpec";
617};
618
619class Staff;
627public:
629 explicit InstrumentUsed(const DocumentWeakPtr& document, Cmper partId, ShareMode shareMode, Cmper cmper, Inci inci)
630 : OthersBase(document, partId, shareMode, cmper, inci) {}
631
634 std::shared_ptr<MusicRange> range;
635
637 std::shared_ptr<Staff> getStaff() const;
638
642 static std::shared_ptr<Staff> getStaffAtIndex(const std::vector<std::shared_ptr<InstrumentUsed>>& iuArray, Cmper index);
643
647 static std::optional<size_t> getIndexForStaff(const std::vector<std::shared_ptr<InstrumentUsed>>& iuArray, InstCmper staffId);
648
649 constexpr static std::string_view XmlNodeName = "instUsed";
651};
652
659class KeyFormat : public OthersBase {
660public:
662 explicit KeyFormat(const DocumentWeakPtr& document, Cmper partId, ShareMode shareMode, Cmper cmper)
663 : OthersBase(document, partId, shareMode, cmper) {}
664
665 unsigned semitones{};
666 unsigned scaleTones{};
667
668 constexpr static std::string_view XmlNodeName = "keyFormat";
670};
671
678class KeyMapArray : public OthersBase {
679public:
681 explicit KeyMapArray(const DocumentWeakPtr& document, Cmper partId, ShareMode shareMode, Cmper cmper)
682 : OthersBase(document, partId, shareMode, cmper) {}
683
688 public:
689 bool diatonic{};
690 unsigned hlevel{};
691
693 };
694
695 std::vector<std::shared_ptr<StepElement>> steps;
696
698 unsigned countDiatonicSteps() const
699 {
700 return static_cast<unsigned>(std::count_if(steps.begin(), steps.end(), [](const auto& step) {
701 return step->diatonic;
702 }));
703 }
704
705 constexpr static std::string_view XmlNodeName = "keyMap";
707};
708
716class KeyAttributes : public OthersBase {
717public:
719 explicit KeyAttributes(const DocumentWeakPtr& document, Cmper partId, ShareMode shareMode, Cmper cmper)
720 : OthersBase(document, partId, shareMode, cmper) {}
721
722 // Public properties corresponding to the XML structure
723 int harmRefer{};
729 int gotoKey{};
733 bool hasClefOctv{};
734
735 constexpr static std::string_view XmlNodeName = "keysAttrib";
737};
738
749public:
751 explicit LayerAttributes(const DocumentWeakPtr& document, Cmper partId, ShareMode shareMode, Cmper cmper)
752 : OthersBase(document, partId, shareMode, cmper) {}
753
754 // Public properties corresponding to the XML structure
760 bool freezeLayer{};
761 bool playback{};
765 bool hideLayer{};
766
767 constexpr static std::string_view XmlNodeName = "layerAtts";
769};
770
785
810
832
850
856{
857 Left,
858 Center,
859 Right
860};
861
862class ShapeExpressionDef;
863class TextExpressionDef;
864
872public:
874 enum class CategoryType : Cmper
875 {
876 Invalid,
877 Dynamics,
878 TempoMarks,
883 Misc
884 };
885
887 explicit MarkingCategory(const DocumentWeakPtr& document, Cmper partId, ShareMode shareMode, Cmper cmper)
888 : OthersBase(document, partId, shareMode, cmper) {}
889
891
892 // Font information for the marking category
893 std::shared_ptr<FontInfo> textFont;
894 std::shared_ptr<FontInfo> musicFont;
895 std::shared_ptr<FontInfo> numberFont;
896
900
901 // Vertical and horizontal offsets for positioning adjustments
905
906 // Usage flags representing certain behaviors and visual elements
913 bool breakMmRest{};
914 bool userCreated{};
915
916 // Staff list represented as an integer
918
923 std::map<Cmper, std::weak_ptr<ShapeExpressionDef>> shapeExpressions;
924
929 std::map<Cmper, std::weak_ptr<TextExpressionDef>> textExpressions;
930
932 std::string getName() const;
933
934 constexpr static std::string_view XmlNodeName = "markingsCategory";
936};
937
947public:
949 explicit MarkingCategoryName(const DocumentWeakPtr& document, Cmper partId, ShareMode shareMode, Cmper cmper)
950 : OthersBase(document, partId, shareMode, cmper) {}
951
952 std::string name;
953
954 constexpr static std::string_view XmlNodeName = "markingsCategoryName";
956};
957
964class Measure : public OthersBase {
965public:
967 explicit Measure(const DocumentWeakPtr& document, Cmper measureId, ShareMode shareMode, Cmper cmper)
968 : OthersBase(document, measureId, shareMode, cmper) {}
969
980
983 enum class BarlineType
984 {
985 None,
987 Normal,
988 Double,
989 Final,
990 Solid,
991 Dashed,
992 Tick,
993 Custom
994 };
995
998 enum class ShowKeySigMode
999 {
1000 IfNeeded,
1001 Always,
1002 Never
1003 };
1004
1008 {
1009 IfNeeded,
1010 Always,
1011 Never
1012 };
1013
1015 std::shared_ptr<KeySignature> globalKeySig;
1035 bool noMeasNum{};
1042 bool hasEnding{};
1044 bool hasChord{};
1047 bool abbrvTime{};
1053
1056 { return getCmper() == 1 || showFullNames; }
1057
1062 int calcDisplayNumber() const;
1063
1067 std::shared_ptr<KeySignature> createKeySignature(const std::optional<InstCmper>& forStaff = std::nullopt) const;
1068
1071 std::shared_ptr<TimeSignature> createTimeSignature(const std::optional<InstCmper>& forStaff = std::nullopt) const;
1072
1076 std::shared_ptr<TimeSignature> createDisplayTimeSignature(const std::optional<InstCmper>& forStaff = std::nullopt) const;
1077
1082 util::Fraction calcDuration(const std::optional<InstCmper>& forStaff = std::nullopt) const;
1083
1087 {
1088 return calcDuration() / calcDuration(forStaff);
1089 }
1090
1091 void integrityCheck() override
1092 {
1094 if (!globalKeySig) {
1095 globalKeySig = std::make_shared<KeySignature>(getDocument());
1096 }
1097 }
1098
1099 bool requireAllFields() const override { return false; }
1100
1101 constexpr static std::string_view XmlNodeName = "measSpec";
1103};
1104
1114{
1115public:
1117 explicit MeasureExprAssign(const DocumentWeakPtr& document, Cmper ID, ShareMode shareMode, Cmper cmper, Inci inci)
1118 : OthersBase(document, ID, shareMode, cmper, inci) {}
1119
1120 // Public properties corresponding to the XML structure
1127 int layer{};
1131 bool hidden{};
1132
1135 std::shared_ptr<TextExpressionDef> getTextExpression() const;
1136
1139 std::shared_ptr<ShapeExpressionDef> getShapeExpression() const;
1140
1141 void integrityCheck() override
1142 {
1144 if (!textExprId && !shapeExprId) {
1145 MUSX_INTEGRITY_ERROR("Expression assignment at measure " + std::to_string(getCmper()) + " inci " + std::to_string(getInci().value_or(-1))
1146 + " has no expression definition ID.");
1147 } else if (textExprId && shapeExprId) {
1148 MUSX_INTEGRITY_ERROR("Expression assignment at measure " + std::to_string(getCmper()) + " inci " + std::to_string(getInci().value_or(-1))
1149 + " has both text expr ID " + std::to_string(textExprId) + " and shape expr ID " + std::to_string(shapeExprId));
1150 }
1151 }
1152
1153 bool requireAllFields() const override { return false; }
1154
1155 constexpr static std::string_view XmlNodeName = "measExprAssign";
1157};
1158
1166public:
1168 explicit MeasureNumberRegion(const DocumentWeakPtr& document, Cmper partId, ShareMode shareMode, Cmper cmper)
1169 : OthersBase(document, partId, shareMode, cmper) {}
1170
1172 enum class AlignJustify
1173 {
1174 Left,
1175 Right,
1176 Center
1177 };
1178
1180 enum class TimePrecision
1181 {
1182 WholeSeconds,
1183 Tenths,
1184 Hundredths,
1185 Thousandths,
1186 };
1187
1231
1232 // Public properties
1233 std::shared_ptr<ScorePartData> scoreData;
1234 std::shared_ptr<ScorePartData> partData;
1235
1238 char32_t startChar{};
1239 int base{};
1241 std::string prefix;
1242 std::string suffix;
1243
1245 bool noZero;
1246 bool doubleUp{};
1247 bool time{};
1251 int region{};
1253 bool hideScroll{};
1254 bool hidePage{};
1255
1258 bool calcIncludesMeasure(MeasCmper measureId) const
1259 {
1260 return measureId >= startMeas && measureId < endMeas; // endMeas is non-inclusive!
1261 }
1262
1264 int getStartNumber() const { return int(numberOffset + 1); }
1265
1268 int calcDisplayNumberFor(MeasCmper measureId) const;
1269
1274 static std::shared_ptr<MeasureNumberRegion> findMeasure(const DocumentPtr& document, MeasCmper measureId);
1275
1276 constexpr static std::string_view XmlNodeName = "measNumbRegion";
1278};
1279
1289public:
1291 explicit MultimeasureRest(const DocumentWeakPtr& document, Cmper partId, ShareMode shareMode, Cmper startMeasure)
1292 : OthersBase(document, partId, shareMode, startMeasure) {}
1293
1298 int numStart{};
1305 bool useSymbols{};
1306
1308 MeasCmper getStartMeasure() const { return getCmper(); }
1309
1311 int calcNumberOfMeasures() const { return (std::max)(nextMeas - getStartMeasure(), 0); }
1312
1315
1316 void integrityCheck() override
1317 {
1319 if (nextMeas <= getStartMeasure()) {
1320 MUSX_INTEGRITY_ERROR("Multimeasure rest at " + std::to_string(getCmper()) + " in part " + std::to_string(getPartId()) + " spans 0 or fewer measures.");
1321 }
1322 }
1323
1324 constexpr static std::string_view XmlNodeName = "mmRest";
1326};
1327
1335public:
1337 explicit MultiStaffGroupId(const DocumentWeakPtr& document, Cmper partId, ShareMode shareMode, Cmper cmper)
1338 : OthersBase(document, partId, shareMode, cmper) {}
1339
1341
1342 constexpr static std::string_view XmlNodeName = "multiStaffGroupID";
1344};
1345
1353public:
1355 explicit MultiStaffInstrumentGroup(const DocumentWeakPtr& document, Cmper partId, ShareMode shareMode, Cmper cmper)
1356 : OthersBase(document, partId, shareMode, cmper) {}
1357
1358 std::vector<InstCmper> staffNums;
1359
1360 std::vector<InstCmper> visualStaffNums;
1363
1366 std::shared_ptr<Staff> getStaffAtIndex(size_t x) const;
1367
1369 std::shared_ptr<Staff> getFirstStaff() const;
1370
1372 std::optional<size_t> getIndexOf(InstCmper staffId) const
1373 {
1374 for (size_t x = 0; x < staffNums.size(); x++) {
1375 if (staffNums[x] == staffId) return x;
1376 }
1377 return std::nullopt;
1378 }
1379
1381 std::optional<size_t> getVisualIndexOf(InstCmper staffId) const
1382 {
1383 for (size_t x = 0; x < visualStaffNums.size(); x++) {
1384 if (visualStaffNums[x] == staffId) return x;
1385 }
1386 return std::nullopt;
1387 }
1388
1391 std::shared_ptr<details::StaffGroup> getStaffGroup(Cmper forPartId) const;
1392
1398 std::shared_ptr<details::StaffGroup> calcVisualStaffGroup(Cmper forPartId) const;
1399
1402 static void calcAllMultiStaffGroupIds(const DocumentPtr& document);
1403
1404 void integrityCheck() override
1405 {
1407 if (staffNums.empty()) {
1408 MUSX_INTEGRITY_ERROR("MultiStaffInstrumentGroup " + std::to_string(getCmper()) + " contains no staves.");
1409 } else if (staffNums.size() > 3) {
1410 MUSX_INTEGRITY_ERROR("MultiStaffInstrumentGroup " + std::to_string(getCmper()) + " contains more than 3 staves.");
1411 }
1412 }
1413
1414 constexpr static std::string_view XmlNodeName = "multiStaffInstGroup";
1416};
1417
1425{
1426public:
1428
1429 constexpr static std::string_view XmlNodeName = "namePosAbbrv";
1430};
1431
1439{
1440public:
1442
1443 constexpr static std::string_view XmlNodeName = "namePosAbbrvStyle";
1444};
1445
1453{
1454public:
1456
1457 constexpr static std::string_view XmlNodeName = "namePosFull";
1458};
1459
1467{
1468public:
1470
1471 constexpr static std::string_view XmlNodeName = "namePosFullStyle";
1472};
1473
1480class Page : public OthersBase {
1481public:
1483 explicit Page(const DocumentWeakPtr& document, Cmper pageId, ShareMode shareMode, Cmper cmper)
1484 : OthersBase(document, pageId, shareMode, cmper) {}
1485
1488 int percent{};
1495
1496 std::optional<SystemCmper> lastSystem;
1497
1499 bool isBlank() const { return firstSystem < 0; }
1500
1501 constexpr static std::string_view XmlNodeName = "pageSpec";
1503};
1504
1523{
1524public:
1527 Left, // default value: leave as first (0) item
1528 Center,
1529 Right
1530 };
1531
1534 Top, // default value: leave as first (0) item
1535 Center,
1536 Bottom
1537 };
1538
1540 explicit PageTextAssign(const DocumentWeakPtr& document, Cmper partId, ShareMode shareMode, Cmper cmper, Inci inci)
1541 : OthersBase(document, partId, shareMode, cmper, inci)
1542 {
1543 }
1544
1553 bool hidden{};
1559 bool indRpPos{};
1562
1563 constexpr static std::string_view XmlNodeName = "pageTextAssign";
1565};
1566
1577{
1578public:
1580 explicit PartDefinition(const DocumentWeakPtr& document, Cmper partId, ShareMode shareMode, Cmper cmper)
1581 : OthersBase(document, partId, shareMode, cmper) {}
1582
1583 // Public properties corresponding to the XML structure
1586 int copies{};
1593
1596
1598 bool isScore() const { return getCmper() == SCORE_PARTID; }
1599
1606 Cmper calcSystemIuList(Cmper systemId) const;
1607
1609 static std::shared_ptr<PartDefinition> getScore(const DocumentPtr& document);
1610
1612 static std::vector<std::shared_ptr<PartDefinition>> getInUserOrder(const DocumentPtr& document);
1613
1614 bool requireAllFields() const override { return false; }
1615
1616 constexpr static std::string_view XmlNodeName = "partDef";
1618};
1619
1628class PartGlobals : public OthersBase {
1629public:
1631 explicit PartGlobals(const DocumentWeakPtr& document, Cmper partId, ShareMode shareMode, Cmper cmper)
1632 : OthersBase(document, partId, shareMode, cmper) {}
1633
1634 // Public properties corresponding to the XML structure
1645
1646 constexpr static std::string_view XmlNodeName = "partGlobals";
1648};
1649
1660public:
1662 explicit PercussionNoteInfo(const DocumentWeakPtr& document, Cmper partId, ShareMode shareMode, Cmper cmper, Inci inci)
1663 : OthersBase(document, partId, shareMode, cmper, inci) {}
1664
1671 char32_t closedNotehead{};
1672 char32_t halfNotehead{};
1673 char32_t wholeNotehead{};
1674 char32_t dwholeNotehead{};
1675
1677 int calcStaffReferencePosition() const { return staffPosition - 10; }
1678
1679 constexpr static std::string_view XmlNodeName = "percussionNoteInfo";
1681};
1682
1688{
1689 JumpAuto,
1690 JumpAbsolute,
1691 JumpRelative,
1693 JumpToMark,
1694 Stop,
1695 NoJump
1696};
1697
1703{
1704 Always,
1705 OnPass,
1706 UntilPass
1707};
1708
1717class RepeatBack : public OthersBase {
1718public:
1720 explicit RepeatBack(const DocumentWeakPtr& document, Cmper partId, ShareMode shareMode, Cmper cmper)
1721 : OthersBase(document, partId, shareMode, cmper) {}
1722
1723 // Public properties corresponding to the XML structure
1738
1739 constexpr static std::string_view XmlNodeName = "repeatBack";
1741};
1742
1752{
1753public:
1755 explicit RepeatEndingStart(const DocumentWeakPtr& document, Cmper partId, ShareMode shareMode, Cmper cmper)
1756 : OthersBase(document, partId, shareMode, cmper)
1757 {
1758 }
1759
1776
1778 int calcEndingLength() const;
1779
1783 bool calcIsOpen() const;
1784
1785
1787 {
1790 MUSX_INTEGRITY_ERROR("RepeatEndingStart at measure " + std::to_string(getCmper()) + " has an unexpected trigger value " +
1791 std::to_string(int(trigger)));
1792 }
1793 }
1794
1795 constexpr static std::string_view XmlNodeName = "repeatEndingStart";
1797};
1798
1810public:
1812 explicit RepeatEndingText(const DocumentWeakPtr& document, Cmper partId, ShareMode shareMode, Cmper cmper)
1813 : OthersBase(document, partId, shareMode, cmper) {}
1814
1815 std::string text;
1816
1817 constexpr static std::string_view XmlNodeName = "repeatEndingText";
1819};
1820
1829class RepeatPassList : public OthersArray<int>
1830{
1831 std::string_view xmlTag() const override { return XmlNodeName; }
1832
1833public:
1835
1836 constexpr static std::string_view XmlNodeName = "repeatPassList";
1838};
1839
1846class ShapeData : public OthersArray<int>
1847{
1848 std::string_view xmlTag() const override { return XmlNodeName; }
1849
1850public:
1852
1853 constexpr static std::string_view XmlNodeName = "shapeData";
1855};
1856
1864class ShapeDef : public OthersBase
1865{
1866public:
1868 explicit ShapeDef(const DocumentWeakPtr& document, Cmper partId, ShareMode shareMode, Cmper cmper)
1869 : OthersBase(document, partId, shareMode, cmper)
1870 {
1871 }
1872
1875 {
1876 Undocumented,
1877 Bracket,
1878 CloneChar,
1879 ClosePath,
1880 CurveTo,
1881 DrawChar,
1882 Ellipse,
1883 EndGroup,
1884 ExternalGraphic,
1885 FillAlt,
1886 FillSolid,
1887 GoToOrigin,
1888 GoToStart,
1889 LineWidth,
1890 Rectangle,
1891 RLineTo,
1892 RMoveTo,
1893 SetArrowhead,
1894 SetBlack,
1895 SetDash,
1896 SetFont,
1897 SetGray,
1898 SetWhite,
1899 Slur,
1900 StartGroup,
1901 StartObject,
1902 Stroke,
1903 VerticalMode
1904 };
1905
1910 enum class ShapeType
1911 {
1912 Other = 0,
1913 Articulation = 1,
1914 Barline = 2,
1915 Executable = 3,
1916 Expression = 4,
1917 CustomStem = 5,
1918 Frame = 6,
1919 Arrowhead = 7,
1920 Fretboard = 8,
1921 Clef = 9
1922 };
1923
1927
1930 void iterateInstructions(std::function<bool(InstructionType, std::vector<int>)> callback) const;
1931
1932 bool requireAllFields() const override { return false; }
1933
1934 constexpr static std::string_view XmlNodeName = "shapeDef";
1936};
1937
1980
1988{
1989public:
1991 explicit ShapeInstructionList(const DocumentWeakPtr& document, Cmper partId, ShareMode shareMode, Cmper cmper)
1992 : OthersBase(document, partId, shareMode, cmper)
1993 {
1994 }
1995
1998 {
1999 public:
2000
2001 int numData{};
2003
2005 };
2006
2007 std::vector<std::shared_ptr<Instruction>> instructions;
2008
2009 constexpr static std::string_view XmlNodeName = "shapeList";
2011};
2012
2013class StaffStyle;
2020class Staff : public OthersBase
2021{
2022public:
2025 {
2026 ArabicSuffix,
2027 RomanSuffix,
2029 AlphaSuffix,
2031 };
2032
2034 enum class StemDirection
2035 {
2036 Default,
2037 AlwaysUp,
2038 AlwaysDown
2039 };
2040
2042 enum class NotationStyle
2043 {
2044 Standard,
2045 Percussion,
2046 Tablature
2047 };
2048
2050 enum class HideMode
2051 {
2052 None,
2053 Cutaway,
2054 ScoreParts,
2055 Score
2056 };
2057
2060 {
2061 Normal,
2062 SlashBeats,
2063 Rhythmic,
2064 Blank,
2065 OneBarRepeat,
2066 TwoBarRepeat,
2068 };
2069
2075 {
2076 public:
2077 int interval{};
2078 int adjust{};
2079
2081 };
2082
2095
2104 {
2105 public:
2106 bool setToClef{};
2108
2110 std::shared_ptr<KeySigTransposition> keysig;
2111
2113 std::shared_ptr<ChromaticTransposition> chromatic;
2114
2116 };
2117
2119 explicit Staff(const DocumentWeakPtr& document, Cmper partId, ShareMode shareMode, Cmper cmper)
2120 : OthersBase(document, partId, shareMode, cmper) {}
2121
2122 // WARNING: Any fields added here must have a mask added in StaffStyle (if it does not already exist)
2123 // and must be added to StaffComposite::applyStyle.
2124
2125 // Public properties corresponding to the XML structure
2127 std::shared_ptr<FontInfo> noteFont;
2131 std::optional<int> staffLines{};
2132 std::optional<std::vector<int>> customStaff;
2134 std::string instUuid;
2135 bool floatKeys{};
2136 bool floatTime{};
2137 bool blineBreak{};
2138 bool rbarBreak{};
2139 bool hasStyles{};
2141 std::shared_ptr<Transposition> transposition;
2158 bool flatBeams{};
2162 bool hideLyrics{};
2163 bool noOptimize{};
2171 bool hideClefs{};
2173 bool hideChords{};
2174 bool noKey{};
2179 bool hideRests{};
2180 bool hideTies{};
2181 bool hideDots{};
2188 bool hideStems{};
2190 bool hideBeams{};
2197
2198 // The following values are not in xml but computed by the factory.
2199
2216 std::optional<int> autoNumberValue;
2217 std::optional<Cmper> percussionMapId;
2218
2222
2226
2228 std::shared_ptr<MultiStaffInstrumentGroup> getMultiStaffInstGroup() const;
2229
2231 std::shared_ptr<MultiStaffInstrumentGroup> getMultiStaffInstVisualGroup() const;
2232
2237 std::string getFullInstrumentName(util::EnigmaString::AccidentalStyle accidentalStyle = util::EnigmaString::AccidentalStyle::Ascii, bool preferStaffName = false) const;
2238
2243 std::string getAbbreviatedInstrumentName(util::EnigmaString::AccidentalStyle accidentalStyle = util::EnigmaString::AccidentalStyle::Ascii, bool preferStaffName = false) const;
2244
2246 std::shared_ptr<const NamePositioning> getFullNamePosition() const;
2247
2249 std::shared_ptr<const NamePositioning> getAbbreviatedNamePosition() const;
2250
2252 bool showNamesForPart(Cmper partId) const
2253 { return partId == SCORE_PARTID ? !hideNameInScore : showNameInParts; }
2254
2264 static void calcAllAutoNumberValues(const DocumentPtr& document);
2265
2271 template <typename SubType>
2272 static void calcAllRuntimeValues(const DocumentPtr& document);
2273
2277 std::string addAutoNumbering(const std::string& plainName) const;
2278
2283 ClefIndex calcClefIndexAt(MeasCmper measureId, Edu position, bool forWrittenPitch = false) const;
2284
2286 ClefIndex calcFirstClefIndex(bool forWrittenPitch = false) const
2287 { return calcClefIndexAt(1, 0, forWrittenPitch); }
2288
2293 static ClefIndex calcFirstClefIndex(const DocumentPtr& document, Cmper partId, InstCmper staffCmper);
2294
2296 int calcMiddleStaffPosition() const;
2297
2299 int calcToplinePosition() const;
2300
2302 bool hasInstrumentAssigned() const;
2303
2306 std::vector<std::shared_ptr<PartDefinition>> getContainingParts(bool includeScore = true) const;
2307
2310 std::shared_ptr<PartDefinition> firstFirstContainingPart() const;
2311
2312 void integrityCheck() override
2313 {
2315 if (!staffLines && !customStaff) {
2316 MUSX_INTEGRITY_ERROR("Staff or StaffStyle " + std::to_string(getCmper()) + " has neither a standard nor a custom staff definition.");
2317 } else if (staffLines && customStaff) {
2318 MUSX_INTEGRITY_ERROR("Staff or StaffStyle " + std::to_string(getCmper()) + " has both a standard and a custom staff definition.");
2319 }
2320 if (customStaff) { // guarantee ascending order of staves.
2321 std::sort(customStaff.value().begin(), customStaff.value().end(),
2322 [](const auto& a, const auto& b) { return a < b; });
2323 }
2324 if (transposition) {
2325 if (!transposition->chromatic && !transposition->keysig) {
2326 MUSX_INTEGRITY_ERROR("Staff or StaffStyle " + std::to_string(getCmper()) + " has transposition with neither keysig nor chromatic transposition defined.");
2327 } else if (transposition->chromatic && transposition->keysig) {
2328 MUSX_INTEGRITY_ERROR("Staff or StaffStyle " + std::to_string(getCmper()) + " has transposition with both keysig and chromatic transposition defined.");
2329 }
2330 }
2331 if (useNoteFont && !noteFont) {
2332 noteFont = std::make_shared<FontInfo>(getDocument()); // do this first to avoid unreachable code warning, since MUSX_INTEGRITY_ERROR might throw
2333 MUSX_INTEGRITY_ERROR("Staff or StaffStyle " + std::to_string(getCmper()) + " specifies to use a custom notehead font, but no custom font was provided.");
2334 }
2335 }
2336
2337 bool requireAllFields() const override { return false; }
2338
2339 constexpr static std::string_view XmlNodeName = "staffSpec";
2341
2342private:
2343 template <typename NamePositionType>
2344 std::shared_ptr<const NamePositioning> getNamePosition() const;
2345};
2346
2354class StaffStyle : public Staff
2355{
2356protected:
2358 explicit StaffStyle(const std::shared_ptr<Staff>& staff)
2359 : Staff(*staff), masks(std::make_shared<Masks>(staff->getDocument())) {}
2360
2361public:
2363 explicit StaffStyle(const DocumentWeakPtr& document, Cmper partId, ShareMode shareMode, Cmper cmper)
2364 : Staff(document, partId, shareMode, cmper) {}
2365
2368 class Masks : public Base // Base inheritance needed for requireAllFields
2369 {
2370 public:
2375 explicit Masks(const DocumentWeakPtr& document)
2376 : Base(document, SCORE_PARTID, ShareMode::All) {}
2377
2379 bool flatBeams{};
2381 bool noOptimize{};
2384 bool staffType{};
2386 bool blineBreak{};
2387 bool rbarBreak{};
2388 bool negMnumb{};
2389 bool negRepeat{};
2392 bool fullName{};
2393 bool abrvName{};
2394 bool floatKeys{};
2395 bool floatTime{};
2397 bool negKey{};
2398 bool negTime{};
2399 bool negClef{};
2400 bool hideStaff{};
2401 bool noKey{};
2405 bool showTies{};
2406 bool showDots{};
2407 bool showRests{};
2408 bool showStems{};
2409 bool hideChords{};
2411 bool hideLyrics{};
2417
2418 bool requireAllFields() const override { return false; }
2419
2421 };
2422
2423 std::string styleName;
2425 std::shared_ptr<Masks> masks;
2427
2435 static std::vector<std::shared_ptr<StaffStyle>> findAllOverlappingStyles(const DocumentPtr& document,
2436 Cmper partId, InstCmper staffId, MeasCmper measId, Edu eduPosition);
2437
2438 bool requireAllFields() const override { return false; }
2439
2440 void integrityCheck() override
2441 {
2442 if (!masks) {
2443 // Finale allows creation of staff styles with no masks, so this is just a verbose comment
2445 + " (" + std::to_string(getCmper()) + ") does not override anything.");
2446 masks = std::make_shared<Masks>(getDocument());
2447 }
2448 if (useNoteFont && !masks->floatNoteheadFont && !noteFont) {
2449 useNoteFont = false; // silence integrity check in Staff.
2450 }
2452 }
2453
2454 constexpr static std::string_view XmlNodeName = "staffStyle";
2456};
2457
2465{
2466public:
2468 explicit StaffStyleAssign(const DocumentWeakPtr& document, Cmper partId, ShareMode shareMode, Cmper cmper, Inci inci)
2469 : MusicRange(document, partId, shareMode, cmper, inci) {}
2470
2472
2476 std::shared_ptr<StaffStyle> getStaffStyle() const;
2477
2478 void integrityCheck() override
2479 {
2481 if (!styleId) {
2482 MUSX_INTEGRITY_ERROR(std::string("Staff style assignment has no staff style id:")
2483 + " Part " + std::to_string(getPartId())
2484 + " Staff " + std::to_string(getCmper())
2485 );
2486 }
2487 }
2488
2489 constexpr static std::string_view XmlNodeName = "staffStyleAssign";
2491};
2492
2501{
2502private:
2504 explicit StaffComposite(const std::shared_ptr<Staff>& staff, Cmper requestedPartId)
2505 : StaffStyle(staff), m_requestedPartId(requestedPartId) {}
2506
2509 void applyStyle(const std::shared_ptr<StaffStyle>& staffStyle);
2510
2511 const Cmper m_requestedPartId;
2512
2513public:
2525 static std::shared_ptr<StaffComposite> createCurrent(const DocumentPtr& document, Cmper partId, InstCmper staffId, MeasCmper measId, Edu eduPosition);
2526
2528 Cmper getPartId() const final override { return m_requestedPartId; }
2529
2531 std::shared_ptr<others::Staff> getRawStaff() const;
2532};
2533
2541{
2542public:
2544 explicit StaffSystem(const DocumentWeakPtr& document, Cmper staffSystemId, ShareMode shareMode, Cmper cmper)
2545 : OthersBase(document, staffSystemId, shareMode, cmper)
2546 {
2547 }
2548
2552 double horzPercent{};
2561 bool noNames{};
2565 bool scaleVert{};
2570
2573 MeasCmper getLastMeasure() const { return endMeas - 1; }
2574
2577 int calcNumMeasures() const { return endMeas - startMeas; }
2578
2584 std::pair<double, double> calcMinMaxStaffSizes() const;
2585
2586 constexpr static std::string_view XmlNodeName = "staffSystemSpec";
2588};
2589
2600{
2601public:
2603 explicit SystemLock(const DocumentWeakPtr& document, Cmper partId, ShareMode shareMode, Cmper cmper)
2604 : OthersBase(document, partId, shareMode, cmper) {}
2605
2608
2609 constexpr static std::string_view XmlNodeName = "lockMeas";
2611};
2612
2629{
2630public:
2632 explicit TempoChange(const DocumentWeakPtr& document, Cmper partId, ShareMode shareMode, Cmper cmper, Inci inci)
2633 : OthersBase(document, partId, shareMode, cmper, inci)
2634 {
2635 }
2636
2637 int ratio{};
2642 int unit{};
2646
2651 int getAbsoluteTempo(NoteType noteType = NoteType::Quarter) const;
2652
2653 constexpr static std::string_view XmlNodeName = "tempoDef";
2655};
2656
2666class TextBlock : public OthersBase
2667{
2668public:
2670 enum class TextType
2671 {
2672 Block,
2673 Expression
2674 };
2675
2677 explicit TextBlock(const DocumentWeakPtr& document, Cmper partId, ShareMode shareMode, Cmper cmper)
2678 : OthersBase(document, partId, shareMode, cmper) {}
2679
2680 // Public properties corresponding to the XML structure
2683 bool newPos36{};
2686 bool showShape{};
2688 bool wordWrap{};
2694
2696 std::shared_ptr<TextsBase> getRawTextBlock() const;
2697
2699 std::string getText(bool trimTags = false, util::EnigmaString::AccidentalStyle accidentalStyle = util::EnigmaString::AccidentalStyle::Ascii) const;
2700
2702 static std::string getText(const DocumentPtr& document, const Cmper textId, bool trimTags = false,
2704
2705 bool requireAllFields() const override { return false; }
2706
2707 constexpr static std::string_view XmlNodeName = "textBlock";
2709};
2710
2718public:
2724 explicit TextExpressionDef(const DocumentWeakPtr& document, Cmper partId, ShareMode shareMode, Cmper cmper)
2725 : OthersBase(document, partId, shareMode, cmper) {}
2726
2730 int value{};
2731 int auxData1{};
2732 int playPass{};
2735 bool useAuxData{};
2748 std::string description;
2749
2751 std::shared_ptr<TextBlock> getTextBlock() const;
2752
2754 std::shared_ptr<Enclosure> getEnclosure() const;
2755
2756 constexpr static std::string_view XmlNodeName = "textExprDef";
2758};
2759
2769public:
2771
2772 constexpr static std::string_view XmlNodeName = "textExpressionEnclosure";
2774};
2775
2785{
2786public:
2788 explicit TextRepeatAssign(const DocumentWeakPtr& document, Cmper partId, ShareMode shareMode, Cmper cmper, Inci inci)
2789 : OthersBase(document, partId, shareMode, cmper, inci)
2790 {
2791 }
2792
2793 // Public properties corresponding to the XML structure
2804 bool autoUpdate{};
2808
2809 constexpr static std::string_view XmlNodeName = "textRepeatAssign";
2811};
2812
2825{
2826public:
2829 {
2830 Passes,
2831 RepeatID,
2833 };
2834
2836 explicit TextRepeatDef(const DocumentWeakPtr& document, Cmper partId, ShareMode shareMode, Cmper cmper)
2837 : OthersBase(document, partId, shareMode, cmper), font(new FontInfo(document))
2838 {
2839 }
2840
2841 // Public properties corresponding to the XML structure
2842 std::shared_ptr<FontInfo> font;
2849 std::vector<int> passList;
2850
2851 constexpr static std::string_view XmlNodeName = "textRepeatDef";
2853};
2854
2864{
2865public:
2867
2868 constexpr static std::string_view XmlNodeName = "textRepeatEnclosure";
2870};
2871
2881{
2882public:
2884 explicit TextRepeatText(const DocumentWeakPtr& document, Cmper partId, ShareMode shareMode, Cmper cmper)
2885 : OthersBase(document, partId, shareMode, cmper)
2886 {
2887 }
2888
2889 std::string text;
2890
2891 constexpr static std::string_view XmlNodeName = "textRepeatText";
2893};
2894
2904{
2905public:
2907 explicit TimeCompositeLower(const DocumentWeakPtr& document, Cmper partId, ShareMode shareMode, Cmper cmper)
2908 : OthersBase(document, partId, shareMode, cmper)
2909 {
2910 }
2911
2916 {
2917 public:
2919 bool startGroup{};
2920
2922 };
2923
2924 std::vector<std::shared_ptr<CompositeItem>> items;
2925
2926 constexpr static std::string_view XmlNodeName = "timeLower";
2928};
2929
2939{
2940public:
2942 explicit TimeCompositeUpper(const DocumentWeakPtr& document, Cmper partId, ShareMode shareMode, Cmper cmper)
2943 : OthersBase(document, partId, shareMode, cmper)
2944 {
2945 }
2946
2962
2964 std::vector<std::shared_ptr<CompositeItem>> items;
2965
2966 constexpr static std::string_view XmlNodeName = "timeUpper";
2968};
2969
2982class TonalCenterFlats : public OthersArray<unsigned, 8>
2983{
2984 std::string_view xmlTag() const override { return XmlNodeName; }
2985
2986public:
2988
2989 constexpr static std::string_view XmlNodeName = "fstKeyFlats";
2991};
2992
3004class TonalCenterSharps : public OthersArray<unsigned, 8>
3005{
3006 std::string_view xmlTag() const override { return XmlNodeName; }
3007
3008public:
3010
3011 constexpr static std::string_view XmlNodeName = "fstKeySharps";
3013};
3014
3015} // namespace others
3016} // namespace dom
3017} // namespace musx
Base class to enforce polymorphism across all DOM classes.
Definition BaseClasses.h:60
DocumentPtr getDocument() const
Gets a reference to the Document.
Definition BaseClasses.h:85
virtual void integrityCheck()
Allows a class to determine if it has been properly contructed by the factory and fix issues that it ...
Definition BaseClasses.h:132
ShareMode
Describes how this instance is shared between part and score.
Definition BaseClasses.h:68
virtual Cmper getPartId() const
Gets the partId for this instance (or SCORE_PARTID for score)
Definition BaseClasses.h:104
Represents the default font settings for a particular element type.
Definition CommonClasses.h:119
Template pattern for OthersBase items consisting of an array of a single item.
Definition BaseClasses.h:262
OthersArray(const DocumentWeakPtr &document, Cmper partId, ShareMode shareMode, Cmper cmper)
Constructor function.
Definition BaseClasses.h:268
Base class for all "others" types.
Definition BaseClasses.h:223
std::optional< Inci > getInci() const
Gets the optional array index (inci).
Definition BaseClasses.h:250
Cmper getCmper() const
Gets the cmper key value.
Definition BaseClasses.h:243
Lists the aleration values of each nth flat in a custom key signature. Normally these values are all ...
Definition Others.h:75
static const xml::XmlElementArray< AcciAmountFlats > & xmlMappingArray()
Required for musx::factory::FieldPopulator.
static constexpr std::string_view XmlNodeName
The XML node name for this type.
Definition Others.h:81
Lists the aleration values of each nth sharp in a custom key signature. Normally these values are all...
Definition Others.h:108
static constexpr std::string_view XmlNodeName
The XML node name for this type.
Definition Others.h:114
static const xml::XmlElementArray< AcciAmountSharps > & xmlMappingArray()
Required for musx::factory::FieldPopulator.
Lists the order of flats by pitch class index (0..6 = C..B) in a custom key signature....
Definition Others.h:134
static const xml::XmlElementArray< AcciOrderFlats > & xmlMappingArray()
Required for musx::factory::FieldPopulator.
static constexpr std::string_view XmlNodeName
The XML node name for this type.
Definition Others.h:140
Lists the order of sharps by pitch class index (0..6 = C..B) in a custom key signature....
Definition Others.h:165
static constexpr std::string_view XmlNodeName
The XML node name for this type.
Definition Others.h:171
static const xml::XmlElementArray< AcciOrderSharps > & xmlMappingArray()
Required for musx::factory::FieldPopulator.
Stores the properties and behaviors of articulation definitions.
Definition Others.h:185
bool autoVert
Whether vertical auto-positioning is enabled.
Definition Others.h:233
static constexpr std::string_view XmlNodeName
The XML node name for this type.
Definition Others.h:270
Evpu xOffsetAlt
Horizontal offset for the alternate symbol.
Definition Others.h:248
Evpu yOffsetMain
Vertical offset for the main symbol.
Definition Others.h:244
char32_t charAlt
Alternate symbol character (utf32).
Definition Others.h:241
int startTopNoteDelta
Attack change for the top note.
Definition Others.h:254
int durBotNoteDelta
Duration change for the bottom note.
Definition Others.h:259
char32_t charMain
Main symbol character (utf32).
Definition Others.h:229
Cmper mainShape
Main shape ID (if applicable).
Definition Others.h:252
bool autoStack
Whether automatic stacking is enabled.
Definition Others.h:238
int ampTopNotePercent
Key velocity percentage for the top note.
Definition Others.h:264
bool requireAllFields() const override
Definition Others.h:268
int durTopNotePercent
Duration percent change for the top note.
Definition Others.h:260
bool aboveSymbolAlt
Whether the alternate symbol is used above. (Otherwise main symbol is used.)
Definition Others.h:235
int ampBotNotePercent
Key velocity percentage for the bottom note.
Definition Others.h:265
bool centerOnStem
Whether centering on the stem is enabled.
Definition Others.h:239
SlurInteractionMode
Defines the interaction mode with slurs.
Definition Others.h:215
@ Ignore
default value (may not appear in xml)
Evpu defVertPos
Default vertical position.
Definition Others.h:245
Evpu xOffsetMain
Horizontal offset for the main symbol.
Definition Others.h:243
Evpu yOffsetAlt
Vertical offset for the alternate symbol.
Definition Others.h:249
Cmper altShape
Alternate shape ID (if applicable).
Definition Others.h:253
bool altIsShape
Whether the alternate symbol is a shape.
Definition Others.h:251
std::shared_ptr< FontInfo > fontAlt
The font info for the alternate symbol. (xml nodes <fontAlt>, <sizeAlt>, and <efxAlt>)
Definition Others.h:242
int startTopNotePercent
Attack change percent for the top note.
Definition Others.h:256
bool playArtic
Whether playback articulation is enabled.
Definition Others.h:247
bool insideSlur
Whether the articulation is inside a slur. (Used in addition to SlurInteractionMode::InsideSlur)
Definition Others.h:237
AutoVerticalMode autoVertMode
Auto vertical positioning mode.
Definition Others.h:234
int durTopNoteDelta
Duration change for the top note.
Definition Others.h:258
std::shared_ptr< FontInfo > fontMain
The font info for the main symbol. (xml nodes <fontMain>, <sizeMain>, and <efxMain>)
Definition Others.h:230
bool belowSymbolAlt
Whether the alternate symbol is used below. (Otherwise main symbol is used.)
Definition Others.h:236
int ampBotNoteDelta
Key velocity change for the bottom note.
Definition Others.h:263
SlurInteractionMode slurInteractionMode
Slur interaction mode.
Definition Others.h:240
int startBotNotePercent
Attack change percent for the bottom note.
Definition Others.h:257
bool mainIsShape
Whether the main symbol is a shape.
Definition Others.h:250
int durBotNotePercent
Duration percent change for the bottom note.
Definition Others.h:261
CopyMode
Defines the character copy mode (vertical or horizontal)
Definition Others.h:205
@ Vertical
Copy symbol vertically (xml value is "both")
@ None
default value (may not appear in xml)
int ampTopNoteDelta
Key velocity change for the top note.
Definition Others.h:262
AutoVerticalMode
Defines the automatic vertical positioning mode. These values are only meaningful if autoVert is true...
Definition Others.h:192
@ AlwaysNoteheadSide
default value (may not appear in xml)
int startBotNoteDelta
Attack change for the bottom note.
Definition Others.h:255
bool outsideStaff
Whether the articulation is outside the staff.
Definition Others.h:266
bool autoHorz
Whether horizontal auto-positioning is enabled.
Definition Others.h:232
ArticulationDef(const DocumentWeakPtr &document, Cmper partId, ShareMode shareMode, Cmper cmper)
Constructor.
Definition Others.h:226
CopyMode copyMode
"Copy Main Symbol" option.
Definition Others.h:231
bool avoidStaffLines
Whether to avoid staff lines.
Definition Others.h:246
static const xml::XmlElementArray< ArticulationDef > & xmlMappingArray()
Required for musx::factory::FieldPopulator.
Control settings for a beat chart, only used when inci == 0.
Definition Others.h:330
Edu totalDur
Total logical duration of the measure (XML: <totalDur>)
Definition Others.h:332
Evpu minWidth
Minimum required width (XML: <minWidth>)
Definition Others.h:334
static const xml::XmlElementArray< Control > & xmlMappingArray()
Required for musx::factory::FieldPopulator.
Evpu totalWidth
Total width allocated to the measure (XML: <totalWidth>)
Definition Others.h:333
Evpu allotWidth
Allotted width before justification (XML: <allotWidth>)
Definition Others.h:335
A single beat chart element from Finale's music spacing system.
Definition Others.h:316
static constexpr std::string_view XmlNodeName
The XML node name for this type.
Definition Others.h:361
void integrityCheck() override
Allows a class to determine if it has been properly contructed by the factory and fix issues that it ...
Definition Others.h:349
Edu dur
Duration of this beat span.
Definition Others.h:344
static const xml::XmlElementArray< BeatChartElement > & xmlMappingArray()
Required for musx::factory::FieldPopulator.
std::shared_ptr< Control > control
Control data for this beat chart element (only present for inci == 0)
Definition Others.h:341
BeatChartElement(const DocumentWeakPtr &document, Cmper partId, ShareMode shareMode, Cmper cmper, Inci inci)
Constructor function.
Definition Others.h:319
Evpu minPos
Minimum position (see remarks in the class-level description of BeatChartElement)
Definition Others.h:347
Evpu endPos
End position of the beat span.
Definition Others.h:346
Evpu pos
Horizontal position within the measure.
Definition Others.h:345
Represents a single element in a chord suffix (e.g., a symbol like "1" or "+").
Definition Others.h:378
static const xml::XmlElementArray< ChordSuffixElement > & xmlMappingArray()
Required for musx::factory::FieldPopulator.
std::shared_ptr< FontInfo > font
Font info for this symbol (xml nodes are <fontID>, <fontSize>, and <efx>)
Definition Others.h:399
Evpu xdisp
Horizontal displacement in EVPU.
Definition Others.h:401
Prefix prefix
Optional prefix for the symbol, e.g., "plus".
Definition Others.h:404
bool isNumber
Indicates the symbol value is numeric rather than a UTF-32 character.
Definition Others.h:403
char32_t symbol
Unicode symbol (xml node is <suffix>)
Definition Others.h:400
Evpu ydisp
Vertical displacement in EVPU.
Definition Others.h:402
ChordSuffixElement(const DocumentWeakPtr &document, Cmper partId, ShareMode shareMode, Cmper cmper, Inci inci)
Constructor function.
Definition Others.h:394
Prefix
Enum for chord symbol prefix options.
Definition Others.h:385
@ None
No prefix (default: may not appear in XML)
static constexpr std::string_view XmlNodeName
The XML node name for this type.
Definition Others.h:406
Represents a list of repeat ending numbers for a RepeatEndingStart instance.
Definition Others.h:425
static const xml::XmlElementArray< ChordSuffixPlayback > & xmlMappingArray()
Required for musx::factory::FieldPopulator.
static constexpr std::string_view XmlNodeName
The XML node name for this type.
Definition Others.h:431
Represents an element in multimeasure clef list with its positioning and percentage values.
Definition Others.h:445
bool afterBarline
"Place Clef After Barline"
Definition Others.h:463
ShowClefMode clefMode
The clef mode from the <clefMode> element.
Definition Others.h:461
static const xml::XmlElementArray< ClefList > & xmlMappingArray()
Required for musx::factory::FieldPopulator.
int xEvpuOffset
The xEvpuOffset value from the <xEvpuOffset> element.
Definition Others.h:460
Edu xEduPos
Definition Others.h:455
ClefIndex clefIndex
The 0-based clef index from the <clef> element.
Definition Others.h:454
bool unlockVert
"Allow Vertical Drag"
Definition Others.h:462
ClefList(const DocumentWeakPtr &document, Cmper partId, ShareMode shareMode, Cmper cmper, Inci inci)
Constructor function.
Definition Others.h:448
Evpu yEvpuPos
The yEvpuPos value from the <yEvpuPos> element.
Definition Others.h:458
int percent
The percentage value from the <percent> element.
Definition Others.h:459
static constexpr std::string_view XmlNodeName
The XML node name for this type.
Definition Others.h:465
Identifies the percussion map ("drum library") for a staff style with percussion notations.
Definition Others.h:496
static constexpr std::string_view XmlNodeName
The XML node name for this type.
Definition Others.h:500
Identifies the percussion map ("drum library") for a staff with percussion notations.
Definition Others.h:476
DrumStaff(const DocumentWeakPtr &document, Cmper partId, ShareMode shareMode, Cmper cmper)
Constructor function.
Definition Others.h:479
static constexpr std::string_view XmlNodeName
The XML node name for this type.
Definition Others.h:485
static const xml::XmlElementArray< DrumStaff > & xmlMappingArray()
Required for musx::factory::FieldPopulator.
Cmper whichDrumLib
Definition Others.h:482
Represents the enclosure settings for text expressions.
Definition CommonClasses.h:483
Enclosure(const DocumentWeakPtr &document, Cmper partId=0, ShareMode shareMode=ShareMode::All, Cmper cmper=0)
Constructs an Enclosure object.
Definition CommonClasses.h:509
The name and font characteristics of fonts contained.
Definition Others.h:512
int charsetVal
Definition Others.h:531
bool calcIsSymbolFont() const
Calculates if this font is a symbol font.
Definition Others.h:553
FontDefinition(const DocumentWeakPtr &document, Cmper partId, ShareMode shareMode, Cmper cmper)
Constructor function.
Definition Others.h:518
CharacterSetBank charsetBank
The character set bank.
Definition Others.h:530
CharacterSetBank
The character set for the bank.
Definition Others.h:524
std::string name
The font name e.g., "Broadway Copyist Text".
Definition Others.h:538
int family
Represents the <family> element, e.g., 0. (use unknown)
Definition Others.h:537
static const xml::XmlElementArray< FontDefinition > & xmlMappingArray()
Required for musx::factory::FieldPopulator.
static constexpr std::string_view XmlNodeName
The XML node name for this type.
Definition Others.h:564
int pitch
Represents the <pitch> element, e.g., 0. (use unknown)
Definition Others.h:536
Represents the attributes of a TGF entry frame.
Definition Others.h:580
Frame(const DocumentWeakPtr &document, Cmper partId, ShareMode shareMode, Cmper cmper, Inci inci=0)
Constructor function.
Definition Others.h:583
static constexpr std::string_view XmlNodeName
The XML node name for this type.
Definition Others.h:615
void iterateRawEntries(std::function< bool(const std::shared_ptr< Entry > &entry)> iterator) const
Iterates all the raw entries in a frame, passing them to the iterator function. If the iterator funct...
Definition Implementations.cpp:1273
Edu startTime
The starting position within the measure. (Appears to be zero when startEntry and endEntry are suppli...
Definition Others.h:589
std::vector< std::shared_ptr< const Entry > > getEntries() const
Returns a vector of entries contained in the frame.
Definition Implementations.cpp:1286
EntryNumber endEntry
End entry number for this frame. (Appears to be zero when startTime is supplied.)
Definition Others.h:588
EntryNumber startEntry
Start entry number for this frame. (Appears to be zero when startTime is supplied....
Definition Others.h:587
static const xml::XmlElementArray< Frame > & xmlMappingArray()
Required for musx::factory::FieldPopulator.
void integrityCheck() override
Allows a class to determine if it has been properly contructed by the factory and fix issues that it ...
Definition Others.h:601
An array of InstrumentUsed defines a set of staves in a staff system or in Scroll View.
Definition Others.h:626
static std::shared_ptr< Staff > getStaffAtIndex(const std::vector< std::shared_ptr< InstrumentUsed > > &iuArray, Cmper index)
Returns the Staff instance at a specified index of iuArray or nullptr if not found.
Definition Implementations.cpp:1606
static constexpr std::string_view XmlNodeName
The XML node name for this type.
Definition Others.h:649
static std::optional< size_t > getIndexForStaff(const std::vector< std::shared_ptr< InstrumentUsed > > &iuArray, InstCmper staffId)
Returns the 0-based index of the InstCmper or std::nullopt if not found.
Definition Implementations.cpp:1613
InstrumentUsed(const DocumentWeakPtr &document, Cmper partId, ShareMode shareMode, Cmper cmper, Inci inci)
Constructor function.
Definition Others.h:629
std::shared_ptr< MusicRange > range
The music range. (Late versions of Finale may always include the entire piece here....
Definition Others.h:634
Evpu distFromTop
Distance from the top of the system (negative is down)
Definition Others.h:633
InstCmper staffId
Staff cmper (xml node is <inst>)
Definition Others.h:632
std::shared_ptr< Staff > getStaff() const
Returns the Staff instance for this element.
Definition Implementations.cpp:1597
static const xml::XmlElementArray< InstrumentUsed > & xmlMappingArray()
Required for musx::factory::FieldPopulator.
Represents the attributes associated with a Finale key signature.
Definition Others.h:716
bool hasClefOctv
If true, the key signature has clef octave override tables. See details::ClefOctaveFlats and details:...
Definition Others.h:733
int gotoKey
Definition Others.h:729
KeyAttributes(const DocumentWeakPtr &document, Cmper partId, ShareMode shareMode, Cmper cmper)
Constructor function.
Definition Others.h:719
int harmRefer
Definition Others.h:723
Cmper symbolList
Cmper of the symbol list that specifies the accidentals for the key. These are stored in incidents of...
Definition Others.h:732
int middleCKey
MIDI key number to use for middle C. This value transposes playback if it is set other than the MIDI ...
Definition Others.h:726
Cmper fontSym
Definition Others.h:727
static const xml::XmlElementArray< KeyAttributes > & xmlMappingArray()
Required for musx::factory::FieldPopulator.
static constexpr std::string_view XmlNodeName
The XML node name for this type.
Definition Others.h:735
The key format for a custom key signature.
Definition Others.h:659
KeyFormat(const DocumentWeakPtr &document, Cmper partId, ShareMode shareMode, Cmper cmper)
Constructor function.
Definition Others.h:662
static const xml::XmlElementArray< KeyFormat > & xmlMappingArray()
Required for musx::factory::FieldPopulator.
unsigned semitones
Number of semitones in the octave (e.g. 12 for standard keys, 24 for 24-EDO, 31 for 31-EDO,...
Definition Others.h:665
static constexpr std::string_view XmlNodeName
The XML node name for this type.
Definition Others.h:668
unsigned scaleTones
Number of diatonic steps in the scale (almost always 7).
Definition Others.h:666
Represents a single <keych> element inside the <keyMap>.
Definition Others.h:687
bool diatonic
Whether the step is diatonic (true if <diatonic> is present).
Definition Others.h:689
unsigned hlevel
Harmonic level (scale degree) of this step. (xml node is <hlevel>)
Definition Others.h:690
static const xml::XmlElementArray< StepElement > & xmlMappingArray()
Required for musx::factory::FieldPopulator.
An array of step elements from which one can create a key map.
Definition Others.h:678
std::vector< std::shared_ptr< StepElement > > steps
Collection of keych step elements.
Definition Others.h:695
unsigned countDiatonicSteps() const
Counts the number of diatonic steps in the steps array.
Definition Others.h:698
static constexpr std::string_view XmlNodeName
The XML node name for this type.
Definition Others.h:705
KeyMapArray(const DocumentWeakPtr &document, Cmper partId, ShareMode shareMode, Cmper cmper)
Constructor function.
Definition Others.h:681
static const xml::XmlElementArray< KeyMapArray > & xmlMappingArray()
Required for musx::factory::FieldPopulator.
Represents the attributes of a Finale "layer".
Definition Others.h:748
bool freezeLayer
"Freeze Stems and Ties"
Definition Others.h:760
bool playback
If true, playback this layer. If false, the layer is muted.
Definition Others.h:761
int restOffset
"Adjust Floating Rests by " number of staff steps.
Definition Others.h:755
bool ignoreHiddenLayers
"Ignore Hidden Layers"
Definition Others.h:764
bool freezeStemsUp
If true, freeze stems up, otherwise freeze stems down. Only used if freezeLayer is true....
Definition Others.h:759
bool ignoreHiddenNotesOnly
"Ignore Layers Containing Only Hidden Notes" (xml node is <ignoreHidden>)
Definition Others.h:763
bool hideLayer
"Hide Layer when Inactive"
Definition Others.h:765
static constexpr std::string_view XmlNodeName
The XML node name for this type.
Definition Others.h:767
bool affectSpacing
"Affect Music Spacing" (xml node is <spacing>)
Definition Others.h:762
static const xml::XmlElementArray< LayerAttributes > & xmlMappingArray()
Required for musx::factory::FieldPopulator.
bool useRestOffset
"Adjust Floating Rests by ". Determines if restOffset is used. (xml node is <useRestOff>)
Definition Others.h:758
bool onlyIfOtherLayersHaveNotes
"Apply Settings Only if Notes are in Other Layers" (xml node is <floatLayer>)
Definition Others.h:757
LayerAttributes(const DocumentWeakPtr &document, Cmper partId, ShareMode shareMode, Cmper cmper)
Constructor function.
Definition Others.h:751
bool freezTiesToStems
"Freeze Ties in the Same Direction as Stems" (xml node is <flipTies>)
Definition Others.h:756
Represents the name associated with a MarkingCategory.
Definition Others.h:946
std::string name
The name of the marking category.
Definition Others.h:952
static const xml::XmlElementArray< MarkingCategoryName > & xmlMappingArray()
Required for musx::factory::FieldPopulator.
MarkingCategoryName(const DocumentWeakPtr &document, Cmper partId, ShareMode shareMode, Cmper cmper)
Constructor function.
Definition Others.h:949
static constexpr std::string_view XmlNodeName
The XML node name for this type.
Definition Others.h:954
Represents a category of markings used.
Definition Others.h:871
bool usesTextFont
whether this category uses the text font
Definition Others.h:907
Evpu horzOffset
Additional horizontal offset.
Definition Others.h:902
bool usesMusicFont
whether this category uses the music font
Definition Others.h:908
std::string getName() const
gets the name of the marking category
Definition Implementations.cpp:1898
bool usesBreakMmRests
whether this category uses the breakMmRest setting
Definition Others.h:912
bool usesNumberFont
whether this category uses the number font
Definition Others.h:909
Evpu vertOffsetBaseline
Additional vertical offset.
Definition Others.h:903
static constexpr std::string_view XmlNodeName
The XML node name for this type.
Definition Others.h:934
bool userCreated
whether the user created this category
Definition Others.h:914
CategoryType
Enumeration for the type of marking category.
Definition Others.h:875
@ RehearsalMarks
Rehearsal marks, often used for reference points in the score.
@ Dynamics
Dynamics markings, such as forte, piano, etc.
@ Invalid
There should always be a category type supplied.
@ TechniqueText
Technique text such as "pizzicato" or "arco.".
@ Misc
Represents miscellaneous markings that do not fit into other categories.
@ TempoMarks
Tempo indications such as Allegro (with or without metronome marking).
@ TempoAlterations
Tempo alteration markings, such as accel. and rit. (xml value is "tempoAlts")
@ ExpressiveText
Expressive text such as "espressivo.".
std::shared_ptr< FontInfo > musicFont
Music font.
Definition Others.h:894
static const xml::XmlElementArray< MarkingCategory > & xmlMappingArray()
Required for musx::factory::FieldPopulator.
Evpu vertOffsetEntry
Additional vertical entry offset.
Definition Others.h:904
std::shared_ptr< FontInfo > textFont
Text font.
Definition Others.h:893
HorizontalTextJustification justification
Justification for the text within the marking.
Definition Others.h:899
std::map< Cmper, std::weak_ptr< ShapeExpressionDef > > shapeExpressions
A list of shape expressions in this category.
Definition Others.h:923
VerticalMeasExprAlign vertAlign
Vertical alignment for the marking.
Definition Others.h:898
Cmper staffList
The staff list if useStaffList is true.
Definition Others.h:917
bool breakMmRest
whether expressions in this category break multimeasure rests
Definition Others.h:913
bool usesPositioning
whether this category uses the positioning elements (Finale UI only allows true)
Definition Others.h:910
bool usesStaffList
whether this category uses a staff list
Definition Others.h:911
std::map< Cmper, std::weak_ptr< TextExpressionDef > > textExpressions
A list of text expressions in this category.
Definition Others.h:929
MarkingCategory(const DocumentWeakPtr &document, Cmper partId, ShareMode shareMode, Cmper cmper)
Constructor function.
Definition Others.h:887
HorizontalMeasExprAlign horzAlign
Horizontal alignment for the marking.
Definition Others.h:897
CategoryType categoryType
Category type of the marking.
Definition Others.h:890
std::shared_ptr< FontInfo > numberFont
Number font.
Definition Others.h:895
Assigns a TextExpressionDef or ShapeExpressionDef to a measure.
Definition Others.h:1114
static const xml::XmlElementArray< MeasureExprAssign > & xmlMappingArray()
Required for musx::factory::FieldPopulator.
bool hidden
True if the dynamic is hidden.
Definition Others.h:1131
void integrityCheck() override
Allows a class to determine if it has been properly contructed by the factory and fix issues that it ...
Definition Others.h:1141
bool dontScaleWithEntry
Inverse of "Scale Expression with Attached Note".
Definition Others.h:1128
Cmper staffList
The cmper of the staff list to use if staffAssign is negative.
Definition Others.h:1130
InstCmper staffAssign
The staff to which this expression is assigned, or -1 if it uses staffList.
Definition Others.h:1126
static constexpr std::string_view XmlNodeName
The XML node name for this type.
Definition Others.h:1155
Cmper shapeExprId
The Cmper of a shape expression (xml node is <shapeExprID>)
Definition Others.h:1122
MeasureExprAssign(const DocumentWeakPtr &document, Cmper ID, ShareMode shareMode, Cmper cmper, Inci inci)
Constructor function.
Definition Others.h:1117
Cmper textExprId
The Cmper of a text expression (xml node is <textExprID>)
Definition Others.h:1121
std::shared_ptr< ShapeExpressionDef > getShapeExpression() const
Gets the assigned shape expression.
Definition Implementations.cpp:1998
bool requireAllFields() const override
Definition Others.h:1153
int layer
The 1-based layer number to which this expression is assigned. (0 means all)
Definition Others.h:1127
Evpu horzEvpuOff
Horizontal Evpu offset from the default position.
Definition Others.h:1123
std::shared_ptr< TextExpressionDef > getTextExpression() const
Gets the assigned text expression.
Definition Implementations.cpp:1990
Cmper staffGroup
Not sure what this is used for, but it seems to be a details::StaffGroup cmper.
Definition Others.h:1129
Evpu vertEvpuOff
Vertical Evpu offset from the default position (xml node is <vertOff>)
Definition Others.h:1125
Edu eduPosition
Horizontal Edu position (xml node is <horzEduOff>)
Definition Others.h:1124
Measure number data that can differ in score or part.
Definition Others.h:1190
bool showOnStart
"Show On Start of Staff System" (xml node is <startOfLine>)
Definition Others.h:1214
Evpu multipleXdisp
Horizontal offset for mid-system numbers.
Definition Others.h:1203
bool showOnEvery
"Show on Every" activates mid-system numbers. (xml node is <multipleOf>)
Definition Others.h:1215
bool useMultipleEncl
Use enclosure for mid-system settings.
Definition Others.h:1220
bool showOnBottom
Show measure numbers on the bottom staff.
Definition Others.h:1222
bool useStartEncl
Use enclosure for start-of-system settings.
Definition Others.h:1219
std::shared_ptr< Enclosure > startEnclosure
Enclosure settings for numbers at start of system.
Definition Others.h:1198
std::shared_ptr< FontInfo > startFont
The font used for numbers at start of system.
Definition Others.h:1195
AlignJustify multipleJustify
Justification for mid-system numbers.
Definition Others.h:1226
static const xml::XmlElementArray< ScorePartData > & xmlMappingArray()
Required for musx::factory::FieldPopulator.
std::shared_ptr< FontInfo > mmRestFont
The font used for multi-measure rest ranges.
Definition Others.h:1197
AlignJustify startAlign
Alignment of numbers at the start of system.
Definition Others.h:1211
bool showOnTop
Show measure numbers on the top staff.
Definition Others.h:1221
int incidence
"Show on Every" value.
Definition Others.h:1210
ScorePartData(const DocumentWeakPtr &document)
Constructor.
Definition Others.h:1193
Evpu startYdisp
Vertical offset for numbers at start of system.
Definition Others.h:1202
bool showMmRange
"Show Measure Ranges on Multimeasure Rests" (xml node is <mmRestRange>)
Definition Others.h:1217
bool excludeOthers
Exclude other staves.
Definition Others.h:1223
int startWith
"Beginning with" value. (This value is 0-based. The Finale UI adds 1 for user display....
Definition Others.h:1209
AlignJustify mmRestJustify
Justification for multi-measure rest ranges.
Definition Others.h:1227
AlignJustify startJustify
Justification for numbers at the start of system.
Definition Others.h:1225
char32_t rightMmBracketChar
UTF-32 code for the right bracket of multi-measure rest ranges.
Definition Others.h:1208
bool hideFirstMeasure
"Hide First Measure Number in Region." (xml node is <exceptFirstMeas>)
Definition Others.h:1216
std::shared_ptr< FontInfo > multipleFont
The font used for mid-system numbers.
Definition Others.h:1196
AlignJustify mmRestAlign
Alignment for multi-measure ranges.
Definition Others.h:1213
Evpu multipleYdisp
Vertical offset for mid-system numbers.
Definition Others.h:1204
bool showOnMmRest
"Show on Multimeasure Rests" (xml node is <mmRestRangeForce>)
Definition Others.h:1218
AlignJustify multipleAlign
Alignment for mid-system numbers.
Definition Others.h:1212
Evpu mmRestXdisp
Horizontal offset for multi-measure rest ranges.
Definition Others.h:1205
char32_t leftMmBracketChar
UTF-32 code for the left bracket of multi-measure rest ranges.
Definition Others.h:1207
std::shared_ptr< Enclosure > multipleEnclosure
Enclosure settings for mid-system numbers.
Definition Others.h:1199
Evpu startXdisp
Horizontal offset for numbers at start of system.
Definition Others.h:1201
Evpu mmRestYdisp
Vertical offset for multi-measure rest ranges.
Definition Others.h:1206
bool breakMmRest
Mid-system numbers break multimeasure rests.
Definition Others.h:1224
Represents the Measure Number Region with detailed font and enclosure settings for score and part dat...
Definition Others.h:1165
int calcDisplayNumberFor(MeasCmper measureId) const
Returns the visible number for a measure id with respect to the region.
Definition Implementations.cpp:2021
bool smpteFrames
SMPTE frames (when showing real time measure numbers). This option supercedes timePrecision.
Definition Others.h:1249
std::shared_ptr< ScorePartData > scoreData
Score-wide measure number data.
Definition Others.h:1233
bool hidePage
Indicates if numbers are hidden in Page View.
Definition Others.h:1254
static const xml::XmlElementArray< MeasureNumberRegion > & xmlMappingArray()
Required for musx::factory::FieldPopulator.
bool hideScroll
Indicates if numbers are hidden in Scroll View and Studio View.
Definition Others.h:1253
AlignJustify
Alignment and justification options for measure numbers.
Definition Others.h:1173
@ Left
Left alignment or justification (the default value.)
std::string prefix
Text prefix for measure numbers (encoded UTF-8).
Definition Others.h:1241
MeasureNumberRegion(const DocumentWeakPtr &document, Cmper partId, ShareMode shareMode, Cmper cmper)
Constructor function.
Definition Others.h:1168
int base
The base used for measure number calculations. (Frequently 10 for numeric or 26 for alpha)
Definition Others.h:1239
bool doubleUp
Indicates "a, b, c...aa, bb, cc" number style: the symbols are repeated when they exceed the base.
Definition Others.h:1246
int region
The region ID. This 1-based value is set by Finale and never changes, whereas the Cmper may change wh...
Definition Others.h:1251
TimePrecision timePrecision
Precision for real-time sequences.
Definition Others.h:1252
bool calcIncludesMeasure(MeasCmper measureId) const
Calculates whether the input measure is covered by this measure number region.
Definition Others.h:1258
TimePrecision
Precision for time display.
Definition Others.h:1181
bool noZero
Indicates the base has no zero value: true for alpha sequences and false for numeric sequences.
Definition Others.h:1245
char32_t startChar
UTF-32 code for the first character in the sequence. (Frequently '0', 'a', or 'A')
Definition Others.h:1238
MeasCmper startMeas
Starting measure number for the region.
Definition Others.h:1236
bool time
Display real time sequences rather than numbers or letters.
Definition Others.h:1247
std::string suffix
Text suffix for measure numbers (encoded UTF-8).
Definition Others.h:1242
static std::shared_ptr< MeasureNumberRegion > findMeasure(const DocumentPtr &document, MeasCmper measureId)
Finds the measure number region containing a measure.
Definition Implementations.cpp:2010
MeasCmper endMeas
Ending measure number for the region (non-inclusive).
Definition Others.h:1237
int numberOffset
This value is 1 less than the "Starting Number" field in the Finale UI. (xml node is <offset>)
Definition Others.h:1240
int getStartNumber() const
Returns the starting measure number for this region.
Definition Others.h:1264
bool countFromOne
Start counting from 1 rather than 0, e.g., "1, 2, 3, 4" numbering style (in conjuction with base 10)
Definition Others.h:1244
static constexpr std::string_view XmlNodeName
The XML node name for this type.
Definition Others.h:1276
std::shared_ptr< ScorePartData > partData
Part-specific measure number data.
Definition Others.h:1234
bool includeHours
Display hours (when showing real time measure numbers)
Definition Others.h:1248
bool useScoreInfoForPart
Use score-wide settings for parts.
Definition Others.h:1250
Represents the attributes of a measure.
Definition Others.h:964
std::shared_ptr< KeySignature > createKeySignature(const std::optional< InstCmper > &forStaff=std::nullopt) const
Creates and returns a shared pointer to an instance of the KeySignature for this measure and staff.
Definition Implementations.cpp:1922
bool hasTextBlock
Indicates if the measure has a measure-assigned text block. See details::MeasureTextAssign.
Definition Others.h:1039
std::shared_ptr< KeySignature > globalKeySig
the key global signature on this measure. Guaranteed to be non-null. (xml node is <keySig>)
Definition Others.h:1015
Evpu width
"Ideal" measure width in Evpu. Page layout determines actual width.
Definition Others.h:1014
PositioningType
Positioning (music spacing) type for the measure.
Definition Others.h:973
@ BeatChart
Legacy option "Use a Beat Positioning Chart" (xml node is <beatchart>)
@ TimeSignature
Legacy option "Use the Time Signature" (xml node is <timesig>)
@ TimeSigPlusPositioning
"According to the Time Signature" (xml node is <timesigPlusPos>)
@ Manual
"Manually (By Dragging)" the default.
@ BeatChartPlusPositioning
"Using Beat-Chart Spacing" (xml node is <beatchartPlusPos>)
Cmper beats
Number of beats in the measure or the Cmper to a timesigUpper composite numerator list.
Definition Others.h:1016
bool useDisplayTimesig
Indicates whether to use the display time signature.
Definition Others.h:1049
bool requireAllFields() const override
Definition Others.h:1099
Evpu backSpaceExtra
Extra space at end of bar.
Definition Others.h:1021
bool breakMmRest
"Break a Multimeasure Rests" (xml node is <breakRest>)
Definition Others.h:1034
bool abbrvTime
Definition Others.h:1047
bool hasSmartShape
Indicates if the measure has a smart shape.
Definition Others.h:1024
bool groupBarlineOverride
Override the barline specified by a details::StaffGroup (if any)
Definition Others.h:1027
std::shared_ptr< TimeSignature > createTimeSignature(const std::optional< InstCmper > &forStaff=std::nullopt) const
Create a shared pointer to an instance of the TimeSignature for this measure and staff.
Definition Implementations.cpp:1945
bool hasEnding
Indicates the presence of a repeat ending. (xml node is <barEnding>)
Definition Others.h:1042
bool compositeNumerator
Indicates a composite numerator for the time signature. (xml node is <altNumTsig>)
Definition Others.h:1045
Cmper divBeat
Divisions per beat (Edu) or the Cmper to a timesigLower composite denominator list.
Definition Others.h:1017
bool showFullNames
"Show Full Staff & Group Names"
Definition Others.h:1025
bool compositeDispNumerator
Indicates a composite numerator for the display time signature. (xml node is <displayAltNumTsig>)
Definition Others.h:1051
bool evenlyAcrossMeasure
"Position Evenly Across Measure" (xml node is <indivPosDef>)
Definition Others.h:1037
BarlineType barlineType
Barline type. (xml node is <barline>)
Definition Others.h:1036
Cmper customBarShape
Cmper of Shape Designer ShapeDef for custom right barline.
Definition Others.h:1028
ShowKeySigMode
How and whether to show a Key Signature in this measure.
Definition Others.h:999
@ IfNeeded
Show if needed (the default)
@ Always
Always show (xml value is "deltaKey")
@ Never
Never show (xml value is "ignoreKey")
BarlineType
Barline type for left and right barlines.
Definition Others.h:984
@ Tick
Right barlines only: tick barline (xml value is "partial")
@ None
No barline. (This is the default value for the enum.)
@ Custom
Custom barline (created with Shape Designer)
@ OptionsDefault
Left barlines only: use value from options::BarlineOptions (xml values is "default")
@ Dashed
Dashed barline (xml value is "dash")
void integrityCheck() override
Allows a class to determine if it has been properly contructed by the factory and fix issues that it ...
Definition Others.h:1091
Cmper dispDivbeat
Displayed divisions per beat (Edu) or the Cmper to a timesigLower composite denominator list.
Definition Others.h:1019
int calcDisplayNumber() const
Calculates the visible number of the measure, based on the first MeasureNumberRegion that contains it...
Definition Implementations.cpp:1911
Evpu frontSpaceExtra
Extra space at front of bar.
Definition Others.h:1020
static constexpr std::string_view XmlNodeName
The XML node name for this type.
Definition Others.h:1101
bool compositeDenominator
Indicates a composite denominator for the time signature. (xml node is <altDenTsig>)
Definition Others.h:1046
std::shared_ptr< TimeSignature > createDisplayTimeSignature(const std::optional< InstCmper > &forStaff=std::nullopt) const
Create a shared pointer to an instance of the display TimeSignature for this measure and staff.
Definition Implementations.cpp:1961
ShowKeySigMode showKey
Show mode for key signatures.
Definition Others.h:1030
Cmper customLeftBarShape
Cmper of Shape Designer ShapeDef for custom left barline.
Definition Others.h:1029
ShowTimeSigMode
How and whether to show a Time Signature in this measure.
Definition Others.h:1008
bool calcShouldShowFullNames() const
Calculates if a measure should show full names vs. abbreviated names.
Definition Others.h:1055
bool hasExpression
Indicates if the measure has an expression assigned. See MeasureExprAssign. (xml node is <hasExpr>)
Definition Others.h:1038
Cmper dispBeats
Displayed beats in the measure or the Cmper to a timesigUpper composite numerator list.
Definition Others.h:1018
PositioningType positioningMode
Positioning type for the measure. (xml node is <posMode>)
Definition Others.h:1032
bool forwardRepeatBar
Indicates a forward repeat bar on this measure. (xml node is <forRepBar>)
Definition Others.h:1040
bool hasTextRepeat
Indicates the presence of one or more text repeat assigments. (xml node is <txtRepeats>)
Definition Others.h:1043
bool compositeDispDenominator
Indicates a composite denominator for the display time signature. (xml node is <displayAltDenTsig>)
Definition Others.h:1052
static const xml::XmlElementArray< Measure > & xmlMappingArray()
Required for musx::factory::FieldPopulator.
util::Fraction calcDuration(const std::optional< InstCmper > &forStaff=std::nullopt) const
Calculates the duration of the measure according to the time signature.
Definition Implementations.cpp:1980
bool noMeasNum
Inverse of "Include in Measure Numbering".
Definition Others.h:1035
BarlineType leftBarlineType
Left barline type. (xml node is <leftBarline>)
Definition Others.h:1050
ShowTimeSigMode showTime
Show mode for time signatures.
Definition Others.h:1031
bool allowSplitPoints
"Allow Horizontal Split Points" (xml node is <posSplit>)
Definition Others.h:1026
Measure(const DocumentWeakPtr &document, Cmper measureId, ShareMode shareMode, Cmper cmper)
Constructor function.
Definition Others.h:967
util::Fraction calcTimeStretch(InstCmper forStaff) const
Calculates the time stretch. This is the value by which independent time edus are multiplied to get g...
Definition Others.h:1086
bool hasChord
Indicates the presence of one or more chords.
Definition Others.h:1044
bool hideCaution
"Hide Cautionary Clefs, Key, and Time Signature"
Definition Others.h:1023
bool breakWordExt
Barline ends word extensions on lyrics.
Definition Others.h:1022
bool backwardsRepeatBar
Indicates a forward repeat bar on this measure. (xml node is <bacRepBar>)
Definition Others.h:1041
bool beginNewSystem
"Begin a New Staff System" (xml node is <lineBreak>)
Definition Others.h:1033
Represents a group ID for a multi-staff setup.
Definition Others.h:1334
static constexpr std::string_view XmlNodeName
The XML node name for this type.
Definition Others.h:1342
MultiStaffGroupId(const DocumentWeakPtr &document, Cmper partId, ShareMode shareMode, Cmper cmper)
Constructor function.
Definition Others.h:1337
static const xml::XmlElementArray< MultiStaffGroupId > & xmlMappingArray()
Required for musx::factory::FieldPopulator.
Cmper staffGroupId
Cmper of details::StaffGroup that has the instrument's full and abbreviated names.
Definition Others.h:1340
Represents a group of instruments spanning multiple staves.
Definition Others.h:1352
std::shared_ptr< details::StaffGroup > getStaffGroup(Cmper forPartId) const
Gets the group associated with this multistaff instrument, or nullptr if not found.
Definition Implementations.cpp:2064
std::shared_ptr< details::StaffGroup > calcVisualStaffGroup(Cmper forPartId) const
Calculates the visual group associated with this multistaff instrument, or nullptr if not found....
Definition Implementations.cpp:2080
static constexpr std::string_view XmlNodeName
The XML node name for this type.
Definition Others.h:1414
std::shared_ptr< Staff > getFirstStaff() const
Returns the first staff (with integrity check)
Definition Implementations.cpp:2055
void integrityCheck() override
Allows a class to determine if it has been properly contructed by the factory and fix issues that it ...
Definition Others.h:1404
std::vector< InstCmper > visualStaffNums
Definition Others.h:1360
std::vector< InstCmper > staffNums
Vector of Cmper values representing up to 3 staff numbers.
Definition Others.h:1358
std::optional< size_t > getVisualIndexOf(InstCmper staffId) const
Returns the index of an input staffId that visually shows in this multi-instrument group or std::null...
Definition Others.h:1381
std::shared_ptr< Staff > getStaffAtIndex(size_t x) const
Returns the staff at the index position or null if out of range or not found.
Definition Implementations.cpp:2044
static const xml::XmlElementArray< MultiStaffInstrumentGroup > & xmlMappingArray()
Required for musx::factory::FieldPopulator.
MultiStaffInstrumentGroup(const DocumentWeakPtr &document, Cmper partId, ShareMode shareMode, Cmper cmper)
Constructor function.
Definition Others.h:1355
std::optional< size_t > getIndexOf(InstCmper staffId) const
Returns the index of the input staffId or std::nullopt if not found.
Definition Others.h:1372
static void calcAllMultiStaffGroupIds(const DocumentPtr &document)
Used by the factory to calculate all multistaff ids and visual ids for instances of Staff.
Definition Implementations.cpp:2135
Represents the attributes of a multimeasure rest in the page layout.
Definition Others.h:1288
int symbolThreshold
If the number of rests is less than this value, symbols are used when useSymbols is true....
Definition Others.h:1300
static const xml::XmlElementArray< MultimeasureRest > & xmlMappingArray()
Required for musx::factory::FieldPopulator.
Evpu numVertAdj
Vertical number adjustment, sign-revered from Finale UI. (xml node is <numdec>)
Definition Others.h:1296
Cmper shapeDef
Cmper of Shape Designer ShapeDef that specifies the H-bar.
Definition Others.h:1297
bool useSymbols
Use symbols instead of an H-bar, based on symbolThreshold. (xml node is <useCharRestStyle>)
Definition Others.h:1305
int calcNumberOfMeasures() const
Calculates the number of measures spanned by this multimeasure rest.
Definition Others.h:1311
MeasCmper nextMeas
Next measure after the multimeasure west.
Definition Others.h:1295
MultimeasureRest(const DocumentWeakPtr &document, Cmper partId, ShareMode shareMode, Cmper startMeasure)
Constructor function.
Definition Others.h:1291
MeasCmper getStartMeasure() const
Get the start measure of this multimeasure rest.
Definition Others.h:1308
Evpu measWidth
Width of the multemeasure rest "measure" in Evpu. (xml node is <meaSpace>)
Definition Others.h:1294
Evpu shapeStartAdjust
Start adjustment for the H-bar shape in Evpu. (xml node is <startAdjust>)
Definition Others.h:1303
Evpu shapeEndAdjust
End adjustment for the shape in Evpu. (xml node is <endAdjust>)
Definition Others.h:1304
Evpu symbolSpacing
Spacing between symbols in Evpu. (xml node is <spacing>)
Definition Others.h:1301
int numStart
Definition Others.h:1298
Evpu numHorzAdj
Horizontal number adjustment in Evpu. (xml node is <numAdjX>)
Definition Others.h:1302
void integrityCheck() override
Allows a class to determine if it has been properly contructed by the factory and fix issues that it ...
Definition Others.h:1316
bool calcIsNumberVisible() const
Calculates if the number on this multimeasure rest is visible.
Definition Others.h:1314
static constexpr std::string_view XmlNodeName
The XML node name for this type.
Definition Others.h:1324
Represents a range of music using measure and EDUs.
Definition CommonClasses.h:536
Overrides abbreviated name positioning for Staff.
Definition Others.h:1425
static constexpr std::string_view XmlNodeName
The XML node name for this type.
Definition Others.h:1429
Overrides full name positioning for Staff.
Definition Others.h:1453
static constexpr std::string_view XmlNodeName
The XML node name for this type.
Definition Others.h:1457
Overrides abbreviated name positioning for StaffStyle.
Definition Others.h:1439
static constexpr std::string_view XmlNodeName
The XML node name for this type.
Definition Others.h:1443
Overrides full name positioning for StaffStyle.
Definition Others.h:1467
static constexpr std::string_view XmlNodeName
The XML node name for this type.
Definition Others.h:1471
Contains horizontal and vertical offsets, alignment, and expansion settings for name positioning.
Definition CommonClasses.h:585
NamePositioning(const DocumentWeakPtr &document, Cmper partId=SCORE_PARTID, ShareMode shareMode=ShareMode::All, Cmper cmper=0)
Constructs an NamePositioning object.
Definition CommonClasses.h:595
Represents a page text assignment with positioning and page range properties.
Definition Others.h:1523
Evpu yDisp
The vertical displacement from the default position. (xml tag is <ydisp>)
Definition Others.h:1547
static constexpr std::string_view XmlNodeName
The XML node name for this type.
Definition Others.h:1563
PageTextAssign(const DocumentWeakPtr &document, Cmper partId, ShareMode shareMode, Cmper cmper, Inci inci)
Constructor function.
Definition Others.h:1540
bool indRpPos
Individual right page positioning indicator. (xml tag is <indRpPos>)
Definition Others.h:1559
bool hPosPageEdge
Definition Others.h:1555
HorizontalAlignment
Horizontal alignment options for page text positioning.
Definition Others.h:1526
bool hidden
Indicates if the page text appears only on screen. (xml tag is <postIt>)
Definition Others.h:1553
static const xml::XmlElementArray< PageTextAssign > & xmlMappingArray()
Required for musx::factory::FieldPopulator.
Evpu rightPgXDisp
Horizontal displacement for right pages (if indRpPos is true). (xml tag is <rightPgXdisp>)
Definition Others.h:1560
Cmper startPage
If cmper is zero, the first page on which the text appears. (xml tag is <startPage>)
Definition Others.h:1548
Evpu rightPgYDisp
Vertical displacement for right pages (if indRpPos is true). (xml tag is <rightPgYdisp>)
Definition Others.h:1561
HorizontalAlignment hPosLp
Horizontal alignment on left or all pages (depending on indRpPos). (xml tag is <hposLp>)
Definition Others.h:1551
Evpu xDisp
The horizontal displacement from the default position. (xml tag is <xdisp>)
Definition Others.h:1546
VerticalAlignment vPos
Vertical alignment. (xml tag is <vpos>)
Definition Others.h:1554
VerticalAlignment
Vertical alignment options for page text positioning.
Definition Others.h:1533
Cmper endPage
Definition Others.h:1549
HorizontalAlignment hPosRp
Horizontal alignment on right pages (if indRpPos is true). (xml tag is <hposRp>)
Definition Others.h:1552
bool vPosPageEdge
Definition Others.h:1557
Cmper block
The Cmper for the assigned TextBlock. (xml tag is <block>)
Definition Others.h:1545
Represents the attributes of a page in the page layout.
Definition Others.h:1480
Evpu margTop
Top margin in Evpu. (Sign reversed in Finale UI.)
Definition Others.h:1491
bool isBlank() const
is this a blank page
Definition Others.h:1499
Evpu width
Page width in Evpu.
Definition Others.h:1487
static constexpr std::string_view XmlNodeName
The XML node name for this type.
Definition Others.h:1501
static const xml::XmlElementArray< Page > & xmlMappingArray()
Required for musx::factory::FieldPopulator.
int percent
Percent value (scaling factor).
Definition Others.h:1488
Evpu height
Page height in Evpu.
Definition Others.h:1486
Evpu margLeft
Left margin in Evpu.
Definition Others.h:1492
Evpu margBottom
Bottom margin in Evpu.
Definition Others.h:1493
std::optional< SystemCmper > lastSystem
Computed by the Resolver function. This value is not in the xml.
Definition Others.h:1496
Evpu margRight
Right margin in Evpu. (Sign reversed in Finale UI.)
Definition Others.h:1494
SystemCmper firstSystem
First system on the page (-1 if page is blank). See StaffSystem.
Definition Others.h:1489
Page(const DocumentWeakPtr &document, Cmper pageId, ShareMode shareMode, Cmper cmper)
Constructor function.
Definition Others.h:1483
bool holdMargins
"Hold Margins" (xml node is <scaleContentOnly>)
Definition Others.h:1490
Represents the attributes of a Finale "partDef".
Definition Others.h:1577
Cmper nameId
Cmper of the part name TextBlock. (xml tag is <nameID>)
Definition Others.h:1584
Cmper calcSystemIuList(Cmper systemId) const
Return the InstrumentUsed cmper by this part for the specified system.
Definition Implementations.cpp:2563
static std::vector< std::shared_ptr< PartDefinition > > getInUserOrder(const DocumentPtr &document)
Return the linked parts sorted in UI order by partOrder.
Definition Implementations.cpp:2582
int smartMusicInst
SmartMusic instrument ID (-1 if not used).
Definition Others.h:1590
static constexpr std::string_view XmlNodeName
The XML node name for this type.
Definition Others.h:1616
int copies
Number of copies to print.
Definition Others.h:1586
static const xml::XmlElementArray< PartDefinition > & xmlMappingArray()
Required for musx::factory::FieldPopulator.
Cmper defaultNameStaff
If non-zero, this points to the Staff that has the default name (if unspecified by nameId....
Definition Others.h:1591
int partOrder
Value that determines the order of listed parts in Finale's UI.
Definition Others.h:1585
bool extractPart
Indicates if the part should be extracted.
Definition Others.h:1587
static std::shared_ptr< PartDefinition > getScore(const DocumentPtr &document)
Return the instance for the score.
Definition Implementations.cpp:2573
PartDefinition(const DocumentWeakPtr &document, Cmper partId, ShareMode shareMode, Cmper cmper)
Constructor function.
Definition Others.h:1580
Cmper defaultNameGroup
If non-zero, this points to the details::StaffGroup that has the default name (if unspecified by name...
Definition Others.h:1592
bool requireAllFields() const override
Specifies if the parser should alert (print or throw) when an unknown xml tag is found for this class...
Definition Others.h:1614
std::string getName(util::EnigmaString::AccidentalStyle accidentalStyle=util::EnigmaString::AccidentalStyle::Ascii) const
Get the part name if any.
Definition Implementations.cpp:2541
bool useAsSmpInst
Indicates if the part is used as a SmartMusic instrument.
Definition Others.h:1589
bool isScore() const
Return true if this part corresponds to the score.
Definition Others.h:1598
bool needsRecalc
Indicates if the part needs update layout.
Definition Others.h:1588
Represents global values that can vary by part.
Definition Others.h:1628
Cmper scrollViewIUlist
If this value is non-zero, it is the iuList Cmper of the current Staff List in Scroll View.
Definition Others.h:1636
bool showTransposed
If true, "Display Concert Pitch" is unchecked for the part.
Definition Others.h:1635
Cmper specialPartExtractionIUList
If non-zero, Special Part Extraction is in effect and this is the Cmper for its InstrumentUsed array.
Definition Others.h:1644
static const xml::XmlElementArray< PartGlobals > & xmlMappingArray()
Required for musx::factory::FieldPopulator.
PartGlobals(const DocumentWeakPtr &document, Cmper partId, ShareMode shareMode, Cmper cmper)
Constructor function.
Definition Others.h:1631
Cmper studioViewIUlist
The iuList Cmper for Studio View.
Definition Others.h:1637
static constexpr std::string_view XmlNodeName
The XML node name for this type.
Definition Others.h:1646
Represents percussion notehead and staff position info for a given percussion note type.
Definition Others.h:1659
char32_t wholeNotehead
Codepoint for whole notehead (from default music font.)
Definition Others.h:1673
char32_t closedNotehead
Codepoint for closed notehead (from default music font.)
Definition Others.h:1671
PercussionNoteInfo(const DocumentWeakPtr &document, Cmper partId, ShareMode shareMode, Cmper cmper, Inci inci)
Constructor function.
Definition Others.h:1662
int staffPosition
Definition Others.h:1666
static constexpr std::string_view XmlNodeName
The XML node name for this type.
Definition Others.h:1679
static const xml::XmlElementArray< PercussionNoteInfo > & xmlMappingArray()
Required for musx::factory::FieldPopulator.
char32_t dwholeNotehead
Codepoint for double whole notehead (from default music font.)
Definition Others.h:1674
char32_t halfNotehead
Codepoint for half notehead (from default music font.)
Definition Others.h:1672
PercussionNoteType percNoteType
The percussion note type ID. Compare this with the value in details::PercussionNoteCode.
Definition Others.h:1665
int calcStaffReferencePosition() const
Calculates the fixed staff position for this percussion note relative to a staff's reference line.
Definition Others.h:1677
Represents a repeat-backward marker with positioning and behavior properties.
Definition Others.h:1717
bool resetOnAction
"Reset on Repeat Action" (xml tag is <clrOnChange>)
Definition Others.h:1732
Evpu rightVPos
The vertical position of the upper right bracket, relative to the default. (xml tag is <line2>)
Definition Others.h:1737
RepeatTriggerType trigger
The condition that triggers the jumpAction.
Definition Others.h:1734
static const xml::XmlElementArray< RepeatBack > & xmlMappingArray()
Required for musx::factory::FieldPopulator.
int passNumber
Definition Others.h:1724
Evpu leftVPos
The vertical position of the lower left bracket, relative to the default. (xml tag is <line1>)
Definition Others.h:1729
Evpu leftHPos
The horizontal position of the left bracket, relative to the default. (xml tag is <pos1>)
Definition Others.h:1728
Evpu rightHPos
The horizontal position of the upper right bracket, relative to the default. (xml tag is <pos2>)
Definition Others.h:1736
RepeatActionType jumpAction
The jump action for this repeat ending. The automatic jump is to the next ending. (xml tag is <action...
Definition Others.h:1733
Cmper staffList
If non-zero, specifies a staff list for which staves to show the ending.
Definition Others.h:1735
bool topStaffOnly
"Show On: Top Staff Only"
Definition Others.h:1731
int targetValue
Absolute or relative measure number, depending on jumpAction. (xml tag is <target>)
Definition Others.h:1727
static constexpr std::string_view XmlNodeName
The XML node name for this type.
Definition Others.h:1739
RepeatBack(const DocumentWeakPtr &document, Cmper partId, ShareMode shareMode, Cmper cmper)
Constructor function.
Definition Others.h:1720
bool individualPlacement
"Allow Individual Edits Per Staff" (xml tag is <indivPlac>)
Definition Others.h:1730
Represents a repeat ending start marker in the document.
Definition Others.h:1752
Evpu leftVPos
The vertical position of the lower left bracket, relative to the default. (xml tag is <line1>)
Definition Others.h:1764
Evpu rightVPos
The vertical position of the upper right bracket, relative to the default. (xml tag is <line2>)
Definition Others.h:1775
RepeatTriggerType trigger
Definition Others.h:1768
Evpu leftHPos
The horizontal position of the lower left bracket, relative to the default. (xml tag is <pos1>)
Definition Others.h:1763
Evpu textVPos
The vertical position of the text relative to leftVPos. (xml tag is <textLine>)
Definition Others.h:1773
Evpu endLineVPos
The vertical offset of the final bracket, relative to rightVPos or 0 if the ending is open....
Definition Others.h:1772
void integrityCheck()
Allows a class to determine if it has been properly contructed by the factory and fix issues that it ...
Definition Others.h:1786
Evpu rightHPos
The horizontal position of the upper right bracket, relative to the default. (xml tag is <pos2>)
Definition Others.h:1774
static const xml::XmlElementArray< RepeatEndingStart > & xmlMappingArray()
Required for musx::factory::FieldPopulator.
bool calcIsOpen() const
Calculates if the ending is open or closed, based on a number of factors.
Definition Implementations.cpp:2631
Evpu textHPos
The horizontal position of the text relative to leftHPos. (xml tag is <textPos>)
Definition Others.h:1762
int targetValue
Absolute or relative measure number, depending on jumpAction. (xml tag is <nextEnd>)
Definition Others.h:1761
bool jumpIfIgnoring
"Skip Ending if Ignoring Repeats" (xml tag is <jmpIgnore>)
Definition Others.h:1771
bool topStaffOnly
"Show On: Top Staff Only"
Definition Others.h:1766
Cmper staffList
If non-zero, specifies a staff list for which staves to show the ending.
Definition Others.h:1760
RepeatActionType jumpAction
The jump action for this repeat ending. The automatic jump is to the next ending. (xml tag is <action...
Definition Others.h:1767
static constexpr std::string_view XmlNodeName
The XML node name for this type.
Definition Others.h:1795
int calcEndingLength() const
Calculates the number of measures in the ending based on jumpAction.
Definition Implementations.cpp:2595
bool individualPlacement
"Allow Individual Edits Per Staff" (xml tag is <indivPlac>)
Definition Others.h:1765
RepeatEndingStart(const DocumentWeakPtr &document, Cmper partId, ShareMode shareMode, Cmper cmper)
Constructor function.
Definition Others.h:1755
Represents the text associated with a RepeatEndingStart.
Definition Others.h:1809
static const xml::XmlElementArray< RepeatEndingText > & xmlMappingArray()
Required for musx::factory::FieldPopulator.
std::string text
The text.
Definition Others.h:1815
static constexpr std::string_view XmlNodeName
The XML node name for this type.
Definition Others.h:1817
RepeatEndingText(const DocumentWeakPtr &document, Cmper partId, ShareMode shareMode, Cmper cmper)
Constructor function.
Definition Others.h:1812
Represents a list of repeat ending numbers for a RepeatEndingStart instance.
Definition Others.h:1830
static const xml::XmlElementArray< RepeatPassList > & xmlMappingArray()
Required for musx::factory::FieldPopulator.
static constexpr std::string_view XmlNodeName
The XML node name for this type.
Definition Others.h:1836
Represents the data for instruction associated with a ShapeDef.
Definition Others.h:1847
static constexpr std::string_view XmlNodeName
The XML node name for this type.
Definition Others.h:1853
static const xml::XmlElementArray< ShapeData > & xmlMappingArray()
Required for musx::factory::FieldPopulator.
Represents a shape created in Finale's Shape Designer.
Definition Others.h:1865
Cmper dataList
Instruction data list Cmper.
Definition Others.h:1925
ShapeType
Represents different types of shapes in Finale's Shape Designer.
Definition Others.h:1911
@ Executable
Corresponds to "executable" in XML.
@ Clef
Corresponds to "clef" in XML.
@ Other
May Correspond to "other" in XML (but may not appear in XML). All pre-Fin2k shapes use this value.
@ CustomStem
Corresponds to "note" in XML.
@ Expression
Corresponds to "expression" in XML.
@ Articulation
Corresponds to "articulation" in XML.
@ Barline
Corresponds to "barline" in XML.
@ Arrowhead
Corresponds to "arrowhead" in XML.
@ Fretboard
Corresponds to "fretboard" in XML.
ShapeDef(const DocumentWeakPtr &document, Cmper partId, ShareMode shareMode, Cmper cmper)
Constructor function.
Definition Others.h:1868
void iterateInstructions(std::function< bool(InstructionType, std::vector< int >)> callback) const
Iterates through the instructions in the shape.
Definition Implementations.cpp:2660
static constexpr std::string_view XmlNodeName
The XML node name for this type.
Definition Others.h:1934
ShapeType shapeType
Shape type (specifies which type of entity this shape pertains to)
Definition Others.h:1926
Cmper instructionList
Instruction list Cmper. (xml node is <instList>)
Definition Others.h:1924
static const xml::XmlElementArray< ShapeDef > & xmlMappingArray()
Required for musx::factory::FieldPopulator.
InstructionType
Defines the instruction types for Shape Designer shapes.
Definition Others.h:1875
@ Undocumented
catch-all for instruction tags not yet documented
bool requireAllFields() const override
Specifies if the parser should alert (print or throw) when an unknown xml tag is found for this class...
Definition Others.h:1932
Stores the properties and behaviors of shape expressions.
Definition Others.h:1944
int auxData1
Auxiliary data for the expression. (xml node is "auxdata1")
Definition Others.h:1958
bool masterShape
Whether this expression references the master copy of the shape.
Definition Others.h:1962
PlaybackType playbackType
Playback behavior of the text expression.
Definition Others.h:1965
int playPass
"Play Only on Pass" value.
Definition Others.h:1959
Cmper categoryId
Identifier for the category of the text expression. (xml node is "categoryID")
Definition Others.h:1955
bool breakMmRest
Whether the text breaks multimeasure rests.
Definition Others.h:1960
bool requireAllFields() const override
Specifies if the parser should alert (print or throw) when an unknown xml tag is found for this class...
Definition Others.h:1975
bool noPrint
Inverse of "Hidden" checkbox.
Definition Others.h:1963
int value
Value associated with the expression (e.g., velocity).
Definition Others.h:1957
std::string description
Description of the text expression. (xml node is "descStr")
Definition Others.h:1973
Cmper shapeDef
Identifier for the Shape Designer ShapeDef associated with this expression.
Definition Others.h:1954
bool useAuxData
Whether auxiliary data is used.
Definition Others.h:1961
static const xml::XmlElementArray< ShapeExpressionDef > & xmlMappingArray()
Required for musx::factory::FieldPopulator.
HorizontalTextJustification horzExprJustification
Horizontal justification of the text expression.
Definition Others.h:1968
HorizontalMeasExprAlign horzMeasExprAlign
Horizontal alignment of the expression.
Definition Others.h:1966
Evpu yAdjustEntry
Vertical adjustment for entry alignment.
Definition Others.h:1970
RehearsalMarkStyle rehearsalMarkStyle
Auto-sequencing style for rehearsal marks.
Definition Others.h:1956
bool useCategoryPos
Whether to use category position.
Definition Others.h:1972
VerticalMeasExprAlign vertMeasExprAlign
Vertical alignment of the expression.
Definition Others.h:1967
ShapeExpressionDef(const DocumentWeakPtr &document, Cmper partId, ShareMode shareMode, Cmper cmper)
Constructor.
Definition Others.h:1951
static constexpr std::string_view XmlNodeName
The XML node name for this type.
Definition Others.h:1977
Evpu measXAdjust
Horizontal adjustment for measurement alignment.
Definition Others.h:1969
bool noHorzStretch
Inverse of "Allow Horizontal Stretching" checkbox.
Definition Others.h:1964
Evpu yAdjustBaseline
Vertical adjustment for baseline alignment.
Definition Others.h:1971
An instruction in the shape.
Definition Others.h:1998
static const xml::XmlElementArray< Instruction > & xmlMappingArray()
Required for musx::factory::FieldPopulator.
ShapeDef::InstructionType type
the type of instruction
Definition Others.h:2002
int numData
the number of data items consumed by this instruction (See ShapeData.)
Definition Others.h:2001
Represents the data for instruction associated with a ShapeDef.
Definition Others.h:1988
std::vector< std::shared_ptr< Instruction > > instructions
The instructions.
Definition Others.h:2007
static constexpr std::string_view XmlNodeName
The XML node name for this type.
Definition Others.h:2009
static const xml::XmlElementArray< ShapeInstructionList > & xmlMappingArray()
Required for musx::factory::FieldPopulator.
ShapeInstructionList(const DocumentWeakPtr &document, Cmper partId, ShareMode shareMode, Cmper cmper)
Constructor function.
Definition Others.h:1991
Represents a composite of an underlying Staff instance with any applicable StaffStyle instances appli...
Definition Others.h:2501
std::shared_ptr< others::Staff > getRawStaff() const
Returns the underlying staff without any staff styles applied.
Definition Implementations.cpp:3401
static std::shared_ptr< StaffComposite > createCurrent(const DocumentPtr &document, Cmper partId, InstCmper staffId, MeasCmper measId, Edu eduPosition)
Calculates the current staff at the specified metric position by applying all relevant staff styles,...
Definition Implementations.cpp:3410
Cmper getPartId() const final override
Overrides Base function to return the requested part id instead of the Staff's source part id (which ...
Definition Others.h:2528
Represents an assignment.
Definition Others.h:2465
std::shared_ptr< StaffStyle > getStaffStyle() const
Returns the StaffStyle instance for this assignment.
Definition Implementations.cpp:3564
Cmper styleId
The cmper of the assigned StaffStyle.
Definition Others.h:2471
void integrityCheck() override
Allows a class to determine if it has been properly contructed by the factory and fix issues that it ...
Definition Others.h:2478
StaffStyleAssign(const DocumentWeakPtr &document, Cmper partId, ShareMode shareMode, Cmper cmper, Inci inci)
Constructor function.
Definition Others.h:2468
static const xml::XmlElementArray< StaffStyleAssign > & xmlMappingArray()
Required for musx::factory::FieldPopulator.
static constexpr std::string_view XmlNodeName
The XML node name for this type.
Definition Others.h:2489
lists the masks that deterimine if this staff style overrides the staff settings
Definition Others.h:2369
bool rbarBreak
overrides Staff::rbarBreak
Definition Others.h:2387
bool requireAllFields() const override
Specifies if the parser should alert (print or throw) when an unknown xml tag is found for this class...
Definition Others.h:2418
bool blineBreak
overrides Staff::blineBreak
Definition Others.h:2386
bool hideRptBars
overrides Staff::hideRptBars
Definition Others.h:2396
bool showTies
overrides Staff::hideTies
Definition Others.h:2405
bool negTimeParts
overrides Staff::hideTimeSigsInParts
Definition Others.h:2415
bool hideStaffLines
overrides Staff::hideStaffLines
Definition Others.h:2413
bool fullName
overrides Staff::fullNameTextId
Definition Others.h:2392
bool floatNoteheadFont
overrides notehead font settings
Definition Others.h:2378
bool negKey
overrides Staff::hideKeySigs
Definition Others.h:2397
bool negClef
overrides Staff::hideClefs
Definition Others.h:2399
bool negRepeat
overrides Staff::hideRepeats
Definition Others.h:2389
bool flatBeams
overrides Staff::flatBeams
Definition Others.h:2379
bool showNameParts
overrides Staff::showNameInParts
Definition Others.h:2412
bool hideChords
overrides Staff::hideChords
Definition Others.h:2409
Masks(const DocumentWeakPtr &document)
Default constructor.
Definition Others.h:2375
bool hideBarlines
overrides Staff::hideBarlines
Definition Others.h:2391
bool noOptimize
overrides Staff::noOptimize
Definition Others.h:2381
bool blankMeasureRest
overrides Staff::blankMeasure
Definition Others.h:2380
bool staffType
overrides staff properties (see StaffComposite::applyStyle)
Definition Others.h:2384
bool negMnumb
overrides Staff::hideMeasNums
Definition Others.h:2388
bool hideKeySigsShowAccis
overrides Staff::hideKeySigsShowAccis
Definition Others.h:2416
bool redisplayLayerAccis
overrides Staff::redisplayLayerAccis
Definition Others.h:2414
bool negNameScore
overrides Staff::hideNameInScore
Definition Others.h:2390
static const xml::XmlElementArray< Masks > & xmlMappingArray()
Required for musx::factory::FieldPopulator.
bool hideFretboards
overrides Staff::hideFretboards
Definition Others.h:2410
bool hideLyrics
overrides Staff::hideLyrics
Definition Others.h:2411
bool fullNamePos
overrides presence, absence of NamePositionStyleFull instance.
Definition Others.h:2402
bool transposition
overrides transposition fields
Definition Others.h:2385
bool abrvName
overrides Staff::abbrvNameTextId
Definition Others.h:2393
bool negTime
overrides Staff::hideTimeSigs (in Score)
Definition Others.h:2398
bool altNotation
overrides alternate notation properties (see StaffComposite::applyStyle)
Definition Others.h:2404
bool showStems
overrides stem properties (see StaffComposite::applyStyle)
Definition Others.h:2408
bool abrvNamePos
overrides presence, absence of NamePositionStyleAbbreviated instance.
Definition Others.h:2403
bool floatKeys
overrides Staff::floatKeys
Definition Others.h:2394
bool notationStyle
overrides notations style
Definition Others.h:2382
bool showRests
overrides Staff::hideRests
Definition Others.h:2407
bool floatTime
overrides Staff::floatTime
Definition Others.h:2395
bool hideStaff
overrides Staff::hideMode
Definition Others.h:2400
bool defaultClef
overrides Staff::defaultClef
Definition Others.h:2383
bool noKey
overrides Staff::noKey
Definition Others.h:2401
bool showDots
overrides Staff::hideDots
Definition Others.h:2406
Represents a Finale staff style.
Definition Others.h:2355
std::shared_ptr< Masks > masks
Definition Others.h:2425
static const xml::XmlElementArray< StaffStyle > & xmlMappingArray()
Required for musx::factory::FieldPopulator.
static std::vector< std::shared_ptr< StaffStyle > > findAllOverlappingStyles(const DocumentPtr &document, Cmper partId, InstCmper staffId, MeasCmper measId, Edu eduPosition)
Finds a subset from all StaffStyle instances that overlap with the specified metric position on a giv...
Definition Implementations.cpp:3540
StaffStyle(const std::shared_ptr< Staff > &staff)
protected constructor for StaffComposite
Definition Others.h:2358
bool requireAllFields() const override
Specifies if the parser should alert (print or throw) when an unknown xml tag is found for this class...
Definition Others.h:2438
StaffStyle(const DocumentWeakPtr &document, Cmper partId, ShareMode shareMode, Cmper cmper)
Constructor function.
Definition Others.h:2363
void integrityCheck() override
Allows a class to determine if it has been properly contructed by the factory and fix issues that it ...
Definition Others.h:2440
static constexpr std::string_view XmlNodeName
The XML node name for this type.
Definition Others.h:2454
std::string styleName
name of staff style
Definition Others.h:2423
bool addToMenu
add this staff style to the context menu for staff styles
Definition Others.h:2424
Represents the attributes of a staff system in the page layout.
Definition Others.h:2541
bool hasStaffScaling
Indicates if any individual staff in the system has scaling applied.
Definition Others.h:2563
Evpu right
Right margin in Evpu. (Sign reversed in Finale UI.)
Definition Others.h:2558
MeasCmper startMeas
Starting measure of the staff system. See Measure.
Definition Others.h:2549
bool scaleVert
"Resize Vertical Space"
Definition Others.h:2565
StaffSystem(const DocumentWeakPtr &document, Cmper staffSystemId, ShareMode shareMode, Cmper cmper)
Constructor function.
Definition Others.h:2544
Evpu left
Left margin in Evpu.
Definition Others.h:2557
Efix staffHeight
Staff height in Efix units. Note that this is different units than options::PageFormatOptions::PageFo...
Definition Others.h:2555
int calcNumMeasures() const
Calculates the number of measures on the system, encapsulating how endMeas works.
Definition Others.h:2577
static constexpr std::string_view XmlNodeName
The XML node name for this type.
Definition Others.h:2586
bool holdMargins
"Hold Margins" (xml node is <scaleContentOnly>)
Definition Others.h:2566
double horzPercent
Definition Others.h:2552
bool placeEndSpaceBeforeBarline
Indicates that extra space is placed before the barline.
Definition Others.h:2564
Evpu distanceToPrev
Distance to the previous staff system in Evpu.
Definition Others.h:2567
Evpu bottom
Definition Others.h:2559
Evpu extraEndSystemSpace
Extra space at the end of the staff system in Evpu.
Definition Others.h:2569
Evpu top
Top margin in Evpu. (Sign reversed in Finale UI.)
Definition Others.h:2556
std::pair< double, double > calcMinMaxStaffSizes() const
Calculates the maximum and minimum staff scaling values for this system by searching each staff for i...
Definition Implementations.cpp:3580
bool noNames
Definition Others.h:2561
MeasCmper endMeas
Definition Others.h:2550
static const xml::XmlElementArray< StaffSystem > & xmlMappingArray()
Required for musx::factory::FieldPopulator.
MeasCmper getLastMeasure() const
Encapsulates the weird Finale fact that endMeas is actually one past the end of the system.
Definition Others.h:2573
Evpu extraStartSystemSpace
Extra space at the start of the staff system in Evpu.
Definition Others.h:2568
int ssysPercent
Staff system scaling percentage (100 means no scaling).
Definition Others.h:2554
Represents chromatic transposition details.
Definition Others.h:2088
static const xml::XmlElementArray< ChromaticTransposition > & xmlMappingArray()
Required for musx::factory::FieldPopulator.
int diatonic
The diatonic interval. See music_theory::Transposer for more information.
Definition Others.h:2091
int alteration
The alteration that defines the chromatic interval (in chromatic half-steps). See music_theory::Trans...
Definition Others.h:2090
Represents key signature transposition details.
Definition Others.h:2075
int adjust
The adjustment to the number of sharps or flats in the key signature.
Definition Others.h:2078
static const xml::XmlElementArray< KeySigTransposition > & xmlMappingArray()
Required for musx::factory::FieldPopulator.
int interval
The diatonic transposition interval.
Definition Others.h:2077
Encapsulates transposition options for a staff.
Definition Others.h:2104
std::shared_ptr< ChromaticTransposition > chromatic
Shared pointer to the chromatic transposition details, if any.
Definition Others.h:2113
std::shared_ptr< KeySigTransposition > keysig
Shared pointer to the key signature transposition details, if any.
Definition Others.h:2110
bool noSimplifyKey
Inverse of "Simplify Key" (xml node is <noKeyOpt>)
Definition Others.h:2107
static const xml::XmlElementArray< Transposition > & xmlMappingArray()
Required for musx::factory::FieldPopulator.
bool setToClef
If true, forces the clef in Staff::transposedClef.
Definition Others.h:2106
Represents the definition of a Finale staff.
Definition Others.h:2021
bool altHideOtherLyrics
Hide lyrics in other layers in alternate notation.
Definition Others.h:2154
bool hideDots
Inverse of "Display Augmentation Dots".
Definition Others.h:2181
AutoNumberingStyle
Enum for auto-numbering style. Auto-numbering is based on instUuid.
Definition Others.h:2025
@ ArabicSuffix
Arabic numeral suffix (default). May not appear in xml.
@ ArabicPrefix
Arabic numeral prefix (with dot): 1. 2. 3. ...
@ OrdinalPrefix
Ordinal number prefix: 1st 2nd 3rd, ...
Evpu dwRestOffset
Offset for downstem rests.
Definition Others.h:2175
bool hideRepeats
Inverse of "Display Endings and Text Repeats".
Definition Others.h:2166
ClefIndex defaultClef
Index of default clef for the staff.
Definition Others.h:2129
AlternateNotation
Enum for alternate notation styles.
Definition Others.h:2060
@ BlankWithRests
Blank Notation with Rests.
@ SlashBeats
Slash Notation (on beats)
bool hideClefs
Inverse of "Display Clefs".
Definition Others.h:2171
bool altRhythmStemsUp
Show stems up in alternate Rhythmic Notation mode.
Definition Others.h:2149
int calcToplinePosition() const
Returns the position of the top staff line, relative to the reference line.
Definition Implementations.cpp:3128
bool hideRepeatTopDot
Inverse of "Top Repeat Dot" in Staff Setup dialog.
Definition Others.h:2161
Evpu hRestOffset
Offset for half rests.
Definition Others.h:2177
std::optional< int > staffLines
Number of lines in the staff (if no custom staff)
Definition Others.h:2131
bool hideKeySigs
Inverse of "Display Key Signatures".
Definition Others.h:2169
Cmper multiStaffInstId
Definition Others.h:2208
std::shared_ptr< MultiStaffInstrumentGroup > getMultiStaffInstVisualGroup() const
Returns the MultiStaffInstrumentGroup for this staff if it is shown as part of one....
Definition Implementations.cpp:3002
NotationStyle
Enum for notation style.
Definition Others.h:2043
bool hideStaffLines
Inverse of "Display Staff Lines".
Definition Others.h:2172
bool hideTimeSigs
Inverse of "Display Time Signatures in Score".
Definition Others.h:2170
bool noOptimize
Inverse of "Allow Hiding When Empty".
Definition Others.h:2163
std::optional< std::vector< int > > customStaff
A list of stafflines from 0..26 where a standard 5-line staff is values 11, 12, 13,...
Definition Others.h:2132
bool noKey
"Ignore Key Signatures"
Definition Others.h:2174
static void calcAllRuntimeValues(const DocumentPtr &document)
Populate runtime values for all staves or staffstyles, such as percussion map Id if any.
Definition Implementations.cpp:2850
std::shared_ptr< FontInfo > noteFont
The custom font to use for noteheads. Guaranteed non-null by integrityCheck if useNoteFont is true.
Definition Others.h:2127
static void calcAllAutoNumberValues(const DocumentPtr &document)
Get the auto-numbering value for this staff, if applicable.
Definition Implementations.cpp:2771
bool hideRepeatBottomDot
Inverse of "Bottom Repeat Dot" in Staff Setup dialog.
Definition Others.h:2157
bool altSlashDots
Show dots on beat slashes in compound meter.
Definition Others.h:2150
std::shared_ptr< MultiStaffInstrumentGroup > getMultiStaffInstGroup() const
Returns the MultiStaffInstrumentGroup for this staff if it is part of one in the data....
Definition Implementations.cpp:2991
bool fullNamePosFromStyle
Definition Others.h:2202
bool hasStyles
Indicates that this staff has staff style assignments.
Definition Others.h:2139
Cmper abrvNamePosId
Definition Others.h:2204
Cmper multiStaffInstVisualId
Definition Others.h:2210
bool altHideArtics
Hide Articulations in alternate notation (in Apply-To Layer)
Definition Others.h:2146
Cmper multiStaffInstVisualGroupId
It is set by the factory with the Resolver function for MultiStaffInstrumentGroup.
Definition Others.h:2214
std::string addAutoNumbering(const std::string &plainName) const
Add auto numbering as a prefix or suffix, if needed.
Definition Implementations.cpp:2959
StemDirection stemDirection
stem direction for staff (xml node is <stemDir>)
Definition Others.h:2189
bool hideStems
Inverse of "Display Stems".
Definition Others.h:2188
Evpu otherRestOffset
Offset for other rests.
Definition Others.h:2178
std::string getFullInstrumentName(util::EnigmaString::AccidentalStyle accidentalStyle=util::EnigmaString::AccidentalStyle::Ascii, bool preferStaffName=false) const
Returns the full instrument name for this staff without Enigma tags and with autonumbering (if any)
Definition Implementations.cpp:3013
std::optional< int > autoNumberValue
Calculated autonumbering value. It is computed by calcAllAutoNumberValues.
Definition Others.h:2216
bool abrvNamePosFromStyle
Definition Others.h:2206
Evpu lineSpace
Distance between staff lines.
Definition Others.h:2133
Evpu wRestOffset
Offset for whole rests.
Definition Others.h:2176
std::shared_ptr< const NamePositioning > getAbbreviatedNamePosition() const
Returns the abbreviated name positioning in effect for this staff instance.
Definition Implementations.cpp:3081
bool altHideSmartShapes
Hide Smart Shapes (in Apply-To layer: probably only affects entry-attached shapes)
Definition Others.h:2148
AlternateNotation altNotation
Alternate notation on the staff.
Definition Others.h:2144
HideMode hideMode
"Force Hide Staff" option
Definition Others.h:2191
Staff(const DocumentWeakPtr &document, Cmper partId, ShareMode shareMode, Cmper cmper)
Constructor function.
Definition Others.h:2119
bool hideBarlines
Inverse of "Display Barlines".
Definition Others.h:2167
bool hasInstrumentAssigned() const
Return true if this staff has an instrument assigned.
Definition Implementations.cpp:3143
LayerIndex altLayer
Alternate notation Apply To Layer index (0..3)
Definition Others.h:2145
bool floatKeys
"Independent Key Signature"
Definition Others.h:2135
Cmper fullNameTextId
Full name TextBlock ID. (xml node is <fullName>)
Definition Others.h:2183
NotationStyle notationStyle
Standard, percussion, or tablature.
Definition Others.h:2126
StemDirection
Enum for staff-level stem direction override.
Definition Others.h:2035
@ AlwaysDown
stems are always down on this staff
@ Default
the default (may not occur in xml)
@ AlwaysUp
stems are always up on this staff
bool useAutoNumbering
Whether names should be auto-numbered. (xml node is <useAutoNum>)
Definition Others.h:2195
bool hideTies
Inverse of "Display Ties".
Definition Others.h:2180
bool showNameInParts
"Display Staff Name in Parts" (xml node is <showNameParts>)
Definition Others.h:2140
ClefIndex transposedClef
Index of transposed clef for the staff. Only used if Transposition::setToClef is true.
Definition Others.h:2130
bool floatTime
"Independent Time Signature"
Definition Others.h:2136
bool altHideOtherSmartShapes
Hide Smart Shapes in other layers in alternate notation.
Definition Others.h:2155
void integrityCheck() override
Allows a class to determine if it has been properly contructed by the factory and fix issues that it ...
Definition Others.h:2312
std::optional< Cmper > percussionMapId
Calculated percussion map Id for a percussion staff. (Populated by in calcAllRuntimeValues....
Definition Others.h:2217
int calcMiddleStaffPosition() const
Returns the middle staff position. For staves with even numbers of lines, it is the middle space.
Definition Implementations.cpp:3113
bool requireAllFields() const override
Specifies if the parser should alert (print or throw) when an unknown xml tag is found for this class...
Definition Others.h:2337
Evpu botBarlineOffset
Offset for the bottom barline.
Definition Others.h:2143
std::shared_ptr< PartDefinition > firstFirstContainingPart() const
Finds the first part that contains this staff, not including the score.
Definition Implementations.cpp:3170
bool hideLyrics
Inverse of "Display Lyrics".
Definition Others.h:2162
std::string getFullName(util::EnigmaString::AccidentalStyle accidentalStyle=util::EnigmaString::AccidentalStyle::Ascii) const
Returns the full staff name without Enigma tags.
Definition Implementations.cpp:2981
Cmper abbrvNameTextId
Abbreviated name TextBlock ID. (xml node is <abbrvName>)
Definition Others.h:2184
std::string getAbbreviatedName(util::EnigmaString::AccidentalStyle accidentalStyle=util::EnigmaString::AccidentalStyle::Ascii) const
Returns the abbreviated staff name without Enigma tags.
Definition Implementations.cpp:2986
bool hideFretboards
Inverse of "Display Fretboards".
Definition Others.h:2159
bool rbarBreak
"Break Repeat Barlines Between Staves"
Definition Others.h:2138
Evpu topRepeatDotOff
Offset for top repeat dots.
Definition Others.h:2186
HideMode
Enum for hide mode.
Definition Others.h:2051
@ Score
Collapse in score only.
@ ScoreParts
Collapse in score and parts.
bool redisplayLayerAccis
"Redisplay Accidentals in Other Layers Within Measures"
Definition Others.h:2192
bool altHideExpressions
Hide Expressions in alternate notation (in Apply-To Layer)
Definition Others.h:2153
bool useNoteFont
Indicates if noteFont should be used.
Definition Others.h:2128
Evpu topBarlineOffset
Offset for the top barline.
Definition Others.h:2164
bool hideBeams
Inverse of "Show Beams".
Definition Others.h:2190
bool hideTimeSigsInParts
Inverse of "Display Time Signatures in Parts".
Definition Others.h:2193
bool hideChords
Inverse of "Display Chords".
Definition Others.h:2173
Cmper fullNamePosId
Definition Others.h:2200
bool showNamesForPart(Cmper partId) const
Returns if names should be shown for the specified part.
Definition Others.h:2252
bool hideRests
Inverse of "Display Rests".
Definition Others.h:2179
int stemReversal
Stem reversal value.
Definition Others.h:2182
bool blankMeasure
Inverse of "Display Rests in Empty Measures".
Definition Others.h:2160
Evpu botRepeatDotOff
Offset for bottom repeat dots.
Definition Others.h:2185
bool altHideOtherArtics
Hide articulations in other layers in alternate notation.
Definition Others.h:2152
Evpu vertTabNumOff
Vertical offset for tab number.
Definition Others.h:2187
bool altHideOtherNotes
Hide notes in other layers in alternate notation.
Definition Others.h:2151
bool blineBreak
"Break Barlines Between Staves"
Definition Others.h:2137
static const xml::XmlElementArray< Staff > & xmlMappingArray()
Required for musx::factory::FieldPopulator.
ClefIndex calcClefIndexAt(MeasCmper measureId, Edu position, bool forWrittenPitch=false) const
Returns the clef in this staff at the specified location.
Definition Implementations.cpp:3089
ClefIndex calcFirstClefIndex(bool forWrittenPitch=false) const
Returns the first clef in this staff.
Definition Others.h:2286
bool hideRptBars
Inverse of "Display Repeat Bars".
Definition Others.h:2168
std::shared_ptr< Transposition > transposition
Transposition details, if non-null.
Definition Others.h:2141
bool hideKeySigsShowAccis
"Hide Key Signature and Show Accidentals" transposition option.
Definition Others.h:2196
AutoNumberingStyle autoNumbering
Autonumbering style if useAutoNumbering is true. (xml node is <autoNum>)
Definition Others.h:2194
bool hideNameInScore
Inverse of "Display Staff Name in Score" (xml node is <hideStfNameInScore>)
Definition Others.h:2142
std::string instUuid
Unique identifier for the type of instrument.
Definition Others.h:2134
bool altHideOtherExpressions
Hide Expressions in other layers in alternate notation.
Definition Others.h:2156
bool hideMeasNums
Inverse of "Display Measure Numbers".
Definition Others.h:2165
std::string getAbbreviatedInstrumentName(util::EnigmaString::AccidentalStyle accidentalStyle=util::EnigmaString::AccidentalStyle::Ascii, bool preferStaffName=false) const
Returns the abbreviated instrument name for this staff without Enigma tags and with autonumbering (if...
Definition Implementations.cpp:3027
std::vector< std::shared_ptr< PartDefinition > > getContainingParts(bool includeScore=true) const
Gets a list of all parts that contain this staff.
Definition Implementations.cpp:3151
bool flatBeams
"Flat Beams"
Definition Others.h:2158
bool altHideLyrics
Hide Lyrics in alternate notation (in Apply-To Layer)
Definition Others.h:2147
std::shared_ptr< const NamePositioning > getFullNamePosition() const
Returns the full name positioning in effect for this staff instance.
Definition Implementations.cpp:3073
static constexpr std::string_view XmlNodeName
The XML node name for this type.
Definition Others.h:2339
Locks a span of one or more measures so that they always appear in a StaffSystem together.
Definition Others.h:2600
MeasCmper endMeas
Definition Others.h:2606
static const xml::XmlElementArray< SystemLock > & xmlMappingArray()
Required for musx::factory::FieldPopulator.
SystemLock(const DocumentWeakPtr &document, Cmper partId, ShareMode shareMode, Cmper cmper)
Constructor function.
Definition Others.h:2603
static constexpr std::string_view XmlNodeName
The XML node name for this type.
Definition Others.h:2609
A single tempo change value entered with Finale's Tempo tool.
Definition Others.h:2629
int unit
Hardware ticks/sec. For Macs this is 1000.
Definition Others.h:2642
TempoChange(const DocumentWeakPtr &document, Cmper partId, ShareMode shareMode, Cmper cmper, Inci inci)
Constructor function.
Definition Others.h:2632
int ratio
Definition Others.h:2637
static constexpr std::string_view XmlNodeName
The XML node name for this type.
Definition Others.h:2653
static const xml::XmlElementArray< TempoChange > & xmlMappingArray()
Required for musx::factory::FieldPopulator.
int getAbsoluteTempo(NoteType noteType=NoteType::Quarter) const
Computes the absolute tempo represented by the TempoChange Instance.
Definition Implementations.cpp:3598
Edu eduPosition
The position within the measure. (xml node is <eldur>)
Definition Others.h:2641
bool isRelative
Definition Others.h:2643
Represents the attributes of a Finale "textBlock".
Definition Others.h:2667
TextType textType
Text tag indicating the type of text block. (xml tag is <textTag>)
Definition Others.h:2693
bool noExpandSingleWord
Do not expand single word.
Definition Others.h:2687
bool roundCorners
Use rounded corners on frame.
Definition Others.h:2691
bool wordWrap
Wrap words (in frames)
Definition Others.h:2688
bool newPos36
Definition Others.h:2683
TextType
Enum for textTag values.
Definition Others.h:2671
@ Expression
textId is a Cmper for a texts::ExpressionText
@ Block
textId is a Cmper for a texts::BlockText
bool requireAllFields() const override
Specifies if the parser should alert (print or throw) when an unknown xml tag is found for this class...
Definition Others.h:2705
Efix cornerRadius
Corner radius for rounded corners.
Definition Others.h:2692
bool showShape
Show shape.
Definition Others.h:2686
std::string getText(bool trimTags=false, util::EnigmaString::AccidentalStyle accidentalStyle=util::EnigmaString::AccidentalStyle::Ascii) const
return display text with Enigma tags removed
Definition Implementations.cpp:3662
std::shared_ptr< TextsBase > getRawTextBlock() const
Gets the raw text block (from the texts pool) based on textType.
Definition Implementations.cpp:3651
Evpu width
Width of frame.
Definition Others.h:2689
Evpu height
Height of frame.
Definition Others.h:2690
int lineSpacingPercentage
Line spacing percentage.
Definition Others.h:2682
Cmper textId
Cmper of the text block. (xml tag is <textID>)
Definition Others.h:2681
static const xml::XmlElementArray< TextBlock > & xmlMappingArray()
Required for musx::factory::FieldPopulator.
TextBlock(const DocumentWeakPtr &document, Cmper partId, ShareMode shareMode, Cmper cmper)
Constructor function.
Definition Others.h:2677
static constexpr std::string_view XmlNodeName
The XML node name for this type.
Definition Others.h:2707
Stores the properties and behaviors of text expressions.
Definition Others.h:2717
Evpu yAdjustBaseline
Vertical adjustment for baseline alignment.
Definition Others.h:2745
RehearsalMarkStyle rehearsalMarkStyle
Auto-sequencing style for rehearsal marks.
Definition Others.h:2729
bool matchPlayback
purpose needs investigation.
Definition Others.h:2734
bool hideMeasureNum
"Hide Measure Numbers" (used on Rehearsal Marks)
Definition Others.h:2733
Cmper categoryId
Identifier for the category of the text expression.
Definition Others.h:2728
PlaybackType playbackType
Playback behavior of the text expression.
Definition Others.h:2739
Evpu measXAdjust
Horizontal adjustment for measurement alignment.
Definition Others.h:2743
int playPass
"Play Only on Pass" value.
Definition Others.h:2732
std::shared_ptr< Enclosure > getEnclosure() const
Gets the enclosure for this expression, or nullptr if none.
Definition Implementations.cpp:3691
std::shared_ptr< TextBlock > getTextBlock() const
Gets the enclosure for this expression, or nullptr if none.
Definition Implementations.cpp:3686
int auxData1
Auxiliary data for the expression. (xml node is "auxdata1")
Definition Others.h:2731
bool useCategoryFonts
Whether to use category fonts.
Definition Others.h:2746
static const xml::XmlElementArray< TextExpressionDef > & xmlMappingArray()
Required for musx::factory::FieldPopulator.
std::string description
Description of the text expression. (xml node is "descStr")
Definition Others.h:2748
TextExpressionDef(const DocumentWeakPtr &document, Cmper partId, ShareMode shareMode, Cmper cmper)
Constructor.
Definition Others.h:2724
bool hasEnclosure
Whether the text expression has an enclosure. (xml node is "newEnclosure")
Definition Others.h:2736
int value
Value associated with the expression (e.g., velocity).
Definition Others.h:2730
bool createdByHp
Whether the text block was created by Finale's smart playback system.
Definition Others.h:2738
bool useAuxData
Whether auxiliary data is used.
Definition Others.h:2735
static constexpr std::string_view XmlNodeName
The XML node name for this type.
Definition Others.h:2756
bool breakMmRest
Whether the text breaks multimeasure rests.
Definition Others.h:2737
VerticalMeasExprAlign vertMeasExprAlign
Vertical alignment of the expression.
Definition Others.h:2741
Evpu yAdjustEntry
Vertical adjustment for entry alignment.
Definition Others.h:2744
HorizontalMeasExprAlign horzMeasExprAlign
Horizontal alignment of the expression.
Definition Others.h:2740
bool useCategoryPos
Whether to use category position.
Definition Others.h:2747
HorizontalTextJustification horzExprJustification
Horizontal justification of the text expression.
Definition Others.h:2742
Cmper textIdKey
Identifier for the TextBlock associated with this.
Definition Others.h:2727
The enclosure for a text expression (if it exists)
Definition Others.h:2768
static constexpr std::string_view XmlNodeName
The XML node name for this type.
Definition Others.h:2772
static const xml::XmlElementArray< TextExpressionEnclosure > & xmlMappingArray()
Required for musx::factory::FieldPopulator.
Represents a text repeat assignment with positioning and behavior properties.
Definition Others.h:2785
bool jumpOnMultiplePasses
If true, use TextRepeatDef::passList to get the passes and ignore passNumber. (xml tag is <multiActua...
Definition Others.h:2802
bool individualPlacement
"Allow Individual Edits Per Staff" (xml tag is <indivPlac>)
Definition Others.h:2799
Cmper textRepeatId
The Cmper of the assigned TextRepeatDef. (xml tag is <repnum>)
Definition Others.h:2797
Cmper staffList
If non-zero, specifies a staff list for which staves to show the ending.
Definition Others.h:2807
int targetValue
Measure number, TextRepeatDef ID, or offset, depending on jumpAction. (xml tag is <target>)
Definition Others.h:2796
TextRepeatAssign(const DocumentWeakPtr &document, Cmper partId, ShareMode shareMode, Cmper cmper, Inci inci)
Constructor function.
Definition Others.h:2788
bool autoUpdate
"Auto-Update Target"
Definition Others.h:2804
int passNumber
Play Section N Times, Jump on Pass, Stop on Pass value, depending on jumpAction and trigger....
Definition Others.h:2795
bool topStaffOnly
"Show On: Top Staff Only"
Definition Others.h:2800
Evpu vertPos
The vertical offset from default of the text repeat marker.
Definition Others.h:2798
bool jumpIfIgnoring
"Jump if Ignoring Repeats" (xml tag is <jmpIgnore>)
Definition Others.h:2806
static constexpr std::string_view XmlNodeName
The XML node name for this type.
Definition Others.h:2809
static const xml::XmlElementArray< TextRepeatAssign > & xmlMappingArray()
Required for musx::factory::FieldPopulator.
RepeatTriggerType trigger
The condition that triggers the jumpAction.
Definition Others.h:2805
RepeatActionType jumpAction
The jump action for this repeat assignment. (xml tag is <action>)
Definition Others.h:2803
bool resetOnAction
"Reset on Repeat Action" (xml tag is <clrOnChange>)
Definition Others.h:2801
Evpu horzPos
The horizontal offset from default of the text repeat marker.
Definition Others.h:2794
Defines text repeat elements with font styling and justification.
Definition Others.h:2825
PoundReplaceOption poundReplace
"Replace # With" choice.
Definition Others.h:2845
TextRepeatDef(const DocumentWeakPtr &document, Cmper partId, ShareMode shareMode, Cmper cmper)
Constructor function.
Definition Others.h:2836
PoundReplaceOption
Enum for poundReplace options.
Definition Others.h:2829
@ MeasureNumber
"Measure Number in Target" (xml value is "measNum")
@ Passes
"Number of Times Played" (the default: may never appear in xml)
@ RepeatID
"Text Repeat ID in Target" (xml value is "repeatID")
std::shared_ptr< FontInfo > font
The font for this text repeat. (xml nodes <fontID>, <fontSize>, and <efx>)
Definition Others.h:2842
bool useThisFont
"Use This Font" (for the # substitution)
Definition Others.h:2844
std::vector< int > passList
If this vector contains elements, they define the repeat passes that apply to this instance.
Definition Others.h:2849
bool hasEnclosure
Whether the text repeat has an enclosure. (xml node is <newEnclosure>)
Definition Others.h:2843
static constexpr std::string_view XmlNodeName
The XML node name for this type.
Definition Others.h:2851
static const xml::XmlElementArray< TextRepeatDef > & xmlMappingArray()
Required for musx::factory::FieldPopulator.
HorizontalTextJustification justification
Definition Others.h:2846
The enclosure for a text expression (if it exists)
Definition Others.h:2864
static constexpr std::string_view XmlNodeName
The XML node name for this type.
Definition Others.h:2868
static const xml::XmlElementArray< TextRepeatEnclosure > & xmlMappingArray()
Required for musx::factory::FieldPopulator.
Represents the text associated with a TextRepeatDef.
Definition Others.h:2881
TextRepeatText(const DocumentWeakPtr &document, Cmper partId, ShareMode shareMode, Cmper cmper)
Constructor function.
Definition Others.h:2884
static constexpr std::string_view XmlNodeName
The XML node name for this type.
Definition Others.h:2891
static const xml::XmlElementArray< TextRepeatText > & xmlMappingArray()
Required for musx::factory::FieldPopulator.
std::string text
The text.
Definition Others.h:2889
Represents an individual lower composite item in the time signature.
Definition Others.h:2916
static const xml::XmlElementArray< CompositeItem > & xmlMappingArray()
Required for musx::factory::FieldPopulator.
bool startGroup
Indicates the start of a group.
Definition Others.h:2919
Edu unit
The size of the unit for this item. (xml node is <integer>)
Definition Others.h:2918
Represents the lower composite time signature array.
Definition Others.h:2904
static constexpr std::string_view XmlNodeName
XML node name.
Definition Others.h:2926
static const xml::XmlElementArray< TimeCompositeLower > & xmlMappingArray()
Required for musx::factory::FieldPopulator.
std::vector< std::shared_ptr< CompositeItem > > items
composite items collection
Definition Others.h:2924
TimeCompositeLower(const DocumentWeakPtr &document, Cmper partId, ShareMode shareMode, Cmper cmper)
Constructor function.
Definition Others.h:2907
Represents an individual composite item in the time signature.
Definition Others.h:2951
util::Fraction fullFraction() const
Return the beats as a complete fraction.
Definition Others.h:2958
bool startGroup
Indicates the start of a group.
Definition Others.h:2955
static const xml::XmlElementArray< CompositeItem > & xmlMappingArray()
Required for musx::factory::FieldPopulator.
Edu beats
The number of beats in this item. (xml node is <integer>)
Definition Others.h:2953
util::Fraction fraction
Fraction of beats (between 0 <= fraction < 1)
Definition Others.h:2954
Represents the upper composite time signature structure.
Definition Others.h:2939
static constexpr std::string_view XmlNodeName
XML node name.
Definition Others.h:2966
static const xml::XmlElementArray< TimeCompositeUpper > & xmlMappingArray()
Required for musx::factory::FieldPopulator.
std::vector< std::shared_ptr< CompositeItem > > items
Collection of composite items.
Definition Others.h:2964
TimeCompositeUpper(const DocumentWeakPtr &document, Cmper partId, ShareMode shareMode, Cmper cmper)
Constructor function.
Definition Others.h:2942
Maps the number of flats to a tonal center for a linear custom key. If there are zero flats or sharps...
Definition Others.h:2983
static constexpr std::string_view XmlNodeName
The XML node name for this type.
Definition Others.h:2989
static const xml::XmlElementArray< TonalCenterFlats > & xmlMappingArray()
Required for musx::factory::FieldPopulator.
Maps number of sharps (0..7) to a tonal center for a linear custom key. Also maps 0 sharps or flats....
Definition Others.h:3005
static const xml::XmlElementArray< TonalCenterSharps > & xmlMappingArray()
Required for musx::factory::FieldPopulator.
static constexpr std::string_view XmlNodeName
The XML node name for this type.
Definition Others.h:3011
AccidentalStyle
Enumeration to specify the type of accidental replacement.
Definition EnigmaString.h:57
@ 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:37
@ 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
RehearsalMarkStyle
Specifies the sequencing style for rehearsal marks.
Definition Others.h:776
@ MeasureNumber
Displays the current measure number.
@ None
Default value, no rehearsal mark style.
@ LetterNumbers
A, B, C...A1, B1, C1.
@ LettersNumbersLowerCase
a, b, c...a1, b1, c1
@ LettersLowerCase
a, b, c...aa, bb, cc
VerticalMeasExprAlign
Specifies the vertical alignment relative to musical elements for an expression or marking category.
Definition Others.h:838
@ AboveStaffOrEntry
Align above the staff or entry.
@ BottomNote
Align with bottom note.
@ RefLine
Align to staff reference line.
@ BelowStaffOrEntry
Align below the staff or entry.
@ AboveStaff
Align above ths staff (the default).
HorizontalTextJustification
Specifies the horizontal alignment for text expressions and marking categories.
Definition Others.h:856
HorizontalMeasExprAlign
Specifies the horizontal alignment relative to musical elements for an expression or marking category...
Definition Others.h:816
@ RightBarline
Align with left barline. (xml value is "rightEdge")
@ AfterClefKeyTime
Align after clef/key/time/repeat.
@ RightOfAllNoteheads
Align to the right of all noteheads.
@ StartTimeSig
Align at the start of the time signature.
@ LeftBarline
Align with left barline (the default). (xml value is "leftEdge", if encountered)
@ CenterPrimaryNotehead
Align to the center of the primary notehead.
@ CenterOverBarlines
Align over the center of the barlines.
@ CenterAllNoteheads
Align to the center of all noteheads.
@ CenterOverMusic
Align over the center of music.
@ LeftOfAllNoteheads
Align left of all noteheads.
@ LeftOfPrimaryNotehead
Align to the left of the primary notehead.
@ StartOfMusic
Align at start of music.
@ Manual
"Horizontal Click Position" alignment.
RepeatActionType
Enum for the possible values of the <action> element.
Definition Others.h:1688
@ Stop
Stops playback after a number of passes (e.g. "Fine")
@ JumpToMark
Jump to a specified repeat number (used by text repeats).
@ JumpAuto
Automatically Jump. (the default). The targetValue is meaningless for this action.
@ JumpAbsolute
Jump to the measure number specified in the targetValue field.
@ NoJump
Do not jump. The targetValue is meaningless for this action.
PlaybackType
Specifies the playback behavior for the an expression or marking category.
Definition Others.h:791
@ Swing
Playback in swing style.
@ SmartPlaybackOn
Turn on smart playback. (xml value is "hpOn")
@ SmartPlaybackOff
Turn off smart playback. (xml value is "hpOff")
@ IgnoreTempoToolChanges
Ignore changes from Tempo Tool. (xml value is "stopTempo")
@ RestrikeKeys
Playback retrikes keys. (xml value is "rekey")
@ Channel
Playback set the MIDI channel.
@ MidiPitchWheel
Playback affects the MIDI pitch wheel. (xml value is "midiPitchwheel")
@ KeyVelocity
Playback affects key velocity. (xml value is "amplitude")
@ MidiController
Playback type for MIDI controller commands.
@ MidiPatchChange
Playback changes the MIDI patch.
@ PercussionMidiMap
Playback uses percussion MIDI map. (xml value is "percMidiMap")
@ PlayTempoToolChanges
Play changes from Tempo Tool. (xml value is "startTempo")
@ Transpose
Playback causes transposition.
@ ChannelPressure
Playback affects MIDI channel pressure. (xml value is "midiPressure")
@ Tempo
Playback affects tempo. (xml value is "time")
@ Dump
Playback is an arbitrary data dump. (Data is in node <playDumpText> with the same Cmper value....
RepeatTriggerType
Enum for the possible values of the <trigger> element.
Definition Others.h:1703
@ Always
Always jump (the default)
@ OnPass
Jump on a sepecified pass number.
@ UntilPass
Jump until a specified pass number is reached.
ShowClefMode
Enum representing the clef display mode for a frame.
Definition CommonClasses.h:105
NoteType
Enum class representing note types based on EDU values.
Definition CommonClasses.h:56
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
uint16_t PercussionNoteType
Definition Fundamentals.h:75
unsigned int LayerIndex
Layer index (valid values are 0..3)
Definition Fundamentals.h:70
constexpr Cmper SCORE_PARTID
The part id of the score.
Definition Fundamentals.h:80
int16_t InstCmper
Enigma staff (inst) Cmper (may be negative when not applicable)
Definition Fundamentals.h:65
int16_t Inci
Enigma "incident" key type.
Definition Fundamentals.h:56
int32_t Evpu
EVPU value (288 per inch)
Definition Fundamentals.h:57
uint16_t Cmper
Enigma "comperator" key type.
Definition Fundamentals.h:55
@ Percussion
Percussion clef, open rectangle (no pitch).
uint16_t ClefIndex
Index into options::ClefOptions::clefDefs.
Definition Fundamentals.h:67
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:53
int32_t EntryNumber
Entry identifier.
Definition Fundamentals.h:68
std::shared_ptr< Document > DocumentPtr
Shared Document pointer.
Definition BaseClasses.h:51
int16_t SystemCmper
Enigma systems Cmper (may be negative when not applicable)
Definition Fundamentals.h:66
std::vector< XmlElementDescriptor< T > > XmlElementArray
an array type for XmlElementDescriptor instances.
Definition XmlInterface.h:127
object model for musx file (enigmaxml)
Definition BaseClasses.h:32