diff --git a/src/engraving/dom/note.cpp b/src/engraving/dom/note.cpp index 17e0c7dc9bb30..01ccbf045e2f6 100644 --- a/src/engraving/dom/note.cpp +++ b/src/engraving/dom/note.cpp @@ -340,11 +340,18 @@ SymId Note::noteHead(int direction, NoteHeadGroup group, NoteHeadType t, int tpc return noteHeads[direction][int(group)][int(t)]; } // other schemes - if (scheme == NoteHeadScheme::HEAD_PITCHNAME || scheme == NoteHeadScheme::HEAD_PITCHNAME_GERMAN) { + if (scheme == NoteHeadScheme::HEAD_PITCHNAME || scheme == NoteHeadScheme::HEAD_PITCHNAME_GERMAN + || scheme == NoteHeadScheme::HEAD_PITCHNAME_NO_ACCIDENTALS + || scheme == NoteHeadScheme::HEAD_PITCHNAME_GERMAN_NO_ACCIDENTALS) { + const bool no_accidentals = scheme == NoteHeadScheme::HEAD_PITCHNAME_NO_ACCIDENTALS + || scheme == NoteHeadScheme::HEAD_PITCHNAME_GERMAN_NO_ACCIDENTALS; + const bool german = scheme == NoteHeadScheme::HEAD_PITCHNAME_GERMAN + || scheme == NoteHeadScheme::HEAD_PITCHNAME_GERMAN_NO_ACCIDENTALS; + if (tpc == Tpc::TPC_A) { group = NoteHeadGroup::HEAD_A; } else if (tpc == Tpc::TPC_B) { - if (scheme == NoteHeadScheme::HEAD_PITCHNAME_GERMAN) { + if (german) { group = NoteHeadGroup::HEAD_H; } else { group = NoteHeadGroup::HEAD_B; @@ -360,41 +367,101 @@ SymId Note::noteHead(int direction, NoteHeadGroup group, NoteHeadType t, int tpc } else if (tpc == Tpc::TPC_G) { group = NoteHeadGroup::HEAD_G; } else if (tpc == Tpc::TPC_A_S) { - group = NoteHeadGroup::HEAD_A_SHARP; + if (no_accidentals) { + group = NoteHeadGroup::HEAD_A; + } else { + group = NoteHeadGroup::HEAD_A_SHARP; + } } else if (tpc == Tpc::TPC_B_S) { - if (scheme == NoteHeadScheme::HEAD_PITCHNAME_GERMAN) { - group = NoteHeadGroup::HEAD_H_SHARP; + if (no_accidentals) { + if (german) { + group = NoteHeadGroup::HEAD_H; + } else { + group = NoteHeadGroup::HEAD_B; + } } else { - group = NoteHeadGroup::HEAD_B_SHARP; + if (german) { + group = NoteHeadGroup::HEAD_H_SHARP; + } else { + group = NoteHeadGroup::HEAD_B_SHARP; + } } } else if (tpc == Tpc::TPC_C_S) { - group = NoteHeadGroup::HEAD_C_SHARP; + if (no_accidentals) { + group = NoteHeadGroup::HEAD_C; + } else { + group = NoteHeadGroup::HEAD_C_SHARP; + } } else if (tpc == Tpc::TPC_D_S) { - group = NoteHeadGroup::HEAD_D_SHARP; + if (no_accidentals) { + group = NoteHeadGroup::HEAD_D; + } else { + group = NoteHeadGroup::HEAD_D_SHARP; + } } else if (tpc == Tpc::TPC_E_S) { - group = NoteHeadGroup::HEAD_E_SHARP; + if (no_accidentals) { + group = NoteHeadGroup::HEAD_E; + } else { + group = NoteHeadGroup::HEAD_E_SHARP; + } } else if (tpc == Tpc::TPC_F_S) { - group = NoteHeadGroup::HEAD_F_SHARP; + if (no_accidentals) { + group = NoteHeadGroup::HEAD_F; + } else { + group = NoteHeadGroup::HEAD_F_SHARP; + } } else if (tpc == Tpc::TPC_G_S) { - group = NoteHeadGroup::HEAD_G_SHARP; + if (no_accidentals) { + group = NoteHeadGroup::HEAD_G; + } else { + group = NoteHeadGroup::HEAD_G_SHARP; + } } else if (tpc == Tpc::TPC_A_B) { - group = NoteHeadGroup::HEAD_A_FLAT; + if (no_accidentals) { + group = NoteHeadGroup::HEAD_A; + } else { + group = NoteHeadGroup::HEAD_A_FLAT; + } } else if (tpc == Tpc::TPC_B_B) { - if (scheme == NoteHeadScheme::HEAD_PITCHNAME_GERMAN) { + if (no_accidentals) { group = NoteHeadGroup::HEAD_B; } else { - group = NoteHeadGroup::HEAD_B_FLAT; + if (german) { + group = NoteHeadGroup::HEAD_B; + } else { + group = NoteHeadGroup::HEAD_B_FLAT; + } } } else if (tpc == Tpc::TPC_C_B) { - group = NoteHeadGroup::HEAD_C_FLAT; + if (no_accidentals) { + group = NoteHeadGroup::HEAD_C; + } else { + group = NoteHeadGroup::HEAD_C_FLAT; + } } else if (tpc == Tpc::TPC_D_B) { - group = NoteHeadGroup::HEAD_D_FLAT; + if (no_accidentals) { + group = NoteHeadGroup::HEAD_D; + } else { + group = NoteHeadGroup::HEAD_D_FLAT; + } } else if (tpc == Tpc::TPC_E_B) { - group = NoteHeadGroup::HEAD_E_FLAT; + if (no_accidentals) { + group = NoteHeadGroup::HEAD_E; + } else { + group = NoteHeadGroup::HEAD_E_FLAT; + } } else if (tpc == Tpc::TPC_F_B) { - group = NoteHeadGroup::HEAD_F_FLAT; + if (no_accidentals) { + group = NoteHeadGroup::HEAD_F; + } else { + group = NoteHeadGroup::HEAD_F_FLAT; + } } else if (tpc == Tpc::TPC_G_B) { - group = NoteHeadGroup::HEAD_G_FLAT; + if (no_accidentals) { + group = NoteHeadGroup::HEAD_G; + } else { + group = NoteHeadGroup::HEAD_G_FLAT; + } } } else if (scheme == NoteHeadScheme::HEAD_SHAPE_NOTE_4) { int degree = tpc2degree(tpc, key); @@ -1390,6 +1457,7 @@ bool Note::isNoteName() const s = st->staffTypeForElement(this)->noteHeadScheme(); } return s == NoteHeadScheme::HEAD_PITCHNAME || s == NoteHeadScheme::HEAD_PITCHNAME_GERMAN + || s == NoteHeadScheme::HEAD_PITCHNAME_NO_ACCIDENTALS || s == NoteHeadScheme::HEAD_PITCHNAME_GERMAN_NO_ACCIDENTALS || s == NoteHeadScheme::HEAD_SOLFEGE || s == NoteHeadScheme::HEAD_SOLFEGE_FIXED; } return false; diff --git a/src/engraving/dom/note.h b/src/engraving/dom/note.h index d70f9daaa804c..7059529da3996 100644 --- a/src/engraving/dom/note.h +++ b/src/engraving/dom/note.h @@ -105,7 +105,7 @@ static const int INVALID_LINE = -10000; // @P elements array[EngravingItem] list of elements attached to notehead // @P fret int fret number in tablature // @P ghost bool ghost note (guitar: death note) -// @P headScheme enum (NoteHeadScheme.HEAD_AUTO, .HEAD_NORMAL, .HEAD_PITCHNAME, .HEAD_PITCHNAME_GERMAN, .HEAD_SHAPE_NOTE_4, .HEAD_SHAPE_NOTE_7_AIKIN, .HEAD_SHAPE_NOTE_7_FUNK, .HEAD_SHAPE_NOTE_7_WALKER, .HEAD_SOLFEGE, .HEAD_SOLFEGE_FIXED) +// @P headScheme enum (NoteHeadScheme.HEAD_AUTO, .HEAD_NORMAL, .HEAD_PITCHNAME, .HEAD_PITCHNAME_NO_ACCIDENTALS, .HEAD_PITCHNAME_GERMAN, .HEAD_PITCHNAME_GERMAN_NO_ACCIDENTALS, .HEAD_SHAPE_NOTE_4, .HEAD_SHAPE_NOTE_7_AIKIN, .HEAD_SHAPE_NOTE_7_FUNK, .HEAD_SHAPE_NOTE_7_WALKER, .HEAD_SOLFEGE, .HEAD_SOLFEGE_FIXED) // @P headGroup enum (NoteHeadGroup.HEAD_NORMAL, .HEAD_BREVIS_ALT, .HEAD_CROSS, .HEAD_DIAMOND, .HEAD_DO, .HEAD_FA, .HEAD_LA, .HEAD_MI, .HEAD_RE, .HEAD_SLASH, .HEAD_LARGE_DIAMOND, .HEAD_SOL, .HEAD_TI, .HEAD_XCIRCLE, .HEAD_TRIANGLE) // @P headType enum (NoteHeadType.HEAD_AUTO, .HEAD_BREVIS, .HEAD_HALF, .HEAD_QUARTER, .HEAD_WHOLE) // @P hidden bool hidden, not played note (read only) diff --git a/src/engraving/types/types.h b/src/engraving/types/types.h index 0e252f63a2c83..bea2200f9d117 100644 --- a/src/engraving/types/types.h +++ b/src/engraving/types/types.h @@ -509,7 +509,9 @@ enum class NoteHeadScheme : signed char { HEAD_AUTO = -1, HEAD_NORMAL, HEAD_PITCHNAME, + HEAD_PITCHNAME_NO_ACCIDENTALS, HEAD_PITCHNAME_GERMAN, + HEAD_PITCHNAME_GERMAN_NO_ACCIDENTALS, HEAD_SOLFEGE, HEAD_SOLFEGE_FIXED, HEAD_SHAPE_NOTE_4, diff --git a/src/engraving/types/typesconv.cpp b/src/engraving/types/typesconv.cpp index 3e6376f8b2542..b1a90a0cb1284 100644 --- a/src/engraving/types/typesconv.cpp +++ b/src/engraving/types/typesconv.cpp @@ -1147,7 +1147,9 @@ static const std::vector > NOTEHEAD_SCHEMES = { { NoteHeadScheme::HEAD_AUTO, "auto", muse::TranslatableString("engraving", "Auto") }, { NoteHeadScheme::HEAD_NORMAL, "normal", muse::TranslatableString("engraving/noteheadscheme", "Normal") }, { NoteHeadScheme::HEAD_PITCHNAME, "name-pitch", muse::TranslatableString("engraving/noteheadscheme", "Pitch names") }, + { NoteHeadScheme::HEAD_PITCHNAME_NO_ACCIDENTALS, "name-pitch-no-acc", muse::TranslatableString("engraving/noteheadscheme", "Pitch names, no accidentals") }, { NoteHeadScheme::HEAD_PITCHNAME_GERMAN, "name-pitch-german", muse::TranslatableString("engraving/noteheadscheme", "German pitch names") }, + { NoteHeadScheme::HEAD_PITCHNAME_GERMAN_NO_ACCIDENTALS, "name-pitch-german-no-acc", muse::TranslatableString("engraving/noteheadscheme", "German pitch names, no accidentals") }, { NoteHeadScheme::HEAD_SOLFEGE, "solfege-movable", muse::TranslatableString("engraving/noteheadscheme", "Solf\u00e8ge movable Do") }, // è { NoteHeadScheme::HEAD_SOLFEGE_FIXED, "solfege-fixed", muse::TranslatableString("engraving/noteheadscheme", "Solf\u00e8ge fixed Do") }, // è { NoteHeadScheme::HEAD_SHAPE_NOTE_4, "shape-4", muse::TranslatableString("engraving/noteheadscheme", "4-shape (Walker)") }, diff --git a/src/notationscene/widgets/editstafftype.cpp b/src/notationscene/widgets/editstafftype.cpp index fd2de46b47eac..dec73890245b7 100644 --- a/src/notationscene/widgets/editstafftype.cpp +++ b/src/notationscene/widgets/editstafftype.cpp @@ -47,7 +47,9 @@ using namespace muse::ui; mu::engraving::NoteHeadScheme noteHeadSchemes[] = { mu::engraving::NoteHeadScheme::HEAD_NORMAL, mu::engraving::NoteHeadScheme::HEAD_PITCHNAME, + mu::engraving::NoteHeadScheme::HEAD_PITCHNAME_NO_ACCIDENTALS, mu::engraving::NoteHeadScheme::HEAD_PITCHNAME_GERMAN, + mu::engraving::NoteHeadScheme::HEAD_PITCHNAME_GERMAN_NO_ACCIDENTALS, mu::engraving::NoteHeadScheme::HEAD_SOLFEGE, mu::engraving::NoteHeadScheme::HEAD_SOLFEGE_FIXED, mu::engraving::NoteHeadScheme::HEAD_SHAPE_NOTE_4, diff --git a/src/propertiespanel/qml/MuseScore/PropertiesPanel/notation/notes/noteheads/noteheadsettingsmodel.cpp b/src/propertiespanel/qml/MuseScore/PropertiesPanel/notation/notes/noteheads/noteheadsettingsmodel.cpp index a29899469029a..1c2424ace344a 100644 --- a/src/propertiespanel/qml/MuseScore/PropertiesPanel/notation/notes/noteheads/noteheadsettingsmodel.cpp +++ b/src/propertiespanel/qml/MuseScore/PropertiesPanel/notation/notes/noteheads/noteheadsettingsmodel.cpp @@ -225,8 +225,12 @@ QVariantList NoteheadSettingsModel::possibleHeadSystemTypes() const { mu::engraving::NoteHeadScheme::HEAD_AUTO, muse::qtrc("propertiespanel", "Auto", "notehead scheme") }, { mu::engraving::NoteHeadScheme::HEAD_NORMAL, muse::qtrc("propertiespanel", "Normal", "notehead scheme") }, { mu::engraving::NoteHeadScheme::HEAD_PITCHNAME, muse::qtrc("propertiespanel", "Pitch names", "notehead scheme") }, + { mu::engraving::NoteHeadScheme::HEAD_PITCHNAME_NO_ACCIDENTALS, + muse::qtrc("propertiespanel", "Pitch names, no accidentals", "notehead scheme") }, { mu::engraving::NoteHeadScheme::HEAD_PITCHNAME_GERMAN, muse::qtrc("propertiespanel", "German pitch names", "notehead scheme") }, + { mu::engraving::NoteHeadScheme::HEAD_PITCHNAME_GERMAN_NO_ACCIDENTALS, + muse::qtrc("propertiespanel", "German pitch names, no accidentals", "notehead scheme") }, { mu::engraving::NoteHeadScheme::HEAD_SOLFEGE, muse::qtrc("propertiespanel", "Solfège movable do", "notehead scheme") }, { mu::engraving::NoteHeadScheme::HEAD_SOLFEGE_FIXED, diff --git a/src/propertiespanel/qml/MuseScore/PropertiesPanel/notation/stafftype/StaffTypeSettings.qml b/src/propertiespanel/qml/MuseScore/PropertiesPanel/notation/stafftype/StaffTypeSettings.qml index ebe54a29352ee..4e7b1d1cd7d33 100644 --- a/src/propertiespanel/qml/MuseScore/PropertiesPanel/notation/stafftype/StaffTypeSettings.qml +++ b/src/propertiespanel/qml/MuseScore/PropertiesPanel/notation/stafftype/StaffTypeSettings.qml @@ -201,7 +201,9 @@ Column { { text: qsTrc("propertiespanel", "Auto"), value: NoteHead.SCHEME_AUTO }, { text: qsTrc("propertiespanel", "Normal"), value: NoteHead.SCHEME_NORMAL }, { text: qsTrc("propertiespanel", "Pitch names"), value: NoteHead.SCHEME_PITCHNAME }, + { text: qsTrc("propertiespanel", "Pitch names, no accidentals"), value: NoteHead.SCHEME_PITCHNAME_NO_ACCIDENTALS }, { text: qsTrc("propertiespanel", "German pitch names"), value: NoteHead.SCHEME_PITCHNAME_GERMAN }, + { text: qsTrc("propertiespanel", "German pitch names, no accidentals"), value: NoteHead.SCHEME_PITCHNAME_GERMAN_NO_ACCIDENTALS }, { text: qsTrc("propertiespanel", "Solfege movable Do"), value: NoteHead.SCHEME_SOLFEGE }, { text: qsTrc("propertiespanel", "Solfege fixed Do"), value: NoteHead.SCHEME_SOLFEGE_FIXED }, { text: qsTrc("propertiespanel", "4-shape (Walker)"), value: NoteHead.SCHEME_SHAPE_NOTE_4 },