void MsScWriter::endMeasure(const Bww::MeasureEndFlags mef) { qDebug() << "MsScWriter::endMeasure()"; if (mef.repeatEnd) currentMeasure->setRepeatFlags(Ms::RepeatEnd); if (mef.endingEnd) { if (lastVolta) { qDebug("adding volta\n"); if (ending == 1) lastVolta->setVoltaType(Ms::VoltaType::CLOSED); else lastVolta->setVoltaType(Ms::VoltaType::OPEN); lastVolta->setEndElement(currentMeasure); currentMeasure->addSpannerBack(lastVolta); lastVolta = 0; } else { qDebug("lastVolta == 0 on stop\n"); } } if (mef.lastOfSystem) { Ms::LayoutBreak* lb = new Ms::LayoutBreak(score); lb->setTrack(0); lb->setLayoutBreakType(Ms::LAYOUT_BREAK_LINE); currentMeasure->add(lb); } if (mef.lastOfPart && !mef.repeatEnd) { currentMeasure->setEndBarLineType(Ms::END_BAR, false, true); } else if (mef.doubleBarLine) { currentMeasure->setEndBarLineType(Ms::DOUBLE_BAR, false, true); } // BarLine* barLine = new BarLine(score); // bool visible = true; // barLine->setSubtype(NORMAL_BAR); // barLine->setTrack(0); // currentMeasure->setEndBarLineType(barLine->subtype(), false, visible); }
void MsScWriter::endMeasure(const Bww::MeasureEndFlags mef) { qDebug() << "MsScWriter::endMeasure()"; if (mef.repeatEnd) currentMeasure->setRepeatEnd(true); if (mef.endingEnd) { if (lastVolta) { qDebug("adding volta"); if (ending == 1) lastVolta->setVoltaType(Ms::Volta::Type::CLOSED); else lastVolta->setVoltaType(Ms::Volta::Type::OPEN); lastVolta->setTick2(tick); lastVolta = 0; } else { qDebug("lastVolta == 0 on stop"); } } if (mef.lastOfSystem) { Ms::LayoutBreak* lb = new Ms::LayoutBreak(score); lb->setTrack(0); lb->setLayoutBreakType(Ms::LayoutBreak::Type::LINE); currentMeasure->add(lb); } if (mef.lastOfPart && !mef.repeatEnd) { //TODO currentMeasure->setEndBarLineType(Ms::BarLineType::END, false, true); } else if (mef.doubleBarLine) { //TODO currentMeasure->setEndBarLineType(Ms::BarLineType::DOUBLE, false, true); } // BarLine* barLine = new BarLine(score); // bool visible = true; // barLine->setSubtype(BarLineType::NORMAL); // barLine->setTrack(0); // currentMeasure->setEndBarLineType(barLine->subtype(), false, visible); }
void MsScWriter::beginMeasure(const Bww::MeasureBeginFlags mbf) { qDebug() << "MsScWriter::beginMeasure()"; ++measureNumber; // create a new measure currentMeasure = new Ms::Measure(score); currentMeasure->setTick(tick); currentMeasure->setTimesig(Ms::Fraction(beats, beat)); currentMeasure->setNo(measureNumber); score->measures()->add(currentMeasure); if (mbf.repeatBegin) currentMeasure->setRepeatStart(true); if (mbf.irregular) currentMeasure->setIrregular(true); if (mbf.endingFirst || mbf.endingSecond) { Ms::Volta* volta = new Ms::Volta(score); volta->setTrack(0); volta->endings().clear(); if (mbf.endingFirst) { volta->setText("1"); volta->endings().append(1); ending = 1; } else { volta->setText("2"); volta->endings().append(2); ending = 2; } volta->setTick(currentMeasure->tick()); score->addElement(volta); lastVolta = volta; } // set clef, key and time signature in the first measure if (measureNumber == 1) { // clef Ms::Clef* clef = new Ms::Clef(score); clef->setClefType(Ms::ClefType::G); clef->setTrack(0); Ms::Segment* s = currentMeasure->getSegment(clef, tick); s->add(clef); // keysig Ms::KeySigEvent key; key.setKey(Ms::Key::D); Ms::KeySig* keysig = new Ms::KeySig(score); keysig->setKeySigEvent(key); keysig->setTrack(0); s = currentMeasure->getSegment(keysig, tick); s->add(keysig); // timesig Ms::TimeSig* timesig = new Ms::TimeSig(score); timesig->setSig(Ms::Fraction(beats, beat)); timesig->setTrack(0); s = currentMeasure->getSegment(timesig, tick); s->add(timesig); qDebug("tempo %d", tempo); } }