diff --git a/data/definitions/CMakeLists.txt b/data/definitions/CMakeLists.txt index 1223e8eb22210ff5292734223b233960e38e60e4..d591c569842e5fba3aebab3d5166ce958b3d5c34 100644 --- a/data/definitions/CMakeLists.txt +++ b/data/definitions/CMakeLists.txt @@ -2,6 +2,7 @@ set(minuet_DEFINITIONS intervals-ascending-melodic-definitions.json intervals-descending-melodic-definitions.json chords-root-position-definitions.json + scales-major-and-its-modes-definitions.json ) install(FILES ${minuet_DEFINITIONS} DESTINATION ${KDE_INSTALL_DATADIR}/minuet/definitions) diff --git a/data/definitions/scales-major-and-its-modes-definitions.json b/data/definitions/scales-major-and-its-modes-definitions.json new file mode 100644 index 0000000000000000000000000000000000000000..b4a946e7a6c833babe6e9e504e870b025515cd9d --- /dev/null +++ b/data/definitions/scales-major-and-its-modes-definitions.json @@ -0,0 +1,39 @@ +{ + "definitions": [ + { + "tags": ["scale", "ascending", "major"], + "name": "Ionian", + "sequence": "2 4 5 7 9 11 12" + }, + { + "tags": ["scale", "ascending", "major"], + "name": "Dorian", + "sequence": "2 3 5 7 9 10 12" + }, + { + "tags": ["scale", "ascending", "major"], + "name": "Phrygian", + "sequence": "1 3 5 7 8 10 12" + }, + { + "tags": ["scale", "ascending", "major"], + "name": "Lydian", + "sequence": "2 4 6 7 9 11 12" + }, + { + "tags": ["scale", "ascending", "major"], + "name": "Mixolydian", + "sequence": "2 4 5 7 9 10 12" + }, + { + "tags": ["scale", "ascending", "major"], + "name": "Aeolian", + "sequence": "2 3 5 7 8 10 12" + }, + { + "tags": ["scale", "ascending", "major"], + "name": "Locrian", + "sequence": "1 3 5 6 8 10 12" + } + ] +} diff --git a/data/exercises/CMakeLists.txt b/data/exercises/CMakeLists.txt index edc25c0b9be25a572b96311b837ee9979c077841..c528a75919b70227836d79606258eb0ca5f24318 100644 --- a/data/exercises/CMakeLists.txt +++ b/data/exercises/CMakeLists.txt @@ -2,6 +2,7 @@ set(minuet_EXERCISES intervals-ascending-melodic-exercises.json intervals-descending-melodic-exercises.json chords-root-position-exercises.json + scales-major-and-its-modes-exercises.json ) install(FILES ${minuet_EXERCISES} DESTINATION ${KDE_INSTALL_DATADIR}/minuet/exercises) diff --git a/data/exercises/scales-major-and-its-modes-exercises.json b/data/exercises/scales-major-and-its-modes-exercises.json new file mode 100644 index 0000000000000000000000000000000000000000..84a319c773f9ae53e37f9dbe71ac3d0633e29168 --- /dev/null +++ b/data/exercises/scales-major-and-its-modes-exercises.json @@ -0,0 +1,16 @@ +{ + "exercises": [ + { + "name": "Scales", + "root": "21..104", + "playMode": "scale", + "userMessage": "the scale", + "children": [ + { + "name": "Major Scale and its Modes", + "and-tags": ["scale", "major"] + } + ] + } + ] +} diff --git a/data/scales-major-and-its-modes.json b/data/scales-major-and-its-modes.json deleted file mode 100644 index a086ecd56472c97bc54e9c9d977adef155d707e6..0000000000000000000000000000000000000000 --- a/data/scales-major-and-its-modes.json +++ /dev/null @@ -1,45 +0,0 @@ -{ - "exercises": [ - { - "name": "Scales", - "root": "21..104", - "playMode": "scale", - "userMessage": "the scale", - "children": [ - { - "name": "Major Scale and its Modes", - "options": [ - { - "name": "Ionian", - "sequence": "2 4 5 7 9 11 12" - }, - { - "name": "Dorian", - "sequence": "2 3 5 7 9 10 12" - }, - { - "name": "Phrygian", - "sequence": "1 3 5 7 8 10 12" - }, - { - "name": "Lydian", - "sequence": "2 4 6 7 9 11 12" - }, - { - "name": "Mixolydian", - "sequence": "2 4 5 7 9 10 12" - }, - { - "name": "Aeolian", - "sequence": "2 3 5 7 8 10 12" - }, - { - "name": "Locrian", - "sequence": "1 3 5 6 8 10 12" - } - ] - } - ] - } - ] -} diff --git a/src/shell/exercisecontroller.cpp b/src/shell/exercisecontroller.cpp index bc30a5e3f84212e1562bdba75f43e57d88a9e8a6..ad490e47bc2b5bb03562152580c87e045e4a6e2f 100644 --- a/src/shell/exercisecontroller.cpp +++ b/src/shell/exercisecontroller.cpp @@ -44,8 +44,7 @@ ExerciseController::ExerciseController(MidiSequencer *midiSequencer) : m_maxRootNote(0), m_playMode(ScalePlayMode), m_answerLength(1), - m_chosenRootNote(0), - m_chosenExercise(0) + m_chosenRootNote(0) { m_exercises["exercises"] = QJsonArray(); m_exercises["definitions"] = QJsonArray(); @@ -115,8 +114,8 @@ QStringList ExerciseController::randomlyChooseExercises() } for (unsigned int i = 0; i < m_answerLength; ++i) { - m_chosenExercise = qrand() % m_exerciseOptions.size(); - QString sequence = m_exerciseOptions[m_chosenExercise].toObject()[QStringLiteral("sequence")].toString(); + unsigned int chosenExercise = qrand() % m_exerciseOptions.size(); + QString sequence = m_exerciseOptions[chosenExercise].toObject()[QStringLiteral("sequence")].toString(); if (m_playMode != RhythmPlayMode) { int minNote = INT_MAX; @@ -163,7 +162,7 @@ QStringList ExerciseController::randomlyChooseExercises() } } - chosenExercises << m_exerciseOptions[m_chosenExercise].toObject()[QStringLiteral("name")].toString(); + chosenExercises << m_exerciseOptions[chosenExercise].toObject()[QStringLiteral("name")].toString(); } if (m_playMode == RhythmPlayMode) { m_midiSequencer->appendEvent(m_midiSequencer->SMFNoteOn(9, 80, 120), barStart); diff --git a/src/shell/exercisecontroller.h b/src/shell/exercisecontroller.h index 905d3cf68853dfd143305b592859e94686de6aa1..ecc89382d24f4117f46894a02a0b06a8059be142 100644 --- a/src/shell/exercisecontroller.h +++ b/src/shell/exercisecontroller.h @@ -84,7 +84,6 @@ private: PlayMode m_playMode; unsigned int m_answerLength; unsigned int m_chosenRootNote; - unsigned int m_chosenExercise; QString m_errorString; };