The Magic Behind Your Sequences

Vorweg: Dieser Artikel ist bewusst etwas länger.

Er richtet sich an Caller, die nicht nur wissen möchten, dass die Choreo-Suche funktioniert, sondern auch genau verstehen wollen, was Callers Caddy intern mit einer Sequenz macht.

Wenn du nur eine schnelle Bedienungsanleitung suchst, darfst du diesen Artikel guten Gewissens überspringen. Wenn du dagegen wissen möchtest, wie aus einigen Textzeilen eine nach Figuren, Tanzprogramm, Sequenztyp und Schwierigkeit durchsuchbare Choreo wird, bist du hier genau richtig.

Nehmen wir zunächst eine ganz normale Sequenz:

Heads Square Thru 4,
Swing Thru,
Boys Run,
Ferris Wheel,
Centers Pass Thru,
Touch 1/4,
Scoot Back,
Swing

Für einen Caller ist bei beiden Sequenzen sofort klar, was gemeint ist.

Eine Software sieht zunächst jedoch nur einzelne Texte. Sie weiß nicht automatisch, dass Heads lediglich festlegt, wer beginnt. Sie muss erkennen, dass die 4 zu Square Thru gehört, aber nicht Teil des offiziellen Namens der Figur ist. Und sie muss verstehen, welche Teile echte Calls und welche lediglich Rollenangaben, Zusätze oder Anweisungen sind.

Callers Caddy muss deshalb zunächst einige Fragen beantworten:

  • Welche Zeilen sind tatsächlich Calls?
  • Welche offizielle Figur ist mit einer Schreibweise gemeint?
  • Gehört Heads zur Figur oder beschreibt es nur die aktiven Tänzer?
  • Ist die Sequenz vollständig Mainstream?
  • Oder versteckt sich darin eine einzige Plus-Figur?
  • Und was passiert, wenn Callers Caddy eine Schreibweise noch nicht kennt?

Hinter jeder Sequenz steckt deshalb eine kleine Verarbeitungskette. Sie beginnt mit dem eingegebenen Text und endet mit einem vorberechneten Tanz-Level, über das später selbst Tausende Sequenzen blitzschnell durchsucht werden können.

Schauen wir uns diesen Weg einmal genau an.

Schritt 1: Die Originalsequenz wird als JSON gespeichert

Unsere technische Beispielsequenz lautet vollständig:

[
  "Heads Square Thru 4",
  "Swing Thru",
  "Boys Run",
  "Ferris Wheel",
  "Centers Pass Thru",
  "Touch 1/4",
  "Scoot Back",
  "Swing"
]

Wenn du eine Sequenz eingibst oder importierst, speichert Callers Caddy sie als geordnete Liste ihrer Calls. Technisch handelt es sich dabei um ein JSON-Array direkt in der Datenbank.

JSON klingt komplizierter, als es ist. Im Grunde ist es einfach eine Liste, bei der jeder Eintrag seinen festen Platz hat. Dadurch bleiben sowohl die Calls als auch ihre Reihenfolge erhalten.

Callers Caddy darf die Schreibweise später intern vereinfachen, um die Figuren zu erkennen. Die gespeicherte Originalsequenz wird dadurch aber nicht verändert.

Wenn du später wieder auf die Choreo zugreifst, siehst du weiterhin:

Heads Square Thru 4

und nicht nur:

Square Thru

Auch die Länge der Sequenz ist nicht künstlich begrenzt. Sie kann drei Calls enthalten, dreißig Calls oder noch mehr. Callers Caddy speichert, was choreografisch benötigt wird.

Typ und Schwierigkeit sind eigene Informationen

Neben der eigentlichen Callliste speichert Callers Caddy zu jeder Sequenz zwei weitere Angaben:

  • den Sequenztyp
  • die Schwierigkeit

Der Sequenztyp beschreibt den choreografischen Weg: Aus welcher Formation startet die Sequenz und wo führt sie hin?

Typische Beispiele sind:

  • Static Set ➔ Resolve
  • Zero Box ➔ Resolve
  • Zero Line ➔ Zero Line
  • Singer (Corner progression)

Zero Line ➔ Zero Line bedeutet beispielsweise: Die Tänzer beginnen in einer Zero Line und befinden sich am Ende wieder in einer Zero Line.

Bei Singer (Corner progression) handelt es sich dagegen um eine Figur aus einem Singing Call, nach der alle Tänzer um eine Position weitergerückt sind.

Die Schwierigkeit beantwortet eine andere Frage: Wie anspruchsvoll ist diese konkrete Sequenz zu tanzen?

