From 0dfbd89184376cd5a819c5944d0185a0ef5db58c Mon Sep 17 00:00:00 2001 From: "Sandro S. Andrade" Date: Mon, 27 Jun 2016 00:26:46 -0300 Subject: [PATCH] Refactor scale exercises to new architecture --- data/definitions/CMakeLists.txt | 1 + ...cales-major-and-its-modes-definitions.json | 39 ++++++++++++++++ data/exercises/CMakeLists.txt | 1 + .../scales-major-and-its-modes-exercises.json | 16 +++++++ data/scales-major-and-its-modes.json | 45 ------------------- src/shell/exercisecontroller.cpp | 9 ++-- src/shell/exercisecontroller.h | 1 - 7 files changed, 61 insertions(+), 51 deletions(-) create mode 100644 data/definitions/scales-major-and-its-modes-definitions.json create mode 100644 data/exercises/scales-major-and-its-modes-exercises.json delete mode 100644 data/scales-major-and-its-modes.json diff --git a/data/definitions/CMakeLists.txt b/data/definitions/CMakeLists.txt index 1223e8e..d591c56 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 0000000..b4a946e --- /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 edc25c0..c528a75 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 0000000..84a319c --- /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 a086ecd..0000000 --- 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 bc30a5e..ad490e4 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 905d3cf..ecc8938 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; }; -- GitLab