static void setTempo(Ms::Score* score, int tempo) { Ms::TempoText* tt = new Ms::TempoText(score); tt->setTempo(double(tempo)/60.0); tt->setTrack(0); QString tempoText = Ms::TempoText::duration2tempoTextString(Ms::TDuration::DurationType::V_QUARTER); tempoText += QString(" = %1").arg(tempo); tt->setPlainText(tempoText); Ms::Measure* measure = score->firstMeasure(); Ms::Segment* segment = measure->getSegment(Ms::Segment::Type::ChordRest, 0); segment->add(tt); }
static void setTempo(Ms::Score* score, int tempo) { Ms::TempoText* tt = new Ms::TempoText(score); tt->setTempo(double(tempo)/60.0); tt->setTrack(0); #if 0 // TODO WS Ms::QTextCursor* c = tt->startCursorEdit(); c->movePosition(QTextCursor::EndOfLine); addSymbolToText(SymCode(0xe105, 1), c); c->insertText(" = "); c->insertText(QString("%1").arg(tempo)); tt->endEdit(); #endif Ms::Measure* measure = score->firstMeasure(); Ms::Segment* segment = measure->getSegment(Ms::Segment::SegChordRest, 0); segment->add(tt); }
void MsScWriter::note(const QString pitch, const QVector<Bww::BeamType> beamList, const QString type, const int dots, bool tieStart, bool /*TODO tieStop */, StartStop triplet, bool grace) { qDebug() << "MsScWriter::note()" << "type:" << type << "dots:" << dots << "grace" << grace ; if (!stepAlterOctMap.contains(pitch) || !typeMap.contains(type)) { // TODO: error message return; } StepAlterOct sao = stepAlterOctMap.value(pitch); int ticks = 4 * Ms::MScore::division / type.toInt(); if (dots) ticks = 3 * ticks / 2; qDebug() << "ticks:" << ticks; Ms::TDuration durationType(Ms::TDuration::DurationType::V_INVALID); durationType.setVal(ticks); qDebug() << "duration:" << durationType.name(); if (triplet != ST_NONE) ticks = 2 * ticks / 3; Ms::Beam::Mode bm = (beamList.at(0) == Bww::BM_BEGIN) ? Ms::Beam::Mode::BEGIN : Ms::Beam::Mode::AUTO; Ms::Direction sd = Ms::Direction::AUTO; // create chord Ms::Chord* cr = new Ms::Chord(score); //ws cr->setTick(tick); cr->setBeamMode(bm); cr->setTrack(0); if (grace) { cr->setNoteType(Ms::NoteType::GRACE32); cr->setDurationType(Ms::TDuration::DurationType::V_32ND); sd = Ms::Direction::UP; } else { if (durationType.type() == Ms::TDuration::DurationType::V_INVALID) durationType.setType(Ms::TDuration::DurationType::V_QUARTER); cr->setDurationType(durationType); sd = Ms::Direction::DOWN; } cr->setDuration(durationType.fraction()); cr->setDots(dots); cr->setStemDirection(sd); // add note to chord Ms::Note* note = new Ms::Note(score); note->setTrack(0); xmlSetPitch(note, sao.s.toLatin1(), sao.a, sao.o); if (tieStart) { Ms::Tie* tie = new Ms::Tie(score); note->setTieFor(tie); tie->setStartNote(note); tie->setTrack(0); } cr->add(note); // add chord to measure if (!grace) { Ms::Segment* s = currentMeasure->getSegment(cr, tick); s->add(cr); if (!currentGraceNotes.isEmpty()) { for (int i = currentGraceNotes.size() - 1; i >=0; i--) cr->add(currentGraceNotes.at(i)); currentGraceNotes.clear(); } doTriplet(cr, triplet); int tickBefore = tick; tick += ticks; Ms::Fraction nl(Ms::Fraction::fromTicks(tick - currentMeasure->tick())); currentMeasure->setLen(nl); qDebug() << "MsScWriter::note()" << "tickBefore:" << tickBefore << "tick:" << tick << "nl:" << nl.print() ; } else { currentGraceNotes.append(cr); } }
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); } }