Dafür gibt es bewusst nur drei einfache Werte:

  • Easy
  • Medium
  • Hard

Tanz-Level und Schwierigkeit sind dabei nicht dasselbe.

Eine Sequenz kann ausschließlich Mainstream-Figuren enthalten und trotzdem choreografisch anspruchsvoll sein. Umgekehrt kann eine Plus-Sequenz sehr übersichtlich und einfach zu tanzen sein.

Deshalb speichert Callers Caddy diese Informationen getrennt.

Später kannst du dadurch beispielsweise sagen:

Zeige mir alle einfachen Sequenzen vom Typ „Zero Box ➔ Resolve“, die für Mainstream geeignet sind.

Aus einer großen Choreo-Sammlung wird so eine sehr konkrete Auswahl für den nächsten Tanzabend.

[Screenshot: Sequenz mit Typ und Schwierigkeit]

Schritt 2: Die Schreibweise wird intern aufgeräumt

Menschen sind erstaunlich kreativ darin, dieselbe Figur unterschiedlich aufzuschreiben.

Ein Caller schreibt:

Heads Square Thru 4

Ein anderer vielleicht:

Heads Sq Thru

Oder:

Square Thru 4 (again)

Für einen Menschen ist klar, dass sich alle drei Schreibweisen auf dieselbe Grundfigur beziehen. Für eine Software sind es zunächst drei unterschiedliche Texte.

Deshalb erstellt Callers Caddy für den Abgleich eine intern bereinigte Fassung.

Dabei entfernt es unter anderem:

  • führende Rollenangaben wie Heads, Sides, Centers, Boys oder Girls
  • abschließende Zahlen
  • Brüche wie 3/4
  • Klammerzusätze
  • Wörter wie again

Aus:

Heads Square Thru 4

wird für den internen Vergleich:

square thru

Aus:

Boys Run

wird:

run

Und aus:

Touch 1/4

wird eine bereinigte Schreibweise, die anschließend der offiziellen Figur Touch a Quarter zugeordnet werden kann.

Wichtig ist: Diese Bereinigung findet nur intern für den Abgleich statt.

In der gespeicherten Sequenz bleibt die Originalschreibweise vollständig erhalten.

Man könnte sagen:

Die Originalzeile ist das, was der Caller geschrieben hat. Die bereinigte Fassung ist das, was Callers Caddy daraus zu verstehen versucht.

Schritt 3: Das Call-Mapping übersetzt Caller-Sprache

Nach dem Aufräumen besitzt Callers Caddy eine vereinfachte Schreibweise. Es weiß aber noch nicht automatisch, welche offizielle Figur damit gemeint ist.

Jetzt kommt das Call-Mapping ins Spiel.

Das Call-Mapping ist eine Übersetzungstabelle zwischen den vielen möglichen Schreibweisen der Caller und den eindeutig definierten Figuren in Callers Caddy.

Zum Beispiel:

Gefundene SchreibweiseOffizielle Figur
Sq ThruSquare Thru
Square Thru 4Square Thru
square thruSquare Thru

Alle drei Schreibweisen zeigen am Ende auf dieselbe offizielle Figur.

Das ist ein entscheidender Schritt. Erst durch diese Zuordnung kann Callers Caddy erkennen, dass Sequenzen aus unterschiedlichen Quellen dieselben Calls enthalten.

Ohne Call-Mapping wären:

Sq Thru

und:

Square Thru 4

für die Datenbank zwei unterschiedliche Dinge.

Mit Call-Mapping werden sie zu zwei Schreibweisen derselben offiziellen Figur.

Das Gleiche passiert in unserer Beispielsequenz mit:

Centers Pass Thru

Die Rollenangabe Centers wird für die Zuordnung entfernt. Übrig bleibt Pass Thru, das mit der offiziellen Figur Pass Thru verbunden wird.

Oder mit:

Swing

Diese Schreibweise wird der offiziellen Figur Swing (your Partner) zugeordnet. (Außer du callst A2 oder höher, dann kann Swing auch was anderes bedeuten)

Nicht jede Zeile ist ein Call

In Choreo-Sammlungen stehen häufig auch Hinweise wie:

(Zero Box)
You're Home
Repeat
Opener

Solche Zeilen können für den Caller hilfreich sein, sind aber keine Square-Dance-Figuren.

Dafür gibt es im Call-Mapping den besonderen Eintrag:

Filler Words

Damit sagst du Callers Caddy:

Diese Zeile gehört zum Text der Sequenz, soll aber nicht als Figur ausgewertet werden.

Das ist wichtig, denn Callers Caddy darf eine unbekannte Zeile nicht einfach ignorieren. Sie könnte schließlich ein noch nicht erkanntes Kommando aus einem höheren Tanzprogramm sein.

