From a25990c64962138e7740ef120febf295a43c9c04 Mon Sep 17 00:00:00 2001 From: Olha Vakhromova Date: Sun, 6 Apr 2025 18:25:32 +0300 Subject: [PATCH] draft pitch classes --- src/engraving/dom/note.h | 4 +-- .../internal/notationaccessibility.cpp | 34 +++++++++++++++++-- 2 files changed, 33 insertions(+), 5 deletions(-) diff --git a/src/engraving/dom/note.h b/src/engraving/dom/note.h index 3d48883fac96e..f4c462ad16caf 100644 --- a/src/engraving/dom/note.h +++ b/src/engraving/dom/note.h @@ -227,6 +227,8 @@ class Note final : public EngravingItem int tpc2() const { return m_tpc[1]; } // transposed tpc String tpcUserName(bool explicitAccidental = false, bool full = false) const; + static String tpcUserName(int tpc, int pitch, bool explicitAccidental, bool full = false); + void setTpc(int v); void setTpc1(int v) { m_tpc[0] = v; } void setTpc2(int v) { m_tpc[1] = v; } @@ -479,8 +481,6 @@ class Note final : public EngravingItem void normalizeLeftDragDelta(Segment* seg, EditData& ed, NoteEditData* ned); - static String tpcUserName(int tpc, int pitch, bool explicitAccidental, bool full = false); - void getNoteListForDots(std::vector& topDownNotes, std::vector& bottomUpNotes, std::vector& anchoredDots); void addLineAttachPoint(PointF point, EngravingItem* line, bool start); diff --git a/src/notation/internal/notationaccessibility.cpp b/src/notation/internal/notationaccessibility.cpp index 9813f4e1d4f36..7f6f37c31f587 100644 --- a/src/notation/internal/notationaccessibility.cpp +++ b/src/notation/internal/notationaccessibility.cpp @@ -36,6 +36,7 @@ #include "engraving/dom/measure.h" #include "accessibility/accessibleroot.h" +#include using namespace mu::notation; using namespace muse::async; @@ -180,9 +181,36 @@ QString NotationAccessibility::rangeAccessibilityInfo() const } end += "; " + muse::qtrc("engraving", "End beat: %1").arg(endBarbeat.beat); - return muse::qtrc("notation", "Range selection; %1; %2") - .arg(start) - .arg(end); + // QString pitchClasses = muse::qtrc("engraving", "Pitch classes:"); + + + LOGD() << "TTTTTTTT before scanning "; + + QString pitchClasses = muse::qtrc("engraving", "*** Pitch classes:"); + + auto elements = selection()->elements(); + + std::vector notes; + + std::copy_if(elements.begin(), elements.end(), std::back_inserter(notes), [](EngravingItem* i){return i->type() == ElementType::NOTE;}); + std::sort(notes.begin(), notes.end(), [](EngravingItem* i, EngravingItem* j){ return ((Note*)i)->pitch() - ((Note*)j)->pitch(); }); + + for (EngravingItem* n : notes) { + LOGD() << "TTTTTTTT item is playable " << n->isPlayable(); + + Note* note = (Note*)n; + //String pitchClassName = note->tpcUserName(false); + String pitchClassName = note->tpcUserName(note->tpc1(), note->ppitch(), false); + LOGD() << "TTTTTTTT note pitch class " << pitchClassName; + pitchClasses += " " + muse::qtrc("engraving", pitchClassName); + } + pitchClasses += " ***"; + LOGD() << "TTTTTTTT after scanning "; + + return muse::qtrc("notation", "Range selection; %1; %2; %3") + .arg(pitchClasses) + .arg(start) + .arg(end); } QString NotationAccessibility::singleElementAccessibilityInfo() const