Synthesizer-Diplom (Digitale Synthesizer, Grundlagen)

Digitale Synthesizer

2 Digitale Grundlagen
2.1 Was ist “digital”?

Bevor die Vorteile und die Technik von “Analog”- und “Digital” Synthesizern besprochen werden, ist es nötig, den Unterschied zu erklären: “digitale” Zustände kommen in der Natur nicht vor, es ist eine Technik der Vereinfachung durch Darstellung von physikalischen Größen in einem Zahlenraster. Konkret: eine Steuerspannung, die jeden Wert annehmen kann, ist formgleich; wie in der Natur; eine analoge wert- und zeitkontinuierliche Größe. Wenn man diese Größe als digital bezeichnen will, so bedeutet dies, sie wird als Zahlenwert auf einer ebenfalls gerasterten Zeitachse als diskrete Zahl ausgedrückt (Beispiel für die: y Achse: Auflösung: 8 Bit = 65536 Werte, dadurch ergeben sich Stufungen; erhöht man die Auflösung, werden die Stufen kleiner, aber niemals so fein wie das analoge “Soll-Pendant”; die x Achse: wieviele “Proben” werden genommen pro Sekunde?).
Um das digitale Signal dem Analogvorbild anzunähern, kann man:

– Die Anzahl (Auflösung) der Werte zwischen Maximal- und Minimalpunkt vergrößern (die Treppe hat mehr Stufen = feineres Abbild). Ein Analogwert ist stufenlos, der digitale muß hier zwischen zwei diskreten Werten unterscheiden (=”Quantisierung”) und kann nur innerhalb dieser Werte operieren.

– Mehr Werte auf der x-Achse entsprechen häufigerem “Abfragen”, also mehr Einzelproben, die “Samples” (Treppe hat schmalere Stufen = feineres Abbild). Häufigeres Abfragen erhöht die oberste hörbare, wiedergegebene Frequenz, muß also nicht “gegen unendlich” tendieren, wie der y-Wert, sondern kann im hörbaren Bereich bleiben. Hierbei sind noch andere Dinge wichtig, welche mit der Abtastung zusammenhängen. Zu nennen sei hier das “Nyquist-Theorem”, das ähnlich dem Effekt des scheinbaren Rückwärtslaufes von Filmen besagt, die doppelte Abtastfrequenz zu verwenden, um nicht ungewollt Wellendurchläufe zu “überspringen” und somit falsch wiederzugeben. Dies soll zugunsten des Umfangs der Arbeit nicht weiter vertieft werden.

Als Beispiel für die Reduktion einer analogen auf eine digitale Wellenform hier eine Prinzipskizze (Seite 6 oben) einer Sinuswellenform. Die Umwandlung ist nötig, um sie mit Computern weiterverarbeiten zu können.

“Analog” “Digital”
wavetable
digital

Ein letzter Punkt zur Verdeutlichung ist die praktische Umsetzung in die Realität: Ein Analogsynthesizer ist aus verschiedenen Baugruppen (also Modulen), welche eine bestimmte Funktion erfüllen, zusammengesetzt. Jede Baugruppe kann, wie bei analogen Modularsystemen gut zu erkennen, als eine in sich geschlossene, (fast) autarke Einheit gesehen werden, die mit anderen Modulen durch entsprechendes Patchen verbunden werden. Bei nicht- oder teilmodularen Systemen sind diese Verbindungen bereits ab Werk intern verdrahtet. Ein reiner Digitalsynthesizer besteht ebenfalls aus solchen Baugruppen mit dem Unterschied, daß sie als Computerprogramme (bzw. “Unterprogramme”) in Form eines Algorithmus bestehen. Diese (Einzel-)algorithmen besitzen die Möglichkeit zur Übergabe von Parametern zur Ein- und Ausgabe, welche mit den Patchkabeln zwischen den Analogmodulen vergleichbar sind.

Jetzt kann man erkennen, daß der Digitalsynthesizer eine Datenverarbeitungsanlage, ein Computer, ist. Dieser ist, weil er ja keine (analogen) elektrischen Spannungen oder verschiedene Schalldrucke verarbeitet, sondern mit Algorithmen (also Zahlen) umgeht, mit Wandlern ausgestattet sein, die das digitale “Signal”, also Zahlenkolonnen, in elektrische Spannungen (Spannungsschwankungen) umsetzen (und umgekehrt).
Die Vorteile der digitalen Geräte sind:-

leichter / preiswerter herstellbar-
reproduzierbare Ergebnisse / mögliche Verarbeitung durch Computer-
neue Funktionen leichter integrierbar / austauschbar
2.2 Sampling