[Screenshot: Call-Mapping mit verschiedenen Schreibweisen und „Filler Words“]

Schritt 4: Jede Figur bekommt ihren Platz im Lehrplan

Nachdem alle Schreibweisen den offiziellen Figuren zugeordnet wurden, kennt Callers Caddy die Calls der Sequenz.

Nun muss es herausfinden, zu welchem Tanz-Level die gesamte Choreo gehört.

Dafür besitzt jede offizielle Figur eine feste Ordnungszahl.

Der ganzzahlige Teil dieser Zahl steht für das Tanzprogramm:

  • 10 für Basic
  • 30 für Mainstream
  • 40 für Plus
  • 50 für A1
  • entsprechend höhere Werte für die weiteren Programme

Die Nachkommastellen beschreiben die genaue Position der Figur innerhalb des jeweiligen Programms beziehungsweise Lehrplans.

Dadurch entsteht eine durchgängige Reihenfolge. Eine später gelehrte oder einem höheren Programm zugeordnete Figur besitzt eine höhere Ordnungszahl als eine frühere Figur.

Das hat einen großen Vorteil: Callers Caddy muss nicht mit vielen voneinander getrennten Listen arbeiten. Es kann Figuren über die Grenzen der verschiedenen Programme hinweg über eine einzige Zahl vergleichen.

Unsere Mainstream-Sequenz in Zahlen

Nachdem Callers Caddy die Schreibweisen bereinigt und den offiziellen Figuren zugeordnet hat, sieht unsere Beispielsequenz intern vereinfacht so aus:

Call in der SequenzZugeordnete FigurOrdnungszahlProgramm
Heads Square Thru 4Square Thru30.0021Mainstream
Swing ThruSwing Thru30.0033Mainstream
Boys RunRun30.0034Mainstream
Ferris WheelFerris Wheel30.0040Mainstream
Centers Pass ThruPass Thru30.0007Mainstream
Touch 1/4Touch a Quarter30.0042Mainstream
Scoot BackScoot Back30.0047Mainstream
SwingSwing (your Partner)30.0011Mainstream

Hier sieht man sehr schön, dass die Reihenfolge der Calls in der Sequenz nichts mit der Höhe ihrer Ordnungszahlen zu tun hat.

Centers Pass Thru steht beispielsweise erst an fünfter Stelle in der Choreo, besitzt mit 30.0007 aber eine niedrigere Ordnungszahl als das vorher getanzte Ferris Wheel mit 30.0040.

Die Ordnungszahl beschreibt also nicht den Platz innerhalb dieser Sequenz.

Sie beschreibt den Platz der offiziellen Figur innerhalb des gesamten Lehrplans.

[Screenshot: Figuren mit ihren Ordnungszahlen]

Schritt 5: Die höchste Figur entscheidet

Jetzt kennt Callers Caddy die Ordnungszahlen aller Figuren in der Sequenz.

Um das Level der gesamten Sequenz zu bestimmen, braucht es nur noch eine mathematische Funktion:

Maximum

Callers Caddy sucht also nach der höchsten enthaltenen Ordnungszahl.

In unserer Beispielsequenz ist das:

30.0047

Dieser Wert gehört zu:

Scoot Back

Damit wird 30.0047 als Maximum der gesamten Sequenz gespeichert.

Da dieser Wert im Mainstream-Bereich liegt, kann die Sequenz bei einer Suche bis Mainstream angezeigt werden.

Callers Caddy berechnet dieses Maximum nicht bei jeder späteren Suche erneut. Es wird einmal ermittelt und direkt bei der Sequenz hinterlegt.

Genau diese kleine Vorarbeit macht die spätere Suche so schnell.

Wie aus der Sequenz plötzlich eine Plus-Sequenz wird

Jetzt verändern wir nur einen kleinen Teil unserer Choreo. (Timing lass ich mal aussen vor)

Aus:

Touch 1/4
Scoot Back
Swing

wird:

Touch 1/4
Follow Your Neighbor
& Spread
Swing

Die veränderte Sequenz lautet damit vollständig:

[
  "Heads Square Thru 4",
  "Swing Thru",
  "Boys Run",
  "Ferris Wheel",
  "Centers Pass Thru",
  "Touch 1/4",
  "Follow Your Neighbor",
  "& Spread",
  "Swing"
]

Auf den ersten Blick hat sich nicht viel verändert. Die ersten sechs Calls sind identisch und auch am Ende wird weiterhin geschwungen.

Intern sieht die Auswertung jetzt jedoch so aus:

Call in der SequenzZugeordnete FigurOrdnungszahlProgramm
Heads Square Thru 4Square Thru30.0021Mainstream
Swing ThruSwing Thru30.0033Mainstream
Boys RunRun30.0034Mainstream
Ferris WheelFerris Wheel30.0040Mainstream
Centers Pass ThruPass Thru30.0007Mainstream
Touch 1/4Touch a Quarter30.0042Mainstream
Follow Your NeighborFollow Your Neighbor40.0024Plus
& Spread(Anything) & Spread40.0032Plus
SwingSwing (your Partner)30.0011Mainstream

Callers Caddy sucht erneut lediglich den höchsten Wert.

Diesmal lautet das Maximum:

40.0032

Es gehört zu (Anything) & Spread und liegt im Plus-Bereich.

Damit gilt nun die gesamte Sequenz als Plus-Sequenz.

Sie besteht zwar überwiegend aus Mainstream-Figuren. Das spielt für die Einstufung jedoch keine Rolle. Eine Mainstream-Gruppe müsste auch Follow Your Neighbor und (Anything) & Spread sicher tanzen können, um die vollständige Choreo zu bewältigen.

Eine Sequenz wird deshalb nicht nach dem Durchschnitt und auch nicht nach der Mehrheit ihrer Calls eingestuft.

Die höchste enthaltene Figur bestimmt das Level der gesamten Sequenz.

Genau deshalb erscheint unsere erste Variante bei einer Suche bis Mainstream, während die zweite Variante dort verborgen bleibt. Wird das Suchlimit auf Plus erhöht, können beide Sequenzen angezeigt werden.

Der Unterschied zwischen Mainstream und Plus liegt in diesem Beispiel am Ende in einem einzigen Zahlenvergleich:

Mainstream-Sequenz: Maximum 30.0047
Plus-Sequenz:       Maximum 40.0032

Das vorberechnete Maximum macht die spätere Suche gleichzeitig zuverlässig und schnell.

Schritt 6: Jetzt kann blitzschnell gesucht werden

Nach der Verarbeitung kennt Callers Caddy zu unserer Sequenz:

  • die Calls in ihrer ursprünglichen Reihenfolge
  • die zugeordneten offiziellen Figuren
  • den Sequenztyp
  • die Schwierigkeit
  • die höchste enthaltene Figur
  • damit auch das maximale Tanz-Level

Auf dieser Grundlage sind unterschiedliche Sucharten möglich.

Suche nach einer bestimmten Figur

Die erste Frage könnte lauten:

Zeige mir alle Sequenzen, die Ferris Wheel enthalten.

Callers Caddy kann dafür direkt über den vorbereiteten Index nachsehen, in welchen Sequenzen diese Figur vorkommt.

Dabei spielt es keine Rolle, ob sie ursprünglich als Ferris Wheel, mit einem Rollen-Zusatz oder in einer anderen bekannten Schreibweise importiert wurde.

Das Call-Mapping hat diese Varianten bereits auf dieselbe offizielle Figur zurückgeführt.

Suche bis zu einem bestimmten Level

Die zweite Frage könnte lauten:

Zeige mir alle Sequenzen bis Mainstream (inklusive).

Jetzt zeigt sich der Vorteil des vorberechneten Maximums.

Callers Caddy muss nicht bei jeder Suche erneut sämtliche Calls sämtlicher Sequenzen untersuchen. Es vergleicht nur zwei Werte:

Maximum der Sequenz ≤ gewähltes Level?

Wenn ja, wird die Sequenz angezeigt.

Wenn nein, bleibt sie verborgen.

Bei unserer ersten Beispielsequenz lautet die Antwort:

30.0047 ≤ Mainstream

Die Sequenz wird angezeigt.

Bei der veränderten Variante lautet die Antwort:

40.0032 > Mainstream

Diese Sequenz bleibt verborgen.

Selbst bei Tausenden gespeicherten Sequenzen ist dieser Vergleich sehr schnell.

Weitere Filter können die Auswahl anschließend zusätzlich verkleinern:

  • Sequenztyp
  • Schwierigkeit
  • enthaltene Figur
  • gewähltes Tanzprogramm

So wird aus einer großen Datenmenge innerhalb kürzester Zeit genau die Choreo, die du gerade brauchst.

[Screenshot: Suche mit Level-, Typ- und Schwierigkeitsfilter]

Frage 1: Warum erscheint eine importierte Sequenz manchmal nicht?

Du importierst eine neue Choreo. Der Import scheint funktioniert zu haben, aber bei der Level-Suche taucht die Sequenz nicht auf.

Der häufigste Grund ist eine unbekannte Schreibweise.

