Es entstehen häufig Situationen, in denen ein bestimmter Parameter des aktuellen Tonsystems in verschiedenen Umstimmungen verändert werden soll.
Betrachten wir folgenden Ausschnitt aus einem Logikprogramm:
LOGIK
Modulation Taste M = C_Dur [ Taste B -> Anker70 Taste F -> Anker65 Taste C -> Anker60 Taste G -> Anker67 Taste D -> Anker62 ] UMSTIMMUNG Anker60 = 60 [ ] Anker62 = 62 [ ] Anker65 = 65 [ ] Anker67 = 67 [ ] Anker70 = 70 [ ] |
Das Tonsystem C_Dur ist das bereits aus vielen Beispielen bekannte „reine C-Dur“1 , dieses finden Sie auf Seite 77. Bekanntermaßen ist in diesem Tonsystem z.B. die Quinte d—a keine reine Quinte (3:2). Die Stimmungslogik Modulation kann nun per Tastendruck auf einen neuen Bezugston modulieren. Dies geschieht, indem in der entsprechenden Umstimmung die Verankerungstaste neu gesetzt wird, und das heißt, dass die Intervallstruktur des Tonsystems C_Dur auf einen neuen Bezugston übertragen wird2 . Eine solche „Modulation“ verändert also die Töne der Fundamentaltonleiter (bis auf den neuen Grundton), behält aber die Intervallstruktur bei. Im Zustand „C_Dur“ ist die Quinte d—a unrein, wenn Sie aber nach „D_Dur“ oder „G-Dur“ modulieren, so ertönt diese Quinte im Frequenzverhältnis 3:2.
Doch konzentrieren wir uns nun auf die Umstimmungen. Alle fünf Umstimmungen sind vom selben Typ: sie weisen der Verankerungstaste einen neuen (absoluten) Wert zu. Da es sehr häufig vorkommt, dass verschiedene Umstimmungen ein und denselben Parameter verändern, haben wir eine Konstruktion eingeführt, welche alle Umstimmungen gleichen Typs in einer einzigen zusammenfassen kann: Umstimmungen mit Parametern3 . Wir schreiben einfach
UMSTIMMUNG
Anker_neu ( x ) = x [ ] |
und aktivieren diese Umstimmung mit verschiedenen Werten für den Platzhalter x:
LOGIK
Modulation Taste M = C_Dur [ Taste B -> Anker_neu(70) Taste F -> Anker_neu(65) Taste C -> Anker_neu(60) Taste G -> Anker_neu(67) Taste D -> Anker_neu(62) ] |
Dies gleicht einer einfachen Konstruktion aus der Mathematik: Man definiert eine
Funktion, z.B. f(x) = und erhält daraus später konkrete Ergebnisse, indem man
feste Werte einsetzt: f(12) = 4 . Genauso arbeiten Umstimmungen mit Parametern: man
definiert den Typ der Umstimmung und konkretisiert dies beim Aufruf in der
Logik.
Einen Platzhalter können Sie bei Veränderungen der Verankerungstaste und bei Veränderungen der Breite der Fundamentaltonleiter benutzen. Die vier möglichen Umstimmungen sind also:
UMSTIMMUNG
Anker_absolut(Neu) = Neu [ ] Anker_relativ(Distanz) = @ + Distanz [ ] Breite_absolut(Neu) = [ << Neu >> ] Breite_relativ(Faktor) = [ << @ * Faktor >> ] |
Natürlich sind bei relativen Umstimmungen mit Parametern alle sonst gültigen Rechenzeichen erlaubt (Tatsächlich gibt es also acht verschiedene Typen).
Auf der rechten Seite des Gleichheitszeichens dürfen nur solche Namen benutzt werden, die auch in der Klammer links stehen, da sonst keine eindeutige Zuordnung möglich ist. Die Umstimmung
UMSTIMMUNG Versuch_es_doch (Meier) = @ + Schmitt [ ]
|
führt zu einer Fehlermeldung des Compilers, da der Platzhalter Schmitt nirgendwo definiert worden ist.