Ein “Sample” ist die digitale Aufnahme eines Geräusches, welches oft als Erweiterung subtraktiver Synthesizer eingesetzt wird (siehe Kapitel “Synthesetechniken”), um Naturklänge oder Startphasen eines Klanges (sehr entscheidend zur Erkennung eines Instrumentes) authentischer und schneller zur Verfügung zu haben.

Um Samples zu benutzen, müssen diese im Speicher des Synthesizers (also des Computers im Synthesizer) abgelegt sein, welche entweder ab Werk fest in einem Chip (einem ROM = Read Only Memory, siehe dazu Abschnitt 2.3 Computer) oder von außerhalb in den Daten-Speicher des Synthesizers geladen werden. Dies geschieht durch Datentransfer über eine Schnittstelle oder Massenspeicher wie Disketten oder Festplatten. Eine übliche Methode ist die Benutzung von Analog- / Digital (A/D) – Wandlern, welche die Entsprechung bei der Ausgabe durch Digital / Analog (D/A) – Wandler sind. Hierbei gibt es viele Methoden. Die zur Zeit übliche ist die “Delta Sigma” Wandlung (Messung relativ zum vorangegangenen Meßwert).

Wie Tonhöhenänderungen erreicht werden siehe auch Kapitel 3.2.1.

Samples haben einen Start- und Endpunkt, sowie eine (oder mehrere) Schleifenbildungmöglichkeit(en) mit eigenen Start- und Endpunkten (“Loopstart- und Endmarkierung”). Die Schleife(n) sind für die Phase des Klanges, in der die Taste gedrückt bleibt, zuständig. So ist es möglich, auch einen Streicherklang “unendlich langzuziehen”, bis die Taste losgelassen wird (durch Wiederholen, also “Loopen” eines Teils des Samples). Der Ausklang kann auch oft mit einer zweiten solchen Schleife (“Loop”) belegt werden.

Professionelle und aktuellere Sampler haben zumeist eine komplette subtraktive Einheit mit “an Bord” und sind somit auch als Synthesizer zu sehen (wie zum Beispiel der E-mu “Emulator IV”). Die Oszillatoren haben hier Samples als “Wellenform”, die nachher eine Filtereinheit passieren, das heißt: dynamisches Verändern bestimmter harmonischer Teiltöne. Natürlich können auch die Grundwellenformen als Sample benutzt werden, digitale Oszillatoren sind oft ebenfalls in dieser Weise realisiert (andernfalls werden sie algorithmisch, also nach einer Rechenvorschrift in einem Programm erzeugt).
Deshalb kann man “Sampler” und “Synthesizer” nicht getrennt sehen, wie auch der “Workstation”-Begriff (Synthesizer mit eingebautem Sequencer und Schlagzeugsounds) lediglich auf eine Spezialisierung hinweist, und die Grenzen zunehmend verschwimmen oder gar nicht mehr zu erkennen sind.

Eine Auswahl einiger digitaler Synthesizer und Samplermodule:
Von oben nach unten (rechtes Foto):
– ENSONIQ ASR – 10 (Sampler mit Effektprozessor) & Wechselplattenlaufwerk
– YAMAHA TG-77 (FM-Synthesizer mit Samplewiedergabe = “AFM”)
( YAMAHA Effektprozessor SPX 900 )
– WALDORF Microwave (Hybrid Wavetable-Synthesizer)
– CLAVIA Nord Lead (digitaler virtueller “analog”-Synthesizer)
– E-MU Emulator IV (Z-Plane-Sampler)& Wechselplattenlaufwerk (nicht im Bild)
( ENSONIQ Effektprozessor DP/4 )

Von oben n. unten (Linkes Foto):
OBERHEIM Xpander
(Analog-Synthesizer)
KORG Prophecy
(M.O.S.S. Synthesizer)
ENSONIQ SQ80
(Hybridsynthesizer)

2.3. Computer
2.3.1 Hardware

Ein Computer ist eine Einrichtung zur Eingabe, Verarbeitung und Ausgabe von Daten. Im Prinzip werden nur Kombinationen von “Einsen” und “Nullen”, genauer gesagt zwei Zuständen, wie z.B. “5 Volt” oder “0 Volt”, benutzt. Diese Zustände werden im Binär- (oder Dual-) System dargestellt, ein Zahlensystem mit der Basis zwei. Proportional zum dezimalen (Zehner-) System können die Stellen der Ziffern durch eine Potenz dieser Basiszahl dargestellt werden:

2343 (dezimal)= 2x 103 + 3x 102 + 4x 101 + 3x 100

Ein zweites Beispiel:
1001 (binär)= 1x 23 + 0x 22 + 0x 21 + 1x 20
Der Dezimalwert dieser Binärzahl entspricht dem Ergebnis der Potenzen (hier also “9”).