Nehmen wir an, in der Sequenz steht:

Hds SqThr 4

Wenn Callers Caddy diese Abkürzung noch nicht kennt, kann es sie keiner offiziellen Figur zuordnen.

Nun könnte das Programm die unbekannte Zeile einfach übergehen. Das wäre bequem, aber riskant.

Denn Callers Caddy weiß nicht, was sich hinter der unbekannten Schreibweise verbirgt. Vielleicht ist es nur eine ungewöhnliche Abkürzung für eine Basic-Figur. Vielleicht handelt es sich aber auch um eine A2-Figur.

Würde das Programm die Zeile einfach ignorieren, könnte es eine A2-Sequenz versehentlich als Mainstream anzeigen.

Deshalb verhält sich Callers Caddy bewusst vorsichtig:

Solange auch nur ein Call nicht zugeordnet ist, kann das tatsächliche Maximum der Sequenz nicht zuverlässig berechnet werden.

Die Sequenz wird daher aus der Level-Suche herausgehalten.

Das Call-Mapping zeigt dir die noch offenen Schreibweisen. Außerdem sucht Callers Caddy nach ähnlich geschriebenen offiziellen Figuren und schlägt passende Zuordnungen vor.

Du entscheidest dann:

  • Ist dies eine bekannte Figur in einer neuen Schreibweise?
  • Oder handelt es sich lediglich um einen Kommentar oder eine Ansage?

Im ersten Fall ordnest du die passende offizielle Figur zu.

Im zweiten Fall wählst du:

Filler Words

Sobald alle Zeilen geklärt sind, kann Callers Caddy das Maximum zuverlässig berechnen. Danach erscheint die Sequenz wieder in den passenden Suchen.

[Screenshot: Unbekannte Schreibweise und Ähnlichkeitsvorschläge im Call-Mapping]

Frage 2: Wie kommen neue Sequenzen in den Callers Caddy?

Der einfachste Weg ist der Freitext-Import.

Du lädst eine Choreo beispielsweise aus einer Textdatei.

Das Programm erkennt die einzelnen Calls Zeile für Zeile.

Für strukturierte Sammlungen können außerdem Dateien im JSON- oder CSV-Format eingelesen werden. Diese dürfen neben den Calls bereits weitere Angaben enthalten, beispielsweise:

  • das Level
  • den Sequenztyp
  • die Schwierigkeit

Unabhängig vom Importweg läuft danach dieselbe Verarbeitungskette:

  1. Originalsequenz speichern
  2. Schreibweisen intern bereinigen
  3. Calls über das Mapping zuordnen
  4. Ordnungszahlen ermitteln
  5. höchsten Call bestimmen
  6. Sequenz für die Suche vorbereiten

Bei größeren Importen ist es ganz normal, dass Callers Caddy auf neue Abkürzungen oder persönliche Schreibweisen stößt.

Genau dafür ist das Call-Mapping da.

Du musst die Choreografien nicht umschreiben. Du bringst Callers Caddy lediglich einmal bei, was die neue Schreibweise bedeutet. Danach kennt das System sie auch für weitere Sequenzen.

Fazit: Eine kleine Übersetzungsmaschine für Choreo

Von außen betrachtet speichert Callers Caddy Choreo-Sequenzen.

Technisch passiert jedoch deutlich mehr.

Das Programm bewahrt zunächst die Originalschreibweise auf. Anschließend reduziert es unterschiedliche Notationen auf ihren wesentlichen Kern. Das Call-Mapping übersetzt diesen Kern in eindeutig definierte Figuren. Die Ordnungszahlen machen die Figuren über verschiedene Tanzprogramme hinweg vergleichbar. Und die höchste enthaltene Figur bestimmt schließlich das Level der gesamten Sequenz.

Aus einigen einfachen Textzeilen entsteht dadurch ein strukturierter und blitzschnell durchsuchbarer Datensatz.

Oder kurz:

Text
➔ Bereinigung
➔ Call-Mapping
➔ Ordnungszahlen
➔ Maximum
➔ Suche

Das erklärt auch, warum Callers Caddy bei unbekannten Schreibweisen lieber einmal nachfragt, statt eine Sequenz möglicherweise falsch einzuordnen.

Denn eine gute Choreo-Suche muss nicht nur schnell sein.

Sie muss vor allem zuverlässig wissen, was in einer Sequenz tatsächlich getanzt wird.

4 Gedanke zu „The Magic Behind Your Sequences“

  1. Very good description of how
    CC handles choreography. You have done a great job David. I really appreciate your help and how quickly you implement changes and updates.

    Antworten

Schreibe einen Kommentar