Skip to content

Commit b59b19b

Browse files
committed
Fix #338914: Add Medieval/Renaissance clefs
Resolves: [#338914](https://musescore.org/en/node/338914) Resolves: #31554
1 parent 925de7a commit b59b19b

File tree

7 files changed

+47
-4
lines changed

7 files changed

+47
-4
lines changed

src/engraving/api/v1/apitypes.h

Lines changed: 7 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1070,6 +1070,13 @@ enum class ClefType {
10701070
TAB4_SERIF = int(mu::engraving::ClefType::TAB4_SERIF),
10711071
C4_8VB = int(mu::engraving::ClefType::C4_8VB),
10721072
G8_VB_C = int(mu::engraving::ClefType::G8_VB_C),
1073+
G_PETR = int(mu::engraving::ClefType::G_PETR),
1074+
C1_PETR = int(mu::engraving::ClefType::C1_PETR),
1075+
C2_PETR = int(mu::engraving::ClefType::C2_PETR),
1076+
C3_PETR = int(mu::engraving::ClefType::C3_PETR),
1077+
C4_PETR = int(mu::engraving::ClefType::C4_PETR),
1078+
C5_PETR = int(mu::engraving::ClefType::C4_PETR),
1079+
F_PETR = int(mu::engraving::ClefType::F_PETR),
10731080
MAX = int(mu::engraving::ClefType::MAX),
10741081
};
10751082
Q_ENUM_NS(ClefType);

src/engraving/dom/clef.cpp

Lines changed: 7 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -89,6 +89,13 @@ const ClefInfo ClefInfo::clefTable[] = {
8989

9090
{ ClefType::C4_8VB, 4, 30, { 6, 2, 5, 1, 4, 0, 3, 3, 0, 4, 1, 5, 2, 6 }, SymId::cClef8vb, StaffGroup::STANDARD },
9191
{ ClefType::G8_VB_C, 2, 38, { 0, 3, -1, 2, 5, 1, 4, 4, 1, 5, 2, 6, 3, 7 }, SymId::gClef8vbCClef, StaffGroup::STANDARD },
92+
{ ClefType::G_PETR, 2, 45, { 0, 3,-1, 2, 5, 1, 4, 4, 1, 5, 2, 6, 3, 7 }, SymId::mensuralGclefPetrucci, StaffGroup::STANDARD },
93+
{ ClefType::C1_PETR, 1, 43, { 5, 1, 4, 0, 3,-1, 2, 2, 6, 3, 7, 4, 8, 5 }, SymId::mensuralCclefPetrucciPosLowest, StaffGroup::STANDARD },
94+
{ ClefType::C2_PETR, 2, 41, { 3, 6, 2, 5, 1, 4, 0, 0, 4, 1, 5, 2, 6, 3 }, SymId::mensuralCclefPetrucciPosLow, StaffGroup::STANDARD },
95+
{ ClefType::C3_PETR, 3, 39, { 1, 4, 0, 3, 6, 2, 5, 5, 2, 6, 3, 7, 4, 8 }, SymId::mensuralCclefPetrucciPosMiddle, StaffGroup::STANDARD },
96+
{ ClefType::C4_PETR, 4, 37, { 6, 2, 5, 1, 4, 0, 3, 3, 0, 4, 1, 5, 2, 6 }, SymId::mensuralCclefPetrucciPosHigh, StaffGroup::STANDARD },
97+
{ ClefType::C5_PETR, 5, 35, { 4, 0, 3,-1, 2, 5, 1, 1, 5, 2, 6, 3, 7, 4 }, SymId::mensuralCclefPetrucciPosHighest, StaffGroup::STANDARD },
98+
{ ClefType::F_PETR, 4, 33, { 2, 5, 1, 4, 7, 3, 6, 6, 3, 7, 4, 8, 5, 9 }, SymId::mensuralFclefPetrucci, StaffGroup::STANDARD },
9299
};
93100

94101
//---------------------------------------------------------

src/engraving/types/types.h

Lines changed: 7 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -596,6 +596,13 @@ enum class ClefType : signed char {
596596
// new clefs to be added between here
597597
C4_8VB,
598598
G8_VB_C,
599+
G_PETR,
600+
F_PETR,
601+
C1_PETR,
602+
C2_PETR,
603+
C3_PETR,
604+
C4_PETR,
605+
C5_PETR,
599606
// and here in oder to not break TAB clef style
600607
MAX
601608
};

src/engraving/types/typesconv.cpp

Lines changed: 7 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1308,6 +1308,13 @@ static const std::vector<Item<ClefType> > CLEF_TYPES = {
13081308

13091309
{ ClefType::C4_8VB, "C4_8VB", muse::TranslatableString("engraving/cleftype", "Tenor clef 8va bassa") },
13101310
{ ClefType::G8_VB_C, "G8vbc", muse::TranslatableString("engraving/cleftype", "G clef ottava bassa with C clef") },
1311+
{ ClefType::G_PETR, "GPetr", muse::TranslatableString("engraving/cleftype", "Treble clef (Renaissance)") },
1312+
{ ClefType::C1_PETR, "C1Petr", muse::TranslatableString("engraving/cleftype", "Soprano clef (Renaissance)") },
1313+
{ ClefType::C2_PETR, "C2Petr", muse::TranslatableString("engraving/cleftype", "Mezzo-soprano clef(Renaissance)") },
1314+
{ ClefType::C3_PETR, "C3Petr", muse::TranslatableString("engraving/cleftype", "Alto clef(Renaissance)") },
1315+
{ ClefType::C4_PETR, "C4Petr", muse::TranslatableString("engraving/cleftype", "Tenor clef(Renaissance)") },
1316+
{ ClefType::C5_PETR, "C5Petr", muse::TranslatableString("engraving/cleftype", "Baritone clef(Renaissance)") },
1317+
{ ClefType::F_PETR, "FPetr", muse::TranslatableString("engraving/cleftype", "Bass clef (Renaissance)") },
13111318
};
13121319

13131320
const muse::TranslatableString& TConv::userName(ClefType v)

src/importexport/mei/internal/meiconverter.cpp

Lines changed: 10 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -882,15 +882,21 @@ libmei::Clef Convert::clefToMEI(engraving::ClefType clef)
882882
case (engraving::ClefType::G8_VA):
883883
case (engraving::ClefType::G15_MA):
884884
case (engraving::ClefType::G_1):
885-
meiClef.SetShape(libmei::CLEFSHAPE_G);
885+
case (engraving::ClefType::G_PETR):
886+
meiClef.SetShape(libmei::CLEFSHAPE_G);
886887
break;
887888
case (engraving::ClefType::C1):
888889
case (engraving::ClefType::C2):
889890
case (engraving::ClefType::C3):
890891
case (engraving::ClefType::C4):
891892
case (engraving::ClefType::C4_8VB):
892893
case (engraving::ClefType::C5):
893-
meiClef.SetShape(libmei::CLEFSHAPE_C);
894+
case (engraving::ClefType::C1_PETR):
895+
case (engraving::ClefType::C2_PETR):
896+
case (engraving::ClefType::C3_PETR):
897+
case (engraving::ClefType::C4_PETR):
898+
case (engraving::ClefType::C5_PETR):
899+
meiClef.SetShape(libmei::CLEFSHAPE_C);
894900
break;
895901
case (engraving::ClefType::F):
896902
case (engraving::ClefType::F15_MB):
@@ -899,7 +905,8 @@ libmei::Clef Convert::clefToMEI(engraving::ClefType clef)
899905
case (engraving::ClefType::F_15MA):
900906
case (engraving::ClefType::F_B):
901907
case (engraving::ClefType::F_C):
902-
meiClef.SetShape(libmei::CLEFSHAPE_F);
908+
case (engraving::ClefType::F_PETR):
909+
meiClef.SetShape(libmei::CLEFSHAPE_F);
903910
break;
904911
case (engraving::ClefType::G8_VB_O):
905912
meiClef.SetShape(libmei::CLEFSHAPE_GG);

src/importexport/musicxml/internal/musicxml/export/exportmusicxml.cpp

Lines changed: 7 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -2639,6 +2639,13 @@ static const std::vector<MusicXmlClefInfo> CLEF_INFOS = {
26392639

26402640
{ ClefType::C4_8VB, "C", -1 },
26412641
{ ClefType::G8_VB_C, "G", -1 },
2642+
{ ClefType::G_PETR, "G", -1 },
2643+
{ ClefType::C1_PETR, "C", -1 },
2644+
{ ClefType::C2_PETR, "C", -1 },
2645+
{ ClefType::C3_PETR, "C", -1 },
2646+
{ ClefType::C4_PETR, "C", -1 },
2647+
{ ClefType::C5_PETR, "C", -1 },
2648+
{ ClefType::F_PETR, "F", -1 },
26422649
};
26432650

26442651
static const MusicXmlClefInfo findClefInfoByType(const ClefType& v)

src/palette/internal/palettecreator.cpp

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1075,7 +1075,8 @@ PalettePtr PaletteCreator::newClefsPalette(bool defaultPalette)
10751075
ClefType::F, ClefType::F_8VA, ClefType::F_15MA,
10761076
ClefType::F8_VB, ClefType::F15_MB, ClefType::F_B, ClefType::F_C, ClefType::F_F18C, ClefType::F_19C,
10771077
ClefType::PERC,
1078-
ClefType::PERC2, ClefType::TAB, ClefType::TAB4, ClefType::TAB_SERIF, ClefType::TAB4_SERIF
1078+
ClefType::PERC2, ClefType::TAB, ClefType::TAB4, ClefType::TAB_SERIF, ClefType::TAB4_SERIF,
1079+
ClefType::G_PETR, ClefType::C1_PETR, ClefType::C2_PETR, ClefType::C3_PETR, ClefType::C4_PETR, ClefType::C5_PETR, ClefType::F_PETR
10791080
};
10801081

10811082
for (ClefType clefType : defaultPalette ? clefsDefault : clefsMaster) {

0 commit comments

Comments
 (0)