Die einzelnen Ziffern zeigen auch deutlich, daß der maximale Wert durch Hinzunahme einer weiteren Ziffer verdoppelt werden kann. Die Bitbreite (Datenwort), die ein Computer gleichzeitig verarbeiten kann beträgt meist 8,16 oder 32 (usw…). Obwohl ein Byte = 8 Bit sind, ist es unüblich, die Prozessorwortbreite in Byte anzugeben. Nun aber erst einmal zur technischen Seite, um die Fremdworte zu erklären:
Das obige zweite Beispiel ist eine 4-Bit Zahl. Will man die Gesamtspeicherkapazität angeben, so kann man die üblichen Bezeichnungen der Physik verwenden, also “1 KiloByte” für 1000 x 1 Byte = 1024 Byte, abgekürzt “1 kB”. Die 1024 ergeben sich durch 8 Bit, die 1 Byte enthält.

Zentrales Element des Rechners ist die CPU (Central Processing Unit = Prozessor), welche(r) aus Rechenwerk, Steuerwerk und einem kleinen Speicher (=”Register”) besteht. Diese CPU ist über Busse / Bussysteme (=parallele Leitungen, die die Information, jene oben beschriebenen Binärinformationen, weiterleiten) mit dem eigentlichen Arbeits- und Datenspeicher (RAM und ROM, siehe unten,) sowie der Ein- / Ausgabe verbunden, z.B: Tastatur, Display oder Wandler (eine Einrichtung zum Umsetzen von analogen in digitale Signale und umgekehrt). Ein Taktsignal bringt den Prozessor dazu, den nächsten Schritt, einen Befehl, auszuführen. Genauer: den Befehlszähler “weiterzuschalten”, bzw. Zwischenschritte zur Lösung mathematisch – logischer Probleme “weiterzuschalten”.

Hier die wichtigsten Bestandteile und Bezeichnungen eines (rudimentären) Computers:

Befehl
: Eine Anweisung an das Rechenwerk oder den Befehlszähler, eine logische Operation durchzuführen, z.B.: Springen (bedingt oder unbedingt), addieren, o.ä. (…)

Betriebssystem: Programm, das die Grundfunktionen des Systems enthält (wird vom Anwender nicht geändert), jedoch die Benutzeroberfläche, die “Schnittstelle” zwischen Mensch und Gerät (Bekannte Betriebssysteme sind u.a.: “Mac OS”, “Windows ´95” oder “OS/2” bei Computern).

Bus: Eine Reihe von parallelen Leitungen zur Übertragung der binären Information:
Adressbus: Wählt eine Speicherzelle oder einen Speicher der Ein- / Ausgabe an (Synthesizer: Der Wandler soll einen Wert auslesen oder hineinschreiben oder: Displayausgabe anwählen, usw…).
Datenbus: Ein Wert wird hier ein- / ausgegeben (z.B: Ausgabe des Wertes an das Display: Es soll “Attack=12” anzeigen).
Steuerbus: Synchronisation aller Rechnerkomponenten und Organisation.

EPROMS / EEPROMS: “Festspeicher” – ROMs, die löschbar und beschreibbar sind. Das doppelte “E” (für “electrical eraseable”) deutet auf die generell elektrisch mehrmalige Lösch- und Beschreibbarkeit hin. Dieses Bauteil wird oft verwendet für die Parameterspeicherung der Einzelklangprogramme, die einfacheren EPROMs hingegen werden gern für das Betriebssystem genutzt, da es nicht sehr oft ausgetauscht werden muß (“Eraseable Programable ROM” = begrenzt häufig löschbares ROM). Diese Speicher werden nicht durch Ausschalten gelöscht.

Hardware
: Die Technik, (“festverdrahtet”).

Programm:
Eine logische Folge von Befehlen (Arbeitsanweisungen), welche aus einem festbegrenzten und für diesen Prozessor (CPU) genormten Vorrat von Befehlen aus einer Gesamtvorratsliste besteht.

Rechenwerk: Der Prozessor-Teil, in dem (z.B.) addiert wird, also der Befehl ausgeführt wird, wie etwa: “Eine Zahl aus dem Daten – Speicher holen, zu einer anderen hinzuaddieren und das Ergebnis in einer weiteren Speicherzelle ablegen”.

Schnittstellen / IO-Ports:
Verbindungen mit anderen Geräten über genormte, physikalische “Hardwarekommunikationsverbindungen” und Softwareprotokolle zur Steuerung der Datenübergabe. Hierüber werden andere Geräte angeschlossen, wie Drucker oder Synthesizer (über MIDI = Musical Instrument Digital Interface = Normschnittstelle für Musikinstrumente). “IO-Ports” steht für “Input – Output – Anschluß”, also Ein- / Ausgabebausteine, bzw. Schnittstelle(n).

