23#ifdef SCRIPT_INTERFACE
24#define BEGIN_QT_REGISTERED_ENUM(Name) \
28#define END_QT_REGISTERED_ENUM(Name) \
31using Name = MSQE_##Name::Name;
33#define BEGIN_QT_REGISTERED_ENUM(Name)
34#define END_QT_REGISTERED_ENUM(Name)
44BEGIN_QT_REGISTERED_ENUM(
SymId)
2891END_QT_REGISTERED_ENUM(
SymId)
2905 QPointF _stemDownNW;
2907 QPointF _stemDownSW;
2913 std::vector<SymId> _ids;
2918 bool isValid()
const {
return _code != -1 && _bbox.isValid(); }
2920 void setSymList(
const std::vector<SymId>& sl) { _ids = sl; }
2921 const std::vector<SymId>& symList()
const {
return _ids; }
2923 FT_UInt index()
const {
return _index; }
2924 void setIndex(FT_UInt i) { _index = i; }
2926 int code()
const {
return _code; }
2927 void setCode(
int val) { _code = val; }
2929 QRectF bbox()
const {
return _bbox; }
2930 void setBbox(QRectF val) { _bbox = val; }
2932 qreal advance()
const {
return _advance; }
2933 void setAdvance(qreal val) { _advance = val; }
2935 QPointF stemDownNW()
const {
return _stemDownNW; }
2936 void setStemDownNW(
const QPointF& r) { _stemDownNW = r; }
2937 QPointF stemUpSE()
const {
return _stemUpSE; }
2938 void setStemUpSE(
const QPointF& r) { _stemUpSE = r; }
2939 QPointF stemDownSW()
const {
return _stemDownSW; }
2940 void setStemDownSW(
const QPointF& r) { _stemDownSW = r; }
2941 QPointF stemUpNW()
const {
return _stemUpNW; }
2942 void setStemUpNW(
const QPointF& r) { _stemUpNW = r; }
2943 QPointF cutOutNE()
const {
return _cutOutNE; }
2944 void setCutOutNE(
const QPointF& r) { _cutOutNE = r; }
2945 QPointF cutOutNW()
const {
return _cutOutNW; }
2946 void setCutOutNW(
const QPointF& r) { _cutOutNW = r; }
2947 QPointF cutOutSE()
const {
return _cutOutSE; }
2948 void setCutOutSE(
const QPointF& r) { _cutOutSE = r; }
2949 QPointF cutOutSW()
const {
return _cutOutSW; }
2950 void setCutOutSW(
const QPointF& r) { _cutOutSW = r; }
2952 static SymId name2id(
const QString& s) {
return lnhash.value(s,
SymId::noSym); }
2953 static SymId oldName2id(
const QString s) {
return lonhash.value(s,
SymId::noSym);}
2954 static const char* id2name(
SymId id);
2956 static QString id2userName(
SymId id) {
return qApp->translate(
"symUserNames", symUserNames[
int(
id)]); }
2957 static SymId userName2id(
const QString& s);
2959 static const std::array<
const char*, int (
SymId::lastSym)+1> symNames;
2960 static const std::array<
const char*, int(
SymId::lastSym)+1> symUserNames;
2961 static const QVector<SymId> commonScoreSymbols;
2963 static QHash<QString, SymId> lnhash;
2964 static QHash<QString, SymId> lonhash;
2965 friend class ScoreFont;
2982 GlyphKey(FT_Face _f,
SymId _id,
float mx,
float my,
float s, QColor c)
2983 : face(_f), id(_id), magX(mx), magY(my), worldScale(s), color(c) {}
2984 bool operator==(
const GlyphKey&)
const;
2997inline uint qHash(
const GlyphKey& k)
2999 return (
int(k.id) << 16) + (int(k.magX * 100) << 8) + k.magY * 100;
3009 QVector<Sym> _symbols;
3014 QByteArray fontImage;
3015 QCache<GlyphKey, GlyphPixmap>* cache { 0 };
3016 std::list<std::pair<Sid, QVariant>> _engravingDefaults;
3017 double _textEnclosureThickness = 0;
3018 mutable QFont* font { 0 };
3020 static QVector<ScoreFont> _scoreFonts;
3021 static std::array<uint, size_t(
SymId::lastSym)+1> _mainSymCodeTable;
3023 void computeMetrics(Sym* sym,
int code);
3027 ScoreFont(
const ScoreFont&);
3028 ScoreFont(
const char* n,
const char* f,
const char* p,
const char* fn)
3029 : _name(n), _family(f), _fontPath(p), _filename(fn) {
3034 const QString& name()
const {
return _name; }
3035 const QString& family()
const {
return _family; }
3036 std::list<std::pair<Sid, QVariant>> engravingDefaults() {
return _engravingDefaults; }
3037 double textEnclosureThickness() {
return _textEnclosureThickness; }
3039 QString fontPath()
const {
return _fontPath; }
3041 static ScoreFont* fontFactory(QString);
3042 static ScoreFont* fallbackFont();
3043 static const char* fallbackTextFont();
3044 static const QVector<ScoreFont>& scoreFonts() {
return _scoreFonts; }
3045 static QJsonObject initGlyphNamesJson();
3047 QString toString(
SymId)
const;
3048 QPixmap sym2pixmap(
SymId, qreal) {
return QPixmap(); }
3050 void draw(
SymId id, QPainter*,
const QSizeF& mag,
const QPointF& pos, qreal scale)
const;
3051 void draw(
SymId id, QPainter*, qreal mag,
const QPointF& pos, qreal scale)
const;
3052 void draw(
SymId id, QPainter*, qreal mag,
const QPointF& pos)
const;
3053 void draw(
SymId id, QPainter*,
const QSizeF& mag,
const QPointF& pos)
const;
3054 void draw(
SymId id, QPainter*, qreal mag,
const QPointF& pos,
int n)
const;
3055 void draw(
const std::vector<SymId>&, QPainter*, qreal mag,
const QPointF& pos)
const;
3056 void draw(
const std::vector<SymId>&, QPainter*,
const QSizeF& mag,
const QPointF& pos)
const;
3057 void draw(
const std::vector<SymId>&, QPainter*, qreal mag,
const QPointF& pos, qreal scale)
const;
3058 void draw(
const std::vector<SymId>&, QPainter*,
const QSizeF& mag,
const QPointF& pos, qreal scale)
const;
3060 qreal height(
SymId id, qreal mag)
const {
return bbox(
id, mag).height(); }
3061 qreal width(
SymId id, qreal mag)
const {
return bbox(
id, mag).width(); }
3062 qreal advance(
SymId id, qreal mag)
const;
3063 qreal width(
const std::vector<SymId>&, qreal mag)
const;
3065 const QRectF bbox(
SymId id,
const QSizeF&)
const;
3066 const QRectF bbox(
SymId id, qreal mag)
const;
3067 const QRectF bbox(
const std::vector<SymId>& s,
const QSizeF& mag)
const;
3068 const QRectF bbox(
const std::vector<SymId>& s, qreal mag)
const;
3069 QPointF stemDownNW(
SymId id, qreal mag)
const;
3070 QPointF stemUpSE(
SymId id, qreal mag)
const;
3071 QPointF stemDownSW(
SymId id, qreal mag)
const;
3072 QPointF stemUpNW(
SymId id, qreal mag)
const;
3073 QPointF cutOutNE(
SymId id, qreal mag)
const;
3074 QPointF cutOutNW(
SymId id, qreal mag)
const;
3075 QPointF cutOutSE(
SymId id, qreal mag)
const;
3076 QPointF cutOutSW(
SymId id, qreal mag)
const;
3078 bool isValid(
SymId id)
const {
return sym(
id).isValid(); }
3079 bool useFallbackFont(
SymId id)
const;
3081 Sym sym(
SymId id)
const;
3083 friend void initScoreFonts();
3086extern void initScoreFonts();
@ noteheadDiamondDoubleWholeOld
@ noteheadTriangleUpDoubleWhole
@ accidentalQuarterToneSharpArabic
@ accidentalCombiningLower17Schisma
@ analyticsThemeRetrogradeInversion
@ mensuralObliqueAsc3rdWhite
@ pictBeaterHardXylophoneRight
@ accidentalLowerOneTridecimalQuartertone
@ pictBeaterSoftXylophoneLeft
@ dynamicDiminuendoHairpin
@ wiggleVibratoSmallFaster
@ wiggleArpeggiatoDownArrow
@ noteheadDiamondClusterWhiteMiddle
@ accidentalNarrowReversedFlatAndFlat
@ noteheadDiamondBlackOld
@ dynamicCombinedSeparatorSlash
@ accidentalDoubleSharpOneArrowDown
@ dynamicHairpinParenthesisRight
@ mensuralColorationEndRound
@ articSoftAccentTenutoAbove
@ mensuralCombStemUpFlagSemiminima
@ mensuralCombStemUpFlagFlared
@ accidentalSharpLoweredStockhausen
@ textTupletBracketEndLongStem
@ stemMultiphonicsBlackWhite
@ noteheadLargeArrowDownDoubleWhole
@ accidentalCombiningRaise53LimitComma
@ noteShapeMoonDoubleWhole
@ accidentalWyschnegradsky5TwelfthsSharp
@ accSagittal11MediumDiesisDown
@ noteheadClusterRoundBlack
@ accSagittal17KleismaDown
@ dynamicCombinedSeparatorColon
@ accSagittalDoubleSharp55CDown
@ articStaccatissimoStrokeAbove
@ mensuralProlationCombiningThreeDotsTri
@ fingeringRightParenthesisItalic
@ accSagittalDoubleFlat143CUp
@ accSagittal35MediumDiesisUp
@ wiggleVibratoLargestSlowest
@ ornamentPrecompDoubleCadenceUpperPrefix
@ ornamentPrecompCadenceUpperPrefixTurn
@ ornamentTopLeftConcaveStroke
@ accSagittalDoubleSharp19sDown
@ accidentalSharpRepeatedSpaceStockhausen
@ ornamentBottomLeftConvexStroke
@ ornamentBottomLeftConcaveStrokeLarge
@ accSagittalSharp5v23SDown
@ wiggleVibratoSmallestSlower
@ mensuralCustosCheckmark
@ chantCustosStemDownPosHigh
@ keyboardLeftPedalPictogram
@ pluckedSnapPizzicatoAbove
@ accidentalThreeQuarterTonesFlatTartini
@ accidentalDoubleFlatArabic
@ wiggleVibratoSmallSlower
@ accSagittal35MediumDiesisDown
@ pictBeaterHardTimpaniLeft
@ accSagittal11v49CommaUp
@ accSagittal5v23SmallDiesisUp
@ chantConnectingLineAsc2nd
@ windLessRelaxedEmbouchure
@ wiggleVibratoLargeFaster
@ noteheadDiamondClusterBlackTop
@ stringsBowBehindBridgeFourStrings
@ windVeryTightEmbouchure
@ luteItalianReleaseFinger
@ accidentalDoubleFlatTwoArrowsUp
@ noteShapeArrowheadLeftBlack
@ noteShapeTriangleRightDoubleWhole
@ pictBeaterSoftXylophoneRight
@ kievanNoteQuarterStemUp
@ noteheadTriangleDownWhite
@ noteheadDiamondWholeOld
@ organGerman4Semiminimae
@ noteheadSlashVerticalEndsMuted
@ accidentalQuarterToneFlatFilledReversed
@ fingeringLeftParenthesisItalic
@ accidentalWyschnegradsky2TwelfthsFlat
@ accSagittalDoubleSharp5v11SDown
@ harpSalzedoWhistlingSounds
@ accidentalWyschnegradsky6TwelfthsFlat
@ accidentalWyschnegradsky8TwelfthsFlat
@ brassHarmonMuteStemHalfRight
@ csymAccidentalDoubleSharp
@ accSagittal7v11CommaDown
@ accSagittalSharp5v19CDown
@ accidentalOneQuarterToneFlatFerneyhough
@ noteheadClusterHalfBottom
@ keyboardBebung4DotsBelow
@ ornamentTopRightConvexStroke
@ accidentalFlatTwoArrowsDown
@ accSagittalSharp7v19CDown
@ accSagittalFlat5v13LDown
@ accidentalCombiningCloseCurlyBrace
@ accSagittalDoubleSharp17CDown
@ noteheadCircledWholeLarge
@ handbellsTablePairBells
@ noteheadClusterWhole2nd
@ vocalTongueFingerClickStockhausen
@ pictBeaterMetalBassDrumUp
@ accidentalDoubleFlatThreeArrowsUp
@ accdnRH3RanksFullFactory
@ accidentalFlatThreeArrowsDown
@ accSagittalSharp17kDown
@ accSagittalSharp7v11CUp
@ accidentalNaturalOneArrowUp
@ noteShapeTriangleRoundLeftBlack
@ organGermanSemibrevisRest
@ wiggleVibratoMediumSlowest
@ noteheadTriangleLeftWhite
@ organGerman3Semiminimae
@ mensuralProportionProportioDupla1
@ fingeringSubstitutionAbove
@ accidentalQuarterToneSharpBusotti
@ accSagittal35LargeDiesisDown
@ mensuralCombStemDownFlagRight
@ accSagittalSharp19sDown
@ accidentalDoubleSharpTwoArrowsDown
@ accSagittal49LargeDiesisUp
@ organGermanBuxheimerBrevis2
@ arrowheadWhiteDownRight
@ accdnRH3RanksUpperTremolo8
@ articMarcatoTenutoBelow
@ ornamentBottomRightConvexStroke
@ pictBeaterWoodTimpaniDown
@ pictBeaterHardBassDrumDown
@ chantPunctumInclinatumAuctum
@ wiggleVibratoLargestFaster
@ noteheadLargeArrowDownBlack
@ pictBeaterSoftXylophone
@ noteShapeTriangleLeftBlack
@ ornamentPrecompSlideTrillDAnglebert
@ chantStrophicusLiquescens5th
@ accidentalEnharmonicAlmostEqualTo
@ pictScrapeAroundRimClockwise
@ accidentalFilledReversedFlatArrowDown
@ wiggleVibratoLargeFasterStill
@ pictBeaterSoftTimpaniDown
@ accSagittal11v19MediumDiesisUp
@ chantStrophicusLiquescens2nd
@ csymAccidentalTripleFlat
@ accSagittal25SmallDiesisUp
@ accidentalReversedFlatAndFlatArrowUp
@ accSagittalDoubleFlat23SUp
@ noteShapeKeystoneDoubleWhole
@ noteheadSlashHorizontalEnds
@ pictBeaterSpoonWoodenMallet
@ articAccentStaccatoBelow
@ brassHarmonMuteStemOpen
@ accSagittalDoubleFlat19CUp
@ ornamentPrecompTurnTrillDAnglebert
@ noteShapeTriangleRightBlack
@ pictBeaterCombiningParentheses
@ accSagittal5v13MediumDiesisUp
@ noteheadTriangleUpRightBlack
@ mensuralBlackSemiminima
@ harpSalzedoSlideWithSuppleness
@ noteheadClusterHalfMiddle
@ accSagittal5v7KleismaDown
@ ornamentPrecompAppoggTrill
@ noteheadDiamondClusterBlack2nd
@ mensuralProlationCombiningStroke
@ organGermanBuxheimerSemibrevisRest
@ accSagittal49MediumDiesisDown
@ noteheadTriangleUpRightWhite
@ noteheadDiamondClusterBlackMiddle
@ accidentalThreeQuarterTonesFlatArabic
@ accSagittalDoubleFlat49SUp
@ stringsOverpressureUpBow
@ accSagittal5v23SmallDiesisDown
@ accdnRH3RanksAuthenticMusette
@ pictBeaterMediumTimpaniUp
@ wiggleVibratoMediumFastest
@ accSagittalDoubleSharp5v23SDown
@ ornamentPrecompTrillWithMordent
@ noteheadParenthesisRight
@ noteheadClusterQuarterBottom
@ noteheadSlashedDoubleWhole2
@ wiggleVibratoLargestFasterStill
@ pictBeaterWoodXylophoneRight
@ harpSalzedoMetallicSounds
@ pictBeaterSoftGlockenspielLeft
@ noteheadClusterDoubleWhole2nd
@ accSagittalDoubleFlat55CUp
@ mensuralObliqueDesc3rdBlack
@ accSagittalSharp5v19CUp
@ textBlackNoteFrac8thLongStem
@ accSagittalDoubleFlat5v19CUp
@ accSagittalDoubleSharp25SDown
@ handbellsTableSingleBell
@ pictBeaterHardXylophoneUp
@ noteheadRoundBlackSlashed
@ dynamicHairpinBracketRight
@ accdnCombLH3RanksEmptySquare
@ noteShapeQuarterMoonWhite
@ mensuralObliqueDesc2ndVoid
@ accdnLH2RanksMasterRound
@ noteheadDiamondClusterWhite3rd
@ harpSalzedoMuffleTotally
@ mensuralCombStemDownFlagFusa
@ mensuralProlationCombiningDotVoid
@ pictBeaterBrassMalletsLeft
@ noteheadSlashedDoubleWhole1
@ accidentalDoubleSharpArabic
@ wiggleVibratoLargestFastest
@ articMarcatoTenutoAbove
@ accSagittalFlat11v49CDown
@ mensuralObliqueAsc2ndWhite
@ accidentalRaiseTwoSeptimalCommas
@ timeSigBracketRightSmall
@ accidentalOneQuarterToneSharpStockhausen
@ pictBeaterBrassMalletsRight
@ accidentalSharpTwoArrowsUp
@ noteShapeDiamondDoubleWhole
@ fingeringRightBracketItalic
@ noteheadDiamondHalfFilled
@ accidentalFiveQuarterTonesSharpArrowUp
@ pictBeaterMediumXylophoneDown
@ mensuralObliqueAsc2ndBlack
@ noteheadRoundWhiteSlashedLarge
@ accdnRH3RanksLowerTremolo8
@ noteheadTriangleUpWhole
@ ornamentTopLeftConvexStroke
@ accidentalQuarterFlatEqualTempered
@ noteheadLargeArrowDownWhole
@ chantConnectingLineAsc6th
@ accSagittal7v11KleismaUp
@ mensuralProlationCombiningTwoDots
@ wiggleCircularConstantFlippedLarge
@ mensuralObliqueAsc4thBlack
@ chantConnectingLineAsc4th
@ noteShapeTriangleLeftDoubleWhole
@ noteheadSquareBlackWhite
@ pictBeaterMediumYarnDown
@ mensuralObliqueAsc2ndBlackVoid
@ pictBeaterWoodTimpaniUp
@ fingeringSeparatorSlash
@ stringsBowBehindBridgeTwoStrings
@ mensuralNoteheadMaximaWhite
@ noteheadClusterDoubleWholeMiddle
@ mensuralWhiteSemiminima
@ noteheadRoundWhiteWithDot
@ wiggleVibratoSmallestFastest
@ noteShapeTriangleRoundDoubleWhole
@ noteheadRectangularClusterWhiteTop
@ accSagittalSharp5v11SUp
@ accidentalSharpThreeArrowsDown
@ noteheadRoundBlackSlashedLarge
@ accSagittalDoubleFlat7v11CUp
@ noteShapeIsoscelesTriangleDoubleWhole
@ accidentalJohnstonSeven
@ noteheadRectangularClusterWhiteBottom
@ noteheadSlashWhiteMuted
@ accSagittalFlat11v19LDown
@ accidentalWyschnegradsky8TwelfthsSharp
@ accSagittalDoubleSharp5v7kDown
@ mensuralBlackBrevisVoid
@ textCont8thBeamShortStem
@ noteheadRectangularClusterBlackTop
@ noteShapeQuarterMoonBlack
@ pictBeaterSoftGlockenspielRight
@ pictBeaterTrianglePlain
@ accSagittalDoubleFlat23CUp
@ timeSigParensRightSmall
@ accidentalTwoThirdTonesSharpFerneyhough
@ pictBeaterKnittingNeedle
@ accidentalWyschnegradsky11TwelfthsSharp
@ stringsOverpressurePossibileDownBow
@ articAccentStaccatoAbove
@ accidentalNaturalThreeArrowsDown
@ accidentalThreeQuarterTonesSharpStein
@ accidentalDoubleSharpTwoArrowsUp
@ ornamentZigZagLineWithRightEnd
@ pictBeaterHammerPlasticDown
@ graceNoteAppoggiaturaStemDown
@ wiggleArpeggiatoUpArrow
@ wiggleCircularConstantFlipped
@ pluckedSnapPizzicatoBelow
@ accSagittalDoubleSharp143CDown
@ organGermanSemifusaRest
@ luteFrenchMordentInverted
@ pictBeaterSnareSticksDown
@ accdnRH3RanksImitationMusette
@ fingeringSeparatorMiddleDotWhite
@ accSagittalSharp11v49CDown
@ pictBeaterHardBassDrumUp
@ pictBeaterMediumBassDrumDown
@ timeSigCutCommonReversed
@ keyboardBebung4DotsAbove
@ pictCastanetsWithHandle
@ accidentalOneThirdToneSharpFerneyhough
@ mensuralObliqueDesc2ndBlackVoid
@ accSagittal7v19CommaDown
@ timeSigFractionTwoThirds
@ stringsChangeBowDirection
@ noteheadDiamondClusterWhiteBottom
@ mensuralProportionTempusPerfectum
@ pictBeaterSnareSticksUp
@ mensuralCombStemDownFlagFlared
@ noteheadDiamondHalfWide
@ accSagittalDoubleFlat7CUp
@ stringsBowBehindBridgeOneString
@ pictBeaterMediumTimpaniLeft
@ functionNUpperSuperscript
@ luteItalianTempoNeitherFastNorSlow
@ ornamentMiddleVerticalStroke
@ mensuralObliqueDesc5thVoid
@ noteheadClusterWholeMiddle
@ fingeringLeftBracketItalic
@ accSagittalDoubleSharp7CDown
@ accSagittalDoubleFlat5v7kUp
@ accSagittalSharp5v49MUp
@ mensuralNoteheadSemiminimaWhite
@ accidentalThreeQuarterTonesFlatZimmermann
@ accSagittalSharp143CDown
@ accSagittalFlat7v11kDown
@ pictBeaterSuperballRight
@ mensuralBlackMinimaVoid
@ accidentalReversedFlatArrowUp
@ analyticsThemeInversion
@ articMarcatoStaccatoAbove
@ pictBeaterHardTimpaniUp
@ noteheadLargeArrowUpWhole
@ accSagittal5v13LargeDiesisUp
@ chantConnectingLineAsc5th
@ ornamentPrecompMordentUpperPrefix
@ accSagittal5v49MediumDiesisDown
@ accSagittalFlat5v23SDown
@ ornamentPrecompTrillSuffixDandrieu
@ accidentalQuarterToneSharpStein
@ accSagittal49LargeDiesisDown
@ accdnRH3RanksTremoloLower8ve
@ accSagittalDoubleSharp23SDown
@ csymAccidentalTripleSharp
@ noteheadClusterQuarterMiddle
@ stringsOverpressurePossibileUpBow
@ mensuralNoteheadSemibrevisVoid
@ figbassCombiningRaising
@ noteShapeTriangleRoundLeftWhite
@ metNoteDoubleWholeSquare
@ organGermanBuxheimerMinimaRest
@ fingeringRightParenthesis
@ accSagittalSharp5v13MUp
@ pictBeaterDoubleBassDrumDown
@ harpSalzedoDampLowStrings
@ wiggleVibratoMediumFasterStill
@ accSagittalSharp7v11CDown
@ accSagittalSharp5v13LUp
@ pictBeaterSoftTimpaniLeft
@ ornamentRightFacingHalfCircle
@ wiggleVibratoSmallestFast
@ noteheadRoundWhiteLarge
@ articSoftAccentTenutoBelow
@ accidentalQuarterToneFlatNaturalArrowDown
@ accidentalWyschnegradsky11TwelfthsFlat
@ mensuralObliqueAsc5thWhite
@ harpSalzedoIsolatedSounds
@ accidentalWyschnegradsky9TwelfthsFlat
@ noteShapeTriangleUpDoubleWhole
@ mensuralObliqueDesc5thBlackVoid
@ accidentalDoubleFlatReversed
@ pictBeaterJazzSticksDown
@ accidentalDoubleSharpEqualTempered
@ textBlackNoteFrac8thShortStem
@ mensuralCombStemDownFlagLeft
@ mensuralObliqueDesc5thWhite
@ luteDurationDoubleWhole
@ ornamentRightFacingHook
@ accidentalNaturalArabic
@ accidentalCombiningLower19Schisma
@ chantPunctumInclinatumDeminutum
@ pictBeaterSuperballDown
@ accidentalLargeDoubleSharp
@ mensuralCombStemUpFlagRight
@ noteheadTriangleDownWhole
@ wiggleVibratoSmallFastest
@ mensuralNoteheadMaximaVoid
@ accidentalOneAndAHalfSharpsArrowUp
@ mensuralObliqueAsc4thWhite
@ accidentalLowerTwoSeptimalCommas
@ ornamentObliqueLineHorizAfterNote
@ noteShapeTriangleRoundBlack
@ mensuralCclefPetrucciPosLowest
@ mensuralNoteheadMinimaWhite
@ keyboardBebung3DotsBelow
@ vocalTongueClickStockhausen
@ luteItalianClefCSolFaUt
@ pictBeaterHammerMetalUp
@ ornamentLeftVerticalStroke
@ pictBeaterMediumYarnLeft
@ noteheadSlashDiamondWhite
@ accSagittalSharp5v23SUp
@ noteheadDiamondDoubleWhole
@ noteheadLargeArrowUpHalf
@ ornamentPrecompSlideTrillBach
@ accidentalNaturalTwoArrowsUp
@ ornamentPrecompCadenceWithTurn
@ accidentalKucukMucennebFlat
@ pictBeaterSoftXylophoneUp
@ pictBeaterHardGlockenspielRight
@ accidentalSharpRaisedStockhausen
@ textBlackNoteFrac16thShortStem
@ accSagittalDoubleSharp49SDown
@ accSagittal5v7KleismaUp
@ accidentalNarrowReversedFlat
@ articStaccatissimoWedgeBelow
@ ornamentPrecompDoubleCadenceLowerPrefix
@ noteShapeTriangleRightWhite
@ wiggleVibratoSmallSlowest
@ noteheadParenthesisLeft
@ mensuralNoteheadMaximaBlackVoid
@ keyboardPedalParensRight
@ mensuralColorationStartSquare
@ articSoftAccentTenutoStaccatoBelow
@ accSagittal5v11SmallDiesisUp
@ chantCustosStemUpPosLowest
@ pictBeaterSoftBassDrumDown
@ accidentalThreeQuarterTonesSharpArrowDown
@ ornamentBottomLeftConcaveStroke
@ noteheadRoundWhiteDoubleSlashed
@ handbellsMartellatoLift
@ noteheadClusterWholeBottom
@ textTupletBracketStartShortStem
@ pictBeaterMediumXylophoneUp
@ timeSigFractionThreeQuarters
@ noteheadClusterQuarter2nd
@ accidentalCombiningLower53LimitComma
@ wiggleVIbratoLargestSlower
@ accidentalSharpTwoArrowsDown
@ accidentalDoubleSharpThreeArrowsDown
@ pictBeaterHardGlockenspielUp
@ pictBeaterBrassMalletsUp
@ accSagittalDoubleSharp23CDown
@ accSagittalSharp11v49CUp
@ noteheadClusterDoubleWholeTop
@ accidentalNaturalThreeArrowsUp
@ ornamentPrecompCadenceUpperPrefix
@ wiggleVibratoSmallestFasterStill
@ articStaccatissimoBelow
@ pluckedLeftHandPizzicato
@ textBlackNoteFrac16thLongStem
@ noteheadClusterSquareWhite
@ csymAccidentalDoubleFlat
@ harpSalzedoPlayUpperEnd
@ accSagittalDoubleFlat5CUp
@ mensuralObliqueDesc4thWhite
@ noteheadSquareBlackLarge
@ accSagittalDoubleFlat25SUp
@ accSagittalDoubleSharp5v19CDown
@ accSagittalSharp49SDown
@ organGermanSemiminimaRest
@ noteShapeIsoscelesTriangleWhite
@ accSagittal25SmallDiesisDown
@ accSagittalFlat5v7kDown
@ accSagittalDoubleFlat7v19CUp
@ brassHarmonMuteStemHalfLeft
@ pictBeaterSoftXylophoneDown
@ accidentalWyschnegradsky4TwelfthsSharp
@ accidentalDoubleFlatTwoArrowsDown
@ chantPunctumVirgaReversed
@ ornamentLowRightConcaveStroke
@ accidentalQuarterToneSharp4
@ csymParensRightVeryTall
@ dynamicCombinedSeparatorSpace
@ accSagittalSharp7v19CUp
@ chantCustosStemUpPosMiddle
@ semipitchedPercussionClef1
@ accSagittalFlat5v19CDown
@ articTenutoStaccatoBelow
@ accidentalTwoThirdTonesFlatFerneyhough
@ accidentalFlatRaisedStockhausen
@ mensuralCombStemUpFlagFusa
@ accidentalFilledReversedFlatAndFlat
@ noteheadTriangleUpBlack
@ accidentalRaisedStockhausen
@ ornamentLowLeftConcaveStroke
@ accSagittalDoubleSharp19CDown
@ accSagittal5v13LargeDiesisDown
@ luteItalianTempoVerySlow
@ accidentalFlatLoweredStockhausen
@ accdnLH3RanksTuttiSquare
@ metricModulationArrowRight
@ mensuralRestLongaImperfecta
@ mensuralProportionProportioDupla2
@ chantCustosStemDownPosHighest
@ dynamicNienteForHairpin
@ ornamentObliqueLineHorizBeforeNote
@ accidentalThreeQuarterTonesSharpArrowUp
@ accidentalWyschnegradsky7TwelfthsSharp
@ keyboardBebung3DotsAbove
@ ornamentLeftFacingHalfCircle
@ accidentalOneQuarterToneSharpFerneyhough
@ luteFrenchAppoggiaturaAbove
@ harpSalzedoThunderEffect
@ accSagittalSharp55CDown
@ accidentalWyschnegradsky5TwelfthsFlat
@ wiggleVibratoLargestSlow
@ accSagittal49SmallDiesisUp
@ textCont8thBeamLongStem
@ accidentalDoubleFlatTurned
@ mensuralProportionMinor
@ noteShapeTriangleRoundWhite
@ noteShapeIsoscelesTriangleBlack
@ accSagittalSharp23SDown
@ mensuralObliqueDesc3rdWhite
@ ornamentBottomRightConcaveStroke
@ mensuralObliqueAsc3rdBlack
@ noteheadCircleXDoubleWhole
@ semipitchedPercussionClef2
@ pictBeaterHammerWoodDown
@ noteheadDoubleWholeWithX
@ stringsOverpressureNoDirection
@ accidentalDoubleSharpOneArrowUp
@ figbassCombiningLowering
@ mensuralObliqueAsc5thBlackVoid
@ noteheadLargeArrowUpDoubleWhole
@ accidentalFlatTwoArrowsUp
@ wiggleVibratoLargestFast
@ chantCustosStemUpPosLow
@ accidentalCombiningOpenCurlyBrace
@ mensuralObliqueAsc4thBlackVoid
@ accdnLH3Ranks2Plus8Square
@ accidentalFlatRepeatedSpaceStockhausen
@ accSagittalDoubleFlat19sUp
@ mensuralCombStemDownFlagSemiminima
@ handbellsMalletBellSuspended
@ mensuralModusImperfectumVert
@ mensuralNoteheadLongaBlack
@ noteheadTriangleDownDoubleWhole
@ ornamentHighRightConvexStroke
@ pictBeaterHardGlockenspielDown
@ noteheadTriangleRightBlack
@ accSagittal11v49CommaDown
@ harpSalzedoTimpanicSounds
@ textBlackNoteFrac32ndLongStem
@ windMultiphonicsBlackWhiteStem
@ noteShapeMoonLeftDoubleWhole
@ accidentalThreeQuarterTonesSharpBusotti
@ mensuralObliqueDesc3rdBlackVoid
@ accidentalWyschnegradsky6TwelfthsSharp
@ articStaccatissimoAbove
@ gClefLigatedNumberBelow
@ accidentalFlatOneArrowDown
@ accidentalThreeQuarterTonesFlatGrisey
@ pictBeaterMediumXylophoneLeft
@ accSagittalFlat7v11CDown
@ accSagittal5v11SmallDiesisDown
@ mensuralProportionProportioQuadrupla
@ dynamicHairpinParenthesisLeft
@ ornamentPrecompDoubleCadenceUpperPrefixTurn
@ accidentalWyschnegradsky1TwelfthsSharp
@ noteheadClusterSquareBlack
@ accidentalDoubleFlatOneArrowDown
@ ornamentHighRightConcaveStroke
@ textTupletBracketEndShortStem
@ accSagittalFlat11v49CUp
@ mensuralCclefPetrucciPosHigh
@ pictBeaterHardTimpaniDown
@ noteheadDiamondClusterBlackBottom
@ accidentalReversedFlatAndFlatArrowDown
@ ornamentPrecompDescendingSlide
@ accidentalCombiningRaise23Limit29LimitComma
@ accSagittalDoubleSharp11v49CDown
@ accSagittal23SmallDiesisDown
@ wiggleVibratoMediumFaster
@ accidentalLoweredStockhausen
@ accdnRH3RanksDoubleTremoloUpper8ve
@ noteheadSlashHorizontalEndsMuted
@ pictBeaterWireBrushesUp
@ accidentalCombiningRaise19Schisma
@ wiggleVibratoMediumFast
@ mensuralObliqueDesc4thBlack
@ mensuralNoteheadSemibrevisBlackVoidTurned
@ textTupletBracketStartLongStem
@ accidentalQuarterToneSharpWiggle
@ harpSalzedoDampBothHands
@ accidentalQuarterToneSharpNaturalArrowUp
@ noteheadRectangularClusterBlackBottom
@ accidentalOneQuarterToneFlatStockhausen
@ articSoftAccentTenutoStaccatoAbove
@ articLaissezVibrerBelow
@ mensuralCombStemDiagonal
@ stringsThumbPositionTurned
@ noteShapeArrowheadLeftDoubleWhole
@ accidentalThreeQuarterTonesSharpArabic
@ accidentalDoubleFlatEqualTempered
@ accSagittal35LargeDiesisUp
@ accidentalQuarterToneFlat4
@ mensuralCombStemUpFlagExtended
@ accidentalRaiseOneUndecimalQuartertone
@ handbellsMutedMartellato
@ mensuralCclefPetrucciPosMiddle
@ mensuralTempusImperfectumHoriz
@ noteheadSlashVerticalEnds
@ pictBeaterHardTimpaniRight
@ mensuralObliqueDesc3rdVoid
@ accSagittal143CommaDown
@ wiggleVibratoSmallestFaster
@ mensuralObliqueDesc2ndWhite
@ mensuralObliqueDesc4thVoid
@ accidentalDoubleSharpThreeArrowsUp
@ accidentalDoubleFlatOneArrowUp
@ accidentalQuarterToneFlatArrowUp
@ pictBeaterSoftTimpaniUp
@ kievanNoteQuarterStemDown
@ accidentalHalfSharpArrowUp
@ accidentalXenakisOneThirdToneSharp
@ accSagittalFlat143CDown
@ accSagittal11MediumDiesisUp
@ dynamicCombinedSeparatorHyphen
@ mensuralBlackSemibrevisOblique
@ organGerman6Semiminimae
@ ornamentShortObliqueLineBeforeNote
@ pictBeaterMediumTimpaniRight
@ chantStrophicusLiquescens4th
@ pictBeaterMetalBassDrumDown
@ gClefLigatedNumberAbove
@ windMultiphonicsWhiteStem
@ wiggleVibratoSmallFasterStill
@ analyticsThemeRetrograde
@ keyboardPedalParensLeft
@ accSagittalSharp5v7kDown
@ keyboardBebung2DotsAbove
@ accidentalJohnstonMinus
@ mensuralBlackSemibrevis
@ ornamentLowLeftConvexStroke
@ accidentalQuarterSharpEqualTempered
@ accidentalFlatRepeatedLineStockhausen
@ accidentalBuyukMucennebFlat
@ pictBeaterWoodTimpaniRight
@ textCont16thBeamLongStem
@ accidentalWyschnegradsky10TwelfthsFlat
@ ornamentLowRightConvexStroke
@ accidentalWyschnegradsky3TwelfthsFlat
@ mensuralObliqueAsc5thVoid
@ accidentalFlatOneArrowUp
@ articStaccatissimoWedgeAbove
@ graceNoteAppoggiaturaStemUp
@ accidentalCombiningRaise31Schisma
@ mensuralCombStemDownFlagExtended
@ accSagittalSharp23CDown
@ chantCustosStemDownPosMiddle
@ harpSalzedoFluidicSoundsLeft
@ mensuralTempusPerfectumHoriz
@ noteheadDiamondBlackWide
@ fingeringLeftParenthesis
@ keyboardMiddlePedalPictogram
@ handbellsHandMartellato
@ accidentalSharpOneHorizontalStroke
@ accidentalDoubleFlatThreeArrowsDown
@ accSagittal5v49MediumDiesisUp
@ accidentalThreeQuarterTonesFlatArrowDown
@ accidentalQuarterToneFlatVanBlankenburg
@ keyboardBebung2DotsBelow
@ ornamentObliqueLineAfterNote
@ fingeringSeparatorMiddleDot
@ luteFrenchAppoggiaturaBelow
@ ornamentDoubleObliqueLinesAfterNote
@ accidentalWyschnegradsky7TwelfthsFlat
@ arrowheadBlackDownRight
@ noteheadSlashWhiteWhole
@ ornamentPrecompInvertedMordentUpperPrefix
@ pictBeaterHammerPlasticUp
@ luteItalianTempoSomewhatFast
@ accdnLH2RanksFullMasterRound
@ pictBeaterWoodXylophoneUp
@ accidentalCombiningRaise17Schisma
@ accidentalNaturalReversed
@ mensuralNoteheadMaximaBlack
@ accdnRH3RanksDoubleTremoloLower8ve
@ accidentalLowerOneSeptimalComma
@ accdnLH2Ranks8Plus16Round
@ accSagittalFlat5v49MDown
@ accSagittalDoubleSharp7v19CDown
@ accSagittalSharp5v11SDown
@ noteheadTriangleUpWhite
@ noteheadRoundBlackDoubleSlashed
@ accidentalWyschnegradsky1TwelfthsFlat
@ ornamentPrecompTurnTrillBach
@ articLaissezVibrerAbove
@ pictBeaterDoubleBassDrumUp
@ accSagittal23SmallDiesisUp
@ accidentalWyschnegradsky2TwelfthsSharp
@ wiggleVibratoSmallestSlow
@ noteShapeRoundDoubleWhole
@ harpSalzedoAeolianAscending
@ accidentalQuarterToneSharpArrowDown
@ accidentalBuyukMucennebSharp
@ dynamicCrescendoHairpin
@ noteheadClusterQuarter3rd
@ noteheadTriangleRightWhite
@ accSagittalDoubleFlat17kUp
@ ornamentPrecompMordentRelease
@ vocalFingerClickStockhausen
@ accidentalNaturalLoweredStockhausen
@ chantStrophicusLiquescens3rd
@ accSagittalSharp11v19MUp
@ pictBeaterSoftBassDrumUp
@ accidentalFilledReversedFlatArrowUp
@ mensuralObliqueDesc4thBlackVoid
@ noteheadSlashWhiteDoubleWhole
@ accSagittal49SmallDiesisDown
@ accSagittalFlat11v19MDown
@ noteheadDiamondClusterBlack3rd
@ wiggleArpeggiatoDownSwash
@ mensuralNoteheadLongaWhite
@ noteShapeQuarterMoonDoubleWhole
@ mensuralObliqueAsc4thVoid
@ stringsOverpressureDownBow
@ elecAudioChannelsThreeSurround
@ ornamentLeftVerticalStrokeWithCross
@ accidentalFiveQuarterTonesFlatArrowDown
@ noteheadCircledDoubleWholeLarge
@ accidentalNaturalTwoArrowsDown
@ noteheadSlashVerticalEndsSmall
@ mensuralNoteheadLongaBlackVoid
@ mensuralObliqueAsc3rdBlackVoid
@ dynamicHairpinBracketLeft
@ accidentalQuarterToneFlatPenderecki
@ noteheadTriangleRoundDownBlack
@ handbellsMalletBellOnTable
@ pictBeaterHardXylophoneDown
@ noteShapeTriangleLeftWhite
@ unpitchedPercussionClef2
@ accidentalHalfSharpArrowDown
@ pictBeaterHardYarnRight
@ noteheadLargeArrowDownHalf
@ articStaccatissimoStrokeBelow
@ mensuralBlackSemibrevisVoid
@ wiggleVibratoSmallestSlowest
@ pictBeaterHardGlockenspielLeft
@ noteheadClusterRoundWhite
@ accSagittalDoubleSharp17kDown
@ ornamentObliqueLineBeforeNote
@ wiggleVibratoLargeFastest
@ accSagittal11v19LargeDiesisUp
@ accSagittal5v19CommaDown
@ accidentalSharpReversed
@ windThreeQuartersClosedHole
@ accidentalDoubleSharpParens
@ noteheadPlusDoubleWhole
@ accidentalCommaSlashDown
@ pictBeaterMediumTimpaniDown
@ graceNoteAcciaccaturaStemDown
@ organGermanAugmentationDot
@ pictBeaterSoftTimpaniRight
@ wiggleVibratoLargeSlowest
@ windLessTightEmbouchure
@ wiggleCircularConstantLarge
@ noteheadRectangularClusterBlackMiddle
@ mensuralCombStemUpFlagLeft
@ wiggleCircularLargerStill
@ mensuralColorationStartRound
@ noteheadRoundBlackLarge
@ noteShapeArrowheadLeftWhite
@ organGermanBuxheimerBrevis3
@ pictBeaterSoftGlockenspielDown
@ accSagittal11LargeDiesisDown
@ articTenutoStaccatoAbove
@ mensuralObliqueAsc2ndVoid
@ organGerman5Semiminimae
@ accidentalNaturalRaisedStockhausen
@ pictBeaterSoftYarnRight
@ accSagittalDoubleSharp7v11kDown
@ noteheadRectangularClusterWhiteMiddle
@ ornamentTremblementCouperin
@ accSagittalDoubleFlat5v11SUp
@ keyboardRightPedalPictogram
@ accSagittalSharp11v19LUp
@ mensuralNoteheadLongaVoid
@ noteheadClusterQuarterTop
@ guitarWideVibratoStroke
@ noteheadRoundWhiteWithDotLarge
@ noteheadTriangleDownHalf
@ pictBeaterHammerMetalDown
@ accidentalCombiningLower23Limit29LimitComma
@ pictBeaterWoodTimpaniLeft
@ pictBeaterMediumXylophoneRight
@ mensuralObliqueDesc5thBlack
@ accSagittal7v11KleismaDown
@ harpSalzedoMetallicSoundsOneString
@ mensuralModusPerfectumVert
@ accSagittalDoubleSharp7v11CDown
@ accSagittalDoubleFlat11v49CUp
@ mensuralProportionProportioTripla
@ noteheadCircledHalfLarge
@ noteheadDoubleWholeSquare
@ noteheadDiamondClusterWhite2nd
@ wiggleVibratoMediumSlow
@ metricModulationArrowLeft
@ accSagittalDoubleFlat7v11kUp
@ accidentalThreeQuarterTonesFlatArrowUp
@ accidentalEnharmonicTilde
@ accidentalReversedFlatArrowDown
@ ornamentHighLeftConcaveStroke
@ harpSalzedoTamTamSounds
@ fingeringSubstitutionDash
@ noteheadTriangleDownBlack
@ timeSigFractionOneThird
@ noteheadRoundWhiteSlashed
@ accidentalNaturalEqualTempered
@ accSagittalSharp19CDown
@ accdnLH2RanksMasterPlus16Round
@ noteheadTriangleLeftBlack
@ mensuralProlationCombiningThreeDots
@ accidentalSharpRepeatedLineStockhausen
@ mensuralCclefPetrucciPosHighest
@ noteheadCircledDoubleWhole
@ wiggleArpeggiatoUpSwash
@ pictBeaterSuperballLeft
@ accSagittal19SchismaDown
@ stringsBowBehindBridgeThreeStrings
@ mensuralNoteheadSemibrevisBlack
@ accidentalThreeQuarterTonesFlatCouper
@ articSoftAccentStaccatoAbove
@ accSagittalSharp25SDown
@ accidentalSharpEqualTempered
@ accSagittal11LargeDiesisUp
@ restDoubleWholeLegerLine
@ accidentalWyschnegradsky3TwelfthsSharp
@ ornamentPrecompPortDeVoixMordent
@ accidentalThreeQuarterTonesSharpStockhausen
@ dynamicSforzandoPianissimo
@ mensuralCclefPetrucciPosLow
@ accSagittalDoubleSharp5CDown
@ noteheadDiamondWhiteWide
@ mensuralObliqueAsc3rdVoid
@ accidentalCombiningLower31Schisma
@ accidentalXenakisTwoThirdTonesSharp
@ mensuralProlationCombiningDot
@ accidentalEnharmonicEquals
@ pictBeaterWoodXylophoneDown
@ accSagittal11v19LargeDiesisDown
@ accSagittalDoubleFlat17CUp
@ chantConnectingLineAsc3rd
@ accidentalWyschnegradsky4TwelfthsFlat
@ pictBeaterSoftGlockenspielUp
@ ornamentPrecompSlideTrillMuffat
@ noteheadClusterWhole3rd
@ ornamentPrecompSlideTrillMarpurg
@ accidentalDoubleFlatParens
@ noteheadDiamondClusterWhiteTop
@ lyricsHyphenBaselineNonBreaking
@ kievanNoteHalfStaffLine
@ ornamentTopRightConcaveStroke
@ pictBeaterMediumYarnRight
@ harpSalzedoFluidicSoundsRight
@ accidentalSharpThreeArrowsUp
@ accSagittalFlat5v11SDown
@ timeSigBracketLeftSmall
@ medRenLiquescentDescCMN
@ mensuralObliqueDesc2ndBlack
@ unpitchedPercussionClef1
@ wiggleVIbratoMediumSlower
@ pictBeaterMediumBassDrumUp
@ mensuralBlackSemibrevisCaudata
@ accidentalFilledReversedFlatAndFlatArrowDown
@ accidentalFlatEqualTempered
@ graceNoteAcciaccaturaStemUp
@ ornamentPrecompAppoggTrillSuffix
@ noteShapeTriangleUpBlack
@ accidentalSharpOneArrowDown
@ kievanNoteHalfStaffSpace
@ noteheadLargeArrowUpBlack
@ ornamentHighLeftConvexStroke
@ textCont16thBeamShortStem
@ mensuralNoteheadSemibrevisBlackVoid
@ accSagittalFlat7v19CDown
@ ornamentZigZagLineNoRightEnd
@ mensuralRestLongaPerfecta
@ noteShapeTriangleRoundLeftDoubleWhole
@ accidentalSharpOneArrowUp
@ noteheadClusterDoubleWholeBottom
@ fingeringSubstitutionBelow
@ accidentalFilledReversedFlatAndFlatArrowUp
@ pictBeaterCombiningDashedCircle
@ accSagittalFlat5v13MDown
@ accSagittalSharp7v11kDown
@ mensuralColorationEndSquare
@ accidentalWyschnegradsky9TwelfthsSharp
@ organGerman2Semiminimae
@ ornamentShortObliqueLineAfterNote
@ accSagittal5v13MediumDiesisDown
@ ornamentPrecompSlideTrillSuffixMuffat
@ unmeasuredTremoloSimple
@ articSoftAccentStaccatoBelow
@ pictBeaterWireBrushesDown
@ noteheadTriangleRoundDownWhite
@ noteShapeSquareDoubleWhole
@ mensuralObliqueAsc5thBlack
@ accidentalOneThirdToneFlatFerneyhough
@ pictBeaterWoodXylophoneLeft
@ wiggleVibratoLargeSlower
@ accSagittalSharp17CDown
@ textCont32ndBeamLongStem
@ accSagittalSharp7v11kUp
@ accidentalFlatThreeArrowsUp
@ accidentalWyschnegradsky10TwelfthsSharp
@ accidentalRaiseOneTridecimalQuartertone
@ elecAudioChannelsThreeFrontal
@ articMarcatoStaccatoBelow
@ pictBeaterHardXylophoneLeft
@ accidentalNaturalOneArrowDown
@ doubleLateralRollStevens
@ accidentalNaturalParens
@ organGermanBuxheimerSemibrevis
@ accidentalOneAndAHalfSharpsArrowDown
@ accidentalKucukMucennebSharp
@ pictBeaterBrassMalletsDown
@ accidentalQuarterToneFlatArabic
@ accdnLH3RanksDouble8Square
@ noteheadClusterDoubleWhole3rd
@ ornamentRightVerticalStroke
@ noteheadClusterWholeTop
@ noteShapeTriangleUpWhite
@ csymDiagonalArrangementSlash
@ accidentalQuarterToneFlatStein
@ noteheadCircledBlackLarge
@ windMultiphonicsBlackStem
@ accdnRH3RanksTremoloUpper8ve
@ accSagittal49MediumDiesisUp
@ accSagittal11v19MediumDiesisDown
@ accSagittalDoubleFlat5v23SUp
@ mensuralProportionMajor
@ ornamentDoubleObliqueLinesBeforeNote
@ ornamentPrecompTrillLowerSuffix
@ accidentalLowerOneUndecimalQuartertone
@ accidentalRaiseOneSeptimalComma
@ harpSalzedoAeolianDescending