Xenharmonik – Instrumente

Xenharmonik bedeutet im allgemeinen die Verwendung von anderen Skalen, als die etablierte, weltweit verwendete 12-tönige chromatische Tonskala. Das Projekt GRETL ist ein additiver Synthesizer, der nicht nur eine 10-tönige Skala implementiert, sondern auch Klänge erzeugt, die im besonderen auf diese Skala abgestimmt sind.

Labor -Prototyp

Regler und Schalter

gretl

Der erste Prototyp wird ein konventionelles Layout zum Testen der Funktionen erhalten.

Links ist die Sektion für Modulationsquellen, 3 LFOs und die dritte Hüllkurve. Zentral liegen die vier Spektralgeneratoren, oben die modulierbaren für die Pegelspektren, unten für die Zeitspektren. Rechts befindet sich der Oszillatorbereich mit Modulationsreglern und den Hüllkurven.

Multiplex

Scanner für Tastatur und Regler

SMD

Der Axoloti erlaubt 15 Leitungen, die A/D gewandelt werden können, direkt anzuschliessen. Für rund 40 Tasten (noch ohne velocity) und Schalter, und 40 Regler werden die Tastendrücke und Reglerstellung per Multiplex abgetastet. Die Tastatur und Schalter sind in einer Matrix mit Dioden angeordnet. Die Potentiometer über mehrere 74HC4051 auf die Analogeingänge geschaltet.

Weniger Tasten

Die individuelle Tastatur für 10tet

10tet

Für den Bastel-Prototypen wird eine gewöhnliche Tastatur angepasst, in dem die G# und D# Tasten entfernt und durch gekürzte weisse Tasten ersetzt werden. Dadurch wird eine Folge der Ganz/Halbtoschritte beibehalten, die ähnliche bequeme Kadenzen/Akkorde vergleichbar in 12tet ermöglichen. Es entstehen keine ungleichmäßigen Lücken zwischen den Tasten, die sich bei einer Umsortierung der Tasten ergeben.

Eine andere Lösung, zwei Folgen von C-C#-D-D#-E für 10 Töne in einer Oktave anzuordnen, wäre auch mit unveränderten Spaltenbreiten zwischen den Tasten möglich. Kadenzen würden aber nicht wenige schwarze Tasten involvieren. Die Oktavlage wäre auch nicht sofort offensichtlich.

Prozedurale Spektren

Keine Resynthese! Zufällig gefundener Klang. ;-)

Die Spektralgeneratoren erzeugen die (Amplituden-) Werte für die Teiltöne prozedural, also mit einer Funktion. Die Kosinus-Funktion wird in x-Richtung skaliert und auf die Teiltöne abgebildet. Die Amplitude eines Teiltones ergibt sich aus:

f(n) = |cos(s * n)|

n – Nummer des Teiltones, s – Squeeze

Dieser Parameter "Squeeze" kann manuell, durch Hüllkurve oder LFO gesteuert werden.

Perkussive Sounds

10tet Kadenzen

Die Harmonik in 10tet kann sich in manchen Aspekten am 12-tönigen System orientieren

Die Terz klingt in der 10-tönigen Stimmung mit einem Intervall von 360 cent. Der Charakter ist nicht eindeutig Dur oder Moll zuzuordnen. In 12tet klingt die große Terz mit 400 cent (in reiner Stimmung 5/4, 386 cent), die kleine Terz mit 300 cent (rein 315 cent, 6/5).

Spektralgeneratoren

Vier Spektralgeneratoren erzeugen das Klangspektrum für den additiven Oszillator

Zwei der vier Spektralgeneratoren (SG) erzeugen die Amplitudenwerte für die 12 Teiltöne des Oszillators. Die anderen beiden SG steuern Attack und Decay von Hüllkurven der Amplituden, die den Oszillator steuern.

Spektralgeneratoren / additive Oszillatoren

Die zentralen Komponenten des 10tet-Synthesizers sind einsatzbereit.

axoloti

Zum Erzeugen der Klänge, die für eine 10tet-Skala geeignet sind, kommt die additive Synthese zum Einsatz. Vorteil: Die notwendigen Frequenzen der Teiltöne (die nicht in der harmonischen Reihe sind, also ganzzahlige Vielfache) können direkt im Oszillator vorgegeben werden. Der Nachteil der Additiven Synthese ist die Große Anzahl von Parametern, die mit noch keinem Konzept zufriedenstellend, einfach und schnell editiert werden können.

Der Spektralgenerator

Dieses Modul erzeugt ein Spektrum, also grundsätzlich Amplitude, Frequenz und Phase für jeden Teilton. In der konkreten Umsetzung werden wegen knapper Ressourcen nur die Amplituden für die ersten 12 Teiltöne erzeugt.

Der additive Oszillator

Der Oszillator besteht aus 12 einzelnen in der Frequenz festgelegten Sinusoszillatoren.

Amplitudensteuerung

Für lebendigere Klangverläufe wird jeder Teilton über eine ADSR-Hüllkurve gesteuert.