Software: Programme und Daten, (“veränderbar”).

Speicher: Der Speicher ist eine Einrichtung aus einzelnen “Speicherzellen”, die durch den Adressbus angewählt werden. In einer solchen “Speicherzelle” ist eine Zahl gespeichert, die auch wieder über den Datenbus ausgelesen, gelöscht oder überschrieben werden kann. Dabei gibt es das RAM (Random Access Memory = Speicher mit freiem Zugriff) als Arbeits- und Datenspeicher, aus dem Daten ausgelesen und geschrieben werden können und das ROM (Read Only Memory = Nur – Lese – Speicher), aus dem nur gelesen werden kann. Hier stehen für den Anwender unveränderliche Daten. In Synthesizern sind das u.a.: Tastatursteuerung, (Werks-) Sampleklänge / (Werks-) Sounds (=Parameter dieser Klänge).
Es gibt auch die Möglichkeit, das Betriebssystem in ein RAM zu laden und bei jedem Neustart (über Diskette / Festplatte) jedesmal erneut alle Daten zu laden. Meist ist das Betriebssystem von Synthesizern jedoch im ROM zu finden. RAMs werden gelöscht beim Ausschalten, (E/EP)ROMs nicht. ROMs behalten ihren Inhalt ebenfalls. Eine Akkupufferung der RAMs ist eine Möglichkeit, um dieses Problem zu umgehen.

Steuerwerk
: Koordiniert den Ablauf des Programms. Es weist das Rechenwerk an, einen Befehl umzusetzen und das Ergebnis in den prozessorinternen Zwischenspeicher zu bringen, bzw. in / aus dem Speicher (RAM / ROM) zu lesen, wo Daten (etc…) gelesen oder gespeichert werden sollen.

Die Aufgaben sind:

1.Adressierung (Anfahren einer bestimmten Speicherzelle)
2.Auslesen
3.Decodierung (Heraussuchen des Befehls aus der “Vorratsliste” / Anweisung des Rechenwerkes)
4.Ausführung eines Befehls eines Programms anzuweisen.
Noch einige Worte zu logischen Verknüpfungen und Operationen:
Jede der verschiedenen Befehle für das Rechenwerk (alle mathematischen Operationen, jedoch nicht die “unbedingten Sprungbefehle”) werden durch ihre Kodierung ausgewählt, z.B.: Befehl “011” kann bedeuten: “addieren” oder: “durch eine UND Logikoperation verknüpfen”.. Sprungbefehle werden zwar auch in dieser Art kodiert, führen aber nur zur Änderung des Befehlszählerstandes.

Hier exemplarisch die Arbeitsweise des logischen “UND”:
Die Wertetabelle für das logische UND lautet:

Bei Variable 1 Variable 2 Ergebnis
0 0 0
0 1 0
1 0 0
1 1 1

Nur wenn Variable 1 UND Variable 2 = 1 sind, ist das Ergebnis 1. Solch eine Wertetabelle wird aufgestellt und dann in Form einer Schaltung realisiert, auch bei anderen logischen Verknüpfungen.

Beim logischen ODER wäre dies also:

Bei Variable 1 Variable 2 Ergebnis
0 0 0
0 1 1
1 0 1
1 1 1

Wenn Variable 1 ODER Variable 2 gleich 1 ist, ist das Ergebnis 1.

Man kann der besseren Anschauung wegen auch “wahr” und “falsch” benutzen (statt “0” und “1”) oder auch “offene” und “geschlossene” Schalter, etc.. Bei Benutzung von Schaltern ist die Reihenschaltung zweier oder mehrerer Schalter mit der UND Schaltung identisch, die Parallelschaltung hingegen entspricht dem logischen ODER.

Interessant ist, als letztes Beispiel, der Addierer für binäre Zahlen, stellvertretend für andere Funktionen hier beschrieben:

Wenn Ziffer1 und Ziffer2 binär addiert werden, gibt es nur diese Möglichkeiten:

0+0=0 ; 0+1=1, bzw. 1+0=1 ; 1+1=1.

Zusätzlich muß für die nächst höherwertige Stelle ein “Übertrag” gesetzt werden (“Übertrag =1”). Wenn kein Übertrag mehr gesetzt wird, ist somit das maximal errechenbare Ergebnis erreicht, bzw. begrenzt durch die Stellenanzahl! Das “Additionsergebnis” ist ein logisches “ODER” -Verhalten. Der Übertrag ist ein logisches “UND” (beides natürlich Verknüpfungen zwischen den beiden Ziffern als Variable).

