Die Funktionsweise der relativen Umstimmungen ist die gleiche wie bei den absoluten. Der einzige Unterschied besteht darin, dass dem umzustimmenden Parameter kein fester Wert zugewiesen wird, sondern dass sich der neue Wert aus dem alten Zustand mit einer einfachen Formel berechnen lässt.
Dies ist nützlich, wenn der neue gewünschte Zustand eines Parameters nicht absolut bekannt ist, sondern sich aus dem alten Zustand ergibt. Dies ist der Fall, wenn z.B. die Verankerungstaste um eins erhöht werden soll. Dies schreibt man so:
UMSTIMMUNG
Anker = @ + 1 [ ] |
Das Klammeraffensymbol (@) bedeutet hier ’alter Wert’. Bei dieser Umstimmung wird die Verankerungstaste auf ’alter Wert plus eins’ gesetzt, sprich um eins erhöht. Wenn die Verankerungstaste zum Zeitpunkt des Umstimmungsaufrufs den Wert 56 hat, so ist ein Aufruf der Umstimmung Anker gleichbedeutend mit der (absoluten) Umstimmung
UMSTIMMUNG
Von_56 = 57 [ ] |
Relative Umstimmungen können genauso wie absolute Umstimmungen jeden der Grundparameter Anker, Breite und Töne des aktuellen Tonsystems sowie das Periodenintervall verändern. Die nachfolgend aufgeführten Umstimmungen sind alle gültig:
UMSTIMMUNG
Anker = @ + 1 [ ] Breite = [ << @ - 2 >> ] Toene = [@ , @ , @ + 2 Quinte - Oktave , @ - 3 Terz + Oktave , @ , @ + Syn_Komma , , ] Periode= [ ] @ + Syn_Komma |
An dieser Stelle sei bemerkt, dass man als Namen keines der reservierten Worte verwenden darf. Dazu zählt das Wort Ton. Wenn man beispielsweise diese Umstimmungen deklariert,
UMSTIMMUNG
Anker = @ + 1 [ ] Breite = [ << @ - 2 >> ] Ton = [ @ , @ , @ + 2 Quinte - Oktave , @ - 3 Terz + Oktave , @ , @ + Syn_Komma , , ] Periode= [ ] @ + Syn_Komma |
so erhält man einen Syntaxfehler, weil das Wort Ton eine vorgegebene Bedeutung innerhalb der Programmiersprache hat. Erlaubt hingegen ist, wenn ein reserviertes Wort Bestandteil eines Bezeichners ist, so ist es zwar verboten, eine Umstimmung namens Ton zu deklarieren, aber eine Umstimmung Tontaube ist natürlich erlaubt.
Da die vier verschiedenen Umstimmtypen in ihrer Bedeutung und Handhabung sehr unterschiedlich sind, folgt hier noch einmal eine Auflistung der gültigen Rechenzeichen bei relativen Umstimmungen:
Parameter | gültige Rechenzeichen |
Anker | + - |
Breite | + - * / |
Periode | + - |
Töne der FT | wie bei TON-Deklaration |
Bereichsüber- bzw. Unterschreitungen werden im Laufzeitmodul abgefangen und ignoriert. Wenn z.B. die Breite der FT 1 beträgt und die Umstimmung
UMSTIMMUNG
Halbieren = [ << @/2 >> ] |
aufgerufen wird, so wird die angegebene Umstimmung ignoriert, da die Breite der FT mindestens 1 betragen muss. Der Anschauung halber folgt nun noch einmal eine Liste gültiger relativer Umstimmungen:
INTERVALL
cent = 1200 wurzel 2 UMSTIMMUNG Verdopplung = [ << @ * 2 >> ] Trichter = [ ] @ + 3 cent Temp_nach_rein = [ @ , @ , @ , @ , @ - 14 cent , @ - 2 cent , @ , @ + 2 cent ] Transponieren = @ - 2 [ ] Was_ist_das = @ + 4 |
Die letzte Umstimmung ist syntaktisch falsch, da nicht eindeutig ist, ob die Verankerungstaste oder das Periodenintervall verändert werden soll. Aus diesem Grunde ist es immer notwendig, die zunächst als überflüssig erscheinenden eckigen Klammern zu schreiben.
Detailliertere Informationen über Umstimmungen mit einer exakten Spezifikation der Vorgehensweise in Ausnahmesituationen entnehmen Sie bitte dem Abschnitt „Handhabung von Grenzfällen“.