2. #HARMON-DATABASE#
Für die Sammlung der Akkordlisten empfiehlt es sich die eigens dafür entworfene Funktion HAMON-DATABASE zu verwenden.
Anstatt Akkorde mit absoluten Werten für die Tonhöhen, werden Pitch-Sets verwendet, in denen immer die einzelnen Abstände der Akkordtöne zu einem virtuellen Grundton in midicents (100 midicents = 1 MIDI = 1 Halbton) angegeben werden. So sind auch mikrotonale Akkorde möglich.
Danach werden die Umfänge der Instrumente (momentan maximal 4 Instrumente) in absoluten midicents angegeben. Dafür können zur Visualisierung auch CHORD-Objects eingesetzt werden.

Fig. 6
Input-Syntax: Für jedes Instrument (min max) oder (max min) aneinander gelistet.
(HARMON-DATABASE erkennt den niedrigeren Wert unabhängig von seiner Position als Minimum an)
Der tiefste Ton des tiefsten Instruments sowie der höchste Ton des höchsten Instruments bilden ein Rahmenintervall; den Gesamtumfang.

Nun werden alle Pitch-Sets, die mit ihren Akkordtöne über die Anzahl der angegebenen Instrumente hinausgehen werden auf die passende Anzahl reduziert. Die Pitch-Sets welche weniger Akkordtöne haben mit „nil“ auf die passende Anzahl ergänzt.
Während ersteres, Bugs vermeiden soll, ist letzteres praktisch um einzelne Instrumenten Pausen zu geben.

Die Input-Syntax für die Pitch-Set-List: ((0 200 300 400) (0 100 500 700) etc…)
Da die Werte der Pitch-Sets den Instrumenten über die Position in der Liste zugeordnet werden, wird die Database um alle Permutationen jedes Pitch-Sets erweitert.

Dann wird eine chromatische Skala, vom tiefsten bis zum höchsten Ton des Gesamtumfangs erstellt. Diese Skala ist die Sammlung aller virtuellen Grundtöne auf die, die Pitch-Sets transponiert werden.

Nun sind voerst alle möglichen Akkorde entstanden. Zuletzt besteht noch die Möglichkeit, eine Register-Liste zu erstellen, in der von 0 an, was keine Oktavierung bedeutet, in midicents alle Oktavlagen angegeben werden, mit denen permutativ alle möglichen Oktavierungen eines jeden Akkords berechnet werden. Der default-Wert ist (0 1200 2400 4800).
Nun werden in diesem Prozess oftmals Akkorde entstehen, die für einzelne Instrumente außerhalb ihres Stimmumfangs liegen. Daher gibt es zuletzt noch einen Range-Check, der alle Akkorde herausfiltert, die aus diesem Grund unbrauchbar sind.
Alle Akkorde die mehrfach in der Liste auftauchen werden ebenfalls herausgefiltert, da sie den Zufall manipulieren.

Die Instrumente ab dem zweiten Instrument (Instr 1) und die Register-Liste werden alle mit &key-inlets angegeben.

Über den Autor