Aus Gründen der Performance werden diese drei Module direkt in C-Code umgesetzt. Eine Integer-Arithmetik bringt erhebliche Geschwindigkeitsvorteile gegenüber Berechnungen mit Fließkommazahlen. Bei Multiplikationen sind die Faktoren möglichst so zu skalieren, dass der Genauigkeitsbereich optimal ausgenutzt wird. Zu grobe Quantisierung von Parametern erzeugt hörbare Artefakte.

Zur Zeit liegt bei fünf-stimmiger Polyphonie die Auslastung bei 87% des Axoloti. Es werden noch Module zum Abtasten einer Tastatur, LFOs und MIDI Funktionen dazu kommen. Das Ziel ist, mindestens vierstimmig polyphon zu bleiben.

Spektren für 10tet

Hüllkurvensteuerung der Amplituden von Teiltönen.

Für lebendige Klänge eines Oszillators ist eine Modulation von Parametern notwendig. Die im Axoloti verfügbaren Ressourcen erfordern es möglicherweise, nicht auf der Ebene des grafischen Editors, sondern im C-Code direkt nur die allerwichtigsten Funktionen zu implementieren.

Zusätzlich müssen ansprechende, universelle Parametereinstellungen gefunden oder erzeugt werden.

Additiver Oszillator

Oszillator zum erzeugen von für 10tet geeigneten Spektren.

additiv

Ein Oszillator, der gut in 10tet gespielt werden kann, ist wegen der nicht-harmonischen Frequenzverhältnisse der Teiltöne naheliegend als additiver Oszillator umzusetzen. Hier sethares.engr.wisc.edu/paperspdf/cmj98.pdf (S.69) werden für die ersten 12 Teiltöne Frequenzen vorgeschlagen. Der Klang ist zuerst einmal statisch, eine grundsätzilche Herausforderung für eine expressiv-kreative Bedienung eines Instruments ist, die vielen Parameter zu bändigen, und auf wenige Meta-Parameter/Regler zu reduzieren.

Oszillatormodell FM

Einfacher Oszillator mit Frequenzmodulation.

Um Klänge mit hohem polyphonen Verschmelzungsgrad, also Konsonanz, in 10tet zu erzeugen sind Klänge mit harmonischer Teiltonreihe nicht gut geeignet. Mit Oszillatoren nach dem FM (Frequenzmodulation) Modell ist es möglicherweise leichter Klänge für konsonant klingende Akkorde zu bilden, da sich die Verteilung der Teiltöne über die Frequenzverhältnisse der Operatoren leichter steuern lässt.

fm

FM Synthese mit drei Operatoren.

UPDATE:

Die FM-Synthese ist u.U. doch nicht gut geeignet, die für 10tet notwendige Frequenzverteilung der Teiltöne einfach zu erzeugen. Hier besteht weiterer Recherchebedarf, und genauere Analyse des Verhaltens der Bessel-Funktion.

Minimale Kadenzen in 10tet

Akkorde in 10-tönig temperierter Stimmung.
Download: 200510-10tet.mp3

Ein erster Test mit einfachen Akkorden. Manche Akkorde enthalten im weitesten Sinne Leittöne im Tritonus-Abstand, die aufgelöst werden. Vergleichbar mit der Folge Dominantseptakkord –> Tonika in 12tet.

Durch den angepassten Sound klingen die Akkorde fremdartig, aber relativ konsonant.

10 tönig temperierte Stimmung

Alternative fremdartige Stimmungen mit angepasstem Klang.

Inspiriert durch Tuning, Timbre, Spectrum, Scale von William A. Sethares verwandelt der Patch den Axoloti in einen Synthesizer, der in 10tet spielen kann.

Die 10-tönig gleichschwebend temperierte Stimmung (10 tone equal tuning, 10tet) teilt die Oktave in 10 gleich große Tonschritte auf. Vergleichbar mit der 12-tönig gleichschwebend temperierten Stimmung, die in der westlichen Musik verwendet wird.

Konventionelle Musikinstrumente, insbesondere elektronische oder Software-instrumente lassen sich u.U. relative einfach in dieser Stimmung spielen. Der Klang konventioneller Instrumente erzeugt im mehrstimingen 10tet Spiel aber keine überzeugenden Konsonanten. Die Teiltöne gewöhnlicher Klänge (Chordophone, Aerophone, etc.) sind in der harmonischen Reihe (ganzzahlige Vielfache der Grundfrequenz) enthalten. Für Konsonanzen in 10tet sind aber andere Frequenzverhältnisse notwendig. Diese werden im Axoloti-Patch mit einem additiven Oszillator umgesetzt.

patch

Die Grundlage der 10tet Stimmung des Patch ist /Library/factory/demos/midi_fx/alternate_tuning im Axoloti. Als Oszillator werden additive Sinusoszillatoren mit angepassten Frequenzverhältnissen zusammengemischt. Für mehrstimmiges Spiel ist der Oszillator in einem Subpatch angelegt.