diff --git a/TODO b/TODO index 9cf498631b54d4d7d758aa43a857d23f48b3c953..9374d6088cd975e72490d6b0e5df584266dd93cf 100644 --- a/TODO +++ b/TODO @@ -12,8 +12,10 @@ ============================================================================ ====== BUGS AND ISSUES =============================================== -- result tip with mistakes texts may be too long +- played note in single mode wrongly shows enharmonic +- key signatures chart is wrongly scaled when Y axis is different +- Y axis in empty chart has to be adjusted to window height (it has fixed size) - remove some console debug messages - clean tartini unused code @@ -22,11 +24,11 @@ MINOR: if it is started from creator - there is highlight of message but when started from 'start' menu - there is not - try to avoid many resizeEvent-s of TmultiScore during window size change -- check is intonation checked properly in exams +- disable shortcuts (KDE styles) or change text to icon on buttons to select instrument and used string (range settings) - changing tool bar auto-hiding causes sometimes locked melody menu - auto hidden tool bar remains big after decreased window size -- disable shortcuts (KDE styles) or change text to icon on buttons to select instrument and used string (range settings) + - changing to/from grand staff overrides TscoreNote ambitus - there is no problem as long as ambitus is unused - selecting read only notes (right and double click) is unused - it is good - but clean a code @@ -43,6 +45,7 @@ MINOR: - average effectiveness line in chart - make exam summary pretty - certificates would have some additional data about melodies +- bring back isVoice() audio param - average pitch of all chunks or min duration will depend on it - divide TexamExecutor class !!!!! - rhythms in score diff --git a/changes b/changes index ec4071de9007d2d2e9b65bf0608da23b20d54cc4..ba19ee69ab336141b80d7163467e8fd86e4dee8c 100644 --- a/changes +++ b/changes @@ -4,6 +4,7 @@ - unlocked help button(s) to opening related help sites BUGS FIXES - checking intonation properly respects level accuracy setting + - fixed determining mistake types for melodies 1.1.7 rc2 - improvements/fixes related to low latency and real-time audio diff --git a/src/exam/texamexecutor.cpp b/src/exam/texamexecutor.cpp index 87eca831055a3aff8838659de57fb46c7f3e1c39..77fac9d9df43b200f9cdbe8ffbaae679af3923d8 100755 --- a/src/exam/texamexecutor.cpp +++ b/src/exam/texamexecutor.cpp @@ -611,18 +611,19 @@ void TexamExecutor::checkAnswer(bool showResults) { } if (goodAllready == curQ->melody()->length()) { // all required notes are correct curQ->setMistake(TQAunit::e_correct); // even if user put them more and effect. is poor -// qDebug() << "Melody is correct"; + qDebug() << "Melody is correct"; } else if (goodAllready + notBadAlready == curQ->melody()->length()) { // add committed mistakes of last attempt - curQ->setMistake(curQ->lastAttempt()->summary()); // or 'not bad' -// qDebug() << "Melody is not bad"; + curQ->setMistake(curQ->lastAttempt()->summary() - (curQ->lastAttempt()->summary() & 64 ? 64 : 0)); // or 'not bad' +// qDebug() << "Melody is not bad" << curQ->mistake(); } else if (goodAllready + notBadAlready >= curQ->melody()->length() * 0.7) { // at least 70% notes answered properly // qDebug() << "Melody has little notes"; if (curQ->lastAttempt()->effectiveness() > 50.0) { // and effectiveness is sufficient + curQ->setMistake(curQ->lastAttempt()->summary() - (curQ->lastAttempt()->summary() & 64 ? 64 : 0)); curQ->setMistake(TQAunit::e_littleNotes); // but less notes than required // qDebug() << "... and sufficient effectiveness"; } else { // or effectiveness is too poor - curQ->setMistake(TQAunit::e_wrongNote); -// qDebug() << "... but very poor effectiveness"; + curQ->setMistake(TQAunit::e_veryPoor); +// qDebug() << "... but very poor effectiveness" << curQ->lastAttempt()->effectiveness(); } } else { curQ->setMistake(TQAunit::e_wrongNote); @@ -803,20 +804,6 @@ void TexamExecutor::correctAnswer() { m_lockRightButt = true; } else correctionFinished(); - -// if (gl->E->autoNextQuest && gl->E->afterMistake != TexamParams::e_stop && !curQ->melody()) { -// m_lockRightButt = true; // to avoid nervous users click mouse during correctViewDuration -// m_askingTimer->start(gl->E->correctPreview); -// } -// if (curQ->melody()) { -// m_canvas->whatNextTip(false, false); -// connect(mW->score, &TmainScore::lockedNoteClicked, this, &TexamExecutor::correctNoteOfMelody); -// } else if (!gl->E->autoNextQuest || gl->E->afterMistake == TexamParams::e_stop) -// QTimer::singleShot(2000, this, SLOT(delayerTip())); // 2000 ms - fastest preview time - longer than animation duration -// if (curQ->melody() && (curQ->questionAsNote() || curQ->answerAsNote())) -// m_canvas->melodyCorrectMessage(); -// if (!gl->E->autoNextQuest || !gl->E->showCorrected || gl->E->afterMistake == TexamParams::e_stop) -// QTimer::singleShot(2000, m_canvas, SLOT(clearResultTip())); // exam will stop so clear result tip after correction } @@ -1623,7 +1610,7 @@ void TexamExecutor::correctionFinished() { if (m_exam->curQ()->melody() && (m_exam->curQ()->questionAsNote() || m_exam->curQ()->answerAsNote())) m_canvas->melodyCorrectMessage(); if (!gl->E->autoNextQuest || !gl->E->showCorrected || gl->E->afterMistake == TexamParams::e_stop) - QTimer::singleShot(2000, m_canvas, SLOT(clearResultTip())); // exam will stop so clear result tip after correction + QTimer::singleShot(4000, m_canvas, SLOT(clearResultTip())); // exam will stop so clear result tip after correction } diff --git a/src/libs/core/graphics/tnotepixmap.cpp b/src/libs/core/graphics/tnotepixmap.cpp index 4e6c53cbc35e4590f4b9501a184acbdf06e4fe57..1d3b24c3825cf867d08afdbab6c698bd20983b9e 100644 --- a/src/libs/core/graphics/tnotepixmap.cpp +++ b/src/libs/core/graphics/tnotepixmap.cpp @@ -226,7 +226,7 @@ QString wasAnswerOKtext(TQAunit* answer, const QColor& textColor, int fontSize) misMes = QApplication::translate("AnswerText", "wrong accidental"); if (answer->wrongKey()) { addSpaceToNotEmpty(misMes); - misMes += QApplication::translate("AnswerText", "wrong key signature"); + newLineText(misMes, QApplication::translate("AnswerText", "wrong key signature")); } if (answer->wrongOctave()) { addSpaceToNotEmpty(misMes);