Kapitel 3. Neue Übungen für Minuet erstellen

Übungen für Minuet werden in speziellen Dateien im JSON-Format definiert.

{
  "exercises": [
    {
      "name": "Intervals",
      "root": "21..104",
      "playMode": "scale",
      "children": [
        {
          "name": "Ascending Melodic Intervals",
          "children": [
            {
              "name": "Seconds",
              "options": [
                {
                  "name": "Minor Second",
                  "sequenceFromRoot": "1"
                },
                {
                  "name": "Major Second",
                  "sequenceFromRoot": "2"
                }
              ]
            }
          ]
        }
      ]
    }
  ]
}

Die Definitionsdateien für Minuet-Übungen enthalten ein JSON-Objekt mit dem Feld exercises auf der obersten Ebene. In diesem Feld ist eine hierarchische Struktur gruppiert nach Kategorien definiert. Jede Kategorie oder Übung hat einen Namen. Die JSON-Objekte in der Kategorie eine Eigenschaft mit dem Namen children, die Unterkategorien oder Übungen darin beschreibt. JSON-Objekte für Übungen enthalten eine Eigenschaft mit dem Namen options, die mögliche Antworten für die Übung definiert. In jeder ausgeführten Übung wird zufällig eine Antwort aus den vorgegebenen Antworten ausgewählt. Es wird dann erwartet, dass der Knopf passend zur gewählten Antwort ausgewählt wird.

Jede Kategorie oder Unterkategorie kann einen Parameter root definieren, um den Bereich anzugeben, aus dem zu Anfang die Noten zu Intervallen, Akkorden und Tonleitern für alle Übungen in dieser Kategorie ausgewählt werden. Dieser Bereich entspricht der Standard-Notennummerierung in MIDI und hat das Format <min-value>..<max-value>. Im oben genannten Beispiel wird der gesamte Keybordbereich von 21 bis 104 als mögliche Basisnoten verwendet. Mit dem Parameter playMode wird festgelegt, wie mögliche Antworten abgespielt werden sollen: als scale (eine Note nach der anderen) oder als chord (alle Noten gleichzeitig).

Jede Option einer Übung definiert einen Namen und eine Folge von Noten, die von der ausgewählten Basisnote aus in jeder laufenden Übung gespielt werden sollte. Diese Folge von Noten ist als relative Distanz zur Basisnote definiert und beschreibt das Intervall zwischen der Note und der Basisnote. Bei einer Dur-Tonleiter besteht die Notenfolge aus "2 4 5 7 9 11 12". Das entspricht der Struktur der Dur-Tonleiter "Ganzton – Ganzton – Halbton – Ganzton – Ganzton – Ganzton – Halbton". Der Parameter sequenceFromRoot kann jede Notenlänge enthalten. Außerdem ist in Minuet sichergestellt, dass nur Antworten mit Noten innerhalb des Keyboardbereichs zufällig ausgewählt werden.

Für eine bessere Infrastruktur für die Organisation einer großen Anzahl von Übungen unterstützt Minuet's Kern die Verwendung mehrerer Definitionsdateien, die automatisch zusammengeführt werden, um die endgültige Übungshierarchie zu erstellen, die im Navigationsmenü angezeigt wird. Übungen werden korrekt zusammengeführt, solange verschiedene Definitionsdateien dieselbe Kategorie oder Unterkategorien verwenden. Zurzeit gibt es in Minuet's keine GUI für das Erstellen von Definitionsdateien für Übungen, so dass Sie diese manuell als JSON-Dateien anlegen müssen. Die Definitionsdateien für Übungen von Minuet können systemweit oder lokal in minuet/exercises/ im Ordner qtpaths --path GenericDataLocation installiert werden.