Merge pull request #9934 from Nick-Mazuk/beam-style-settings

respect beamNoSlope style parameter
This commit is contained in:
RomanPudashkin 2021-12-02 11:28:31 +02:00 committed by GitHub
commit 32ce843f83
No known key found for this signature in database
GPG key ID: 4AEE18F83AFDEB23
3 changed files with 586 additions and 2 deletions

View file

@ -521,6 +521,9 @@ int Beam::getMiddleStaffLine(ChordRest* startChord, ChordRest* endChord, int sta
int Beam::computeDesiredSlant(int startNote, int endNote, int middleLine, int dictator, int pointer) const
{
if (score()->styleB(Sid::beamNoSlope)) {
return 0;
}
if (dictator == middleLine && pointer == middleLine) {
return 0;
}
@ -950,7 +953,7 @@ void Beam::setValidBeamPositions(int& dictator, int& pointer, int beamCount, int
void Beam::addMiddleLineSlant(int& dictator, int& pointer, int beamCount, int middleLine, int interval)
{
if (interval == 0 || beamCount > 2) {
if (interval == 0 || beamCount > 2 || score()->styleB(Sid::beamNoSlope)) {
return;
}
bool isOnMiddleLine = pointer == middleLine && (qAbs(pointer - dictator) < 2);
@ -966,7 +969,7 @@ void Beam::addMiddleLineSlant(int& dictator, int& pointer, int beamCount, int mi
void Beam::add8thSpaceSlant(PointF& dictatorAnchor, int dictator, int pointer, int beamCount,
int interval, int middleLine, bool isFlat)
{
if (beamCount != 3) {
if (beamCount != 3 || score()->styleB(Sid::beamNoSlope)) {
return;
}
if ((isFlat && dictator != middleLine) || (dictator != pointer) || interval == 0) {

View file

@ -0,0 +1,575 @@
<?xml version="1.0" encoding="UTF-8"?>
<museScore version="4.00">
<Score>
<LayerTag id="0" tag="default"></LayerTag>
<currentLayer>0</currentLayer>
<Division>480</Division>
<Style>
<beamNoSlope>1</beamNoSlope>
<Spatium>1.74978</Spatium>
</Style>
<showInvisible>1</showInvisible>
<showUnprintable>1</showUnprintable>
<showFrames>1</showFrames>
<showMargins>0</showMargins>
<metaTag name="arranger"></metaTag>
<metaTag name="composer"></metaTag>
<metaTag name="copyright"></metaTag>
<metaTag name="lyricist"></metaTag>
<metaTag name="movementNumber"></metaTag>
<metaTag name="movementTitle"></metaTag>
<metaTag name="originalFormat">mscz</metaTag>
<metaTag name="poet"></metaTag>
<metaTag name="source"></metaTag>
<metaTag name="translator"></metaTag>
<metaTag name="workNumber"></metaTag>
<metaTag name="workTitle"></metaTag>
<Order id="orchestral">
<name>Orchestral</name>
<instrument id="voice">
<family id="voices">Voices</family>
</instrument>
<section id="woodwind" brackets="true" showSystemMarkings="true" barLineSpan="true" thinBrackets="true">
<family>flutes</family>
<family>oboes</family>
<family>clarinets</family>
<family>saxophones</family>
<family>bassoons</family>
<unsorted group="woodwinds"/>
</section>
<section id="brass" brackets="true" showSystemMarkings="false" barLineSpan="true" thinBrackets="true">
<family>horns</family>
<family>trumpets</family>
<family>cornets</family>
<family>flugelhorns</family>
<family>trombones</family>
<family>tubas</family>
</section>
<section id="timpani" brackets="true" showSystemMarkings="false" barLineSpan="true" thinBrackets="true">
<family>timpani</family>
</section>
<section id="percussion" brackets="true" showSystemMarkings="false" barLineSpan="true" thinBrackets="true">
<family>keyboard-percussion</family>
<family>drums</family>
<family>unpitched-metal-percussion</family>
<family>unpitched-wooden-percussion</family>
<family>other-percussion</family>
</section>
<family>keyboards</family>
<family>harps</family>
<family>organs</family>
<family>synths</family>
<section id="plucked-strings" brackets="true" showSystemMarkings="false" barLineSpan="true" thinBrackets="true">
<family>plucked-strings</family>
</section>
<soloists/>
<section id="voices" brackets="true" showSystemMarkings="false" barLineSpan="false" thinBrackets="true">
<family>voices</family>
</section>
<section id="strings" brackets="true" showSystemMarkings="true" barLineSpan="true" thinBrackets="true">
<family>orchestral-strings</family>
</section>
<unsorted/>
</Order>
<Part>
<Staff id="1">
<StaffType group="pitched">
<name>stdNormal</name>
</StaffType>
</Staff>
<trackName>Voice</trackName>
<Instrument id="voice">
<longName>Voice</longName>
<shortName>Vo.</shortName>
<trackName>Voice</trackName>
<minPitchP>38</minPitchP>
<maxPitchP>84</maxPitchP>
<minPitchA>41</minPitchA>
<maxPitchA>79</maxPitchA>
<instrumentId>voice.vocals</instrumentId>
<Channel>
<program value="52"/>
</Channel>
</Instrument>
</Part>
<Staff id="1">
<Measure>
<voice>
<TimeSig>
<sigN>4</sigN>
<sigD>4</sigD>
</TimeSig>
<Beam>
<l1>18</l1>
<l2>18</l2>
</Beam>
<Chord>
<durationType>eighth</durationType>
<Note>
<pitch>55</pitch>
<tpc>15</tpc>
</Note>
</Chord>
<Chord>
<durationType>eighth</durationType>
<Note>
<pitch>59</pitch>
<tpc>19</tpc>
</Note>
</Chord>
<Rest>
<durationType>quarter</durationType>
</Rest>
<Beam>
<l1>-6</l1>
<l2>-6</l2>
</Beam>
<Chord>
<durationType>eighth</durationType>
<Note>
<pitch>71</pitch>
<tpc>19</tpc>
</Note>
</Chord>
<Chord>
<durationType>eighth</durationType>
<Note>
<pitch>67</pitch>
<tpc>15</tpc>
</Note>
</Chord>
<Rest>
<durationType>quarter</durationType>
</Rest>
</voice>
</Measure>
<Measure>
<voice>
<Beam>
<l1>-2</l1>
<l2>-2</l2>
</Beam>
<Chord>
<durationType>eighth</durationType>
<Note>
<pitch>64</pitch>
<tpc>18</tpc>
</Note>
</Chord>
<Chord>
<durationType>eighth</durationType>
<Note>
<pitch>69</pitch>
<tpc>17</tpc>
</Note>
</Chord>
<Rest>
<durationType>quarter</durationType>
</Rest>
<Beam>
<l1>16</l1>
<l2>16</l2>
</Beam>
<Chord>
<durationType>eighth</durationType>
<Note>
<pitch>84</pitch>
<tpc>14</tpc>
</Note>
</Chord>
<Chord>
<durationType>eighth</durationType>
<Note>
<pitch>81</pitch>
<tpc>17</tpc>
</Note>
</Chord>
<Rest>
<durationType>quarter</durationType>
</Rest>
</voice>
</Measure>
<Measure>
<voice>
<Beam>
<l1>14</l1>
<l2>14</l2>
</Beam>
<Chord>
<durationType>eighth</durationType>
<Note>
<pitch>84</pitch>
<tpc>14</tpc>
</Note>
</Chord>
<Chord>
<durationType>eighth</durationType>
<Note>
<pitch>83</pitch>
<tpc>19</tpc>
</Note>
</Chord>
<Rest>
<durationType>quarter</durationType>
</Rest>
<Beam>
<l1>18</l1>
<l2>18</l2>
</Beam>
<Chord>
<durationType>eighth</durationType>
<Note>
<pitch>57</pitch>
<tpc>17</tpc>
</Note>
</Chord>
<Chord>
<durationType>eighth</durationType>
<Note>
<pitch>59</pitch>
<tpc>19</tpc>
</Note>
</Chord>
<Rest>
<durationType>quarter</durationType>
</Rest>
</voice>
</Measure>
<Measure>
<voice>
<Beam>
<l1>18</l1>
<l2>18</l2>
</Beam>
<Chord>
<durationType>16th</durationType>
<Note>
<pitch>57</pitch>
<tpc>17</tpc>
</Note>
</Chord>
<Chord>
<durationType>16th</durationType>
<Note>
<pitch>57</pitch>
<tpc>17</tpc>
</Note>
</Chord>
<Chord>
<durationType>16th</durationType>
<Note>
<pitch>57</pitch>
<tpc>17</tpc>
</Note>
</Chord>
<Chord>
<durationType>16th</durationType>
<Note>
<pitch>59</pitch>
<tpc>19</tpc>
</Note>
</Chord>
<Rest>
<durationType>quarter</durationType>
</Rest>
<Beam>
<l1>14</l1>
<l2>14</l2>
</Beam>
<Chord>
<durationType>16th</durationType>
<Note>
<pitch>84</pitch>
<tpc>14</tpc>
</Note>
</Chord>
<Chord>
<durationType>16th</durationType>
<Note>
<pitch>84</pitch>
<tpc>14</tpc>
</Note>
</Chord>
<Chord>
<durationType>16th</durationType>
<Note>
<pitch>84</pitch>
<tpc>14</tpc>
</Note>
</Chord>
<Chord>
<durationType>16th</durationType>
<Note>
<pitch>83</pitch>
<tpc>19</tpc>
</Note>
</Chord>
<Rest>
<durationType>quarter</durationType>
</Rest>
</voice>
</Measure>
<Measure>
<voice>
<Beam>
<l1>10</l1>
<l2>10</l2>
</Beam>
<Chord>
<durationType>32nd</durationType>
<Note>
<pitch>57</pitch>
<tpc>17</tpc>
</Note>
</Chord>
<Chord>
<durationType>32nd</durationType>
<Note>
<pitch>59</pitch>
<tpc>19</tpc>
</Note>
</Chord>
<Chord>
<durationType>32nd</durationType>
<Note>
<pitch>59</pitch>
<tpc>19</tpc>
</Note>
</Chord>
<Chord>
<durationType>32nd</durationType>
<Note>
<pitch>59</pitch>
<tpc>19</tpc>
</Note>
</Chord>
<Rest>
<durationType>eighth</durationType>
</Rest>
<Rest>
<durationType>quarter</durationType>
</Rest>
<Rest>
<durationType>half</durationType>
</Rest>
</voice>
</Measure>
<Measure>
<voice>
<Rest>
<durationType>measure</durationType>
<duration>4/4</duration>
</Rest>
</voice>
</Measure>
<Measure>
<voice>
<Rest>
<durationType>measure</durationType>
<duration>4/4</duration>
</Rest>
</voice>
</Measure>
<Measure>
<voice>
<Rest>
<durationType>measure</durationType>
<duration>4/4</duration>
</Rest>
</voice>
</Measure>
<Measure>
<voice>
<Rest>
<durationType>measure</durationType>
<duration>4/4</duration>
</Rest>
</voice>
</Measure>
<Measure>
<voice>
<Rest>
<durationType>measure</durationType>
<duration>4/4</duration>
</Rest>
</voice>
</Measure>
<Measure>
<voice>
<Rest>
<durationType>measure</durationType>
<duration>4/4</duration>
</Rest>
</voice>
</Measure>
<Measure>
<voice>
<Rest>
<durationType>measure</durationType>
<duration>4/4</duration>
</Rest>
</voice>
</Measure>
<Measure>
<voice>
<Rest>
<durationType>measure</durationType>
<duration>4/4</duration>
</Rest>
</voice>
</Measure>
<Measure>
<voice>
<Rest>
<durationType>measure</durationType>
<duration>4/4</duration>
</Rest>
</voice>
</Measure>
<Measure>
<voice>
<Rest>
<durationType>measure</durationType>
<duration>4/4</duration>
</Rest>
</voice>
</Measure>
<Measure>
<voice>
<Rest>
<durationType>measure</durationType>
<duration>4/4</duration>
</Rest>
</voice>
</Measure>
<Measure>
<voice>
<Rest>
<durationType>measure</durationType>
<duration>4/4</duration>
</Rest>
</voice>
</Measure>
<Measure>
<voice>
<Rest>
<durationType>measure</durationType>
<duration>4/4</duration>
</Rest>
</voice>
</Measure>
<Measure>
<voice>
<Rest>
<durationType>measure</durationType>
<duration>4/4</duration>
</Rest>
</voice>
</Measure>
<Measure>
<voice>
<Rest>
<durationType>measure</durationType>
<duration>4/4</duration>
</Rest>
</voice>
</Measure>
<Measure>
<voice>
<Rest>
<durationType>measure</durationType>
<duration>4/4</duration>
</Rest>
</voice>
</Measure>
<Measure>
<voice>
<Rest>
<durationType>measure</durationType>
<duration>4/4</duration>
</Rest>
</voice>
</Measure>
<Measure>
<voice>
<Rest>
<durationType>measure</durationType>
<duration>4/4</duration>
</Rest>
</voice>
</Measure>
<Measure>
<voice>
<Rest>
<durationType>measure</durationType>
<duration>4/4</duration>
</Rest>
</voice>
</Measure>
<Measure>
<voice>
<Rest>
<durationType>measure</durationType>
<duration>4/4</duration>
</Rest>
</voice>
</Measure>
<Measure>
<voice>
<Rest>
<durationType>measure</durationType>
<duration>4/4</duration>
</Rest>
</voice>
</Measure>
<Measure>
<voice>
<Rest>
<durationType>measure</durationType>
<duration>4/4</duration>
</Rest>
</voice>
</Measure>
<Measure>
<voice>
<Rest>
<durationType>measure</durationType>
<duration>4/4</duration>
</Rest>
</voice>
</Measure>
<Measure>
<voice>
<Rest>
<durationType>measure</durationType>
<duration>4/4</duration>
</Rest>
</voice>
</Measure>
<Measure>
<voice>
<Rest>
<durationType>measure</durationType>
<duration>4/4</duration>
</Rest>
</voice>
</Measure>
<Measure>
<voice>
<Rest>
<durationType>measure</durationType>
<duration>4/4</duration>
</Rest>
</voice>
</Measure>
<Measure>
<voice>
<Rest>
<durationType>measure</durationType>
<duration>4/4</duration>
</Rest>
</voice>
</Measure>
</Staff>
</Score>
</museScore>

View file

@ -91,6 +91,12 @@ TEST_F(BeamTests, beamG)
beam("Beam-G.mscx");
}
// if the beamNoSlope style parameter is true, all beams are flat
TEST_F(BeamTests, beamNoSlope)
{
beam("beamNoSlope.mscx");
}
// cross staff beaming is not yet supported
// in the new beams code
// TEST_F(BeamTests, beamCrossMeasure2)