Musik, Noten, Midi, Programmierung etc.

Transponieren mit dem Computer

Das Notensystem mit den Noten von C bis H bzw. B ist nicht gerade zum Rechnen gemacht worden. Ich habe mich mit dem Problem beschäftigt, mit einem Programm Noten zu transponieren.

Wozu das gut sein soll? Ich habe ein Notenschreibprogramm (CAPELLA), mit dem ich eigentlich sehr zufrieden bin. Aber manchmal habe ich Übungen, von denen nur 1 oder 2 Takte notiert sind und dann der nette Hinweis man möge diese Übung doch in alle Tonarten transponieren. Am besten macht man das Transponieren im Kopf (weil das übt). Aber die Noten als Gedächtnisstütze sind auch nicht zu verachten.

Ausserdem nutze ich das Transponieren, wenn ich bei transponierenden Instrumenten von der notierten zur klingenden Darstellung und zurück wechseln will.

Wie bringt man dem Computer das Transponieren bei? Wie weiß er, dass er auf einem Gb gelandet ist und nicht auf einem F#.

Hilfreich dabei ist die sogenannte «line of fifths» [LoF]. Sie ist aus dem Quintenzirkel abgeleitet, aber eine unendliche Linie. Der mittlere Teil sieht folgendermassen aus:

F## B# E# A# D# G# C# F# B E A D G C F Bb Eb Ab Db Gb Cb Fb Bbb
14 13 12 11 10 9 8 7 6 5 4 3 2 1 0 -1 -2 -3 -4 -5 -6 -7 -8

Da wir ja rechnen wollen, wird jedem Ton eine Zahl zugewiesen. Das F erhält die 0 und nach links werden die Zahlen grösser, nach rechts kleiner.

Jeder Ton ist jetzt eindeutig durch eine Zahl charakterisiert, der Position auf der LoF. Es gibt keine enharmonische Verwechslung. Das Fis hat die Zahl 7, während das Ges die Zahl -5 hat.

Man sieht, dass man eine enharmonische Verwechslung erreicht, indem man zur Position die Zahl 12 addiert oder subtrahiert. Auch die Anzahl und der Typ des Versetzungszeichens (Kreuz oder Be) lässt sich einfach aus der Position berechnen.

Es gilt: Anzahl der Versetzungszeichen = (Position + 7) / 7 – 1. Dabei wird die Ganzzahldivision mit Rest angewandt.

Beispiele:

1. D#

Anzahl der Versetzungszeichen = (10 + 7) / 7 -1 = 17 / 7 – 1 = 2 – 1 = 1

Da 1 positiv ist, hat das D ein Kreuz, also Dis.

2. Gb

Anzahl der Versetzungszeichen = (-5 + 7) / 7 -1 = 2 / 7 – 1 = 0 – 1 = -1

Da -1 negativ ist, hat das G ein Be, also Ges.

Wird der Ausdruck (Position + 7) / 7 negativ, ist die besondere Form der Division zu beachten.

Für Bbb (-8) ergibt sich: (-8 + 7) / 7 = -1 /7. Dies ist nicht 0, sondern -1. (Die Programmiersprache C# macht es mit der Funktion mod richtig. Bei anderen Sprachen muss man es ausprobieren.)

Bei Instrumenten ist gewöhnlich angegeben, um wieviel sie transponieren. Aus der Anzahl der Halbtonschritte muss man noch die Anzahl der Schritte in der LoF ermitteln. Man kann das auch errechnen, aber einfacher ist eine zusätzliche Tabelle.

Halbtonschritte -11 -10 -9 -8 -7 -6 -5 -4 -3 -2 -1 1 2 3 4 5 6 7 8 9 10 11
LoF-Schritte -5 2 -3 4 -1 6 1 -4 3 -2 5 -5 2 -3 4 -1 -6 1 -4 3 -2 5

Jetzt kommen wir zum Transponieren der einzelnen Noten. In meinem Fall lagen die Noten als Buchstaben vor, also als C,D,E,etc.

Zuerst brauchen wir für jede Note eine Zahl. Die Zahl holen uns aus einer Tabelle, die der LoF entspricht: F =0, C =1, G = 2, etc.

Ausserdem müssen wir noch die Vorzeichen einer Zahl zu ordnen. Ein Kreuz entspricht 1, zweie Kreuze 2, ein B -1, zwei Bs -2, etc.

Mit folgender Formel können wir dann jeder Note eine Position (= eine Zahl) zuordnen:

Position = Notenzahl + 7 * Vorzeichenzahl

Um die transponierte Position zu erhalten, addieren wir einfach die LoF-Schritte.

NeuePosition = Position + LoF-Schritte.

Die neue Note erhält man durch: NeuePosition mod 7.

Die Anzahl der Vorzeichen wie oben beschrieben

Jetzt fehlt nur noch die Bestimmung der richtigen Oktave.

Hierfür ordnen wir wieder jedem Ton eine Zahl zu, aber diesmal wie in der C-Dur-Tonleiter: C = 1, D = 2, etc..

Jetzt sind ein paar Fälle zu unterscheiden:

Wenn nach oben transponiert wird und die Zahl der transponierten Note ist kleiner als die ursprüngliche Note (z. B. von F nach D transponiert), wird die Oktave um 1 erhöht.

Wenn nach unten transponiert wird und die Zahl der transponierten Note ist größer als die ursprüngliche Note (z. B. von E nach A transponiert), wird die Oktave um 1 erniedrigt.

Wenn um mehr als eine Oktave transponiert wird, wird die Oktave entsprechend erhöht bzw. erniedrigt.


© 2024 - Hans-Henning Flessner