TAB - Mixing mensural value symbols and beaming in historic tablatures is broken

• Sep 5, 2019 - 06:38
Reported version
3.2
Type
Graphical (UI)
Frequency
Once
Severity
S3 - Major
Reproducibility
Always
Status
closed
Regression
Yes
Workaround
No
Project

OS: Windows 10 (10.0), Arch.: x86_64, MuseScore version (64-bit): 3.2.3.7635, revision: d2d863f

In September 2015, Maurizio Gavioli (@Miwarre) wrote this code: https://github.com/musescore/MuseScore/commit/6cab2d0f3bcb4e832aaabfa95…
For implementing this historical TAB style: https://musescore.org/en/node/81051

Unfortunately, this style has been broken somewhere with the version 3.

For the uninitiated users, this is how it was done in concrete and succinct terms.

After choosing a certain configuration (Letters ; Fret marks: Font = Tab Renaissance; Notes values: Font = Italian Tab, and Note symbols Repeated Always, see attached test file: broken beam grid.mscz ), you got this by default, for two quarter notes and four eighth notes, e.g.)

beam start.jpg

With this feature, for editing the wished beaming, it was a question of defining the note groups (the group of two quarter notes, and the group of four eighth notes, by double-clicking - or shortcut to define - on "Beam Start" on the first note/fret of each group)
And by navigating with the right arrow, you had to double-click (or shortcut) on "Middle Beam", and so to get this kind of "pretty" and historical TAB beaming.

Like this (the letters in green are for "Beam Start", and the letters in blue, for "Middle Beam")

middle start.jpg

And so, unfortunately now, it doesn't work anymore (the Middle Beam at least, I don't know) and you receive this wrong display :(

wrong.jpg


Comments

Status PR created fixed

Fixed in branch master, commit f94c4ca2e1

_fix #294082: TAB - Mixing mensural value symbols and beaming in historic tablatures is broken.

TabDurationSymbol::layout2() is responsible for setting the _beamLength for the tab duration symbol, which is used to determine the length of the line to draw. Problem is, TabDurationSymbol::layout2() is only ever called from Chord::layoutStem(), and Chord::layoutStem() is not being called at all, except from ChordRest::removeDeleteBeam(). Therefore, _beamLength is always equal to 0, which results in zero-length lines being drawn.

This adds a call to TabDurationSymbol::layout2() from Chord::layout2(), so that beamLength can be set to the correct value.

Fix version
3.3.0