Nun erkennt man die Realisierbarkeit aus logischen Funktionen von mathematischen Problemen! Die Gesamtheit der mathematischen Befehle sind in einem Arithmetik- und Logik – Netzwerk im Rechenwerk enthalten. Des weiteren enthält es “Register” als Zwischenspeicher (1 Byte groß). Auf dieser Ebene rechnet der Computer jeden einzelnen Befehl (jede Zahl nacheinander) aus.

Es können in neueren Prozessoren theoretisch auch parallel Zahlen addiert werden, dies beschleunigt den Rechner dadurch, daß er innerhalb eines Prozessor – Taktschritts mehrere Zahlen bereits addiert hat. Die Wortbreite des Prozessors muß natürlich entsprechend groß sein.

Ein aktuelles Beispiel für die Anwendung des parallelen Ausnutzens des gesamten Prozessorbusses (etc…) ist “MMX” für Intel Pentium- Prozessoren.


2.3.2 Software

Als Befehlstypen für die Software gibt es für den einfachsten Rechner somit: Transferbefehle (Speicher- und Registerinhalte vertauschen oder mit einem Wert “laden”), Sprungbefehle und Rechenoperationen sowie organisatorische Befehle (z.B: Stop).

Wie sieht dies nun praktisch aus? Es wird eine Software (ein Programm) geschrieben, welches alle logischen Schritte zu einer Problemlösung enthält und nacheinander abarbeitet: Die Summe dieser Einzeloperationen führen dann zum Ziel, wie z.B: Die Errechnung einer Sinuswelle, die Filterung oder das Lauter- und Leiserwerden durch eine “Hüllkurve” gesteuert, die in Echtzeit berechnet werden muß, d.h. sie ist nun “nur” ein Programm, bzw. ein Programmteil! Es gibt hier Sprünge und Unterprogramme, die eine bestimmte Aufgabe haben..

Ein fiktiver Computer soll eine positivflankige Dreieckswellenform ausgeben, beherrscht aber nur die Befehle “addieren”, “subtrahieren”, “springen” und “Transferbefehle”, die durch den Prozessor vorgegeben sind. Dies könnte so aussehen:

Die komplette Befehlsliste wäre hier zunächst zu definieren (durch den Hersteller bereits getan). – Alle möglichen Aufgaben, die der Prozessor (CPU) beherrscht, sind die folgenden:

Befehlsnummer: Befehl:
(Maschinenbefehl)
000 Setze (Wertzuweisung einer variablen Speicherzelle des Prozessors = Register)
001 Addiere x (Addition eines Wertes zum jetzigen Registerwert)
010 Subtrahiere x (Subtraktion vom aktuellen Registerinhalt)
011 Springe nach x, wenn reg
(Sprung zu einer anderen Befehlszeile im Programm Befehlszähler=x, wenn Bedingung erfüllt).
100 Springe nach x, wenn reg=0 (dito)
101 Gehe zu x (unbedingter Sprung zu einer Befehlszeile (Befehlszähler=x).
110 Transferiere Register nach Adresse y
(der Registerwert wird in eine andere Speicherzelle/Ausgabe geschrieben).

Die Synthax (eine formale Regel der Befehlsstruktur) ist hierbei:

(Befehlsform:=) Befehl (was soll getan werden?), Variable (wo sind die Daten?)

Ein Programm zu obigem fiktivem Problem lautet:

Maschinenbefehl Befehlszähler: Befehl:
000,0 0 Setze reg = 0.
110,adr 1 Transferiere Registerinhalt nach “Ausgabeadresse”.
001,1 2 Addiere zum Registerinhalt 1 hinzu (reg=reg+1).
011,max 3 Ist reg < maxmum? Dann springe nach Programmnummer 1.
110,adr 4 Tranferiere Registerinhalt an Ausgabeadresse.
010,1 5 Subtrahiere von Registerinhalt 1 (reg=reg-1).
100,0 6 Ist reg=0 ? Dann springe nach
Programmnummer 4.
101,1 7 Gehe zu Programmnummer 1
(zurückspringen nach oben / auf Befehlsnummer 1 springen,
also Befehlszähler auf 1 setzen).

adr=Ausgabeadresse; max=Maximaler möglicher Wert;
reg=variables Prozessor-Speicherregister (der sogenannte “Akkumulator”)

Diese Maschine braucht 3 Bit zur Kodierung aller Befehle. Eine weitere Bitfolge, welche durch die Breite des Busses begrenzt ist, ist für den eigentlichen Wert, z.B: bei 8 Bit Wortbreite gibt es 65536 Zustände (Die Zahlen 0 bis 65535); kleinere Stufungen als zwischen den Ziffern (also Kommastellen) sind nicht möglich.

Der Wandler kann diese Wertefolge sooft pro Sekunde ausgeben (und halten), daß ihre Frequenz von der Geschwindigkeit des Rechners abhängig ist (taktabhängig). Dieses Beispiel müßte daraufhin optimiert werden, auf ein Signal der Tastatur mit der richtigen Frequenz der Dreieckwelle zu reagieren, denn das Programm gibt in dieser Version nur ein steigendes, dann fallendes “Signal” aus, was natürlich nicht sehr realitätsnah ist. Wenn nun eine Modulation zu dieser Frequenz noch hinzukommt (aufmoduliert werden soll), muß dieses Programm abermals eine Änderung erfahren; gemäß des Standes des Pitchwheels (“Tonhöhenbeugungsrad”) muß dann sein Wert “aufaddiert / subtrahiert” werden. In der Praxis werden andere Verfahren benutzt, dazu später mehr..

Das Programm arbeitet so, daß es zunächst einen Wert definiert (Null) und ihn danach, durch Zuzählen von “Eins”, steigen läßt und dies wiederholt, bis der Maximalwert erreicht wurde. Dann verläßt es die bedingte Schleife (Befehle 1 bis 3), und danach wird immer wieder “Eins” subrahiert, bis “Null” erreicht wird. Die nächste bedingte Schleife (Befehle 4 bis 6) wird dann beendet. Hernach wird ein Sprung zu dem Punkt initiiert, nachdem der Wert zum ersten Mal auf “Null” gesetzt wurde, was eine Endlosschleife darstellt. Der Transferbefehl steht für das “nach außen bringen” des errechneten Wertes, ohne den das Programm sinnlos wäre.

Anhand dieses sehr einfachen Programms kann man nun sicher jeden logischen, einfachen Einzelschritt leicht nachvollziehen, und es wird für die Realisation eines Synthesizers wesentlich klarer, wie so etwas generell programmiert werden kann. Wichtig ist vor Allem das Wissen, daß es sich nur um die Gesamtheit vieler ineinander verschachtelter Programmteile handeln kann (und muß). Die einzelnen Operationen sind sehr einfach.

Die Befehlsstrukur eines modernen und leistungsstarken Power – PC – Chips, wie er beispielsweise in einem Apple Macintosh Computer verwendet wird, erreicht um die einhundert verschiedene Befehle, es kommt nur auf die sinnvolle, gut strukurierte und geplante Programmierung mit einfachen Befehlen an, die die “Intelligenz” der Software ausmacht! Die “Intel”-Prozessoren arbeiten nach einem anderen Prinzip, nämlich mehr Befehle zu beherrschen, dafür aber mehr Taktzyklen zu benötigen – es gilt auch hier: aus “ein wenig mehr” Befehlen das Programm logisch zu strukturieren, etc… Welche Prozessorstrukur verwendet wird, ist prinzipiell völlig irrelevant, und außerdem erleichtern Programmiersprachen diese Arbeit und sind für alle Rechner erhältlich (zur Zeit meist “C++”). Diese arbeiten auch mit Befehlen, welche schon eine Kette der (oben erklärten) Maschinen-Befehle beinhalten und danach übersetzt (“compiled”) werden in die computereigene Maschinensprache (auch “Maschinencode” oder “Mnomics” genannt). Innerhalb dieser Sprache sind selbstverständlich auch Schleifen (etc…) möglich, sowie die Bildung einer Bibliothek aus Programmen, welche oft verwendet werden, wie etwa die Eingabe, Fourieranalyseberechnungen, Bildschirmausgabe, Zeichnen eines Kreises, usw…

Nun zu der tatsächlich verwendeten Methode der digitalen Oszillatoren, welche eine bestimmte Wellenform ausgeben können. Eine Methode ist das Auslesen einer Liste (“table – lookup”-Verfahren) von Werten aus dem ROM, welche die Wellenform (keiner bestimmten Frequenz) beschreibt, eine Kurvenform, wie z.B. eine Sinuswellenform. Die Auslesegeschwindigkeit für einen Durchlauf – Zyklus (Eine komplette “Wellenberg- und Talfahrt” = eine Periode) ist bestimmend für die jetzt hörbare Frequenz, die auch von anderen Quellen leichter modulierbar (beeinflußbar) ist. Denn auch hier gilt: Ein Durchlauf pro Sekunde entspricht einem Hertz. Ein Vielfaches durchlaufen ergibt die entsprechende Wunschfrequenz. Die Anzahl der Werte in dieser Tabelle ist allerdings auch begrenzt und wird durch Weglassen oder Interpolieren (s.u.) angeglichen, um alle Tonhöhen zu erreichen. Dieses Verfahren ist verhältnismäßig wenig rechenintensiv, da die Werte schon direkt zur Verfügung stehen und nur “angepaßt” werden.

Die zweite Möglichkeit, die mehr “Echtzeitberechnung” erfordert, ist die algorithmische Generation der Werte, also ein rein mathematisches Erzeugen dieser Wellenform, was selbstverständlich nicht mit “Natur-Samples” funktioniert. Aber Möglichkeiten wie “Pulsbreitenmodulation” (dies ist das Verändern, bzw. Verschieben der Symmetrie einer Rechteckwelle) oder jede andere mathematisch beschreibbare “Wellenformänderungsart” sind ohne große Samplespeicher realisierbar, solange der Computer noch “Rechenpower” übrig hat.
Des weiteren ist bei der Verwendung von Samples (eine sehr gebräuchliche Methode in aktuellen Geräten), ähnlich dem obigen Verfahren, die veränderte Auslesegeschwindigkeit (“sample rate”) der gespeicherten Samples zur endgültigen Frequenzsteuerung eine potentielle Variation, die ältere Sampler verwendeten. Auch Kombinationen aus beiden Verfahren gibt es.
Die Software kann bei allen Verfahren um neue Basiswellenformen, sogar “Wellenformverläufen”, erweitert werden und ist prinzipiell jederzeit erweiterbar…
Die bei höherer Ausleserate “fehlenden” Werte werden durch die sogenannte “Interpolation” berechnet. Interpolation bedeutet hierbei zwischen dem aktuellen und dem nächsten Wert einen “Mittelwert” zu bilden. Wichtig ist das nahtlose Übergleiten in einen anderen (den nächsten) Wert. Die benutzen Verfahren sind verschieden. Im obigen Verfahren benutzt man es zur Ergänzung fehlender Werte anhand gespeicherter Werte.

Eine andere Anwendung dieses Prinzips an ganz anderer Stelle soll hier kurz erwähnt werden:
Der Clavia “Nord Lead” kann zwei Sounds ineinander überblenden, indem deren aktuelle Parametereinstellung gleichförmig in den “zweiten Parametersatz” übergeleitet werden:
Während ein Parameter “Cutoff” des Werte – Bereichs 0-127 von “45” auf “122” gebracht werden muß, kann ein anderer Parameter “Waveform OSC1” des Werte – Bereichs 0-2, also “Dreieck”, “Sägezahn” oder “Rechteckwelle” von “1” auf “2”, also von “Sägezahn” auf “Rechteck”, gebracht werden und dies in entsprechendem Verhältnis in derselben Zeit. Diesen Weg empfindet man als “morphing”, denn es ist keine Überblendung im Sinne einfacher Lautstärkebalanceregelungen, daher ist der Begriff “Überblenden” hier und im weiteren Verlauf nicht wörtlich zu nehmen. Bekannt ist diese Technik auch im Grafikbereich.

Einen Eindruck dieser Überblendungsberechnung kann man auch grafisch aus der Wellentabelle des Microwave bekommen (Abbildung in Kapitel 3.2.1).

Aufgeräumt: Der CLAVIA Nord Lead mit “parametermorphing” von innen (2 DSPs unter mittleren Platine). Links: DSP und Prozessor (quadratisch), sowie Software-EPROMS (etikettiert).

2.3.3 Modulation
(Performance – Probleme mit digitaler Technik)

Auch wenn das Synchronisationsproblem des fiktiven Beispielcomputerprogramms gelöst ist, z.B. durch zeitsynchrone Programme, interne Uhr etc…, gibt es nun die Aufgabenstellung der begrenzten Taktgeschwindigkeit und damit auch eine begrenzte Arbeitsgeschwindigkeit. Dies ist die Rechenleisung, genannt “performance”. Das bedeutet auch: Ein superschnelles “Algorithmus-LFO” (s.u.), eine “Hüllkurve” etc.., also viele zeitaufwendige Modulationen brauchen mehr Performance und müssen begrenzt werden durch diese Maßnahmen:

A. Eine begrenzte Anzahl der modulierenden Quellen.

sowie

B. EineGeschwindigkeits und Auflösungsbegrenzung der Modulatoren (Beispielsweise: LFOs = Niederfrequente Oszillatoren, die maximal auf 30 Hz beschränkt sind). Oftmals auch in Form der “Updatezeit” des Systems.

Diese Anforderungen werden sicher durch die Wünsche der späteren Käufer gesetzt, und danach richtet sich auch die Leistung der Hardwarezusammenstellung (Prozessor, Taktfrequenz etc..) und dessen Geschwindigkeit / Effizienz.

Ein praktisches Beispiel: Die Firma Waldorf muß zur Erstellung des “Microwave 2” einige Überlegungen anstellen, um “Performance zu sparen”: Man ist entschlossen, zwei LFOs mit einer maximalen Frequenz von 100 Hz, 10 Stimmen, 2 Multimodefilter (24 dB und 6 dB) usw… zu realisieren. Dazu nimmt man im Vergleich zum Vorgänger “Microwave” nicht nur eine neue Hardware (zwangsweise mit höherem Takt und (oder) schnellerem Prozessor), sondern spart Dinge ein, wie MIDI Filter pro Multimodesound (um MIDI-Controller oder Programmwechselbefehle jeweils einzeln pro Sound auszufiltern) oder Modulationsverbindungen etc..
Dadurch ergibt sich: Da diese Funktionen selten alle gefordert wurden, bekam die Hardware “etwas Rechenzeit zurück”, die für mehr Stimmen oder Filtermöglichkeiten oder auch die neue “Ringmodulation” (Erklärung: s.u.) frei nutzbar ist. Die Frage, was nun erreicht wird, (oder was evtl. weggelassen werden kann) ist Firmenpolitik oder eine Finanzfrage…
Zumindest sind theoretisch keine Grenzen -außer der Rechner Performance- gesetzt, jeder Funktion mehr oder weniger Möglichkeiten einzuräumen. Auch “nur” durch eine andere, verbesserte Software, die im Fall “Waldorf Microwave 2” von außen nachträglich änderbar ist, kann das System total umfunktioniert werden. Hiermit werden Optionen möglich wie etwa ein Angebot, eine Funktion, welche der Käufer gerne implementiert hätte, zu verbessern oder erstmals zu integrieren. Sehr deutlich wurde dies durch ein Gespräch mit dem Waldorf-Spezialisten mit etwa dem Fazit: “Wenn ich herausbekomme, wie die Softsynchronisation funktioniert, liefern wir sie im nächsten Update sofort nach”.
Oft kann ein Programm noch optimiert und eventuelle Fehler beseitigt werden. Als Beispiel sei schließlich das Update (=neue Softwareaktualisierung) des Clavia “Nord Lead” erwähnt, welcher mit derselben Hardware nun mehr Filtertypen, einige Drumsets (“elektronische Schlagzeugsounds”) und diverse andere Verbesserungen bekam, denn auch für den Hersteller ist es von Vorteil, ein stets aktuelles Gerät auf dem Markt zu haben. Dem schon erwähnten Microwave 2 gab man daher auch die Möglichkeit mit, ihm über die MIDI-Schnittstelle ein neues Betriebssystem zu senden, welches sich dann praktisch auf einer Diskette für gängige Sequencer-Programme -wie Steinbergs “Cubase”- leicht verwirklichen läßt. Es ist schließlich auch möglich, dieserart Daten über eine Mailbox oder das Internet zu beziehen…

Um ein anderes System zu nennen und nocheinmal zu verdeutlichen, wie offen und flexibel die Konstruktionen selbst sein können: Die Quasimidi “Rave-O-lution 309” ist ebenfalls ein Computersystem, welches prinzipiell auch andere Funktionen übernehmen könnte. Dieses Gehäuse und diese Bedienelementeform hat man dem Gerät “mitgegeben”, um mit einer Spezialisierung auf Drums und Bass, sowie der Livetauglichkeit und spontanen Änderungsmöglichkeit der Parameter entsprechend gerecht zu werden und diese perfekt meistern kann. Eine Softwareänderung (in z.B. einen “FM Synthesizer”) wäre hier natürlich wenig sinnvoll und mit einem “500´er Mercedes” zu vergleichen, der jetzt zu einem Transporter umgebaut werden soll, nur weil er die gleiche Motorleistung hat.
Ein letztes Beispiel sind offene Computersysteme wie Symbolic Sounds “Kyma”. Die Synthesestruktur ist völlig frei definierbar, und man kann sich hier sein “digitales Modularsystem” selbst konfigurieren und parametrisieren: Es ist alles eine Softwarefrage und vor allem eine Rechengeschwindigkeitsfrage, wie flexibel der neue “virtuelle Synthesizer” jetzt ist, denn man hat nicht die Limits durch ein spezielles Gehäuse. Selbst der vielseitige Korg “Prophecy” kommt hier kaum mit..

Oben: Die Innenansicht des WALDORF Microwave. Rechts: Prozessor und Software-EPROMs.
Unten: YAMAHA TG77 FM-Synthesizer mit Samples (offen).


ZURÜCK ZUM HAUPTMENÜ.. weiter..