15.8.2013

Über Algorithmen (4)

(Thema)

Zum Dritten: Einem Computer kann man durchaus beibringen, sich von einer strikten „wenn-dann“-Logik zu entfernen. Es gibt hier einen Mythos um die sog. „Fuzzy-Logic“, wo ein Algorithmus – freilich nur auf den ersten Blick – nicht mehr deterministisch vorgeht, sondern Wahrscheinlichkeiten implementiert (der Artikel in der Wikipedia schreibt hier am Mythos mit).

In der Praxis ist das relativ einfach. Statt einem „if-else“ (dem „wenn-dann“-Befehl in praktisch allen Hochsprachen) testet man, was solch ein „if-else“ für ein Ergebnis haben würde, bevor man dieses Ergebnis tatsächlich „abholt“.

Im Rahmen des Chordtrack-Features von Cubase habe ich dieses Verfahren für die Bestimmung der Folge von „Voicings“ verwendet.

Ich will hier nicht näher ins Detail; mir kommt es hier nur auf das Verfahren an (das ich nicht erfunden habe, und das man wohl bei ganz anderen Gelegenheiten ebenfalls benutzt).

Hier ist das Problem (bei dem es sich letztlich nur um ein allgemeines Problem beim Sortieren von Datensätzen handelt, das man auf ganz andere Computer-relevante Probleme recht unaufgeregt übertragen kann):

Auf einen C-Dur-Akkord, der aus einem „Datensatz“ aus konkreten Tönen besteht (einem sog. „Voicing”) , soll ein F-Dur-Akkord folgen. Für den F-Dur-Akkord gibt es eine Liste aus „Datensätzen von Tönen“, mit dem man ihn spielen kann. Der Algorithmus soll bestimmen, welcher Datensatz – welches Voicing – jenem nach C-Dur „am Besten” folgt.

Innerhalb der „Fuzzy-Logic“ wird jedes mögliche Voicing in F-Dur darauf getestet, wieweit es dem Vorgänger (dem in C-Dur) „am Besten“ folgen würde. Dafür gibt es einen Satz von Regeln, die musiktheoretischen Überlegungen über Stimmführung folgen. Eine Regel ist zB., daß der Sopran (die höchste Stimme innerhalb eines Voicings) möglichst kleine Schritte gehen soll (und nicht, wie der Baß, eine Quinte nach unten oder eine Quarte nach oben springt).

Jene „kleine-Schritte-Regel“ für den Sopran zB. halte ich für extrem wichig; deshalb gebe ich ihr zB. 8 Punkte, wenn der Übergang zwischen C- zu F-Dur, mit dem entsprechenden Voicing, sie einhält. Wenn der Tenor sich an dieselbe Regel hält, ist das zwar ebenfalls „gut“, aber etwas weniger wichtig; dem Befolgen dieser Regel gebe ich dann zB. nur 4 Punkte; etc. pp.

Ein Übergang von einem Voicing in das nächste beruht auf einem ganzen Satz von Regeln. Dabei kommt es darauf an, welche Regel wie gewichtet wird. Das macht hier nicht der Computer, sondern der User; in diesem Fall: der Programmierer. (Ich habe ganz erheblich Zeit investiert, um, mit dem Ohr, Gewichtungen für diese spezielle Fuzzy-Logic zu finden).

Zum Schluß – nachdem alle möglichen Voicings (Datensätze) eines F-Dur-Akkords, die einem C-Dur-Voicing folgen könnten – von der Fuzzy-Logic des Algorithmus „ausprobiert“ wurden, „gewinnt” das Voicing mit den meisten Punkten, und wird von Cubase angeboten. Easy as pie.

Zum Vierten:

(wird fortgesetzt)

(Kommentarfunktion z.Zt. deaktiviert.)