@@ -825,18 +825,7 @@ static bool determineTimeSig(const QString beats, const QString beatType, const
825
825
826
826
btp = beatType.toInt ();
827
827
QStringList list = beats.split (" +" );
828
- #if 0 // TODO TS
829
- for (int i = 0; i < 4; i++)
830
- bts[i] = 0;
831
- for (int i = 0; i < list.size() && i < 4; i++)
832
- bts[i] = list.at(i).toInt();
833
- // the beat type and at least one beat must be non-zero
834
- if (btp && (bts[0] || bts[1] || bts[2] || bts[3])) {
835
- TimeSig ts = TimeSig(score, btp, bts[0], bts[1], bts[2], bts[3]);
836
- st = ts.subtype();
837
- }
838
- #endif
839
- for (int i = 0 ; i < list.size () && i < 4 ; i++)
828
+ for (int i = 0 ; i < list.size (); i++)
840
829
bts += list.at (i).toInt ();
841
830
}
842
831
return true ;
@@ -3315,7 +3304,7 @@ void MusicXml::xmlAttributes(Measure* measure, int staff, QDomElement e)
3315
3304
if (beats != " " && beatType != " " ) {
3316
3305
// determine if timesig is valid
3317
3306
TimeSigType st = TSIG_NORMAL;
3318
- int bts = 0 ; // the beats (max 4 separated by "+") as integer
3307
+ int bts = 0 ; // total beats as integer (beats may contain multiple numbers, separated by "+")
3319
3308
int btp = 0 ; // beat-type as integer
3320
3309
if (determineTimeSig (beats, beatType, timeSymbol, st, bts, btp)) {
3321
3310
// add timesig to all staves
@@ -3326,6 +3315,11 @@ void MusicXml::xmlAttributes(Measure* measure, int staff, QDomElement e)
3326
3315
TimeSig* timesig = new TimeSig (score);
3327
3316
timesig->setSubtype (st);
3328
3317
timesig->setSig (Fraction (bts, btp));
3318
+ // handle simple compound time signature
3319
+ if (beats.contains (QChar (' +' ))) {
3320
+ timesig->setNumeratorString (beats);
3321
+ timesig->setDenominatorString (beatType);
3322
+ }
3329
3323
timesig->setTrack ((staff + i) * VOICES);
3330
3324
Segment* s = measure->getSegment (timesig, tick);
3331
3325
s->add (timesig);
0 commit comments