Digitale Klangsynthese mit Hilfe Genetischer Algorithmen Diplomarbeit im Fachbereich Informatik und Mathematik der Hochschule fü r Technik und Wirtschaft Dresden von Jörg Hentschel Dresden, November 2002 Betreuer: Prof. Dr. rer. nat. habil. H. Iwe Inhaltsverzeichnis Inhaltsverzeichnis .............................................................................................. 3 Vorwort ................................ ................................ ................................ ............. 5 1 Einleitung ......................................................................................................... 7 1.1 Motivation ................................................................................................ 7 1.2 Verwandte Arbeiten................................................................ .................. 8 1.3 Ansatz ................................ ................................ ................................ .... 10 2 Genetische Algorithmen ................................................................ ................ 13 2.1 Grundlagen der Evolution und Genetik ................................ ................... 13 2.2 Informatik und Evolution................................ ........................................ 15 2.3 Abstraktion der Evolution....................................................................... 16 2.4 Repräsentation ................................ ........................................................ 22 2.5 Evaluation und Fitneß ................................ ................................ ............. 24 2.6 Reproduktion.......................................................................................... 25 2.6.1 Selektion ..................................................................................... 26 2.6.2 Kreuzung..................................................................................... 28 2.6.3 Mutation................................ ................................ ...................... 31 2.7 Ersetzung................................................................................................ 32 2.7.1 Generationswechsel..................................................................... 33 2.7.2 Elitismus ..................................................................................... 33 3 Digitale Klangsynthese ................................ ................................ .................. 35 3.1 Synthesizer und Sampler................................ ................................ ......... 35 3.2 Töne, Klänge und Geräusche ................................ ................................ .. 37 3.3 Syntheseverfahren ................................ ................................ .................. 38 3.3.1 Subtraktive Synthese ................................................................... 39 3.3.2 Wavetable Synthese ................................ ................................ .... 40 3.3.3 Additive Synthese ....................................................................... 41 3.3.4 FM-Synthese ................................ ................................ ............... 42 3.3.5 Weitere Syntheseverfahren .......................................................... 48 3.4 Synthesekomponenten ............................................................................ 50 3.4.1 Oszillator..................................................................................... 50 3.4.2 Hü llkurve ................................ ................................ .................... 53 3.4.3 Verstärker ................................................................................... 53 3.4.4 Filter ................................ ................................ ........................... 54 3.4.5 Effekte ................................ ........................................................ 55 3 4 Digitale Klangsynthese mit Hilfe Genetischer Algorithmen........................ 57 4.1 Implementation der Klassenbibliotheken ................................................ 57 4.1.1 Genetische Algorithmen.............................................................. 57 4.1.2 FM-Synthesizer................................................................ ........... 62 4.2 Klanganalyse................................ ................................ .......................... 64 4.3 Realisierung des Genetischen Algorithmus................................ ............. 66 4.3.1 Aufbau eines Chromosoms ......................................................... 67 4.3.2 Erzeugung und Bewertung eines Individuums............................. 71 4.3.3 Realisierung des Evolutionsprozesses ......................................... 73 4.3.4 Genetische Operatoren................................................................ 74 4.4 Die Applikation Revival......................................................................... 75 4.4.1 Konfigurationsphase ................................................................... 76 4.4.2 Analysephase .............................................................................. 78 4.4.3 Evolutionsphase................................ .......................................... 78 4.4.4 Präsentationsphase ................................ ................................ ...... 80 4.5 Experimente ................................................................ ........................... 82 4.5.1 Standardkonfiguration................................ ................................ . 82 4.5.2 Parameter des Genetischen Algorithmus ..................................... 84 4.5.3 Parameter der Klanganalyse ................................ ........................ 87 4.5.4 Parameter der Klangsynthese ................................ ...................... 89 4.5.5 Optimierte Standardkonfiguration ................................ ............... 89 4.5.6 Experiment 455 (Banjo).............................................................. 91 4.5.7 Experiment 451 (Trommel)................................ ......................... 93 5 Ergebnisse................................ ................................ ................................ ...... 95 6 Zusammenfassung ......................................................................................... 99 Thesen................................ ................................ ................................ ........... 101 Literaturverzeichnis....................................................................................... 103 Abbildungsverzeichnis ................................ ................................ .................. 107 Glossar ................................ .......................................................................... 109 4 Vorwort Selbständigkeitserklärung: Ich erkläre hiermit, daß ich diese Arbeit selbständig und ohne unzulässige Hilfe Dritter verfaß t habe. Ich versichere zudem, daß ich nur die Quellen verwendet habe, die im Literaturverzeichnis dieser Arbeit angegeben sind und dieses vollständig ist. Weiterhin ist diese Diplomarbeit und ihre Bestandteile keine Kopie anderer Quellen oder Arbeiten. Danksagung: Ich möchte mich auch bei allen bedanken, die zum Gelingen dieser Diplomarbeit beigetragen haben, insbesondere aber meinem Betreuer Professor Dr. rer. nat. habil. H. Iwe fü r seine wertvollen Ratschläge zu Inhalt und Form meiner Arbeit. 5 6 1 Einleitung 1.1 Motivation Die meisten Klänge, die wir kennen sind natü rlicher Art oder stammen von Musikinstrumenten, die der Mensch erfunden hat. Doch in den letzten Jahrzehnten werden kü nstliche Töne und Klänge, basierend auf mathematischen und physikalischen Prinzipien, auch mit sogenannten Synthesizern hergestellt. Das Potential der verschiedenen Syntheseprinzipien ist sehr groß , eine schier unerschöpfliche Quelle fü r immer neue Klänge, die es zu finden gilt. Man könnte sogar sagen, die Suche nach schönen Klängen ist in vollem Gange, denn noch nie zuvor konnte ein Klangbastler auf so viele Syntheseprinzipien zurü ckgreifen. Der Prozeß der Klangsynthese ist trotzdem sehr langwierig und artet oft in Tü ftelarbeit aus, denn bis ein wohlklingender Ton entsteht, muß eine Vielzahl von Parametern eingestellt werden. Die Herstellung eines Klanges ist damit bis heute meist eine mü hsame, zeitaufwendige Suche, bei der immer wieder verschiedene Parameterwerte getestet werden und anschließ end das Ergebnis vom Nutzer fü r gut oder schlecht befunden wird. Selbst bei weitreichenden Kenntnissen der Zusammenhänge und Funktionalitäten einzelner Syntheseverfahren, kann die Veränderung eines einzigen Parameters zu einem unerwarteten Chaos im erzeugten Klang fü hren. Das Synthetisieren eines schönen Klanges kann auf diese Weise durchaus einen ganzen Tag in Anspruch nehmen. Doch immer wieder finden sich Menschen, die mit viel Geduld den Synthesizern fantastische Klänge entlocken. Das Ziel dieser Diplomarbeit ist die Suche nach einem Genetischen Algorithmus, der dem Nutzer die Einstellung der Parameter bei der Klangsynthese ganz oder wenigstens teilweise abnimmt. Der Nutzer soll sich voll und ganz auf den Klang konzentrieren können und nicht schon scheitern, wenn er versucht Oszillatoren, Filter oder Hü llkurven einzustellen. Ein solches Verfahren wü rde damit auch Nutzern helfen, die keine oder nur wenige Kenntnisse von der Klangsynthese besitzen. Es wurden die Genetischen Algorithmen ausgewählt, weil diese ein sehr 7 wirkungsvolles Optimierungsverfahren darstellen, welches schon erfolgreich bei verschiedenen komplexen Problemen aus der Realität eingesetzt wurde. Ein zu lösendes Problem wird immer durch eine Reihe von Parametern beschrieben. Man könnte sich hier die Beschreibung der Struktur einer Klangsynthese und deren Parameter vorstellen. Der Genetische Algorithmus versucht dann die im Chromosom verschlü sselten Parameter der Klangsynthese durch Selektion und Rekombination einzustellen, bis ein schön klingender Ton entsteht. 1.2 Verwandte Arbeiten Horner, Beauchamp und Haken präsentieren in ihrer Arbeit "FM Matching Synthesis with Genetic Algorithms" [HOR-93] einen Ansatz, bei dem ein vorhandener Klang durch FM-Synthese und Genetische Algorithmen resynthetisiert werden soll. Im einzelnen werden dabei optimierte Parameter fü r den Prozeß der FM-Synthese durch einen Genetischen Algorithmus ermittelt. Der Algorithmus der Synthesetechnik (1 Modulator zu n Trägern) ist von Anfang an festgelegt. Die Parameter sind auf die statischen Frequenzen der Oszillatoren (Sinus) und die Modulationsindizes beschränkt. Die Bewertung der Gü te eines synthetisierten Klanges wird durch einen Abstandsvergleich ausgewählter Abschnitte der Frequenzspektren von Quell- und Zielklang bestimmt. Die Anzahl der Träger beeinfluß t maß geblich das Ergebnis der Prozedur und damit die Ä hnlichkeit des synthetisierten Klanges zum originalen Klang. Wehn stellt in seiner Arbeit "Using Ideas from Natural Selection to Evolve Synthesized Sounds" [WEH-98] eine Methode vor, Klänge mit Hilfe von Genetischen Algorithmen zu synthetisieren. Auch er versucht einen schon existierenden Quellklang durch einen evolutionär gestü tzten Syntheseprozeß automatisch zu rekonstruieren. Das von ihm verwendete Schema fü r die Klangerzeugung ist als Modulare Synthese bekannt. Wehn versucht nicht nur feste Parameter zu finden, sondern auch einen geeigneten Algorithmus, der aus einzelnen untereinander verbundenen Elementen wie Oszillatoren, Filter, additiven Verknü pfungen und Rauschgeneratoren besteht. Mit Hilfe der Genetischen Algorithmen werden bessere Algorithmen mit besseren Parametern gezü chtet. Die 8 Fitneß der einzelnen Lösungen wird durch einen Abstandsvergleich der Frequenzspektren von Quell- und Zielklang ermittelt. Das Ergebnis dieser Prozedur ist ein synthetisierter Klang, welcher dem Quellklang ähnelt. Garcia stellt in seiner Arbeit "Automatic Generation of Sound Synthesis Techniques" [GAR-01] ein Verfahren vor, welches Synthesealgorithmen mit Hilfe evolutionärer Methoden herstellt. Bevor der automatisierte Prozeß beginnen kann, muß ein Nutzer einen Klang bereitstellen, aus dem durch freie Kombination der Elemente klassischer Prinzipien der Klangsynthese ein ähnlicher Klang erzeugt wird. Sein Verfahren ist in der Lage bekannte Syntheseformen wie FM-Synthese, Subtraktive Synthese und Additive Synthese nachzuahmen und sogar neue Formen von Syntheseverfahren zu erschaffen. Die Aufgabe einen passenden Synthesealgorithmus zu finden, der einen bestimmten Quellklang nachbilden soll, verwirklicht Garcia mit Hilfe der Genetischen Programmierung. Die Elemente eines Synthesealgorithmus werden in einer Baumstruktur abgelegt, die dann später in einen Graphen umgewandelt wird. Ein solcher Graph repräsentiert eine konkrete Lösung. Mit Hilfe dieser wird der Klang synthetisiert und anschließ end einer Bewertung unterzogen. Die Fitneß eines gezü chteten Synthesizers wird, wie in den Werken von Wehn und Horner schon beschrieben, durch eine Abstandsmessung zwischen den Frequenzbereichen von Original- und Syntheseklang ermittelt. Die Arbeit "Exploring the sound-space of synthesis algorithms using interactive genetic algorithms" [JOH-99] von Johnson beinhaltet einen Ansatz, der sich mit der interaktiven Synthese von Klängen, unterstü tzt durch Evolutionäre Algorithmen, befaß t. Im Gegensatz zu den vorhergehenden Arbeiten wird hier der Mensch in den Mittelpunkt der Klangsynthese gestellt. Die Klänge werden durch Granularsynthese hergestellt und dessen Parameter durch einen Genetischen Algorithmus angepaß t. Am Anfang bekommt der Nutzer eine Menge von Klängen vorgegeben, die zufällig erzeugt werden. Eine interaktive Schnittstelle ermöglicht es dem Nutzer in den Evolutionsprozeß einzugreifen, indem er sich die synthetisierten Klänge einer Generation anhört und bewertet. Danach ü bergibt er wieder dem System die Kontrolle, welches eine neue Generation von Klängen produziert. Diese Prozedur wird wiederholt, solange kein zufriedenstellendes Ergebnis ermittelt wurde. 9 Ausgangspunkt dieser Arbeit bilden hauptsächlich die Werke von Garcia und Horner. Beide versuchen einen Klang automatisiert nachzubilden, beschreiten aber unterschiedliche Lösungswege. Mit dieser Arbeit versuche ich einen Mittelweg zwischen diesen Lösungen zu finden. 1.3 Ansatz Diese Arbeit beschreibt ein Verfahren, welches, basierend auf einem gegebenen Originalklang, die Struktur und Parameter fü r das Syntheseverfahren der Frequenzoder Phasenmodulation mit Hilfe von Genetischen Algorithmen ermittelt. Der daraus resultierende Syntheseklang soll dem Original in seinen Grundzü gen ähneln, wird aber keinesfalls eine identische Kopie darstellen. Dabei wird mein Verfahren in 4 Schritten vollzogen: Im ersten Schritt muß der Nutzer einen Originalklang und verschiedene Parameter fü r den Genetischen Algorithmus (Populationsgröß e, Mutations-, Kreuzungstyp, Selektion), die Frequenzanalyse (Anzahl, Größ e und Verteilung der Analysefenster) sowie fü r das Verfahren der Klangsynthese (Anzahl der Operatoren, Modulationsart) bestimmen. Im zweiten Schritt wird das Frequenzspektrum des Originalklangs durch eine Fourieranalyse (FFT) ermittelt. Im dritten Schritt ü bernimmt der Genetische Algorithmus die Entwicklung eines passenden FM-Synthesizers. Der evolutionäre Prozeß beginnt mit der Erschaffung einer Ausgangspopulation von FM-Synthesizern, die durch Zufall erzeugt werden. Anschließ end werden in jeder Generation neue Individuen durch Kreuzung und Mutation gebildet, analysiert und mit dem Original verglichen. Diejenigen Synthesizer, die den Originalklang am besten nachahmen können, werden in die nächste Generation ü berfü hrt, in der Hoffnung, dort aus den eigenen guten Eigenschaften neue, bessere Synthesizer hervorzubringen. Im vierten Schritt werden dem Nutzer die ermittelten Ergebnisse präsentiert. Wie schon erwähnt, beschreite ich einen Weg, der sich zwischen den Werken von Horner und Garcia befindet. Horner legt in seiner Arbeit den Schwerpunkt auf die Optimierung von Parametern fü r das Syntheseverfahren der Frequenzmodulation (genau gesehen verwendet er eigentlich die Phasenmodulation). Er nutzt dafü r einen festen Algorithmus. Ich bin allerdings der Meinung, daß auch der Algorithmus (also 10 die Struktur) nicht statisch sein sollte, da die Algorithmen so gesehen selbst einen Parameter fü r das Verfahren darstellen. Garcia dagegen hat die Entwicklung einer geeigneten Struktur eines beliebigen Syntheseverfahrens in den Vordergrund seiner Arbeit gestellt. Ein sehr lohnenswerter Ansatz. Da die Eigenschaften verschiedener Syntheseverfahren meist auch weit auseinander liegen, möchte ich mich in dieser Arbeit auf ein einziges Syntheseverfahren konzentrieren. Meinen Nachforschungen zufolge erscheint auch hier wieder die FM-Synthese als sehr mächtiges Verfahren, welches, im Gegensatz zu anderen Syntheseverfahren, mit bescheidenen Mitteln (Oszillatoren und Hü llkurven) sehr komplexe Klänge erzeugen kann. Die Auswahl eines geeigneten Evolutionären Algorithmus war schnell vollzogen. Wie Horner habe ich mich fü r die Genetischen Algorithmen entschieden, weil sie das am grü ndlichsten erforschte Gebiet der Evolutionären Algorithmen darstellen. Der fü r mich wichtigste Vorteil dieser liegt bei den Genetischen Operatoren, die das Chromosom verändern können, ohne ü ber die Regeln fü r die zugrunde liegende Struktur etwas wissen zu mü ssen. Die Genetischen Algorithmen stellen zudem mehrere Kreuzungs- und Mutationsverfahren bereit, die sich bereits bewährt haben. Bei der Genetischen Programmierung, die Garcia verwendet hat, ist dies nicht der Fall. Hier mü ssen ü blicherweise fü r jedes Optimierungsproblem neue Kreuzungsund Mutationsoperatoren geschrieben werden, die besondere Anforderungen des strukturierten Chromosoms beachten. Da die Struktur des Chromosoms meistens baumartig ist, sind die Operationen oft sehr langwierig und die Größ e der Chromosomen (Anzahl der Knoten) muß begrenzt werden. 11 12 2 Genetische Algorithmen 2.1 Grundlagen der Evolution und Genetik In der Natur durchlaufen alle Arten von Lebewesen einen andauernden Entwicklungsprozeß , der vom Drang zum Ü berleben geprägt ist. Dieser Vorgang erstreckt sich ü ber einen sehr langen Zeitraum und kann als ein Lernprozeß angesehen werden, in dem sich alle Lebewesen an die gegebenen Umwelteinflü sse anpassen mü ssen. An dieser Stelle setzen die zwei wichtigsten Prinzipien der Evolution an. Die Selektion und die Vererbung. Die Individuen, die sich besonders erfolgreich ihrer Umwelt anpassen, werden verstärkt ihre Eigenschaften und Merkmale durch Fortpflanzung an die nächsten Generationen weitergeben. Schwache Individuen dagegen werden aussterben. Die Ergebnisse sprechen fü r sich, denn die Evolution hat erfolgreich aus ganz einfachen Strukturen im Laufe von Millionen von Jahren unglaublich komplexe Strukturen und effektive Mechanismen in allen möglichen Formen und Variationen hervorgebracht. Die Erbinformationen bestimmen sowohl Aufbau als auch Aussehen eines Lebewesens und befinden sich in dessen Zellen. Dort sind sie als ein Satz von Chromosomen im Genom zusammengefaß t. Die Informationen werden hier in einer chemischen Struktur abgespeichert, der sogenannten DNS (Desoxyribonukleinsäure). Die DNS ist aus zwei Einzelsträngen (Phosphat-Zucker-Ketten) aufgebaut, welche durch Basenpaare miteinander verbunden sind. Die Basenpaare werden durch die Kombination der Basen Adenin, Thymin, Cytosin und Guanin gebildet. Aufgrund der chemischen Struktur der Basen passen jeweils nur Adenin mit Thymin und Cytosin mit Guanin zusammen. Diese Basen bilden die Grundlage fü r die gesamten genetischen Informationen eines Lebewesens. Reiht man die Basenpaare aneinander spricht man vom sogenannten Genetischen Code, der sich wie folgt strukturiert: Eine Gruppe von drei nebeneinander liegenden Basenpaaren bilden eine Aminosäure. Betrachtet man nun eine Folge von aneinander gereihten Aminosäuren, erhält man ein Protein (Eiweiß ). Eine Kette von Proteinen wird als Gen bezeichnet. Vereinfacht kann man also sagen, daß die Chromosomen die Träger der Gene sind, die alle 13 genetischen Informationen eines Lebewesens beinhalten. Jedes Gen ist durch seine feste Position innerhalb des Chromosoms bestimmt und legt auf diese Weise ganz bestimmte Eigenschaften und Merkmale fü r ein Individuum fest. Die Gesamtheit der Gene bezeichnet man als Genotyp. Man kann sich die Funktionalität des Genotyps als eine Art Schablone fü r eine Art von Lebewesen vorstellen. Die einzelnen Individuen mit den jeweiligen Ausprägungen der Eigenschaften und Merkmale nennt man Phänotypen. Das Prinzip der Vererbung von Eigenschaften und Merkmalen wird bei fast allen Lebewesen durch Paarung erreicht. Finden sich zwei starke Exemplare einer Art pflanzen sie sich fort, d.h. die Gene der zwei Individuen werden zufällig miteinander vermischt. Damit erhalten die Nachkommen einen Teil der Eigenschaften und Merkmale vom Vater, den anderen Teil von der Mutter. Die Rekombination der Gene verschiedener Organismen der gleichen Art sorgt fü r eine ständige Durchmischung des Erbmaterials einer ganzen Art. Bei der Rekombination von Individuen können gelegentlich auch Mutationen auftreten. Eine Mutation ist ein Fehler bei der Replikation des DNS-Stranges. Es kann dabei vorkommen, daß eine falsche Base in den aufgeteilten DNS-Strang eingefü gt oder eine beliebige Base daraus entfernt wird. Manchmal treten auch sogenannte spontane Mutationen auf, die durch ganz unterschiedliche Ursachen wie zum Beispiel Radioaktivität, Klimafaktoren oder Stoffwechselstörungen hervorgerufen werden. Eine Mutation kann sich positiv, negativ oder neutral auf ein Individuum auswirken und somit auch auf dessen Ü berlebens- und Fortpflanzungschancen. Auch wenn die Auswirkungen der Mutation ungewiß sind, spielt sie doch eine bedeutende Rolle. Sie sorgt zum einen fü r neues Erbmaterial und bringt zum anderen Variabilität in den Evolutionsprozeß ein, die durch Rekombination allein nicht erreicht werden kann. Das Prinzip der Selektion (natü rliche Auslese) bevorzugt stärkere und vernachlässigt schwächere Individuen bei der Fortpflanzung. Die Fitneß eines Individuums wird durch die Einwirkung von oft sehr vielen Selektionsfaktoren (Umweltbedingungen) bestimmt, die direkt auf die Eigenschaften eines Phänotyps Einfluß nehmen. Diese Faktoren stellen im Zusammenhang ein sehr komplexes Wirkungsgefü ge dar und steuern auf diese Weise die Evolution in ihrer Richtung und Geschwindigkeit. Durch 14 die Bevorzugung stärkerer Individuen wird deren durchschnittliche Zahl an Nachkommen auch deutlich höher sein. Auf diesem Weg wird zum größ ten Teil nur das gute genetische Material in die jeweils nächsten Generationen weitergegeben und damit der Fortbestand der eigenen Art gesichert. 2.2 Informatik und Evolution Theoretisch gesehen, kann man fast jede Aufgabe als Optimierungsproblem auffassen. Das Ziel besteht darin, möglichst schnell ein gutes Ergebnis zu ermitteln. Das hängt allerdings von der Anzahl der Parameter ab, die das Problem beschreiben. Mit einer steigenden Anzahl von Parametern eines Problems werden auch der Grad der Komplexität und die Menge der möglichen Lösungen steigen. Sind die Lösungsräume von Aufgaben relativ klein, dann reicht oft schon ein einfaches Verfahren aus, um die gesuchte Lösung zu finden. Eine mögliche Methode wäre zum Beispiel die Brute-Force-Methode, bei der alle möglichen Lösungen eines Problems berechnet werden und anschließ end aus dieser Menge die beste Lösung herausgesucht wird. Ist ein Problem zu komplex und damit der Lösungsraum zu groß , dann versagt diese Methode aufgrund der fehlenden Rechenleistung. An dieser Stelle setzen oft heuristische Verfahren an, die in das Gebiet des sogenannten Soft Computing einzuordnen sind. Eine Gruppe dieser Verfahren sind die Evolutionären Algorithmen (EA). Diese versuchen im Computer den Prozeß der natü rlichen Evolution zu simulieren. Das Konzept ist vielversprechend, denn der Evolutionsprozeß funktioniert in der Natur schon seit Anbeginn des Lebens und das mit groß em Erfolg. Es ist also nicht verwunderlich, daß dieser Prozeß in die Informatik ü bertragen wurde. Es gibt vier wesentliche Strategien, die auf den Grundlagen der natü rlichen Evolution basieren und unter dem Begriff der Evolutionären Algorithmen zusammengefaß t wurden: Die Genetischen Algorithmen (GA), die Genetische Programmierung (GP), die Evolutionären Strategien (ES) und die Evolutionäre Programmierung (EP). In den folgenden Abschnitten meiner Arbeit werde ich allerdings nur noch auf das Gebiet der Genetischen Algorithmen eingehen, weil es das meist genutzte und erforschte Verfahren der Evolutionären Algorithmen darstellt und ich es aus diesem Grund verwende. Die Grundlagen dafü r wurden schon 15 im Jahre 1962 von John Holland entwickelt. Im Gegensatz zu den konventionellen Verfahren (Aufzählung, Zufallssuche und analytische Suche), zeichnen sich die Genetischen Algorithmen vor allem durch ihre höhere Robustheit aus. Diese resultiert aus der Kombination einer mehrfach gerichteten Suche und stochastischen, nicht deterministischen Regeln (Selektion). Sie sind in der Lage eine Menge von Lösungen (Population) parallel zu verarbeiten und nicht nur eine einzige, wie es beim Hillclimbing oder dem Simulated Annealing der Fall ist. Aufgrund dieser Eigenschaften sind die Genetischen Algorithmen fü r eine Vielzahl von Optimierungsaufgaben geeignet. Trotz der oft sehr komplexen Lösungsräume vieler Probleme finden sie immer wieder Lösungen in erstaunlicher Qualität. 2.3 Abstraktion der Evolution Wie schon erwähnt, dient die natü rliche Evolution als Vorbild. Daher wird auch bei den Genetischen Algorithmen eine Population von Individuen einem kü nstlichen Evolutionsprozeß ausgesetzt. Die Individuen mü ssen sich in einer spezifizierten Umgebung behaupten. Um ein Maß fü r den Erfolg eines Individuums zu erhalten, wird dessen Fitneß durch eine Bewertungsfunktion bestimmt. Die erfolgreichen Exemplare werden sich verstärkt fortpflanzen und auf diese Weise ihr genetisches Material weitergeben. Die Wahrscheinlichkeit auf Selektion eines Individuums fü r den Fortpflanzungsprozeß wird durch ganz unterschiedliche Methoden bestimmt. Die Reproduktion erfolgt, wie auch in der Natur, durch Kreuzung von zwei Elternindividuen. Auch die Mutation von Individuen wurde nachgebildet und soll die Variabilität einer Population erhalten. Diese Prozedur wird so oft wiederholt, bis eine annehmbare Lösung fü r ein Problem gefunden wurde oder die vorgegebene Anzahl an Generationen erschöpft ist. Dieses Verfahren arbeitet, im Gegensatz zu herkömmlichen Suchmethoden, nicht in nur einem Zustandsraum (Lösungsraum), sondern in zwei voneinander getrennten Zustandsräumen (Abb. 1): Suchraum und Lö sungsraum. Der Suchraum enthält die kodierten Lösungen eines Problems, die auch als Genotypen bezeichneten werden. Der Lösungsraum enthält die eigentlichen Lösungen, die Phänotypen, mit den konkreten Parameterwerten eines Problems. Zu jedem Genotyp im Suchraum gibt es 16 auch einen entsprechenden Phänotyp im Lösungsraum. Eine Dekodierungsfunktion, die beide Zustandsräume miteinander verbindet, ü berträgt die genotypischen Lösungen in den phänotypischen Raum. Suchraum Lö sungsraum 01110101 [1.1|1.2] 10110111 [0.3|1.4] 11100011 [0.3|1.4] 01011001 Dekodierung 01010101 [0.6|1.5] [1.3|0.7] [0.9|0.2] 11010100 Genotypen (Kreuzung, Mutation) Phänotypen (Bewertung, Selektion) Abbildung 1: Zustandsrä ume Genetischer Algorithmen Bewertung und Selektion von Lösungen finden ausschließ lich im phänotypischen Raum statt, denn nur dort können und mü ssen die konkret ausgebildeten Lösungen in einer rauhen Umwelt um ihr Ü berleben kämpfen. Kreuzung und Mutation werden im Suchraum auf die Genotypen angewendet. Soll eine bestimmte Aufgabe gelöst werden, mü ssen als erstes die Parameter bestimmt werden, die das Problem beschreiben. Diese könnten zum Beispiel die Parameter a und b einer Funktion f(a, b) sein. Wenn alle Parameter festgelegt wurden, ist die Spezifikation des phänotypischen Raums abgeschlossen und es liegt eine Sammlung von Parametern vor. Danach gilt es eine Form der Kodierung zu finden, um auch den genotypischen Raum zu repräsentieren. Die Art der Kodierung hängt ganz von der Implementation des Algorithmus ab. In den meisten Fällen werden binäre Zeichenketten verwendet. Ein kodierter Parameter wird als Gen bezeichnet. Intern werden die Gene miteinander verkettet und als Chromosom in einem Individuum abgelegt. Neben dem Chromosom wird auch die Rohfitneß einer Lösung im Individuum hinterlegt. Sie wird später benötigt, um die Selektionswahrscheinlichkeit (relative Fitneß ) einer Lösung zu bestimmen. Da der durch den Genetischen Algorithmus simulierte Evolutionsprozeß immer auf eine Population von Individuen wirkt, entspricht dieser 17 damit einer parallelen Suche nach potentiellen Lösungen im genotypischen Raum. Laut Michalewicz [MIC-96] ist ein ausgeglichenes Verhältnis zwischen der Erkundung des gesamten Suchraums und der Ausbeutung der bereits gefundenen besten Lösungen entscheidend fü r den Erfolg des Algorithmus. Der einfache Genetische Algorithmus unterliegt einer grundlegenden Prozedur (Abb. 2). Er wurde schon oft realisiert und selbst bei einer schlechten Implementation können meist noch respektable Ergebnisse erzielt werden. Die fortgeschrittenen Genetischen Algorithmen erweitern dieses Verfahren mit einigen zusätzlichen Theorien, ändern aber nichts an der grundsätzlichen Funktionsweise. Den Ablauf der Prozedur kann man sich wie folgt vorstellen: Bevor der Prozeß beginnen kann, mü ssen einige Parameter wie die Populationsgröß e, die Selektionsmethode, ein geeignetes Ersetzungsverfahren sowie die Wahrscheinlichkeiten fü r Mutation und Kreuzung spezifiziert werden. Danach wird eine Ausgangspopulation der entsprechenden Größ e gebildet. Die Gene der Chromosomen aller Individuen (Genotypen) werden dann mit zufälligen Werten belegt. Anschließ end werden die Phänotypen der Startpopulation bewertet, um eine Maß fü r ihre Fitneßzu erhalten. Jetzt beginnt der iterative Teil des Algorithmus, in welchem der natü rliche Evolutionsprozeß nachgeahmt wird. Am Anfang jeder Generation steht eine Population von Elternindividuen zur Verfü gung, die oft auch als Eltern-Pool bezeichnet wird. Aus diesem werden immer zwei Individuen selektiert. Die Wahrscheinlichkeit auf Selektion zur Fortpflanzung wird durch die Berechnung der Fitneß eines Individuums ermittelt. Stehen die Elternindividuen fest, werden von beiden zwei identische Kopien erzeugt. Mit der vorher festgelegten Kreuzungswahrscheinlichkeit (ca. 60% – 90%), findet nun die Reproduktion der Nachkomment statt. Genauer gesagt, werden die Genotypen der Klone an einem zufälligen Punkt des Chromosoms miteinander gekreuzt. Das Ergebnis sind zwei neue Kinder. Findet keine Kreuzung statt, sind die geklonten Individuen selbst die Nachkommen. Bevor die neuen Individuen in den Kinder-Pool gesteckt werden, mü ssen sie sich noch einer Mutation unterziehen, die aber nur mit einer sehr geringen Wahrscheinlichkeit Ä nderungen am Genotyp vornimmt. Dieser Prozeß der Selektion und Reproduktion wird so oft wiederholt, bis der Kinder-Pool die gleiche Größ e aufweist wie der Eltern-Pool. Am Ende einer Generation werden die 18 Individuen aus dem Eltern-Pool mit denen aus dem Kinder-Pool ersetzt (Ersetzung). Die neue Population von Elternindividuen fü r die nächste Generation steht bereit. Der Algorithmus wird erst beendet, wenn eine bestimmte Terminierungsbedingung vorliegt. Dies kann zum Beispiel das Erreichen einer maximalen Anzahl von Generationen sein oder das Auffinden einer zufriedenstellenden Lösung. 1 Einstellung verschiedener Eigenschaften des Genetischen Algorithmus 2 Initialisierung der Ausgangspopulation 3 Wiederhole, solange Terminierungsbedingung nicht wahr ist 4 Evaluation der aktuellen Population 5 Wiederhole, solange nicht genügend Nachkommen gebildet wurden 6 Selektion zweier Eltern in Abhängigkeit ihrer Fitneß 7 Erzeugung von Nachkommen durch Kreuzung beider Eltern 8 Mutation der erzeugten Nachkommen 9 Ersetzung der alten Generation Abbildung 2: Struktur Genetischer Algorithmen Bei der Anwendung der fortgeschrittenen Genetischen Algorithmen können noch bessere Ergebnisse erzielt werden. Im Folgenden sind hier nur drei wesentliche Maß nahmen aufgefü hrt, die verdeutlichen sollen, an welchen Stellen der einfache Genetische Algorithmus noch verbessert werden kann. Als erstes ist es möglich dem Algorithmus eine größ ere Ausgangspopulation zur Verfü gung zu stellen. Dabei ist eine bessere durchschnittliche Fitneß zu erwarten. In einigen Fällen lohnt es sich sogar, die Individuen der Startpopulation mit konkreten Werten zu belegen. Dadurch kann man schon zu Beginn des Algorithmus sicherstellen, daß der gesamte Suchraum abgedeckt wird. Die zweite Möglichkeit setzt bei den Genetischen Operatoren fü r die Reproduktion an. Hier können neben der Ein-Punkt-Kreuzung auch andere Kreuzungsoperatoren ausgewählt werden. Die bekanntesten sind die Zwei-Punkt-Kreuzung, die Zwei-Punkt-Kreuzung mit Translokation und die gleichmäß ige Kreuzung. Diese Operatoren sollen fü r eine bessere Durchmischung der genetischen Information zweier Individuen sorgen. Weiterhin gibt es neben 19 Kreuzung und Mutation auch noch die Inversion und Translokation. Beide Genetische Operatoren wirken, genau wie die Mutation, auf nur ein Individuum. Im Gegensatz zur Mutation, sind sie in der Lage ganze Abschnitte eines Individuums zu verändern, haben aber einen geringeren Einfluß auf die Variabilität in einer Population. Die dritte Möglichkeit befaß t sich mit den Ersetzungsschemata. Durch die Verwendung von Elitismus oder Dynamischen Elitismus wird in der Regel eine durchschnittlich bessere Fitneß erreicht, da nicht alle Individuen der Elternpopulation verworfen, sondern einige mit in die neue Generation mitgefü hrt werden. Die Qualität eines Genetischen Algorithmus wird im Wesentlichen von sieben Faktoren, mit unterschiedlich starker Wirkung, beeinfluß t. Dabei handelt es sich um die folgenden Elemente: · Modellierung von Phänotyp und Genotyp (Kodierung), einschließ lich der Ü bertragungsfunktion, die fü r die Dekodierung notwendig ist. · Bereitstellung der Möglichkeit eine Ausgangspopulation zu erschaffen. · Entwurf einer Bewertungsfunktion, die in der Lage ist Umwelteinflü sse zu simulieren und damit die einzelnen Individuen qualitativ zu bewerten. · Einen Mechanismus, der die Selektionswahrscheinlichkeiten der Individuen berechnet und mit Hilfe dieser Individuen selektiert. · Ein Ersetzungsverfahren, das aus den Eltern und ihren Nachkommen eine neue Population fü r die nächste Generation bildet. · Genetische Operatoren wie Kreuzung und Mutation, die Ä nderungen im genotypischen Raum vornehmen. · Einstellung von Parametern wie Populationsgröß e und Wahrscheinlichkeiten fü r Kreuzung und Mutation. Zu den wichtigsten Faktoren gehören die Modellierung von Phänotyp und Genotyp und der Entwurf einer geeigneten Fitneß funktion. Aber auch die Genetischen Operatoren, die Wahl des Ersetzungsverfahrens und der Selektionsmechanismus sollten mit Sorgfalt gewählt werden. Wenn ein Genetischer Algorithmus keine zufriedenstellende Lösung finden sollte, dann ist mit groß er Wahrscheinlichkeit einer 20 dieser Faktoren dafü r verantwortlich. Im schlimmsten Fall ist es sogar die Art des Problems, die fü r den Miß erfolg schuld ist. Trotz der meist sehr guten Ergebnisse muß man sich immer vor Augen halten, daß die Genetischen Algorithmen kein Allheilmittel fü r jedes Problem sind und nach wie vor ein junges Forschungsgebiet darstellen. Die natü rliche Evolution vereint eine Vielzahl von Strategien, die aber nicht alle naturgetreu ü bernommen wurden. Die wichtigsten von ihnen wurden in vereinfachter Form auf die Genetischen Algorithmen ü bertragen und einige andere wurden sogar ganz weggelassen. Die auffälligste Ä nderung betrifft den Aufbau des Genoms. Es besteht aus einem einzigen Chromosom und ist damit haploid. Dagegen besitzen fast alle Lebewesen mehrere Chromosomen, die als doppelter Satz in der Zelle vorliegen. Eine weitere Ä nderung betrifft die Art und Weise der Kodierung der genetischen Informationen im Chromosom, die auf der Grundlage eines anderen Alphabetes (meistens binär) vollzogen wird. Hinzu kommt, daß die Individuen theoretisch unendlich alt werden können und dadurch immer wieder fü r die Reproduktion bereitstehen, d.h. der Prozeß schließ t zwar die Geburt und das Leben von Individuen ein, aber nicht deren Tod. In Bezug auf das Alter gibt es schon erste Ansätze, die eine Lebenszeit fü r Individuen simuliert und dadurch auch Superindividuen sterblich macht. Neben dem Lebenszyklus wurde auch der Fortpflanzungsprozeß vereinfacht. Individuen sind grundsätzlich geschlechtslos, aber trotzdem werden noch zwei von ihnen zur Reproduktion herangezogen. Auß erdem fehlt jede Form von Familienverhältnissen. Dies kann zur Inzucht fü hren, wenn sehr wenige gute Individuen die Population beherrschen. Wie bekannt ist, bedeutet ein erhöhtes Maß an Inzucht die Abnahme der Variabilität in einer Population, da die Kombinationsmöglichkeiten der genetischen Informationen der sich ähnelnden Individuen sehr gering sind. Abhilfe soll hier ein Verfahren bieten, das gleich mehrere Populationen parallel entwickelt. In bestimmten Abständen findet dann ein Austausch von Individuen der Populationen statt und soll dadurch die Variabilität des genetischen Materials erhalten. Als letztes möchte ich die in einer Population fehlenden sozialen Strukturen ansprechen. In der Natur ermöglichen diese durch Arbeitsteilung und Zusammenarbeit das Lösen von Problemen. Ein Beispiel dafü r ist eine Ameisenkolonie. Dieser Ansatz wird verstärkt im Forschungsgebiet des 21 Kü nstlichen Lebens (Artificial Life) erforscht und wird den Genetischen Algorithmen wohl auch weiterhin verwehrt bleiben. Trotz der starken Abstraktion der Evolutionsstrategien funktionieren die Genetischen Algorithmen erstaunlich effektiv, wenn auch nicht immer hundertprozentig treffsicher. 2.4 Repräsentation Ein Chromosom besteht grundsätzlich aus einer linearen Zeichenkette. Diese wird häufig auch als String oder Array bezeichnet. Ein Alphabet legt den Wertevorrat der Zeichen fest, die zum Kodieren der Parameter des Optimierungsproblems verwendet werden. Am häufigsten wird das binäre Alphabet eingesetzt. Die Zeichenkette besteht aus n sequentiell aneinander gereihten Teilzeichenketten, die jeweils ein Gen des Chromosoms darstellen. Jeder Parameter wird durch genau ein Gen repräsentiert. Jedes Gen hat eine bestimmte Länge, die von dem zu kodierenden Parameter abhängt. Addiert man die Länge aller Gene, erhält man die Länge des Chromosoms. In der folgenden Abbildung ist der schematische Aufbau kurz dargestellt: Phänotyp (Individuum) Parameter 1 Parameter 2 ... Parameter n 1.3 26 ... 0.01 Modellierung Interpretation l = 11 l=8 l = 10 01100101010 10101001 ... 1010000111 Gen 1 Gen 2 ... Gen n Genotyp (Chromosom) Abbildung 3: Modellierung und Interpretation des Chromosoms Die Interpretation eines Gens hängt von den Werten ab, die der repräsentierte Parameter annehmen kann. Die Menge aller zulässigen Werte wird durch den Definitionsbereich bestimmt, der vier unterschiedliche Informationsniveaus besitzen 22 kann. Das erste und geringste Niveau wird durch die Nominalskala beschrieben. Die einzigen zur Verfü gung stehenden Operatoren sind Gleichheit und Ungleichheit. Mögliche Ausprägungen eines Parameters wären z.B. männlich (0) und weiblich (1) fü r das Geschlecht oder Auto (00), Bus (10), Bahn (01) und Flugzeug (11) fü r ein Fortbewegungsmittel. Das zweite Niveau ist die Rangskala (auch Ordinalskala), auf der die Werte hinsichtlich ihres Ranges angeordnet sind. Neben Gleichheit und Ungleichheit kann zusätzlich geprü ft werden, ob ein Wert kleiner oder größ er als ein anderer ist. Ein Paradebeispiel sind die Schulnoten 1 (000), 2 (001), 3 (010), 4 (100), 5 (101) und 6 (110). Fü r einen ordinalen oder nominalen Parameter kann die Länge eines Gens (LG) mit Hilfe der folgenden Beziehung berechnet werden: [1] æ log(XMax + 1) ö ÷ L G = Aufrundungçç log(2) ÷ø è Alle möglichen Werte eines Parameters sind im Intervall [0; XMax] festgeschrieben. Die zuvor genannten Beispiele wü rden somit Genlängen von 1 fü r das Geschlecht, 2 fü r die Fortbewegungsmittel und 3 fü r die Schulnoten ergeben. Als nächstes ist die Intervallskala zu nennen, die, ergänzend zur Rangskala, die Differenz von zwei Werten zuläß t. Als Beispiele soll hier die Celsius-Temperaturskala genannt sein. Das höchste Informationsniveau stellt die Verhältnisskala bereit. Neben den Eigenschaften der Intervallskala besitzt sie zusätzlich noch einen absoluten Nullpunkt. Diese Eigenschaften werden von der Kelvin-Temperaturskala, der Gewichtsskala oder der Längenskala verwendet. Die Berechnung der Genlänge fü r eine Intervall- oder Verhältnisskala ist ähnlich wie bei einer Nominal- und Ordinalskala. Bei Parameterwerten im ganzzahligen Bereich kann anstelle von XMax die Differenz der Grenzen des Intervalls [XMin; XMax] in die Beziehung [1] eingesetzt werden: [2] æ log((X Max - X Min ) + 1) ö ÷÷ L G = Aufrundungçç log(2) è ø Beispielsweise wü rde das Intervall [-8; 22] mit einer Differenz von 30 eine Genlänge von 5 ergeben. Sind die Parameterwerte aus dem Bereich der reellen Zahlen, dann spielt die Genauigkeit der Werte eine Rolle und muß bei der Berechnung der Genlänge beachtet werden. Demnach wird ein reellwertiges Intervall in kleine 23 Abschnitte unterteilt. Die Größ e der Teilintervalle wird durch die Genauigkeit, d.h. die Anzahl der Nachkommastellen (n) vorgegeben. Dazu ist noch eine geringfü gige Ä nderung der Beziehung [2] notwendig: [3] ( ) æ log (X Max - XMin )10 n + 1 ö ÷ L G = Aufrundungç ç ÷ log(2) è ø Eine Verhältnisskala fü r das Intervall [– 0.5; 1.2] wü rde somit eine Differenz von 1.7 ergeben. Verrechnet man dies mit der Genauigkeit von 3 Nachkommastellen, erhält man 1701 Teilintervalle, was zu einer Genlänge von 11 fü hrt. 2.5 Evaluation und Fitneß Die Fitneß der Individuen ist die treibende Kraft in den Genetischen Algorithmen. Sie entscheidet, welche Richtung die simulierte Evolution bei der Lösungssuche einschlägt, oder anders ausgedrü ckt, welche Regionen des Suchraums stärker erkundet werden. Mit ihrer Hilfe kann eine Aussage getroffen werden, wie fähig ein Individuum ist, das in diesem Sinne eine konkrete Lösung des Problems im Suchraum darstellt. In der Natur wird dies als Grad der Anpassung eines Individuums an seine spezifische Umwelt betrachtet. Bei den Genetischen Algorithmen dagegen spiegelt die Fitneß den Grad der Optimierung der Parameter der zu lösenden Aufgabe wider, d.h. wie nahe diese Lösung einer optimalen Lösung ist. Ist ein Individuum erfolgreich, wird es auch mit einer hohen Wahrscheinlichkeit sein genetisches Material mit den guten Eigenschaften durch Fortpflanzung an die nächste Generation weitergeben. Weniger erfolgreiche Individuen können sich zwar auch fortpflanzen, aber die Chance, daß sie fü r den Reproduktionsprozeß ausgewählt werden, ist sehr gering. Eine bisher unbeantwortete Frage ist, wann ein Fitneß wert gut und wann er schlecht ist. Bisher wurde die beste Lösung einer Aufgabe als Optimum beschrieben. Diesen Sachverhalt kann man auch als Suche nach einem Maximum definieren. Sollte einmal ein Minimum gesucht sein, dann wird durch Negation der Fitneß werte auch diese zur Suche nach einem Maximum. Damit gilt, daß ein hoher Fitneß wert gut ist, ein niedriger dagegen schlecht. Doch wie erhält man nun den Wert fü r die Fitneß eines Individuums? Dies geschieht in zwei Schritten. Im ersten Schritt wird das Chromosom eines Individuums entschlü sselt. 24 Dadurch erhält man die Werte fü r die Parameter des Optimierungsproblems, welches ich hier als Zielfunktion definiere. Die soeben dekodierten Parameter setzt man nun in die Zielfunktion ein. Diese gibt die Bewertung eines Individuums, als Maß fü r den Abstand zum gesuchten Optimum, zurü ck. Die Bewertung von Lösungen wird aufgrund des Problems immer wieder neu spezifiziert. Dennoch werden in den meisten Fällen altbekannte Kriterien wie Belohnungen, Bestrafungen, Gewinn, Verlust, Kosten, Punkte, Leistungen und Preise fü r die Bewertung von Lösungen herangezogen. Im zweiten Schritt kann die zuvor ermittelte Bewertung noch standardisiert, angepaß t oder gar normalisiert werden. Dies kann notwendig sein, wenn z.B. ein kleiner Wert als gut gilt und damit eine Minimumsuche darstellt. Die Bewertungen mü ssen dann durch Negation korrigiert werden, um einer Maximumsuche gerecht zu werden. Der zweite Schritt ist nicht in jedem Fall notwendig, denn oft wird das Ergebnis der Zielfunktion selbst als Fitneß wert verwendet. Die Prozedur der Fitneß berechnung wird fü r alle Individuen einer Population durchgefü hrt. Stehen alle Werte zur Verfü gung, können die Selektionswahrscheinlichkeiten der Individuen, bezogen auf die ganze Population, berechnet werden. Die verschiedenen Methoden dafü r werde ich in den folgenden Abschnitten noch ansprechen. 2.6 Reproduktion Die Erzeugung von Nachkommen ist, neben der natü rlichen Auslese, eine der wichtigsten Strategien der Evolution. Auf diese Weise wird der Fortbestand einer Rasse gesichert. Ist eine Population nicht mehr in der Lage bessere Individuen hervorzubringen, wird sie aussterben. Bei den Genetischen Algorithmen wird die Nachkommensbildung durch die Kombination von Selektion, Kreuzung und Mutation verwirklicht (Abb. 4). Diese Mechanismen wirken auf eine Population von Individuen einer Generation. Grundsätzlich nehmen alle Individuen an diesem Prozeß teil. Es hängt von der Fitneß der Individuen ab, ob und wie oft sie zur Fortpflanzung ausgewählt werden. Die Reproduktion wird in 3 Schritten vollzogen. Als erstes werden zwei Individuen selektiert und geklont. Anschließ end werden die beiden Klone miteinander gekreuzt. Die daraus resultierenden Nachkommen werden zum Schluß noch mutiert und vorläufig in den Kinder-Pool gelegt. Die Bildung von 25 Nachkommen wird fortgesetzt, solange nicht genü gend Nachkommen im KinderPool vorhanden sind, um die nächste Generation anzutreten. Eltern-Pool Selektion 2 Elternindividuen Kreuzung 2 Nachkommen Mutation Kinder-Pool Abbildung 4: Bildung von Nachkommen Der Selektionsoperator kann verschiedene Verfahren nutzen, die von Problem zu Problem gewählt werden. Die Kreuzungswahrscheinlichkeit beeinfluß t den Grad der Vermischung der genetischen Information von Individuen. Wenn diese Rate kleiner wird, dann steigt die Anzahl von Individuen aus der vorangegangenen Generation und die Zahl der Nachkommen mit neuen genetischen Variationen sinkt. Deshalb ist eine Kreuzungsrate von 60 bis 90 Prozent ü blich. Die Mutationswahrscheinlichkeit dagegen ist sehr gering, bei Raten von 1 bis 3 Prozent, und sorgt fü r mehr Variabilität in einer Population. Der allgemeine Prozeß zur Reproduktion wird standardmäß ig in den meisten Genetischen Algorithmen implementiert. Andere Strategien fü r die Bildung von Nachkommen sind natü rlich auch möglich. 2.6.1 Selektion Bevor Individuen fü r die Fortpflanzung selektiert werden können, muß erst die gesamte Population fü r diesen Prozeß vorbereitet werden, d.h. es mü ssen fü r alle Individuen in Abhängigkeit ihrer Fitneß Selektionswahrscheinlichkeiten berechnet werden. Fü r diesen Zweck stehen verschiedene Methoden bereit, die sich in ihrer Funktionsweise unterscheiden. Auf der einen Seite gibt es die fitneß proportionalen 26 Methoden. Die Normierung zählt hier zu der einfachsten Methode, bei der die Fitneß eines Individuums durch die Summe der Fitneß aller Individuen geteilt wird, um die Selektionswahrscheinlichkeit zu erhalten. Schon etwas aufwendiger ist die Skalierte Selektion. Sie wird eingesetzt, wenn die Fitneß auch negative Werte annehmen kann oder die Differenz zwischen maximaler und minimaler Fitneß einer Population zu klein wird. Auf der anderen Seite sind die rangbasierenden Verfahren zu nennen. Diese sortieren die Individuen absteigend bezü glich ihrer Fitneß , d.h. das Individuum mit der höchsten Fitneß erhält den ersten Rang, das mit der niedrigsten Fitneß den letzten Rang. Alle weiteren Berechnungen beziehen sich dann nur noch auf die Rangordnung der Individuen einer Population. Mögliche Verfahren sind die lineare und nichtlineare Rangselektion. Neben den fitneß proportionalen und rangbasierten Selektionsmethoden gibt es noch zwei andere Verfahren. Die erste Methode ist die Wettkampfselektion, bei der in einem Selektionsschritt eine bestimmte Anzahl Individuen gleichverteilt aus der Population ausgewählt werden. Das Individuum mit der besten Fitneß der teilnehmenden Wettkämpfer gewinnt und gilt damit als selektiert. Die zweite Methode ist die sogenannte (N, m)-Selektion, die nur die m besten Individuen ihrer Generation fü r eine Auswahl in Betracht zieht. Alle anderen Individuen werden nicht beachtet. Jedes der m Individuen wird mit gleicher Wahrscheinlichkeit ausgewählt. Index Fitneß 0 1 2 3 4 9 8 5 3 2 Selektionsmethode Proportion Skalierung Rang Wettkampf 0,33 0,38 0,30 0,36 0,30 0,33 0,25 0,28 0,19 0,18 0,20 0,20 0,11 0,08 0,15 0,12 0,07 0,03 0,10 0,04 1,00 1,00 1,00 1,00 (N,m) 0,33 0,33 0,33 0,00 0,00 1,00 Abbildung 5: Vergleich verschiedener Selektionsmethoden Wurden alle Wahrscheinlichkeiten ermittelt, kommt das Russische Roulette zum Einsatz, daß nun ein Individuum aus der Population auswählt. Damit das Russische Roulette fü r alle Selektionsmethoden gleichermaß en eingesetzt werden kann, mü ssen die berechneten Werte den Eigenschaften der Normierung genü gen. Ist diese Voraussetzung erfü llt, werden die Wahrscheinlichkeiten proportional auf ein 27 virtuelles Roulette-Rad aufgeteilt. Hier ein Beispiel fü r die Aufteilung der Selektionswahrscheinlichkeiten einer Population mit fü nf Individuen: Index Wahrscheinlichkeit 0 0.14 1 0.30 2 0.11 3 0.20 4 0.25 Σ Roulette-Rad 4 0 1 3 Zeiger 2 1.00 Abbildung 6: Beispiel für Russisches Roulette Alle Individuen einer Population bekommen so einen bestimmten Abschnitt auf diesem Rad zugeteilt. Ein Individuum mit einer hohen Selektionswahrscheinlichkeit repräsentiert so einen groß en Teil des Rades und umgekehrt. Ist die Aufteilung des Rades abgeschlossen, kann die Selektion beginnen. Dazu wird das virtuelle Rad gedreht, bis es bei einem Abschnitt stehen bleibt, daß einem Individuum zugeteilt wurde. Dieses ist damit selektiert und das Russische Roulette kann wiederholt werden, um das nächste Individuum zu selektieren. 2.6.2 Kreuzung Die natü rliche Evolution verändert mit Hilfe der Paarung (Kreuzung) die genetischen Informationen der Elternindividuen. Dies geschieht durch Vermischung der elterlichen Eigenschaften, so daß ein Nachkomme eine Kombination aus den Eigenschaften von Mutter und Vater erhält. Die Genetischen Algorithmen setzen dieses Verfahren in den Kreuzungsoperatoren um. Voraussetzung dafü r sind die in Abb. 7 dargestellten Kreuzungspunkte (PX), mit dessen Hilfe ein auszutauschender Bereich festgelegt wird (auch mehrere Bereiche sind möglich). Ein Chromosom mit LC Zeichen besitzt die gleiche Anzahl an Kreuzungspunkten. Der Kreuzungspunkt des ersten Zeichens trägt den Index 0 und der des letzten Zeichens LC – 1. 28 1 1 0 1 0 0 0 0 1 0 1 0 1 1 1 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 Abbildung 7: Kreuzungspunkte Es gibt nun vier wesentliche Strategien der Kreuzung. Die erste Variante, die auch standardmäß ig in den meisten Genetischen Algorithmen verwendet wird, ist die EinPunkt-Kreuzung (Abb. 8). Hier wird ein Kreuzungspunkt innerhalb des Chromosoms zufällig ausgewählt. Damit ü berhaupt eine Vermischung stattfindet, sollte der zufällige Kreuzungspunkt PX in folgendem Intervall liegen. [4] 0 < PX < L C Der Kreuzungsbereich wird durch den zufällig gewählten und den letzten möglichen Kreuzungspunkt markiert. Alle Zeichen, die in diesem Bereich liegen, werden zwischen beiden Individuen ausgetauscht. Eltern 1 0 1 0 0 1 0 1 1 1 1 0 1 1 0 1 1 0 1 0 0 0 0 1 0 0 0 1 1 1 1 0 1 0 0 1 0 0 1 0 0 0 1 1 1 1 1 0 1 0 0 0 1 1 1 1 0 1 1 0 Nachkommen Abbildung 8: Beispiel Ein-Punkt-Kreuzung Das nächste Verfahren ist die Zwei-Punkt-Kreuzung (Abb. 9), bei der zwei zufällig ausgewählte Punkte den Kreuzungsbereich beider Elternindividuen festlegen. Die beiden Punkte dü rfen nicht gleich sein. Der kleinere Punkt stellt den Beginn des Kreuzungsbereichs dar und der größ ere Punkt das Ende. Alle Zeichen, die zwischen den beiden Punkten liegen, werden ausgetauscht. Auch hier sollten die Punkte der in [4] genannten Forderung genü gen. 29 Eltern 1 0 1 0 0 1 0 1 1 1 1 0 1 1 0 1 1 0 1 0 0 0 0 1 0 0 0 1 1 1 1 0 1 0 0 0 0 0 1 1 1 0 1 1 0 1 1 0 1 0 1 0 1 1 0 0 0 1 1 1 Nachkommen Abbildung 9: Beispiel Zwei-Punkt-Kreuzung Die Zwei-Punkt-Kreuzung kann zu einer Zwei-Punkt-Kreuzung mit Translokation (Abb. 10) erweitert werden, indem zusätzlich bei einem der beiden Individuen der Kreuzungsbereich verschoben wird. Die Kreuzungspunkte fü r das eine Individuum werden wie bei der Zwei-Punkt-Kreuzung ermittelt und spezifizieren einen Bereich der Länge LK. Der Startpunkt fü r den Kreuzungsbereich des anderen Individuums, wird durch eine Zufallszahl ermittelt, die die folgenden Voraussetzungen erfü llen muß : [5] 0 £ POffset £ (L C - L K ) Stehen beide Bereiche fest, können die betroffenen Zeichen zwischen diesen ausgetauscht werden. Um eine einfache Zwei-Punkt-Kreuzung zu vermeiden, sollten der erste Kreuzungspunkt und der Translokationspunkt verschieden sein. Eltern 1 0 1 0 0 1 0 1 1 1 1 0 1 1 0 1 1 0 1 0 0 0 0 1 0 0 0 1 1 1 1 0 1 0 1 0 0 0 1 1 1 0 1 1 0 1 1 0 1 0 0 0 0 0 1 0 1 1 1 1 Nachkommen Abbildung 10: Beispiel Zwei-Punkt-Kreuzung mit Translokation 30 Die vierte Strategie ist die gleichmäßige Kreuzung (Abb. 11), bei der die Kreuzungspunkte durch einen binären Vektor der Länge LC gewonnen werden. Die Werte fü r den Vektor werden durch gleichverteilte Zufallszahlen ermittelt. So wü rde der Vektor 011110011000111, mit einer Länge von 15, die Kreuzungsbereiche 1 – 4 (1111), 7 – 8 (11) und 12 – 14 (111) hervorbringen. In diesen Bereichen werden die Zeichen der Chromosomen der Eltern vertauscht. Die mit 0 markierten Bereiche bleiben unverändert. Eltern 1 0 1 0 0 1 0 1 1 1 0 0 1 1 0 1 1 0 1 0 1 0 0 0 0 1 0 1 1 1 Schablone 0 1 1 0 1 0 0 0 1 0 0 1 0 1 1 1 1 0 0 0 1 0 1 0 1 0 0 1 1 1 1 0 1 1 0 1 0 0 1 0 1 0 1 1 0 Nachkommen Abbildung 11: Beispiel gleichmä ßige Kreuzung Die Funktionsweise dieser Verfahren ändert sich auch dann nicht, wenn die Chromosomen aus anderen Alphabeten aufgebaut sind. Jedoch können sie aus bestimmten Grü nden auch eine abweichende Funktionalität aufweisen (z.B. Einzigartigkeit der Gene beim Problem des Handlungsreisenden). 2.6.3 Mutation Bei der Fortpflanzung schleichen sich gelegentlich Fehler in die Genotypen der Nachkommen ein. In der Natur geschieht dies im Zuge der Zellteilung, bei der dann einzelne oder mehrere Basen im Chromosom verändert, eingesetzt oder entfernt werden. Dieser Prozeß wird bei Evolutionären Algorithmen durch einen Mutationsoperator nachgebildet. Mutationen wirken sich positiv auf die Variabilität 31 einer Population aus, was allein durch Kreuzung nicht erreicht werden kann. Andererseits kann sie sehr zerstörerisch sein, da sie auch gut angepaß te Individuen wieder vernichtet, wenn sie zu häufig angewendet wird. Daher liegt die Wahrscheinlichkeit der Mutation im Bereich von etwa 1% – 3% fü r jedes Zeichen im Chromosom. Dieser Wert richtet sich auch nach der Länge des Chromosoms. Je länger ein Chromosom ist, desto mehr Zeichen werden wahrscheinlich mutiert. Man kann die Wahrscheinlichkeit deshalb auch direkt von der Chromosomenlänge abhängig machen, indem man z.B. den Reziprokwert von LC verwendet. Individuum 1 0 1 0 0 1 0 1 1 1 1 0 1 1 0 1 0 1 0 1 1 0 1 1 1 1 0 1 1 0 mutiertes Individuum Abbildung 12: Beispiel gleichmä ßige Mutation Die gleichmäßige Mutation (Abb. 12) prü ft nacheinander jedes Zeichen eines Chromosoms, ob es mutiert wird oder nicht. Dafü r wird jeweils eine Zufallszahl im Intervall [0; 1] bestimmt. Wenn diese kleiner ist als die Mutationswahrscheinlichkeit, dann findet die Veränderung statt. Im Falle einer binären Zeichenkette, wäre dies die Ä nderung des Wertes von 0 auf 1 bzw. von 1 auf 0. 2.7 Ersetzung Nachdem der Reproduktionsprozeß genü gend Nachkommen erzeugt hat, stehen Eltern- und Kinderpopulation bereit. Mit Hilfe des Ersetzungsverfahrens muß nun aus diesen die Population fü r die nächste Generation gebildet werden. Die Größ e von Eltern- und Kinder-Population beträgt in der Regel jeweils n Individuen, so daß insgesamt 2n Individuen fü r die Ersetzung zur Auswahl stehen. Auch fü r die Folgepopulation wird meistens die gleiche Größ e verwendet, wie fü r die Elternpopulation. 32 2.7.1 Generationswechsel Die einfachste denkbare Methode ist die Generationsersetzung, bei der die gesamte Kinderpopulation in die nächste Generation ü bertragen wird. Die Elternpopulation wird vollständig verworfen. Der Nachteil des Verfahrens ist, daß viele gute Elternindividuen verloren gehen und damit die durchschnittliche Fitneß einer Population auch wieder sinken kann. Im Gegensatz zu anderen Ersetzungsverfahren, benötigt dieses Verfahren mehr Generationen, bis es ein Optimum erreicht hat. 2.7.2 Elitismus Dieses Verfahren verschont den besten Teil der Elternpopulation und gewährt ihnen das Recht, auch in der nächsten Generation weiter zu bestehen. Man unterscheidet hier zwischen dem statischen und dynamischen Elitismus. Beim statischen Elitismus wird immer eine feste Anzahl von Individuen ersetzt. Dazu wird die Elternpopulation sortiert und anschließ end die m besten Eltern in die neue Population ü bertragen. Die Ü bertragung der Elternindividuen kann entweder ohne oder mit Mutation geschehen. Eine Versetzung mit Mutation nennt man starker Elitismus, eine mit Mutation schwacher Elitismus. Eine Mutation wird in Erwägung gezogen, wenn die Eltern eine zu hohe Fitneß im Gegensatz zu ihren Nachkommen haben, die Population damit beherrschen und eine Weiterentwicklung verhindern. Die noch freien Plätze in der Folgepopulation werden mit Individuen aus der Kinderpopulation besetzt. Die Auswahl der Nachkommen kann entweder durch gleichverteilte Zufallszahlen oder durch Sortierung und Ü bernahme der besten Individuen erfolgen. Möchte man die Anzahl der zu ersetzenden Elternindividuen nicht festlegen, kann der dynamische Elitismus verwendet werden. Bevor Individuen ersetzt werden, mü ssen beide Populationen zusammengefü hrt und nach ihrer Fitneß sortiert werden. Die erste Hälfte der Individuen wird in die nächste Generation ü bernommen. Damit nicht nur Eltern in die neue Generation ü berfü hrt werden, ist es möglich nur einen bestimmten Prozentsatz der Elternpopulation bei der Zusammenfü hrung zu verwenden. Dieser Satz liegt ü blicherweise bei 50% – 75%. 33 34 3 Digitale Klangsynthese 3.1 Synthesizer und Sampler Noch vor 100 Jahren entstanden Töne nur unter natü rlichen Bedingungen oder durch akustische Instrumente, die der Mensch schon erfunden hatte. All diese Instrumente besitzen einen einzigartigen, unverkennbaren Klangcharakter. Mit dem Beginn des 20. Jahrhunderts begann die Entwicklung von völlig neuen Instrumenten, die mit Hilfe von Elektrizität Klänge generieren konnten. Im Laufe der Zeit mutierten diese zu wahren Metainstrumenten, die heute in der Lage sind, die Klangcharakter von unterschiedlichen herkömmlichen Instrumenten nachzuahmen und auch neue kü nstliche Klänge zu erzeugen. Am Anfang wurden fü r diesen Zweck teilweise riesige Maschinerien gebaut. Die bekanntesten Vertreter waren u.a. der Theremin, das Sphärophon, Ondes Martenot, das Trautonium und die Hammond-Orgel. Einer der ersten analogen Synthesizer war der Moog, der im Jahre 1964 von seinem Erfinder Robert Moog vorgestellt wurde. Er gehört zur Gruppe der modularen Synthesizer, die den Musikern von damals alle nur erdenklichen Freiheiten gewährten. Der Nachteil dieser war ihre meist enorme Größ e und der damit verbundene hohe Kaufpreis. Nur sehr wenige Personen konnten sich diese Geräte leisten. Aus diesem Grund entwickelte man 1970 die ersten festverdrahteten Synthesizer, bei denen die gebräuchlichsten Elemente eines Modular-Synthesizers vereint und fest miteinander verbunden wurden. Dies war die Sternstunde des Minimoog. Er erreichte bis dahin ungeahnte Absatzmarken und behielt fü r Jahre eine vorherrschende Stellung im Synthesizermarkt. Erst mit der fortschreitenden Technik wurden immer mehr Elemente des Analog-Synthesizers durch digital kontrollierte Schaltkreise, Mikrochips oder Signalprozessoren ersetzt. Sie werden deshalb auch als analog hybride Synthesizer bezeichnet. Ein weiterer Meilenstein wurde mit der DX7 Reihe von Yamaha gelegt, den ersten fast voll digitalen Synthesizern. Die Popularität der Digital-Synthesizer stieg aufgrund der niedrigen Preise und drängte die Analogen in den Hintergrund. Zudem ermöglichte die Digitalisierung auch die Programmierung von Computersoftware, die einfach die analogen und digitalen Synthesizer in ihrer Funktionsweise 35 nachbildete. Einige Softwarefirmen spezialisierten sich auf komplette virtuelle Musikstudios, die am heimischen PC von interessierten Klangtü ftlern benutzt werden Musikstudios Anwendung finden. Neben und der sogar immer in professionellen weiter steigenden Angebotspalette analoger und digitaler Synthesizer kamen in den letzten Jahren heftige Diskussionen ü ber deren Klangqualität auf. Es mag sein, daß die Analogen wärmere und die Digitalen kältere Klänge erzeugen, aber letztendlich spielen beim Kauf eines Synthesizers nur dessen Preis und die Ohren des Nutzers eine Rolle. Einen tieferen Einblick in die Geschichte des Synthesizers geben [SCH-98] und [GOU-97]. Der Begriff Synthesizer selbst wurde von dem englischen Wort "synthesize" abgeleitet und bedeutet im Allgemeinen etwas kü nstlich herstellen. In Musikerkreisen versteht man unter diesem Begriff eine Soft- oder Hardware, mit deren Hilfe ein natü rlicher oder kü nstlicher Klang erzeugt werden kann. Die Vorgehensweise bei der Herstellung eines Klanges hängt von den verwendeten Syntheseverfahren ab, die auf verschiedenen Prinzipien beruhen. Zu den bekanntesten Verfahren zählen Subtraktive Synthese, Wavetable Synthese, Additive Synthese und FM-Synthese (Frequenzmodulationssynthese). Die Klangvielfalt wird von den verwendeten Komponenten (Oszillatoren, Hü llkurven, Filtern) eines Syntheseverfahrens bestimmt. Ein Synthesizer mit nur 1 Oszillator, 1 Filter und 1 Hü llkurve wird daher eine bedeutend kleinere Menge von Klängen generieren können als ein Synthesizer mit 10 Oszillatoren, 5 Filtern und 10 Hü llkurven. Die entsprechenden Parameter der Komponenten und auch der Synthese selbst werden ü ber reale (Hardware) oder virtuelle (Software) Schiebe- und Drehregler eingestellt. Die Menge der vom Synthesizer erzeugbaren Klänge wird damit auch von den Wertebereichen der Parameter beeinfluß t, d.h. mit wachsenden Wertebereichen der Parameter, wird auch die Anzahl möglicher Klänge ansteigen, was natü rlich nur bis zu einem bestimmten Grad realisierbar und sinnvoll ist. Neben den Synthesizern wurden seit 1950 auch die Sampler entwickelt. Im Gegensatz zu den Synthesizern, erzeugen die Sampler die Klänge nicht selbst, sondern verändern ein bereits vorgegebenes Sample (Probe- oder Musterklang) mit verschiedenen Methoden. Die Funktionalität reicht von einfachen Hü llkurven fü r die 36 Lautstärke, ü ber die Vermischung und Wiederholung von Abschnitten, der Ä nderung der Tonhöhe durch Transponierung oder Filter bis hin zu einem breiten Spektrum an Effekten wie Tremolo, Vibrato, Portamento, Distortion, Vocoding, Chorus, Flanging, Phasing, Echo und Reverberation. Der Klang, der fü r den Prozeß des Sampling bereitgestellt werden muß , kann entweder natü rlicher Art sein, wie es in den Anfängen der Sampler der Fall war, oder kü nstlich. Trotz der unterschiedlichen Funktionsweise von Sampler und Synthesizer zählt das Sampling heutzutage mit zu den Syntheseverfahren und trägt auch den Namen Sample-Synthese oder SamplingSynthese. 3.2 Tö ne, Klänge und Geräusche Das menschliche Ohr nimmt Töne, Klänge und Geräusche als akustische Signale wahr, die hauptsächlich durch das Medium Luft als Schallwellen ü bertragen werden. In der Physik befaß t sich das Teilgebiet der Akustik mit diesem Phänomen. Sie lehrt, daß eine Schwingung durch die Bewegung von Materie entsteht, die sich dann in Form einer Schallwelle, ausgehend von der Quelle, in einem Medium wie Luft oder Wasser räumlich ausbreitet. Die Geschwindigkeit, mit der sich eine Schallwelle fortbewegt (Schallgeschwindigkeit), hängt stark vom Medium ab, in der sie sich befindet. Einige Medien können Schallwellen besser ü bertragen (Luft), andere schlechter (Wasser). Wenn die Schallwellen periodisch sind, nehmen die Menschen dies als Ton oder Klang wahr. Der Ton besteht aus nur einer einzigen Schwingung (z.B. Sinusschwingung), die eine bestimmte Frequenz besitzt. Deshalb ist die Klangfarbe (Frequenzspektrum) eher eintönig. Ein Klang dagegen setzt sich aus einem Grundton und mehreren Teiltönen (Obertöne) zusammen. Dadurch klingt ein Klang voller. Wenn die Frequenzen der Teiltöne ganze Vielfache der Frequenz des Grundtones darstellen, dann spricht man auch vom harmonischen Klang, von dem letztendlich nur der Grundton vom Menschen als Tonhöhe (Frequenz der Schwingung) wahrgenommen wird. Wenn die Teilfrequenzen keine ganzen Vielfachen der Grundfrequenz sind, dann liegt ein disharmonischer Klang vor. Aperiodische Schwingungen werden vom menschlichen Ohr nur als Geräusche (Rauschen, Knistern) erkannt. Sie bestehen meist aus mehreren Teiltönen mit unterschiedlichen Frequenzen, die aber untereinander in keinem Zusammenhang 37 stehen. Neben der Tonhöhe und Klangfarbe spielt auch die Lautstärke (Amplitude der Schwingung) und deren Dynamik eine wichtige Rolle. Töne oder Klänge die sehr laut sind werden wesentlich stärker wahrgenommen als welche die leise sind. Die Dynamik eines Tones oder Klanges beschreibt dessen Lautstärkeverlauf in Bezug auf die Zeit, d.h. ein Klang beginnt oder endet i.d.R. nicht einfach abrupt, sondern wird mit einer bestimmten Intensität lauter, leiser oder hält die Lautstärke einige Zeit konstant. Die Entstehung von natü rlichen und instrumentalen Klängen ist sehr einfach erkennbar, weil Ursache und Wirkung direkt auszumachen sind. In der Natur verursacht die Brechung von Meereswellen ein Rauschen, der durch eine enge Schlucht strömende Wind ein Pfeifen oder das Verbrennen von Holz ein Knistern. Bei der Benutzung von Musikinstrumenten nimmt man den Klang wahr, indem eine Gitarrensaite gezupft, auf eine Trommel geschlagen oder mit dem Mund Luft in die Flöte geblasen wird. Jedes dieser Beispiele besitzt eine Ursache, die mechanische Schwingungen auslöst, die dann als Schallwellen vom menschlichen Ohr aufgenommen und als Klang interpretiert werden. Mit der Entstehung der Synthesizer und Sampler sowie der weiter zunehmenden Digitalisierung von Audiodaten ist diese Kausalität nicht mehr so einfach nachzuvollziehen, denn die Ursache wird durch das komplexe Gebilde eines Syntheseverfahrens ersetzt. Es ist nur in einem spezifischen Zustand in der Lage einen bestimmten natü rlichen Klang zu imitieren oder einen kü nstlichen Klang zu erschaffen. Dieser Zustand wird durch die Einstellung der Syntheseparameter und seiner Komponenten erreicht. Anschließ end erzeugt der Synthesizer elektrische Schwingungen, die dann erst durch die Membran des Lautsprechers wieder in mechanische Schwingungen umgewandelt werden und danach in Form von Schallwellen das menschliche Ohr erreichen. 3.3 Syntheseverfahren Fü r die Erzeugung von Klängen und Geräuschen sind die Syntheseverfahren verantwortlich, deren Funktionsweise auf unterschiedlichen Theorien beruht. In der Zeit der Analogsynthesizer wurde fast ausschließ lich die Subtraktive Synthese verwendet, da die praktische Umsetzung anderer Verfahren unter finanziellen 38 Gesichtspunkten kaum möglich war. Erst mit der fortschreitenden Digitalisierung der Synthesizer konnten auch andere Syntheseverfahren mit wenig Aufwand realisiert werden. So kann man heute durch die Verbindung mehrerer Komponenten wie Oszillatoren, Hü llkurven, Filter, Verstärker und Effekte alle Syntheseverfahren in Form eines Algorithmus bereitstellen. Dieser muß in der Lage sein, die Kriterien aller Syntheseverfahren zu erfü llen. Im Detail sind das die Erzeugung der Tonhöhe, die statische und dynamische Ä nderung der Lautstärke sowie die Erzeugung von charakteristischen Klangfarben. Nachfolgend werden die wichtigsten Verfahren kurz erläutert. Besondere Aufmerksamkeit erhält die FM-Synthese, weil ich diese fü r meine Untersuchungen zur Nachbildung eines Klanges durch die Entwicklung einer Struktur und der Optimierung der Syntheseparameter mit Hilfe Genetischer Algorithmen ausgewählt habe. Bei weiterfü hrendem Interesse empfehle ich die Quellen [HOE-02], [GOU-97], [BOL-98], [FIE-01], [FIS-98], [KOK-00], [RAB-01], [RIT-02] und [JUN-98] zu studieren. 3.3.1 Subtraktive Synthese Dieses Verfahren wird zur Zeit noch am häufigsten bei Analog- und DigitalSynthesizern eingesetzt, weil der Klangtü ftler hier am besten abschätzen kann, was fü r Resultate entstehen, wenn er den einen oder anderen Parameter verändert. Dieses Verfahren setzt sich aus mehreren Komponenten zusammen, zu denen mehrere Oszillatoren, Filter, Hü llkurven, LFOs und Effekte gehören. Das wichtigste Werkzeug bei der Subtraktiven Synthese sind die Filter, mit denen der Kü nstler den Charakter des Klanges formt. Wie der Name bereits andeutet, basiert dieses Prinzip auf der Subtraktion von Frequenzanteilen und Amplitudenwerten. Daher mü ssen die Oszillatoren möglichst viele, obertonreiche Schwingungen erzeugen. Denkbar wäre hier ein Rauschgenerator, aber in den meisten Fällen werden mehrere Oszillatoren verwendet, die einfache Sägezahn- oder Rechteckschwingungen generieren. In der nächsten Stufe werden von den vorliegenden obertonreichen Schwingungen unerwü nschte Frequenzbereiche entfernt. Diese Aufgabe wird von mehreren Filtern erledigt. An diesem Punkt muß der Kü nstler genau wissen, welche Eigenschaften der Klang einmal besitzen soll und welche Filter diesen Effekt erzielen. Fü r diesen Zweck stehen in fast allen Synthesizern Tiefpaß -, Hochpaß -, Bandpaß - und 39 Bandsperrfilter zur Auswahl bereit. Liegen nur noch die gewü nschten Frequenzen vor, wird als letztes in der Verstärkerstufe die Amplitude beeinfluß t, d.h. den gefilterten Klängen werden jetzt noch Lautstärkeanteile entzogen. Sowohl Filter als auch Verstärker können dynamisch durch eine Hü llkurve oder einen LFO (Niedrigfrequenzoszillator) gesteuert werden. Parameter Rauschgeneratoren, Oszillatoren Parameter Filter Parameter Verstärker Parameter Effekte Klang Abbildung 13: Prinzip der Subtraktiven Synthese Ein sehr einfacher Synthesizer, der die Subtraktive Synthese ermöglichen will, wü rde mit nur 1 Oszillator, 1 Filter, 1 Hü llkurve, 1 Verstärker und 1 LFO auskommen, wobei die Möglichkeiten fü r die Kombination der Komponenten sehr eingeschränkt wären. 3.3.2 Wavetable Synthese Die Wavetable Synthese, die auch als Wellenform Synthese bekannt ist, basiert auf einer Menge von vorgefertigten Wellenformen, die anstelle von Oszillatoren eingesetzt werden und dementsprechend fü r die Erzeugung von obertonreichen Schwingungen verantwortlich sind. Die Wellenformen besitzen eine feste Tonhöhe und Klangfarbe, sind jedoch in der Regel nicht dynamisch, d.h. ihre Lautstärke bleibt konstant. Sie stammen meistens von natü rlichen und instrumentalen Klängen ab und werden in Tabellen, den sogenannten Wavetables, im ROM-Speicher des Synthesizers hinterlegt. Aufgrund der oft begrenzten Speicherkapazität wird fast 40 immer nur eine Periode abgespeichert. Die Veränderung der Tonhöhe einer ausgewählten Wellenform wird durch unterschiedlich schnelles abspielen erreicht. Wie bei der Subtraktiven Synthese folgen auch hier Filter und Verstärker, die den obertonreichen Wellenformen bestimmte Frequenzbereiche und Amplitudenanteile entziehen. Dies kann auch hier durch modulierende Komponenten wie LFOs und Hü llkurven dynamisch beeinfluß t werden. In manchen Fällen werden auch additive Techniken fü r die Nachbearbeitung der Wellenformen benutzt. Parameter Samples, Wavetable-Oszillatoren Parameter Filter Parameter Verstärker Parameter Effekte Klang Abbildung 14: Prinzip der Wavetable Synthese Bei einigen Wavetable-Synthesizern kann man sogar eigene Wellenformen in den ROM-Speicher laden oder selbst programmieren. Diese sollten auch die Interpolation zwischen verschiedenen Wellenformen beherrschen. 3.3.3 Additive Synthese Das Prinzip der Fourieranalyse ermöglicht die Aufspaltung von akustischen Schwingungen in kleinere sinusförmige Teilschwingungen. Das Ergebnis sind die einzelnen Obertöne komplexer Klänge. Die Additive Synthese geht den umgekehrten Weg und versucht durch die additive Vermischung von mehreren einfachen Sinusschwingungen einen reichhaltigen Klang zu erzeugen, d.h. das Spektrum eines Klanges wird aus einzelnen Obertönen zusammengesetzt. Aus diesem Grund wird sie häufig auch als Fouriersynthese bezeichnet. Fü r die Erzeugung der Teiltöne werden 41 separate Oszillatoren verwendet, die einfache Sinusschwingungen generieren können. Jeder Oszillator besitzt zudem eine eigene Hü llkurve, die den zeitlichen Verlauf der Lautstärke bestimmt und dadurch maß geblich fü r die Betonung der Obertöne zu bestimmten Zeitpunkten verantwortlich ist. Parameter Oszillatoren, Hüllkurven Parameter Effekte Klang Abbildung 15: Prinzip der Additiven Synthese Mit dem Prinzip der Additiven Synthese kann theoretisch jeder Klang nachgebildet werden. Doch sollte man dabei bedenken, daß bei der Nutzung von sehr vielen Oszillatoren, die bitter nötig sind, um einen komplexen Klang zu imitieren, der Nutzer mit einer wahren Flut von Parametern ü berschwemmt wird. Auß erdem ist zu beachten, daß der Rechenaufwand proportional zur Anzahl der Oszillatoren und den dazugehörigen Hü llkurven steigt, was sich auf Synthesizer, die Echtzeitelemente besitzen, negativ auswirkt. 3.3.4 FM-Synthese Die FM-Synthese wurde im Jahr 1973 an der Stanford Universität von Chowning entwickelt. Die Firma Yamaha erkannte schnell das Potential der vielversprechenden Idee. Das Unternehmen kaufte die Patente fü r das Verfahren und entwickelte es weiter. Erst einige Jahre später gelang Yamaha der ersehnte Durchbruch. 1983 wurde der legendäre DX7-Synthesizer veröffentlicht, der unglaublich schnell populär wurde und Yamaha eine marktbeherrschende Position im Synthesizermarkt einbrachte. Aufgrund des Erfolgs wurden in den Folgejahren etliche Ableger des DX7 in allen nur erdenklichen Varianten produziert, aber auch in Soundkarten von Computern und anderen Geräten eröffneten sich ungeahnte Möglichkeiten. 42 Die FM-Synthese (Frequenzmodulation) und PM-Synthese (Phasenmodulation) werden unter dem Begriff der Modulationssynthese zusammengefaß t. Beide Syntheseverfahren sind sich sehr ähnlich. Der einzige Unterschied beider Verfahren ist, daß die FM-Synthese die Frequenz und die PM-Synthese die Phase von Oszillatoren modulieren. Die Vorgehensweise beider Prinzipien ist am Ende nicht wirklich entscheidend fü r die Klangerzeugung. Allgemein bekannt ist meistens nur die FM-Synthese, obwohl es hier oft zu Verwechslungen kommt, die schon allein durch die Hersteller von Synthesizern verursacht werden. Der Grund ist in einem Nachteil der Frequenzmodulation zu finden: Es kann nämlich durchaus vorkommen, daß bei der Modulation der Frequenzen auch negative Frequenzbänder entstehen, wenn ein Modulator eine höhere Frequenz besitzt als der modulierte Oszillator. Bei dem Auftreten von negativen Frequenzen werden diese einfach als positiv angesehen, was aber zum unerwü nschten Effekt der Phasenverschiebung um 180° fü hrt und der daraus resultierenden Frequenzverdopplung der betroffenen Bereiche, an denen schon ein anderes Frequenzband existiert. Bei der Phasenmodulation ist dieses Problem nicht gegeben, weil negative und positive Phasenverschiebungen den gleichen Effekt bewirken. Deshalb implementieren Hersteller bevorzugt die PMSynthese, verkaufen dann aber ihre Geräte als FM-Synthesizer. Das Prinzip der Modulation ist nicht wirklich neu. Auch andere Verfahren wie Subtraktive Synthese, Wavetable Synthese und in seltenen Fällen auch die Additive Synthese erlauben die Modulation eines Oszillators oder Filters durch einen LFO oder eine Hü llkurve. Sogar gegenseitige Modulation von Oszillatoren (Ring- und Kreuzmodulation) findet Anwendung. Die Möglichkeiten sind allerdings stark eingeschränkt, weil bei diesen Verfahren die Komponenten ein knapper Rohstoff sind. Bei der FM- und PM-Synthese ist dies anders, da hier von vornherein die Komponenten fü r derartige Verkettungen vorgesehen sind. Die zwei wichtigsten Elemente der FM-Synthese sind Oszillator und Hü llkurve. Beide Elemente werden in einem Operator zusammengefaß t, der wiederum als Baustein fü r die Aufstellung eines speziellen Ablaufplans dient. Dieser Ablaufplan wird als Algorithmus oder auch FM-Algorithmus bezeichnet. In einem Algorithmus werden mehrere Operatoren zusammengefaß t und miteinander verbunden. Wenn ein Operator die Frequenz oder Phase eines anderen moduliert, dann heiß t dieser Modulator. Die 43 letzten Operatoren im Algorithmus sind die Träger (sie modulieren keinen anderen Operator mehr). Auch die Rü ckkopplung (Selbstmodulation) eines Operators ist möglich und erzeugt, je nach Rü ckfü hrungsstärke, ein zusätzliches Rauschen im Klang. Die Träger werden in erster Linie auf die Tonhöhe und die Dynamik des Klanges angesetzt, während die Modulatoren fü r die richtige Klangfarbe sorgen. Diese kann um so reichhaltiger werden, je mehr Operatoren eines Algorithmus als Modulatoren verwendet werden. Parameter FM-Algorithmus (Operatorenverkettung) Parameter Effekte Klang Abbildung 16: Prinzip der FM-Synthese Der einfachste denkbare Algorithmus besteht aus nur zwei Operatoren und wird als einfache FM-Synthese bezeichnet. Die beiden Operatoren werden entweder in Reihe (1 Modulator und 1 Träger) oder parallel (2 Träger) miteinander verkettet. Die Parallelschaltung von Trägern zeigt, daß auch eine stark eingeschränkte Version der Additiven Synthesen nachgebildet werden kann. Mit dieser einfachen Form eines Algorithmus mit zwei Operatoren können schon eine Menge Klänge generiert werden, doch wird man damit sicherlich keine groß en Ü berraschungen erleben. Diese Tatsache fü hrt direkt zur komplexen FM-Synthese, die drei oder mehr Operatoren in einem Algorithmus vereint. Dadurch können noch komplexere Klangstrukturen hergestellt werden. Das fü hrt aber auch zu folgendem Nachteil: Je mehr Operatoren in einem Algorithmus verwendet werden, desto schwieriger ist nachzuvollziehen, welche Komponenten in welcher Weise den Klang beeinflussen und wie die einzelnen Parameter an diesem Vorgang beteiligt sind. Deshalb werden bei den meisten FM-Synthesizern auch nur 4 bis 6 Operatoren eingebaut. In der folgenden Abbildung sind einige Algorithmen fü r einen FM-Synthesizer mit 5 Operatoren zu sehen (die Träger befinden sich in der untersten Reihe, alle anderen Operatoren sind Modulatoren): 44 Abbildung 17: Algorithmen eines FM-Synthesizers mit 5 Operatoren Die Verallgemeinerung, daß ein bestimmter Algorithmus ein konkretes Instrument nachbildet, ist nicht richtig. Allein die unterschiedlichen Einstellungsmöglichkeiten der Parameter lassen eine breite Palette von Klängen entstehen. Jedoch kann man folgendes festhalten: Algorithmen, die aus vielen Trägern und wenigen Modulatoren bestehen, erzeugen Klänge, die aus mehreren Bestandteilen bestehen, aber keine komplexen Obertöne aufweisen. Nutzt man auf der anderen Seite wenige Träger und viele Modulatoren, dann erhält man sehr komplexe Frequenzspektren. Segen und Fluch liegen bei der FM-Synthese nah beieinander. Mit diesem Verfahren können auch heute noch neue und unverbrauchte Klänge erzeugt werden, was mit anderen Synthesemethoden nicht möglich wäre. Dabei werden die vielfältigen und reichhaltigen Klangfarben mit recht bescheidenen Mitteln erreicht. Doch die Bescheidenheit ist trü gerisch und kann zu unerwartetem Chaos fü hren, da das Zusammenspiel der Parameter oft nicht durchschaubar ist. Besonders bei vielen und komplex miteinander verbundenen Operatoren zeigt dieser Nachteil seine chaotische Auswirkung. Eine schnelle Programmierung eines Klanges nach Gefü hl, wie z.B. bei der Subtraktiven Synthese, ist damit nicht möglich. Viele Musiker versuchen deshalb in einem langwierigen Trial-Error-Verfahren den Klang nach ihren Vorstellungen zu 45 formen, was unter Umständen mehrere Tagen in Anspruch nimmt. Diese Vorgehensweise ist dem Zufall voll und ganz ausgeliefert. Eine etwas logischere Herangehensweise verlangt dem Kü nstler einiges ab. Dazu muß er nicht nur wissen, wie der Klang einmal klingen soll, sondern auch wie sich dieser in seine Komponenten zerlegen läß t und mit welchem FM-Algorithmus sich diese am besten generieren lassen. Auf den ersten Blick klingt das natü rlich ziemlich wissenschaftlich. Doch es gibt einige feste Regeln, die den Klangtü ftler dabei unterstü tzen: Der Träger (engl.: carrier) erzeugt in erster Linie den Grundton eines Klanges, der vom Menschen als Tonhöhe wahrgenommen wird. Wenn die Trägerfrequenz erhöht bzw. gesenkt wird, dann verschiebt sich das gesamte Klangspektrum nach rechts bzw. nach links. Eine weitere wichtige Aufgabe des Trägers ist die Belebung des Klanges. Dazu wird die im Träger enthaltene Hü llkurve eingesetzt, die dem Klang oder Klangbestandteil (mehrere Träger) die gewü nschte zeitliche Dynamik verleiht. Auch die Lautstärke des Klanges wird vom Träger bestimmt und sogar zum Gewicht, wenn mehrere Klangbestandteile miteinander vermischt werden. Der Modulator (engl.: modulator) kann zwei verschiedene Aufgaben ü bernehmen. Wenn seine Frequenz unter 20 Hz (untere Hörschwelle des Menschen) liegt, dann erzeugt dies einen Vibrato-Effekt, wie er auch von LFOs erzeugt wird. Liegt die Frequenz ü ber 20 Hz, dann entstehen neue Obertöne im Frequenzspektrum, die auch als Seitenbänder (engl.: sidebands) bezeichneten werden und den Klangcharakter erheblich aufwerten können. Wenn die Modulatorfrequenz angehoben bzw. gesenkt wird, dann erhöht bzw. verringert sich auch der Abstand zwischen den einzelnen Seitenbändern, d.h. das Klangspektrum wird einer Streckung bzw. Stauchung unterzogen. Das Frequenzverhältnis (engl.: frequency ratio) zwischen zwei Operatoren, in der Form FT : FM (Trägerfreq. zu Modulatorfreq.) bzw. FMA : FMB (Modulatorfreq. A zu Modulatorfreq. B) steht in einem festen Zusammenhang zu den erzeugten Seitenbändern im Frequenzspektrum. Dabei gilt: Wenn die Frequenz des Modulators einem ganzen Vielfachen der Trägerfrequenz entspricht (z.B. 1:2 oder 1:3 oder allg. 46 1:N, wobei N eine natü rliche Zahl ist), dann entstehen nur harmonische Obertöne. Wenn die Modulatorfrequenz dagegen kein ganzes Vielfaches ist (z.B. 2:5 oder 3:8 oder allg. N:M, wobei N und M natü rliche Zahlen sind), dann entstehen harmonische und unharmonische Obertöne, die sich im Klang als Verzerrung oder Rauschen bemerkbar machen. Der Träger selbst erzeugt den Grundton an der Stelle FT im Frequenzspektrum. Alle Obertöne bzw. Seitenbänder (FK) lassen sich nun mit den folgenden zwei Formeln berechnen: [6] FK = FT + k FM (obere Seitenbä nder) [7] FK = FT - k FM (untere Seitenbä nder) k = 1, 2 , K, n Wichtig bei der Berechnung der Seitenbänder ist, daß negative Frequenzen in den positiven Frequenzbereich gespiegelt werden und sich demnach dort als zusätzliche Seitenbänder einreihen. Weiterhin ist folgender Effekt zu beobachten: Wenn die Trägerfrequenz das doppelte Maß der Modulatorfrequenz erreicht oder dieses ü bersteigt (2 FT <= FM), dann werden Seitenbänder erzeugt, die immer ü ber dem Grundton des Trägers liegen. Ist dies nicht der Fall (2 FT > FM), dann entstehen auch Seitenbänder, die unter der Grundfrequenz des Trägers liegen. Das fü hrt dazu, daß der Zuhörer ein niedriger liegendes Seitenband als neuen Grundton wahrnimmt. Die Bildung eines Frequenzverhältnisses zwischen Träger und Modulator dient vorrangig dazu, die Frequenzen der beiden Operatoren relativ zueinander einzustellen. Das ist bei der Programmierung von Klängen eine groß e Hilfe und wird daher von fast allen Synthesizern auf diese Weise implementiert. Der Modulationsindex (engl.: modulation amount oder modulation index) reguliert die Intensität, mit der ein Träger (oder ein anderer Modulator) moduliert wird, d.h. die Amplitude des Modulators bestimmt die maximale Abweichung von der Frequenz des Trägers und damit auch wie viele Seitenbänder einmal entstehen werden. Grundlegend kann gesagt werden, daß eine steigende Modulatoramplitude auch ein verstärktes Auftreten von Seitenbändern zur Folge hat. Die im Modulator integrierte Hü llkurve ermöglicht zudem noch die zeitliche Steuerung der Modulationsintensität, was hier der Funktionsweise eines Filters sehr nahe kommt. 47 3.3.5 Weitere Syntheseverfahren Sampling basiert auf dem Prinzip der Veränderung eines aufgenommen digitalisierten Naturklanges, der als Sample abgespeichert wird. Die Bearbeitung der digitalen Naturklänge geschieht durch Transponierung, Loops, LFOs, Filter, Hü llkurven und einer ganzen Reihe von Effekten. Das Ergebnis ist ein mehr oder weniger originalgetreuer Klang. Dieses Verfahren wird immer häufiger und vor allem in der elektronischen Musikproduktion verwendet. Aus diesem Grund wird das Sampling oft den Syntheseverfahren zugeordnet, obwohl es im eigentlichen Sinne keines ist, da es die entstehenden Klänge nicht selbst erzeugt, sondern die aufgenommenen Samples nur verändert. Die LA-Synthese (Linear Arithmetische Synthese) ist der Vorgänger aller Syntheseverfahren, welche Klänge aus Wellenformen erzeugen, die im ROMSpeicher eines Synthesizers abgelegt sind. Das Grundprinzip des Verfahrens nutzt eine ganz bestimmte Eigenschaft des Menschen aus. Er ist nämlich in der Lage einen Klang schon an seiner Einschwingungsphase, die auch als Attack-Phase bekannt ist, zu erkennen. Diese Wellenformen der Einschwingungsphase werden in digitalisierter Form im Synthesizer abgespeichert. Die restlichen Phasen eines Klanges, also Abkling- (Decay), Stationär- (Sustain) und Ausklingphase (Release), können mit Hilfe der Attack-Phase durch Subtraktive Synthese reproduziert werden. Das Physical Modelling ist ein einzigartiges Syntheseverfahren. Es basiert auf der Entwicklung von Modellen, die es ermöglichen die physikalischen Eigenschaften von akustischen Instrumenten im Computer zu simulieren. Fü r diesen Zweck wird Aufbau und Funktionsweise des Instrumentes analysiert. Aus den gewonnenen Erkenntnissen wird ein Gesetz abgeleitet, das alle Vorgänge, die im realen Instrument ablaufen, berechnen kann. Dazu gehört die Erzeugung von Schallwellen durch einen Klangerreger (z.B. das Zupfen der Gitarrensaite oder das Blasen in die Flöte) und die Reflexion der Schallwellen im Resonanzkörper. Die aufgestellte Gesetzmäß igkeit wird dann als Schaltung von spezifisch eingestellten Oszillatoren und Filtern realisiert. Das Resultat dieser aufwendigen Vorbereitung ist ein Klang, der sich sehr naturgetreu anhört. Allerdings hat diese Art der Synthese zwei 48 Nachteile: Auf der einen Seite benötigt man genaue Kenntnisse ü ber die Beschaffenheit der einzelnen Instrumente, um ein geeignetes Modell aufzubauen und zum anderen werden die Nutzer hier nicht mit den herkömmlichen Oszillator-, Hü llkurven und Filterparametern konfrontiert, sondern damit, wie stark in eine Flöte geblasen oder an einer Gitarrensaite gezupft wird. Eine Variation der Parameter ist ohnehin nur selten möglich und oft stark eingeschränkt. Die Granularsynthese ist eine Weiterentwicklung der Wavetable Synthese, wird aber kaum eingesetzt. Das Syntheseprinzip der Klangerzeugung beruht hier auf der Verkettung von vielen kleinen Schallpartikeln, den sogenannten Grains, die in der Regel nur 5 – 100 Millisekunden lang sind. Grains können einfache Schwingungen in Form von Sinus-, Dreieck-, Rechteck- oder Sägezahnwellen sein, die von Oszillatoren generiert werden. Allerdings werden häufiger komplexe Wellenformen bestimmter gesampelter Klänge genutzt, die erfahrungsgemäß eine bessere Klanggrundlage darstellen. Die Einfluß nahme auf Dynamik, Tonhöhe und Länge eines Klanges kann während der Verkettung der Partikel zur Geltung gebracht werden, indem man Amplitude und Dauer der Grains verändert oder Wiederholungsabschnitte definiert. Auch die Vektorsynthese ist eine Weiterentwicklung der Wavetable Synthese. Grundlage bilden vier oder mehr Oszillatoren, deren Wellenformen und Frequenzen separat eingestellt werden können. Ein Vektor, daher auch der Name der Synthese, bestimmt das Mischungsverhältnis der beteiligten Oszillatoren in Form einer XYFunktion, die zusätzlich von der Zeit abhängig ist. Die Werte des dreidimensionalen Vektors werden von einem Joystick oder manchmal auch von Hü llkurven gesteuert. Genau wie bei der Wavetable Synthese, erzeugen die Oszillatoren obertonreiche Wellenformen, die auch hier nachträglich durch Filter und Verstärker verändert werden, indem man ihnen Klanganteile entzieht. Das Ziel der Vektor Synthese liegt hauptsächlich in der kreativen Nutzung der Oszillatoren, die fü r die Erzeugung der obertonreichen Wellenformen verantwortlich sind und dadurch die Klangfarbe von Anfang an vorgeben. Mit Hilfe der Vektor Synthese erhofft man sich neue interessante Klänge zu finden. 49 3.4 Synthesekomponenten Die einzelnen Komponenten haben unterschiedliche Aufgaben. Es gibt vier Kriterien, die im Wesentlichen von diesen Komponenten realisiert werden mü ssen: Dazu gehören die Erzeugung der Tonhöhe (Grundfrequenz), Klangfarbe und Lautstärke sowie die Belebung bzw. Dynamisierung des Klanges. Eine ausfü hrliche Darstellung der folgenden Komponenten ist in den Bü chern [SCH-98], [HOE-02] und [ANW-00] zu finden. 3.4.1 Oszillator Die Funktion des Oszillators, die in der Bereitstellung des Ausgangsmaterials fü r einen Klang besteht, wurde in den vorangegangenen Punkten schon häufiger erwähnt. Die Eigenschaften des entstehenden Klanges hängen von den jeweils ausgewählten Grundwellenformen ab, die der Oszillator permanent liefert. Bekannte und weitverbreitete Wellenformen sind Sägezahn, Dreieck, Sinus, Rechteck und Puls sowie das Rauschen (siehe Abb. 18). Jede dieser Grundschwingungen besitzt zudem zusätzliche Eigenschaften, die sich wiederum auf den erzeugten Klang auswirken. Es kommt dabei auch auf die Art der Klangsynthese an, welche Grundwellenformen bevorzugt eingesetzt werden. Im folgenden Abschnitt sind die wichtigsten Grundwellenformen und ihr Charakter kurz dargestellt: Die Sägezahnwelle (engl.: saw wave oder sawtooth wave) ist schon von Anfang an in allen Synthesizern vorhanden und erzeugt ein reichhaltiges Spektrum, in dem alle Obertöne mit sinkender Intensität vorkommen. Aus diesem Grund wird sie besonders bei den subtraktiven Syntheseverfahren verwendet. Den Klangcharakter kann man als kräftig, hart und hell beschreiben. Die Rechteckwelle (engl.: rectangle wave oder square wave) ist in ihrer Form durch einen abrupten Wechsel zwischen maximaler und minimaler Amplitude geprägt, der genau in der Mitte eines Durchlaufs stattfindet. Sie erschafft alle ungeraden Obertöne im Spektrum. Die Lautstärke der entstehenden Obertöne im Klangspektrum ergibt sich durch die natü rliche Reihe 1/N, wobei N hier der Ordnung des jeweiligen 50 Obertons entspricht. Das verleiht ihr einen recht hohlen, elektronischen Klang. Sie stellt auß erdem eine besondere Form der Pulswelle dar, wobei die Pulsbreite von Hoch- und Tiefphase einem Verhältnis von 50:50 entspricht. Die Pulswelle (engl.: pulse wave) läß t demnach auch andere Punkte fü r einen Wechsel zu, was bei einem Pulsbreitenverhältnis von 1:99 sogar zu einem nadelförmigen Impuls fü hrt. Dabei spielt es keine Rolle, ob eine Welleform durch ein Verhältnis der Gestalt 25:75 oder 75:25 gebildet wird, da der daraus resultierende Klang vom menschlichen Ohr nicht unterschieden werden kann, d.h. die Wellenform ist nur in ihrer Phase verschoben. Das Resultat sind hohle bis näselnde Klänge, wobei eine ausgeglichene Pulsbreite eher hohl und ein immer ungleicheres Verhältnis mehr und mehr näselnd klingt. Die Dreieckwelle (engl.: triangle wave) erinnert in ihrer Form am ehesten an die Sinuswelle und erzeugt, genau wie die Rechteckwelle, nur ungerade Obertöne, deren Lautstärken sich aus 1/N2 ergeben. Diese Eigenschaften verleihen ihr einen weichen und fließ enden Klangcharakter. Die Sinuswelle (engl.: sine wave) ist die einfachste Grundwellenform, die so in der Natur nicht existiert und im Gegensatz zu allen anderen keine Obertöne besitzt, sondern nur einen Grundton. Aus diesem Grund wird sie bevorzugt bei additiven und modulierenden Synthesetechniken verwendet. Den Klangcharakter einer Sinuswelle kann man als sehr weich beschreiben. Das Rauschen (engl.: noise) besteht aus zufällig erzeugten Signalen und stellt eigentlich keine Grundwellenform dar. Es wird oft in Oszillatoren integriert oder als eigenständiger Rauschgenerator zur Verfü gung gestellt. Bildet man das Mittel der generierten Signale, kann man erkennen, daß alle Frequenzen des Klangspektrums vorkommen. Deshalb besitzt das Rauschen auch keine Tonhöhe. Man unterscheidet zudem zwischen dem Weiß en Rauschen (engl.: white noise) und dem Rosa Rauschen (engl.: pink noise). Weiß es Rauschen enthält, wie schon erwähnt alle Frequenzen und Rosa Rauschen betont die tiefen Frequenzanteile. 51 Sägezahn Rechteck Puls (25:75) Dreieck Sinus Rauschen Abbildung 18: Grundwellenformen Die Palette an Grundwellenformen wurde in den letzten Jahren noch erheblich ausgebaut. Auf der Suche nach neuen Eigenschaften wurden zum einen die bereits erwähnten Wellenformen modifiziert oder miteinander kombiniert. Die bekanntesten Beispiele dafü r sind der Moog-Sägezahn (engl.: moog saw), der durch Addition von Dreieck- und Sägezahnwelle gewonnen wird und die abgeschnittene Sägezahnwelle (engl.: spaced saw wave oder peak wave). Der Oszillator bietet neben der Auswahl der Grundwellenform noch die Möglichkeit die Frequenz (Tonhöhe), Phase und Lautstärke (Amplitude) einzustellen. Weitere interessante Effekte lassen sich durch eine Hü llkurve oder einen LFO erzeugen. So kann eine Hü llkurve komplexe Verläufe fü r die Amplitude (Lautstärkeverläufe) als auch fü r die Tonhöhe (Frequenzverläufe) steuern oder mit einem LFO kann die Amplitude (Tremolo) oder Frequenz (Vibrato) geringfü gig moduliert werden. Weiterhin ist es möglich zwei Oszillatoren so miteinander zu kombinieren, daß sie sich gegenseitig modulieren (Ring-, Kreuz-, Frequenz- und Amplitudenmodulation) oder ein Oszillator (Master) einen anderen (Slave) synchronisiert, d.h. jedesmal wenn der Master eine komplette Periode durchlaufen hat, zwingt er auch den Slave von vorn zu beginnen. 52 3.4.2 Hüllkurve Natü rliche Klänge sind nur sehr selten eintönig, sondern besitzen einen dynamischen Lautstärkeverlauf, der sich zeitlich ändert. In diesem Verlauf unterscheidet man zwischen Einschwingungsphase, stationärer Phase und Ausschwingungsphase. In der Synthesizertechnik wird dieses Verhalten durch eine Hü llkurve (auch als Envelope bezeichnet) nachgeahmt. Diese wird ASR-Hü llkurve genannt, wobei A fü r Attack (Einschwingungsphase), S fü r Sustain (stationäre Phase) und R fü r Release (Ausschwingungsphase) steht. Die ASR-Hü llkurve wurde später noch erweitert und ist heute als ADSR-Hü llkurve (Abb. 19) in fast allen Synthesizern zu finden. Das zusätzliche D steht fü r Decay und erweitert die Einschwingungsphase, so daß auch Lautstärke eine abgeschwächte stationäre Klangphase möglich ist. D S A R Zeit Abbildung 19: ADSR-Hüllkurve Aufgrund ihrer doch recht niedrigen Flexibilität entwickelte man andere Konzepte fü r Hü llkurven. Das Ziel war jetzt nicht mehr nur die Zeitanteile fü r Attack, Decay, Sustain und Release sowie die Anschlagdynamik fü r die Sustain-Phase einstellen zu können, sondern auch den Level fü r Attack, Decay und Release zu bestimmen. Das Resultat war das Mehrstufen-Modell, das die gewü nschten Eigenschaften vorweisen konnte. 3.4.3 Verstärker Die Aufgabe des Verstärkers (engl.: Amplifier) liegt darin, ein durchgehendes Sample (Signal) in seiner Intensität abzuschwächen und mü ß te folglich eigentlich Verschwächer heiß en. Der Verstärker wird fast immer auf die Lautstärke eines 53 Klanges angesetzt. Ist der Lautstärkepegel eines Verstärkers auf 0% eingestellt, so wird das Signal vollkommen ausgelöscht, bei 50% wird es halbiert und bei 100% wird es gar nicht verändert. Stattet man nun einen Verstärker zusätzlich noch mit einer Hü llkurve aus, können einfache bis komplexe Lautstärkeverläufe erzeugt werden, die einen Klang oft erheblich aufwerten. 3.4.4 Filter Ein Filter hat die Aufgabe bestimmte Frequenzbereiche eines Klanges unverändert passieren zu lassen. Alle anderen Frequenzen werden abgeschwächt oder sogar ausgelöscht. Dadurch können sehr viele neue Klangfarben erzeugt werden. Die Parameter eines Filters sind die Arbeitsfrequenz (auch Kenn- oder Eckfrequenz; engl.: cuttoff frequency), die Flankensteilheit und die Stärke der Resonanz (engl.: resonance oder peak). Die Arbeitsfrequenz ist ein Schwellenwert. Das Filter bleibt inaktiv, solange der Wert eines Signals unter bzw. ü ber dem der Arbeitsfrequenz liegt. Erst wenn dieser ü ber- bzw. unterschritten wird, tritt das Filter in Aktion und verringert die Intensität des passierenden Signals. Dies geschieht nicht sofort, sondern es verringert die Intensität des Signals in Abhängigkeit zur Flankensteilheit. Die Resonanz sorgt zusätzlich dafü r, daß alle Signale, die im näheren Bereich der Arbeitsfrequenz liegen, verstärkt werden. Filter werden aufgrund ihrer Eigenschaften unterschieden: Tiefpaß filter (Abb. 20) eliminieren alle hohen Frequenzen und Hochpaß filter (Abb. 20) schwächen alle tiefen Frequenzen ab. Das Bandsperrfilter verringert alle Frequenzen im definierten Bereich und das Bandpaß filter läß t die Signale mit den gü ltigen Frequenzen passieren. Cuttoff Amplitude Amplitude Cuttoff Tiefpaß Frequenz Hochpaß Frequenz Abbildung 20: Tiefpaß- und Hochpaßfilter 54 Setzt man einen LFO auf einen der Parameter eines Filters an, so können durch die Modulation interessante Effekte erzielt werden. Eine Hü llkurve ermöglicht zudem noch komplexe Ä nderungen, die sich einsetzen lassen, um einen Klangfarbenverlauf zu realisieren. 3.4.5 Effekte Effekte werden oft eingesetzt, um einem Klang besondere Eigenschaften zu verleihen, die ein Syntheseverfahren nicht ermöglicht. Deshalb besitzen einige Synthesizer eine Effektsektion. Man unterscheidet grundsätzlich vier Arten von Effekten: Diese sind Lautstärke-, Zeitverzögerungs-, Wellenformungs- und Frequenzeffekte. Zu den Effekten fü r die Lautstärke zählen Tremolo, Panning und variable Lautstärkeveränderung (Compression, Expansion, Noise-Gating). Die Zeitverzögerungseffekte stellen u.a. Echo, Reverberation (Hall), Chorus, Flanging und Phasing bereit, während Distortion zu den Wellenformungseffekten gehört. Die letzte Art sind die Frequenzeffekte Vibrato, Pitch-Shifting, Wah-Wah und Vocoding. 55 56 4 Digitale Klangsynthese mit Hilfe Genetischer Algorithmen 4.1 Implementation der Klassenbibliotheken Damit mein Ansatz verwirklicht werden konnte, muß te ich entsprechende Bibliotheken fü r die Arbeit mit Genetischen Algorithmen und FM-Synthesizern entwickeln. Bei der Implementation wurde von Anfang an auf die Effektivität der Bibliotheken geachtet, da Horner und Wehn mit hohen, aber besonders Garcia mit teilweise extremen Rechenzeiten zu kämpfen hatten. Die Bibliotheken fü r die Genetischen Algorithmen und FM-Synthesizer wurden in der Programmiersprache Java geschrieben. Fü r die Entwicklung wurde Java 1.4 (JDK SE 1.4.0 Beta 3) verwendet. Die virtuelle Maschine wurde unter der Version 1.4 (JRE 1.4.0 Beta 3) betrieben. 4.1.1 Genetische Algorithmen Das grundlegende Gerü st der Genetischen Algorithmen habe ich in der abstrakten Klasse AbstractEvolution vereinigt. Der Ablauf einer Evolution ist annähernd so, wie ich es bereits im Punkt 2.3 beschrieben habe. Die Evolutionsklasse verfü gt ü ber die notwendige Reproduktions- und Ersetzungsstrategie sowie eine Population, die alle Individuen einer Generation enthält. Die einzige Funktion der Klasse AbstractEvolution, die noch vom Programmierer implementiert werden muß , ist prepareInitialPopulation() (Abb. 21). Sie ist fü r die Bereitstellung einer Ausgangspopulation verantwortlich. public class XxxEvolution extends AbstractEvolution { public void prepareInitialPopulation() { // Bildung der Ausgangspopulation } } Abbildung 21: Ableitung der Klasse AbstractEvolution 57 Damit die Ausgangspopulation erstellt und Folgepopulationen bewertet werden können, muß noch eine weitere abstrakte Klasse näher spezifiziert werden: AbstractIndividual (Abb. 22). Ein solches Individuum besitzt genau ein Chromosom und die wichtige Schnittstelle Evaluation. Ein Chromosom besteht aus einer Ansammlung von Elementen eines bestimmten primitiven Datentyps. Zur Zeit habe ich nur binäre (BinaryChromosome), ganzzahlige (IntegerChromosome) und reelle (DoubleChromosome) Datentypen realisiert. Einer dieser drei Typen muß ausgewählt werden. Mit den Eigenschaften des entsprechenden Datentyps eines Chromosoms kann ein Algorithmus fü r dessen Dekodierung entwickelt werden. Die Dekodierung eines Chromosoms wird im Interface Evaluation verwendet, welches die Implementation der beiden Funktionen realizeEvaluation() und realizeFitness() erfordert. Diese Methoden sind fü r die Bildung der Fitneß eines Individuums zuständig und werden von der Funktion evaluate() nacheinander ausgefü hrt: Zuerst realizeEvaluation(), in der das Chromosom dekodiert wird und die erhaltenen Parameter des Optimierungsproblems in die Zielfunktion eingesetzt werden. Danach realizeFitness(), in der, wenn es nötig ist, eine Anpassung der vorher berechneten Rohfitneß vorgenommen werden kann. public class XxxIndividual extends AbstractIndividual { public XxxIndividual() { super (new IntegerChromosome(size)); } public void realizeEvaluation() { // Dekodierung des Chromosoms // Bewertung des Individuums => Rohfitne ß } public void realizeFitness() { // Anpassung der Rohfitneß => Fitneß } } Abbildung 22: Ableitung der Klasse AbstractIndividual Die Realisierung der abstrakten Klassen AbstractEvolution und AbstractIndividual stellt die Hauptarbeit dar, wenn ein spezifisches Problem durch diese Bibliothek implementiert werden soll. In Abbildung 23 sind die Strukturen und Beziehungen der wichtigsten Schnittstellen und Klassen dieser Bibliothek fü r Genetische Algorithmen grafisch dargestellt: 58 <<interface>> Evolution <<abstract>> AbstractEvolution <<interface>> Reproduction <<interface>> Replacement <<interface>> Evaluation Population <<interface>> Individual <<abstract>> AbstractIndividual <<interface>> Chromosome Binary Chromosome Integer Chromosome Double Chromosome Abbildung 23: Klassenstruktur für den Genetischen Algorithmus Die beiden Interfaces Reproduction und Replacement benötigen keiner weiteren Implementation durch den Programmierer. Sie sind bereits vollständig realisiert, was ich im Folgenden kurz erläutern möchte. Fü r das Interface Reproduction habe ich eine abstrakte Klasse AbstractReproduction definiert. Jede Reproduktionsstrategie, die von dieser Klasse ableitet, hat Zugriff auf drei Interfaces, die als Genetische Operatoren fü r die Selektion, Kreuzung und Mutation verantwortlich sind. Fü r die Selektion von Individuen aus einer Population ist das Interface Selection zuständig. Dieses habe ich wiederum als abstrakte Klasse (AbstractSelection) erweitert. Auf dieser basieren die bereitgestellten Selektionsverfahren fü r den Wettkampf (TournamentSelection), das Ranking (RankedSelection) und die Skalierung (ScaledSelection). Die Funktionsweise der Verfahren wurde schon im Punkt 2.6.1 dargestellt. Neben der Selektion von Individuen mü ssen selbige auch verändert werden können, um neue Nachkommen zu schaffen. Diese Aufgabe wird vom Kreuzungs- und Mutationsoperator ü bernommen. Die Kreuzung wird durch das Interface Crossover und die Mutation durch das Interface Mutation repräsentiert. Zu beiden Interfaces habe ich abstrakte Klassen geschrieben, die die Wahrscheinlichkeit fü r das Ausfü hren des jeweiligen Operators enthalten. Eine direkte Implementation 59 der unterschiedlichen Kreuzungs- und Mutationstechniken, wie ich sie in den Punkten 2.6.2 und 2.6.3 beschrieben habe, war nicht möglich, da ich verschiedene primitive Datentypen fü r die Chromosomen zugelassen habe. Aus diesem Grund habe ich fü r jeden Datentyp eine eigene abstrakte Klasse vorgesehen. Fü r die Kreuzung sind dies BinaryCrossover, IntegerCrossover, DoubleCrossover und fü r die Mutation BinaryMutation, IntegerMutation, DoubleMutation. Aus diesen Klassen können dann die eigentlichen Operatoren fü r die Kreuzung und Mutation hervorgehen, die die entsprechende Funktion cross() aus dem Interface Crossover und mutate() aus dem Interface Mutation realisieren. So habe ich u.a. die Ein-PunktKreuzung (XxxSingleCrossover), die Zwei-Punkt-Kreuzung (XxxDualCrossover) und die gleichmäß ige Kreuzung (XxxUniformCrossover) sowie die gleichmäß ige Mutation (XxxUniformMutation) realisiert, wobei Xxx fü r den jeweiligen primitiven Datentyp (Binary, Integer, Double) steht. <<interface>> Reproduction <<abstract>> AbstractReproduction <<interface>> Crossover <<interface>> Selection <<interface>> Mutation <<abstract>> AbstractCrossover <<abstract>> AbstractSelection <<abstract>> AbstractMutation <<abstract>> BinaryCrossover RankedSelection <<abstract>> BinaryMutation <<abstract>> IntegerCrossover TournamentSelection <<abstract>> IntegerMutation <<abstract>> DoubleCrossover ScaledSelection <<abstract>> DoubleMutation Abbildung 24: Klassenstruktur für die Reproduktion Eine standardmäß ig realisierte Variante der Klasse AbstractReproduction liegt vor. Die entsprechende Klasse heiß t DefaultReproduction. Die Funktion reproduce(), die aus dem Interface Reproduction stammt, ist bereits nach dem Schema in Abbildung 2 (Zeilen 5 bis 8) implementiert. Wie fü r die Reproduktionsstrategie habe ich auch fü r die Schnittstelle Replacement, die das Ersetzungsverfahren repräsentiert, eine 60 abstrakte Klasse AbstractReplacement definiert. Auf der Basis dieser Klasse habe ich drei wichtige Verfahren fü r die Ersetzung von Individuen einer Population umgesetzt. Dazu zählen die Generationsersetzung (GenerationReplacement), der starke und schwache Elitismus (ElitismReplacement) sowie der dynamische Elitismus (DynamicElitismReplacement). Die Entwicklung weiterer Strategien fü r die Ersetzung ist möglich. Dazu muß die Klasse AbstractReplacement abgeleitet und die Funktion replace() implementiert werden. <<interface>> Replacement <<abstract>> AbstractReplacement Generation Replacement DynamicElitism Replacement Elitism Replacement Abbildung 25: Klassenstruktur für die Ersetzung Abschließ end möchte ich noch einmal zusammenfassen, welche Schritte fü r die Implementation eines Optimierungsproblems mit Hilfe dieser Bibliothek notwendig sind: · Spezifikation eines Verfahrens, das alle Parameter der Zielfunktion aus dem Chromosom ausliest bzw. dekodiert. · Spezifikation der Klasse AbstractIndividual, d.h. Realisierung der Funktionen realizeEvaluation() und realizeFitness(), um die Fitneß eines Individuums zu bestimmen. · Spezifikation der Klasse AbstractEvolution, d.h. Realisierung der Funktion prepareInitialPopulation(), um eine Ausgangspopulation zu erschaffen. Sobald alle genannten Schritte vollzogen sind, kann der Genetische Algorithmus wie folgt gestartet werden: Als erstes muß ein neues Objekt der Klasse XxxEvolution erzeugt werden. Danach können Konfigurationen vorgenommen werden, wie etwa die Auswahl eines geeigneten Ersetzungsverfahrens, eines Selektions-, Kreuzungsoder Mutationsoperators, einer Populationsgröß e und einer maximalen Anzahl an 61 Generationen. Im Anschluß wird die Funktion evolve() aufgerufen, mit welcher der Genetische Algorithmus letztendlich aktiviert wird. public class XxxMain { public static void main(String[] args) { XxxEvolution ev = new XxxEvolution(); // Konfiguration => ev.setXxx(); ev.evolve(); // Präsentation der Resultate } } Abbildung 26: Erzeugung und Start des Genetischen Algorithmus Neben der Anzahl an Generationen, die vom Algorithmus durchlaufen werden, können auch noch weitere Abbruchbedingungen spezifiziert werden. Dafü r muß das Interface TerminationCondition bzw. dessen Funktion terminate() implementiert und zu der entsprechenden Evolutionsklasse XxxEvolution durch die Funktion addTerminationCondition() hinzugefü gt werden. Der Genetische Algorithmus bricht dann am Ende einer Generation ab, wenn eine der zusätzlichen Abbruchbedingungen wahr wird oder die maximale Anzahl an Generationen erreicht wurde. 4.1.2 FM-Synthesizer Der von mir implementierte Synthesizer fü r die FM-Synthese wird von der Klasse FMSynthesizer repräsentiert (Abb. 27). Er kann sowohl die Frequenz als auch die Phase eines Oszillators modulieren. Der Synthesizer verfü gt ü ber ein Objekt der Klasse FMAlgorithm, welches die Verknü pfungen der Operatoren bestimmt. Ein Algorithmus besitzt eine bestimmte Anzahl an Operatoren, dabei mindestens 2 fü r eine Träger-Modulator Beziehung. Demnach besteht der einfachste Algorithmus fü r eine Frequenzmodulation aus nur zwei Operatoren. Diese können parallel oder kaskadenförmig miteinander verbunden sein. Die Ausgangssignale der Operatoren der untersten Ebene (Träger) werden durch Addition miteinander verknü pft. In einem Operator befinden sich ein Oszillator (FMOscillator) und eine Hü llkurve (FMEnvelope), die im mathematischen Sinne zeitabhängige Funktionen darstellen. Die ausgehenden Signale des Oszillators und der Hü llkurve werden durch eine Multiplikation miteinander verknü pft. Die Klasse FMOscillator kann durch 4 62 statische Eingänge (Amplitude, Frequenz, Phase und Wellentyp) sowie einen dynamischen Parameter, der fü r den Modulationsoperator vorgesehen ist, gesteuert werden. Wenn kein Modulationsoperator vorhanden ist, dann wird die Frequenz bzw. Phase des entsprechenden Operators nicht moduliert. Ein spezielles Flag ermöglicht zudem noch die Rü ckfü hrung (Feedback) des Ausgangssignals zum Zeitpunkt t, um es als Modulationskomponente zum Zeitpunkt t + 1 einsetzen zu können. In der Klasse FMEnvelope wurde eine ADSR-Hü llkurve realisiert, die durch 5 Parameter gesteuert werden kann. Dabei entsprechen die ersten beiden Parameter den Zeitanteilen fü r die Einschwingungsphase (Attack und Decay), der zweite und dritte Parameter den Zeitanteilen der stationären (Sustain) und der Ausschwingungsphase (Release). Der letzte Parameter regelt die Intensität der stationären Phase. Das Ausgangssignal der Hü llkurve liegt zwischen 0 und 1. <<abstract>> FMComponent FMAddition FMSynthesizer FMEnvelope FMOperator <<abstract>> Wavetable FMAlgorithm Sine Wavetable FMOscillator Triangle Wavetable Saw Wavetable Square Wavetable Abbildung 27: Klassenstruktur für den FM-Synthesizer Die Gleichung des einfachsten Algorithmus mit kaskadenförmiger Verbindung der Form fCAR(fMOD()) ist nachfolgend fü r die Frequenzmodulation [8] und fü r die Phasenmodulation [9] formuliert, wobei fC, pC und AC die Frequenz, Phase und Amplitude des Trägers sind und fM, pM sowie AM die Frequenz, Phase und Amplitude des Modulators, MI der Modulationsindex sowie t die Zeit. [8] [9] ( ( ) ) A C ( t ) sin(2 π fC t + p C + M I A M ( t ) sin(2 π fM t + pM )) A C ( t ) sin 2 π fC + M I A M ( t ) sin(2 π fM t + pM ) t + p C Die Amplitude des Trägers (AC) und Modulators (AM) entspricht hier der oben genannten zeitabhängigen Hü llkurvenfunktion. Die parallele Verbindung der beiden 63 Operatoren kann man als Additive Synthese betrachten, was natü rlich auch fü r mehr als zwei Operatoren gilt. Bei dieser Form der Operatorenverknü pfung wird allerdings auch keine Modulation der Frequenz oder Phase vorgenommen, wie nachfolgend zu sehen ist: [10] A C1( t ) sin(2 π fC1 t + p C1 ) + A C2 ( t ) sin(2 π fC2 t + p C2 ) Anstelle der hier verwendeten Sinusfunktion (sin) kann auch eine andere Grundwellenform, wie etwa die Dreieck-, Rechteck- oder Sägezahnwelle eingesetzt werden. Dies kann ü ber die Funktion setWavetable() in der Klasse FMOscillator erreicht werden. Die Funktion fordert als Parameter ein Wellentabellen-Objekt (abstrakte Klasse Wavetable). Zur Auswahl stehen 4 Klassen, die von Wavetable abgeleitet und realisiert wurden: SineWavetable (Sinus), TriangleWavetable (Dreieck), SquareWavetable (Rechteck) und SawWavetable (Sägezahn). 4.2 Klanganalyse Damit ich auf eine Vergleichsbasis zurü ckgreifen kann, benötige ich eine charakteristische Darstellung eines Klanges. Ich habe mich dabei fü r das Frequenzspektrum eines Klanges entschieden. Die gesuchten Frequenzbänder des Spektrums können mit Hilfe der Fouriertransformation berechnet werden. Diese versucht eine stetige Funktion, in diesem Fall ein kurzer Abschnitt eines Klanges, in seine Sinuskomponenten zu zerlegen. Allerdings handelt es sich bei den zu analysierenden Abschnitten um digitale Klänge und dementsprechend wird fü r deren Analyse die sogenannte Discrete Fourier Transformation (DFT) verwendet. Von der zu untersuchenden Funktion wird ein Fenster von N zusammenhängenden Punkten (Samples) herausgegriffen und analysiert. Da diese Methode fü r groß e Fenster mit N2 Rechenoperationen sehr rechenintensiv ist und viele Redundanzen aufweist, verwende ich die Fast Fourier Transformation (FFT). Sie stellt eine optimierte Form der diskreten Fouriertransformation dar und benötigt Dank einer ausgeklü gelten Technik (bit reverse ordering) von Cooley und Tukey (1965) nur noch N log(N) Rechenoperationen. Einzige Voraussetzung fü r die FFT ist, daß die Anzahl der Samples (Fenstergröß e) einer Zweierpotenz entspricht. Demnach werden ü blicherweise Fenstergröß en von 64, 128, 256, 512 usw. bis zu 65536 angewendet. 64 Das resultierende Ergebnis der schnellen Fouriertransformation ist ein Vektor der Größ e N / 2, in dem das Spektrum des untersuchten Klangabschnittes hinterlegt wurde. Bei den Vektorelementen handelt es sich, je nach Fenstergröß e, um mehr oder weniger präzise Frequenzbänder. Dabei gilt: Je kleiner ein Fenster ist, desto kleiner wird die Frequenzauflösung (mehr Frequenzen pro Frequenzband), d.h. das Ergebnis wird immer ungenauer. Erhöht man dagegen die Fenstergröß e, steigt auch die Frequenzauflösung (weniger Frequenzen pro Frequenzband) und demzufolge wird auch das Ergebnis immer genauer. In der folgenden Abbildung ist das Ergebnis der Fourieranalyse einer kurzen Sinusschwingung zu sehen: 256 Samples 150 128 Frequenzbänder 125 100 100 50 75 0 -50 50 -100 25 -150 0 0 50 100 150 200 0 250 25 50 75 100 125 - Frequenz (Sinus) bei 200 Hz - 128 Frequenzbänder á 31,25 Hz - Abtastrate bei 8000 Hz - Frequenz (Sinus) im 7. Frequenzband - Nyquistfrequenz bei 4000 Hz Abbildung 28: Zeit- und Frequenzdomä ne Es kann manchmal passieren, daß im ermittelten Spektrum plötzlich Frequenzen auftreten, die aber im analysierten Klangabschnitt ü berhaupt nicht vorkommen. Diese falschen Frequenzen werden als Artefakte bezeichnet. Die Ursache fü r deren Entstehung liegt in der beliebigen Auswahl eines bestimmten Abschnittes im Klang, dessen Signal normalerweise stetig verläuft. Doch das erste und letzte Sample eines Abschnittes unterscheiden sich meist stark in ihrem Wert, wie es auch beim abrupten Wechsel in einer Sägezahn- oder Rechteckwelle der Fall ist und verursachen dadurch die ungewollten Frequenzanteile. Der Einsatz einer Fensterfunktion vor Beginn der Fouriertransformation kann diesen Effekt abschwächen oder sogar beseitigen. Dazu werden die Signale an den Seiten des Analysefensters abgeschwächt. Die Stärke und Form der Abschwächung wird durch eine geeignete Funktion festgelegt. Fü r diesen Zweck gibt es eine Vielzahl an Funktionen mit unterschiedlichen Eigenschaften. Dazu zählen Rechteck-Funktion (rectangular function) ohne eine Abschwächung, 65 Dreieck-Funktion (triangular function), Blackman-, Hamming- oder HanningFunktion. In Abb. 29 werden die Auswirkungen von drei Funktionen verglichen. 150 Rechteck-Fensterfunktion 125 100 100 50 75 0 50 -50 25 -100 0 -150 0 150 50 100 150 200 250 25 50 75 100 125 0 25 50 75 100 125 0 25 50 75 100 125 Dreieck-Fensterfunktion 125 100 100 50 75 0 -50 50 -100 25 -150 0 0 150 0 50 100 150 200 250 Blackman-Fensterfunktion 125 100 100 50 75 0 -50 50 -100 25 -150 0 0 50 100 150 200 250 Abbildung 29: Fensterfunktionen Rechteck, Dreieck und Blackman Durch die Anwendung der Rechteck-Funktion sind zwar die Amplituden im Ergebnis der Frequenzanalyse am deutlichsten ausgeprägt, allerdings können hier auch Artefakte vorkommen. Die Dreiecks-Funktion vermindert das Auftreten der falschen Frequenzanteile und besitzt noch relativ deutliche Amplitudenwerte. Die Blackman-, Hamming- und Hanning-Funktion leisten gute Arbeit bei der Eliminierung der Artefakte, liefern aber mittelmäß ige Amplitudenwerte. 4.3 Realisierung des Genetischen Algorithmus Mit dem Vorliegen der beiden Bibliotheken fü r Genetische Algorithmen (Lösen von Optimierungsproblemen) und FM-Synthesizer (Produktion von Klängen durch das Verfahren der Frequenz- oder Phasenmodulation) konnte nun ein spezifischer 66 Genetischer Algorithmus fü r die Entwicklung eines optimierten FM-Synthesizers realisiert werden. Die in 4.1 genannten Schritte fü r das Dekodierungsverfahren, den Evaluationsmechanismus und die Erstellung der Ausgangspopulation wurden realisiert. 4.3.1 Aufbau eines Chromosoms Die Informationen fü r den Aufbau eines FM-Synthesizers werden aus einem Chromosom des Typs IntegerChromosom ausgelesen. Das Alphabet der Instanzen dieser Klasse wird auf ganzen Zahlen im Bereich von 0 bis 9 beschränkt. Die Position der Instruktionen fü r den strukturellen Aufbau und die einzelnen Parameter werden durch die Klasse RevivalDecoder definiert. Damit ü bernimmt sie auch die Aufgabe der Interpretation und Dekodierung eines FM-Synthesizer-Chromosoms. Damit aus einem Chromosom ein gü ltiger FM-Synthesizer konstruiert werden kann, ist zunächst die Anzahl der verwendeten Operatoren notwendig, wobei bis zu n dieser Operatoren in jeweils gleich groß en Segmenten nacheinander im Chromosom untergebracht werden. Ein Operatorensegment enthält die eigentlichen Gene des Chromosoms. FM-Synthesizer-Chromosom Operator 1 Operator 2 ... Operator n STI STI WAV FRE PHA MOD FDB ATT DEC SUS REL LEV 25 98 65 63873 61092 6594 2 032 510 494 369 854 Struktur Oszillator Hüllkurve Abbildung 30: Aufbau eines FM-Synthesizer-Chromosoms Die Algorithmen der FM-Synthese sind immer graphenförmig, wobei ein Groß teil davon zu einer baumförmigen Struktur erweitert werden kann. Graphenförmige Algorithmen werden i.d.R. nur verwendet, wenn eine Knappheit an Operatoren 67 besteht. In diesem Fall wird ein Operator als Modulator fü r zwei oder mehr Operatoren genutzt. Da bei Softwaresynthesizern eine solche Knappheit nicht vorliegt, können fü r mehrere Operatoren einzelne Modulatoren verwendet werden. Die Erweiterung eines graphenförmigen zu einem baumförmigen Algorithmus ist in Abbildung 31 dargestellt. Graphenstruktur Erweiterung Baumstruktur Abbildung 31: Graphen- und Baumstrukturen Die ersten beiden Gene (STI) dienen nun der Indizierung eines Feldes, das Vektoren enthält, welche wiederum die Anweisungen fü r den strukturellen Aufbau des Algorithmus der FM-Synthese beinhalten. Beide Gene besitzen eine Länge von 2 und können daher Werte zwischen 0 und 99 annehmen. Sie enthalten die Informationen fü r die Feldkoordinaten, welche durch Konvertierung des Allels des ersten Gens in den Bereich [0; 2] und des zweiten Gens in den Bereich [0; 1] berechnet werden können. Strukturgen (Information) Genlänge Quellintervall Zielintervall STI (Feldkoordinate 1) 2 [0; 99] [0; 2] STI (Feldkoordinate 2) 2 [0; 99] [0; 1] Indiziert man nun das Feld mit den berechneten Koordinaten, erhält man einen der insgesamt 6 möglichen Vektoren mit den Anweisungen fü r den strukturellen Aufbau. Ein ausgewählter Vektor enthält drei ganzzahlige Elemente, dessen Werte zwischen 0 und 2 liegen und demnach drei verschiedenen Anweisungen entsprechen. Diese haben fü r den strukturellen Aufbau folgende Bedeutung: · Anweisung 1 (Wert 0): Operator soll als Modulator kaskadenförmig zum Vorgänger eingeordnet werden. Sollte dies nicht möglich sein, wird die nächste Alternative Anweisung aus dem Vektor ausgefü hrt. 68 · Anweisung 2 (Wert 1): Operator soll als Modulator parallel zum letzten Modulator eingeordnet werden. Sollte dies nicht möglich sein, wird die nächste alternative Anweisung aus dem Vektor ausgefü hrt. · Anweisung 3 (Wert 2): Operator wird als Träger eingeordnet. Diese Anweisung kann immer erfolgreich ausgefü hrt werden. Das erste Element des Vektors ist die primäre Anweisung, die beiden anderen Elemente sind Alternativen. Eine der beiden Alternativen ist immer funktionsfähig, falls die primäre Anweisung nicht durchgefü hrt werden konnte. Die Vorteile des Verfahrens liegen auf der Hand: Ich benötige keine Reparaturmechanismen fü r Chromosomen, die durch Kreuzung oder Mutation beschädigt wurden. Auch von einer dynamisch veränderlichen Größ e der Chromosomen kann abgesehen werden. Ich habe bereits erste Testläufe mit diesem Verfahren durchgefü hrt und die Ergebnisse waren sehr vielversprechend. Durch die lineare Struktur eines Chromosoms bei den Genetischen Algorithmen sind die hinteren Operatoren leider von den vorderen abhängig, d.h. eine Mutation in einem der Strukturgene bei den vorderen Operatoren könnte starke strukturelle Auswirkungen auf den entwickelten Algorithmus haben, während eine Mutation bei einem der hinteren Operatoren weniger stark ausfallen wü rde. Die Gene 3 bis 7 (WAV, FRE, PHA, MOD und FDB) enthalten die genetischen Informationen fü r den Oszillator. Das dritte Gen (WAV) liefert bei einer Länge von 2 einen Wert von 0 bis 99. Nach einer linearen Transformation in den Bereich [0; 3] indiziert es eine der 4 Grundwellenformen Sinus, Dreieck, Rechteck oder Sägezahn. Das vierte und fü nfte Gen (FRE und PHA) stellen die Frequenz und Phase bereit. Mit einer Genlänge von jeweils 5 können sie Werte zwischen 0 und 99999 annehmen. Die Transformation der Frequenz hängt allerdings von der maximal darstellbaren Frequenz des Originalklangs ab und bewegt sich dementsprechend im Bereich von 0 bis zur Nyquistfrequenz. Die Phase wird in das Intervall [0; 2Π ] transformiert. Das sechste Gen (MOD) enthält den Wert fü r den Modulationsindex, der von der Höhe der Frequenz abhängig ist und in das Intervall [0; f / 2] transformiert wird. Das siebente Gen (FDB) ist eigentlich nur eine binäre Anweisung, ob ein Oszillator sich selbst moduliert (Feedback) oder nicht. Es besitzt die geringste Genlänge von 1 und 69 kann demnach Werte von 0 bis 9 annehmen. Durch eine Transformation wird es in einen binären Wert umgewandelt. Oszillatorgen (Information) Genlänge Quellintervall Zielintervall WAV (Grundwellenform) 2 [0; 99] [0; 3] FRE (Frequenz) 5 [0; 99999] [0; Nyquistfrequenz] PHA (Phase) 5 [0; 99999] [0; 2Π ] MOD (Modulationsindex) 4 [0; 9999] [0; f / 2] FDB (Feedback) 1 [0; 9] [0; 1] Mit Hilfe der ausgelesenen Werte kann der Oszillator (FMOscillator) des aktuellen Operators konfiguriert werden. Danach beginnt die Dekodierung der Parameter fü r die Hü llkurve, was im folgenden Abschnitt beschrieben wird. Die Gene 8 bis 12 (ATT, DEC, SUS, REL und LEV) enthalten die genetischen Informationen fü r die Parameter der Hü llkurve. Das achte und neunte Gen (ATT und DEC) bestimmen den Anteil fü r die Einschwingungsphase, das zehnte Gen (SUS) den Anteil fü r die stationäre Phase und das elfte Gen (REL) den Anteil fü r die Ausschwingungsphase. Die vier zuvor genannten Gene haben alle eine Länge von 3 und können demnach Werte von 0 bis 999 annehmen. Eine Transformation findet nicht statt, sondern die Werte der Gene werden direkt an ein Objekt der Klasse FMEnvelope weitergeleitet, wo sie noch einer Normalisierung unterzogen werden. Das letzte Gen (LEV) enthält die Information fü r die Stärke der stationären Phase und besitzt die gleiche Genlänge wie die anderen Hü llkurvengene. Damit kann es auch Werte im Bereich [0; 999] annehmen, die wiederum in gebrochene Zahlen umgewandelt werden, die im Intervall [0; 1] liegen. Hüllkurvengen (Information) Genlänge Quellintervall Zielintervall ATT (Attack-Anteil) 3 [0; 999] [0; 999] DEC (Decay-Anteil) 3 [0; 999] [0; 999] SUS (Sustain-Anteil) 3 [0; 999] [0; 999] REL (Release-Anteil) 3 [0; 999] [0; 999] LEV (Sustain-Level) 3 [0; 999] [0; 1] Mit Hilfe der ausgelesenen Werte können die Eigenschaften der Hü llkurve (FMEnvelope) des entsprechenden Operators eingestellt werden. 70 Wenn die Struktur des Algorithmus vollständig aufgebaut ist und die Oszillatoren sowie Hü llkurven aller Operatoren richtig konfiguriert wurden, dann kann der Algorithmus (FMAlgorithm) der Instanz eines Synthesizers (FMSynthesizer) ü bergeben werden. Damit liegt ein gü ltiger Synthesizer fü r Frequenz- oder Phasenmodulation vor. Durch die anschließ ende Synthese und Analyse des Klanges (siehe 4.3.2), kann dessen Leistungsfähigkeit durch einen Vergleich mit dem Frequenzspektrum des Originalklanges ermittelt werden. Ein auf diese Weise strukturiertes Chromosom ermöglicht zudem die unbekü mmerte Verwendung vorhandener Kreuzungs- und Mutationsoperatoren fü r den Typ IntegerChromosome (siehe 4.3.4). 4.3.2 Erzeugung und Bewertung eines Individuums Ein FM-Synthesizer Individuum habe ich von der Klasse AbstractIndividual abgeleitet und als RevivalIndividual realisiert. Bei der Erzeugung eines neuen Individuums wird auch ein Chromosom des Typs IntegerChromosom instanziert. Die Länge des Chromosoms kann von der Klasse RevivalDecoder bestimmt werden. Das Alphabet wird durch die entsprechenden Methoden der Klasse IntegerChromosom spezifiziert. Ein Zeichen kann dann ganze Zahlen im Bereich von 0 bis 9 annehmen. Nachdem das Chromosom in der geforderten Länge vorliegt und das Alphabet bestimmt wurde, können alle Zeichen mit zufälligen Werten belegt werden. Dies geschieht auf der Basis von gleichverteilten Zufallszahlen. Neben einer Möglichkeit fü r die Erzeugung eines Individuums, muß auch dessen Bewertung spezifiziert werden. Damit dies möglich ist, habe ich die Funktionen realizeEvaluation() und realizeFitness() aus dem Interface Evaluation realisiert. Die Bewertung eines Individuums wird durch die Zielfunktion realizeEvaluation() ermittelt. Dies geschieht in drei Schritten: Zuerst kommt der RevivalDecoder zum Einsatz. Er interpretiert bzw. dekodiert ein Chromosom und baut aus den entschlü sselten Informationen einen gü ltigen FM-Synthesizer auf. Danach folgt das, was die Synthesizer am besten können, nämlich einen Klang erzeugen. Der Syntheseprozeß wird allerdings nicht den kompletten Klang erstellen, vielmehr werden viele einzelne Abschnitte synthetisiert, die ü ber den gesamten Zeitraum der 71 Synthese verteilt sind. Diese Abschnitte definiere ich hiermit als Synthesefenster, dessen Länge immer gleich ist. Die Größ e der Synthesefenster entspricht der Größ e der Fenster fü r die Fouriertransformation. Die Verteilung der Synthesefenster habe ich in linearer und logarithmischer Form vorgesehen. Die lineare Verteilung behandelt alle Zeitpunkte des zu synthetisierenden Klanges völlig gleichberechtigt. Der Zeitpunkt flin(x) eines Synthesefensters x wird durch die folgende Formel berechnet: [11] flin ( x ) = S max ( x - 1) N win - 1 x = 1, 2 , K, N win Dagegen betont die logarithmische Verteilung besonders die Einschwingungsphase, vernachlässigt dafü r die stationäre Phase und die Ausschwingungsphase. Den Zeitpunkt flog(x) fü r ein Synthesefenster x berechne ich mit Hilfe der folgenden Gleichung: [12] æ log(N win - x + 1) ö ÷÷ flog ( x ) = S max çç1 log ( N 1 ) è win ø x = 1, 2 , K, N win Die in den Gleichungen verwendeten Variablen Smax und Nwin werden vom Nutzer noch vor Beginn des evolutionären Prozesses angegeben, wobei Smax die maximale Anzahl der verteilbaren Zeitpunkte bzw. Sample-Positionen im Klang ausdrü ckt und Nwin die Anzahl der Analyse- bzw. Synthesefenster angibt. linear f(xNwin) f(x1) Zeit t in Samples f(x1) f(xNwin) logarithmisch Abbildung 32: Verteilung der Synthesefenster Nachdem die Positionen der Synthesefenster bestimmt wurden, werden fü r diese Zeitabschnitte die entsprechenden Klangschnipsel synthetisiert und der schnellen 72 Fouriertransformation unterzogen. Die aus der FFT resultierenden Nwin Spektren der Abschnitte des Syntheseklangs werden mit den passenden Nwin Spektren des Originals verglichen, die zu Beginn meines Verfahrens ermittelt wurden. Ich benutze nun die folgende Formel fü r den Vergleich der Frequenzbänder von Original- (FO) und Syntheseklang (SO): [13] e= æ Nws - 1 å çç å FO w i - FS w i w =1 è i = 0 Nwin w = 1, 2 , K, N win und ö ÷ ÷ ø i = 0 , 1, K, N ws - 1 Dabei entsprechen die in der Formel angegebenen Variablen w einem der Nwin Analysefenster der Fouriertransformation und i einem der Nws Frequenzbänder aus der Frequenzanalyse des Fensters w. Das Ergebnis e beschreibt den Fehler des synthetisierten Klanges in Bezug auf das Original und stellt die Rohfitneß fü r ein Individuum dar. Damit gilt folgender Zusammenhang: Je größ er die Rohfitneß ist, desto schlechter kann ein Individuum den Originalklang imitieren und je kleiner der Wert desto besser kann es das Original nachbilden. Der Fehlerwert 0 wü rde somit einer perfekten Nachbildung entsprechen. Da meine Bibliothek fü r die Genetischen Algorithmen eine Maximumsuche durchfü hrt und der oben beschriebene Prozeß eine Fehlersuche (Minimierung) ist, muß die Rohfitneß dementsprechend angepaß t werden. Dies habe ich mit der Implementation der Funktion realizeFitness() verwirklicht. Durch eine Negation der Rohfitneß eines jeden Individuums kann die Minimierung des Fehlers als Maximumsuche dargestellt werden. 4.3.3 Realisierung des Evolutionsprozesses Nachdem nun ein Dekodierungsverfahren fü r ein FM-Synthesizer-Chromosom, ein Mechanismus fü r dessen Erzeugung und ein Verfahren fü r die Bewertung der Fitneß eines Individuums spezifiziert wurden, fehlt nur noch ein Mechanismus fü r die Bildung der Ausgangspopulation und das Grundgerü st des Genetischen Algorithmus. Dieses wird durch die abstrakte Klasse AbstractEvolution bereitgestellt, die ich bereits im Punkt 4.1.1 erläutert habe. Dementsprechend habe ich durch deren Ableitung die Klasse RevivalEvolution erstellt, die auch die Realisierung der 73 Funktion prepareInitialPopulation() erforderte. Die Bildung der Ausgangspopulation wird dabei durch die Instanzierung von N Individuen des Typs RevivalIndividual erreicht, wobei N fü r die Populationsgröß e steht. Einige Parameter des Evolutionsprozesses werde ich von vornherein fest einstellen und eine Ä nderung durch den Nutzer nicht mehr zulassen. Dazu zählt auch der Typ der Reproduktionsstrategie, welche fü r die Bildung der Nachkommen zuständig ist. Ich greife hier auf die standardmäß ig implementierte Klasse DefaultReproduction zurü ck, die nach dem Konzept in Abbildung 2 (Zeile 5 bis 8) arbeitet. 4.3.4 Genetische Operatoren Die Selektion wird mit den in 2.6.1 beschriebenen Funktionalitäten (rangbasierte und skalierte Selektion sowie Wettkampfselektion) und den in 4.1.1 implementierten Formen (RankedSelection, ScaledSelection und TournamentSelection) verwendet. Als Kreuzungsoperatoren setze ich, aufgrund des verwendeten Chromosomentyps IntegerChromosome, die dazu passenden Klassen IntegerXxxCrossover ein, wobei Xxx hier fü r das verwendete Kreuzungsverfahren (Ein-Punkt-Kreuzung, Zwei-PunktKreuzung usw.) steht. Die Funktionsweise der ganzzahligen Kreuzungsverfahren ist mit denen der binären (siehe 2.6.2) identisch. Auch der Mutationsprozeß ist vom Typ IntegerChromosome abhängig. Aus diesem Grund benutze ich die Klassen fü r die ganzzahlige Mutation (IntegerXxxMutation). Besonders sei hier die gleichmäß ige Mutation (IntegerUniformMutation) erwähnt, die ähnlich wie die binäre Variante funktioniert: Jedes Zeichen im Chromosom wird auf die Wahrscheinlichkeit hin getestet, ob es mutiert wird oder nicht, d.h. fü r jedes Zeichen wird eine gleichverteilte reelle Zufallszahl im Intervall [0; 1] ermittelt und wenn diese kleiner ist als die Mutationswahrscheinlichkeit, dann findet die Mutation an der entsprechenden Position statt. In diesem Fall wird ein neuer Wert fü r das betreffende Zeichen durch eine gleichverteilte ganzzahlige Zufallszahl ermittelt, die im Bereich von 0 bis 9 liegt. 74 4.4 Die Applikation Revival Der zuvor beschriebene evolutionäre Prozeß arbeitet ohne Interaktionen mit einem Nutzer und kann demnach als automatisiert angesehen werden. Jedoch soll es möglich sein, daß ein Nutzer vor Beginn des Prozesses ü ber einige Eigenschaften fü r den Genetischen Algorithmus, die Klanganalyse und -synthese bestimmen darf. Weiterhin soll der Nutzer nach der Entwicklung eines Synthesizers dessen Algorithmus und die optimierten Parameter der Operatoren ansehen können. Aus diesem Grund habe ich meine Applikation Revival mit einer grafischen Schnittstelle ausgestattet. Abbildung 33: Applikation Revival Die Schnittstelle ermöglicht die Konfiguration aller nötigen Parameter auf einfache Weise und präsentiert dem Nutzer die Ergebnisse des Evolutionsprozesses. Der Ablauf einer Evolution mit Revival wird in vier Phasen vollzogen: In der ersten Phase (Konfigurationsphase) mü ssen die Parameter fü r den Prozeß von einem Nutzer ausgewählt werden. In der zweiten Phase (Analysephase) ü bernimmt das Programm die Kontrolle und analysiert den Originalklang in Bezug auf sein Spektrum. In der dritten Phase (Evolutionsphase) beginnt die eigentliche Arbeit meines Verfahrens. Der implementierte Genetische Algorithmus RevivalEvolution versucht nun einen 75 FM-Synthesizer zu entwickeln, der am Ende die Fähigkeit besitzen soll, den vorgegebenen Klang annähernd nachzubilden. Nachdem der kü nstliche Evolutionsprozeß terminiert, werden die Ergebnisse der Analyse- und besonders der Evolutionsphase ausgewertet und fü r den Nutzer grafisch aufbereitet. In der vierten Phase (Präsentationsphase) werden dem Nutzer dann die vorbereiteten Ergebnisse präsentiert. Nutzer Konfigurationsphase Analysephase Evolutionsphase Präsentationsphase Nutzer Abbildung 34: Evolution eines FM-Synthesizers mit Revival Ich habe noch zusätzlich die Möglichkeit fü r das Abspeichern einer aktuellen Konfiguration als Datei (*.par) ermöglicht. Zu einem späteren Zeitpunkt kann diese erneut geladen und verwendet werden, ohne alle Einstellungen noch einmal spezifizieren zu mü ssen. 4.4.1 Konfigurationsphase In dieser Phase kann der Nutzer verschiedene Parameter fü r den Genetischen Algorithmus (RevivalEvolution), die Fouriertransformation (FFT) und Klangsynthese (FMSynthesizer) konfigurieren sowie einen Klang auswählen, der nachgebildet werden soll. Diese vier Parametergruppen werden in den drei folgenden Schritten spezifiziert: Der erste Schritt ist die Auswahl eines Originalklanges, der als WAV-Datei im PCMFormat geladen werden kann. Zusätzlich werden einige Informationen des 76 angegebenen Klangs wie die Samplerate, die Anzahl der Samples und die Spieldauer angezeigt. Die Applikation Revival verarbeitet nur einen Kanal eines Klangs (Mono). Sollte ein Klang mit zwei Kanälen (Stereo) geladen werden, dann wird nur der linke Kanal verwendet. Neben dem Originalklang, kann auch eine WAV-Datei angegeben werden, in welcher der synthetisierte Klang des besten Individuums des gesamten Evolutionsprozesses abgespeichert wird. Dieser Klang wird ausschließ lich im MonoFormat gespeichert. Der zweite Schritt befaß t sich mit der Konfiguration der Parameter fü r den Genetischen Algorithmus. Mit den entsprechenden Feldern können die Größ e der Population, die maximale Anzahl an Generationen, ein Selektionsverfahren, eine Ersetzungsstrategie, der Initialisierungstyp fü r den Zufallsgenerator, ein Mutationsund Kreuzungsoperator sowie die Wahrscheinlichkeiten fü r Mutation und Kreuzung eingestellt werden. Dabei sind folgende Beschränkungen und Vorgaben zu beachten: Die Populationsgröß e (Population size) kann mindestens 2 bis maximal 200 Individuen betragen. Ein Wert, der kleiner oder größ er ist, macht keinen Sinn und verschwendet nur unnötig Ressourcen. Die maximale Generationsanzahl (Generations) fordert einen Wert von 10 bis 1000. Die möglichen Optionen fü r ein Selektionsverfahren (Selection) sind Wettkampfselektion, lineare und nicht lineare rangbasierte Selektion sowie linear, logarithmisch und exponentiell skalierte Selektion. Als Ersetzungsstrategie (Replacement) kann der starke und schwache Elitismus (mit einem Eliteanteil von 10%, 25% oder 50%), die Generationsersetzung und der Dynamische Elitismus (mit 10%, 25% und 50% maximalem Eliteanteil) eingestellt werden. Der Kreuzungsoperator (Crossover) wird durch die Verfahren der Ein-Punkt-Kreuzung, der Zwei-Punkt-Kreuzung (mit und ohne Translokation) und der gleichmäß igen Kreuzung sowie der Mischform aus Ein-Punkt- (1/3) und ZweiPunkt-Kreuzung mit Translokation (2/3) bei möglichen Wahrscheinlichkeitsraten von 10% bis 100% spezifiziert. Als Mutationsoperator (Mutation) können die gleichmäß ige Mutation, die Inversions- und Transloktionsmutation angegeben werden, wobei die Mutationswahrscheinlichkeit im Rahmen von 0% bis 25% geregelt wird. Der Zufallsgenerator (Random seed) kann mit einem festen Wert (letzter Initialisierungswert), dem Wert 0 (Reset) oder der aktuellen Zeit initialisiert werden. 77 Der dritte Schritt ermöglicht die Einstellung der Parameter fü r die Analyse und Synthese eines Klanges. In Bezug auf die Klanganalyse können Größ e der Analysefenster, Abdeckungsrate, Verteilung und Art der Fensterfunktion festgelegt werden. Die Größ e eines Fensters (FFT window size) wird durch einen der Werte 64, 128, 256, 512, 1024, 2048, 4096 oder 8192 bestimmt. Die Anzahl der Fenster wird durch die Abdeckungsrate (FFT window rate) im Bereich von 1% bis 150% bestimmt. Die Verteilung der Analysefenster (FFT window distribution) kann linear oder logarithmisch (Betonung der Einschwingungsphase) erfolgen. Die möglichen Optionen fü r die Fensterfunktion (FFT window function) sind Dreieck, Hamming, Hanning, Blackman, Bartlett und Rechteck. In Bezug auf die Klangsynthese können die Anzahl der Operatoren (Operator number) von mindestens einem bis maximal 100 Operatoren und der Typ der Modulationssynthese (Modulation type) als Frequenz- oder Phasenmodulation konfiguriert werden. 4.4.2 Analysephase Diese Phase dient der Ermittlung des Frequenzspektrums des Originalklangs durch die Fouriertransformation, wobei die in 4.4.1 angegebenen Parameter verwendet werden. Bevor die Frequenzanalyse beginnen kann, mü ssen zuerst die Zeitpunkte fü r die Analysefenster mit Hilfe der Verteilungsfunktion berechnet und in einem Vektor abgelegt werden, da sie später noch fü r die Frequenzanalyse der synthetisierten Klänge Anwendung finden. Danach wird die Fouriertransformation fü r jedes der Nwin Analysefenster durchgefü hrt. Die daraus resultierenden Nws/2 Frequenzbänder pro Fenster werden in einem Feld (FO) hintergelegt. Die Ergebnisse sind Voraussetzung fü r die Evolutionsphase, wo sie dann mit den Spektren der synthetisierten Klänge (FS) verglichen werden. 4.4.3 Evolutionsphase Dies ist ohne Zweifel der wichtigste Teil meines Verfahrens. Hier wird mit Hilfe der Genetischen Algorithmen ein FM-Synthesizer entwickelt und optimiert. Das nötige Grundgerü st fü r den kü nstlichen Evolutionsprozeß (siehe 2.3 und 4.3.3) wird durch die Klasse RevivalEvolution zur Verfü gung gestellt. Der Ablauf der Prozedur beginnt 78 mit der Konfiguration der Instanz und dem Aufruf der Funktion evolve(): Diese fü hrt als erstes die von mir in 4.3.3 realisierte Funktion prepareInitialPopulation() aus, die eine Ausgangspopulation erzeugt. Danach wird die soeben erstellte Population noch bewertet (siehe 4.3.2). Anschließ end beginnt der iterative Teil des Genetischen Algorithmus. Zuerst werden mit Hilfe der Reproduktionsstrategie Nachkommen gebildet, wobei sich deren Anzahl nach der Größ e der aktuellen Population richtet. Die Bildung von genau zwei Nachkommen wird demnach durch die Selektion von ebenfalls zwei Elternindividuen und deren Kreuzung erreicht. Anschließ end folgt noch die Mutation der Nachkommen. Wenn genü gend Kinderindividuen gebildet wurden, werden diese bewertet. Danach wird die Ersetzungsstrategie aufgerufen, um die Population der vorhergehenden Generation und die erzeugten Nachkommen fü r die nächste Generation zu bilden. Da bei manchen Ersetzungsverfahren (z.B. schwacher Elitismus) noch zusätzlich Veränderungen am genetischen Material der Individuen (Mutationen) vorgenommen werden, muß die aktuelle Population noch einmal bewertet werden. Solange die maximale Generationsanzahl nicht erreicht ist, wird der Prozeß von Reproduktion, Bewertung der Kinder, Ersetzung, Bewertung der aktuellen Population, Ermittlung des besten Synthesizers fortgesetzt. 1 Konfiguration der Instanz RevivalEvolution 2 Bildung einer Ausgangspopulation von Synthesizern 3 Bewertung der Ausgangspopulation 4 Wiederhole solange nicht genügend Nachkommen gebildet wurden 5 Selektion von zwei Individuen (Eltern) 6 Kreuzung der Eltern (Nachkommen) 7 Mutation der Nachkommen 8 Evaluation der Nachkommen 9 Aufruf der Ersetzungsstrategie 10 Evaluation der aktuellen Population 11 Ermittlung des besten Synthesizers dieser Generation 12 Wiederhole solange Terminierungsbedingung nicht wahr ist Abbildung 35: Ablauf der Evolutionsphase 79 Damit ein Nutzer schon während dieser Phase einen groben Eindruck ü ber den Fortschritt des Prozesses erhält, werden im Status-Fenster der Applikation Revival, beim Auftreten eines neuen besten Individuums, Informationen wie Generation, Fitneß des Individuums und die durchschnittliche Fitneß der aktuellen Population angezeigt. Da die Evolutionsphase sehr viel Zeit in Anspruch nehmen kann, wurde zusätzlich ein Abbruchmechanismus eingebaut. Wenn die kü nstliche Evolution abgeschlossen ist oder vorzeitig beendet wurde, folgt die Aufbereitung der Ergebnisse fü r die Präsentationsphase. 4.4.4 Präsentationsphase In der vierten und letzten Phase kann sich der Nutzer die vorbereiteten Ergebnisse ansehen. Dort gibt es drei verschiedene Ansichten. Die erste Ansicht (Sound evolvement) zeigt den Original- und Syntheseklang sowohl in der Zeit- als auch in der Frequenzdomäne. Es ist möglich den originalen Klang und die synthetisierten Klänge der besten Synthesizer aller Generationen anzusehen und anzuhören. Abbildung 36: Ansicht Sound evolvement In der nächsten Ansicht (Algorithm evolvement) wird der beste Synthesizer des Evolutionsprozesses, genauer gesagt dessen Algorithmus und Parameter, als Baum dargestellt. Die Blätter und Knoten entsprechen den verwendeten Operatoren, von 80 denen der Typ (Träger = CAR oder Modulator = MOD) und die Informationen zu den Parametern des Oszillators sowie der Hü llkurve ausgegeben werden. Dies sind fü r den Oszillator der Wellentyp (WF = Sinus | Dreieck | Sägezahn | Rechteck), die Frequenz (F), die Amplitude (A), die Phase (P), der Modulationsindex (MI – nur wenn nötig) und der Feedback-Indikator (FB = ja | nein) sowie fü r die Hü llkurve die prozentualen Anteile der Einschwingungsphase (A, D), der stationären Phase (S) inklusive Level (L) und der Ausschwingungsphase (R). Abbildung 37: Ansicht Algorithm evolvement Die letzte Ansicht (Fitness evolvement) bietet eine Darstellung der Entwicklung der Fitneß ü ber den gesamten Zeitraum der kü nstlichen Evolution, wobei die x-Achse dem Generationsverlauf und die y-Achse dem Fitneß wert des jeweils besten Individuums einer Generation entspricht. Abbildung 38: Ansicht Fitness evolvement 81 4.5 Experimente Mit Hilfe der von mir entwickelten Applikation Revival habe ich eine Reihe von Experimenten durchgefü hrt. Basierend auf den Ergebnissen konnte ich mir einen Ü berblick ü ber die Abhängigkeiten und Zusammenhänge bestimmter Einfluß größ en sowie ü ber eventuelle Schwachstellen in meinem Verfahren verschaffen. Die dafü r benötigten Klänge habe ich aus dem Synthesizer meiner Soundkarte aufgenommen. Es handelt sich vorwiegend um klassische Instrumente wie Klavier, Trompete, Orgel oder Harfe. Die Klangbeispiele sind jeweils 2 Sekunden lang. Sie wurden mit einer Abtastfrequenz von 8000 Hz und einer Genauigkeit von 16 Bit pro Sample kodiert. Die vorliegenden Klänge habe ich zuerst nach einer standardmäß igen Konfiguration (siehe 4.5.1) untersucht. Da der Test vieler Klänge einen erheblichen Zeitaufwand darstellt, habe ich mich auf zwei Klänge beschränkt, die ich fü r meine Experimente verwende: Einen Trommelschlag (TaikoDrum.wav) und einen Klavierklang (Piano.wav). Alle anderen Instrumente werden anhand der standardmäß igen und später einer möglichst optimalen Konfiguration nur einmal getestet. Alle Experimente wurden auf dem gleichen Computer durchgefü hrt, der mit einem AMD-Athlon Prozessor (550 MHz) ausgestattet ist und ü ber 512 MB Arbeitspeicher verfü gt. Als Betriebssystem wurde Windows 2000 eingesetzt. Wie bereits erwähnt, verwende ich die Java Runtime Environment der Version 1.4.0 Beta3. 4.5.1 Standardkonfiguration Schon während der Implementation meines Verfahrens habe ich sehr viele Versuche durchgefü hrt. Dabei haben sich allmählich bestimmte Werte fü r einen Groß teil der Parameter herauskristallisiert. Alle anderen Werte basieren entweder auf eigenen Erfahrungen oder auf Erkenntnissen aus einigen Quellen dieser Arbeit. Hier die ausgewählten Parameterwerte (GA = Genetische Algorithmen; KA = Klanganalyse; KS = Klangsynthese): · (GA) Populationsgröß e: 24 Individuen · (GA) Generationsanzahl: 250 Generationen 82 · (GA) Selektionsverfahren: Wettkampfselektion · (GA) Ersetzung: Dynamischer Elitismus mit max. Anteil der Elite von 10% · (GA) Kreuzungsoperator: Ein-Punkt-Kreuzung (33%) und Zwei-PunktKreuzung mit Translokation (67%) bei einer Kreuzungswahrscheinlichkeit von 75% (Kreuzungsrate meistens im Bereich von 60% – 90%) · (GA) Mutationsoperator: Gleichmäß ige Mutation bei einer Mutationsrate von 2% (ü bliche Werte sind 1% – 3%) · (GA) Initialisierung des Zufallsgenerators mit einem festen Wert · (KA) Fenstergröß e: 256 Samples · (KA) Abdeckung: 75% · (KA) Verteilung der Fenster: linear · (KA) Fensterfunktion: Dreieck · (KS) Anzahl der Operatoren: 6 (auch in digitalen FM-Synthesizern werden i.d.R. nur 4 oder 6 Operatoren verwendet) · (KS) Modulationstyp: FM Die Resultate der folgenden Experimente werden alle in tabellarischer Form dargestellt. In der ersten Spalte ist die Art des Experiments festgehalten. Die nächste Spalte zeigt die Rechenzeit (gerundet auf Minuten), die fü r die Entwicklung eines Synthesizers benötigt wurde. Die dritte Spalte enthält die letzte Generation, in der eine strukturelle Ä nderung im Algorithmus des besten Synthesizers stattfand. In der letzten Spalte ist der prozentuale Fehler von einem Durchlauf meines Verfahrens aufgefü hrt (bester Fitneß wert der Ausgangspopulation durch den besten Fitneß wert der letzten Generation mal 100 in Prozent). Die folgende Tabelle zeigt die Resultate eines Durchlaufs fü r die Klänge eines Klaviers (Piano.wav) und einer Trommel (TaikoDrum.wav), die auch fü r die weiteren Experimente verwendet wurden: Klavier / Trommel Zeit [min] LSV [Generation] Fehler [%] Standardkonfiguration 20 / 21 232 / 208 13,2 / 9,3 Wie der Tabelle zu entnehmen ist, dauerte die Berechnung der Syntheseklänge durchschnittlich 20 Minuten. Eine feste Struktur fü r den Algorithmus wurde in 83 beiden Fällen erst sehr spät gefunden. Bei beiden Klängen konnte bereits in der 75. Generation eine Fehlerrate von unter 20% erreicht werden, die sich dann allerdings bis zum Ende des Prozesses nur noch geringfü gig verbesserte. Die durchschnittlichen Grundfrequenzen (Klavier 262 Hz und Trommel 76 Hz) wurden sehr genau nachgebildet und die Dynamik der Klänge kann als gut gewertet werden. 4.5.2 Parameter des Genetischen Algorithmus Die ersten Experimente drehen sich alle um die Parameter der Genetischen Algorithmen. Abgesehen von der Populationsgröß e und der maximalen Anzahl an Generationen, sollten die Parameter keinen schwerwiegenden Einfluß auf den Prozeß ausü ben, solange sie nicht extreme Werte annehmen. Experiment EXP452-A. Variation der Populationsgrö ße. Es wurden die folgenden Testfälle betrachtet: 6, 12, 24, 36 und 48 Individuen in der Population des kü nstlichen Evolutionsprozesses. Klavier / Trommel Zeit [min] LSV [Generation] Fehler [%] EXP452-A1: 6 Individuen 5/5 24 / 15 15,4 / 9,3 EXP452-A2: 12 Individuen 10 / 10 167 / 17 16,0 / 10,0 EXP452-A3: 24 Individuen (STD) 20 / 21 232 / 208 13,2 / 9,3 EXP452-A4: 36 Individuen 30 / 30 249 / 15 12,2 / 10,0 EXP452-A5: 48 Individuen 42 / 42 250 / 126 13,6 / 10,1 Es ist ersichtlich, daß sogar bei einer Populationsgröß e von nur 6 Individuen immer noch eine erstaunlich niedrige Fehlerrate erreicht wird (und das bei einem Viertel der Zeit des Standards). Das beste Hörergebnis und damit die beste Nachbildung des Originals gelang mit der Standardkonfiguration von 24 Individuen. Ein höherer Wert fü r die Populationsgröß e scheint nicht angebracht, da einerseits keine besseren Ergebnisse zu erwarten sind und andererseits die Rechenzeit kontinuierlich ansteigt. Experiment 452-B: Variation der maximalen Generationsanzahl. Die folgenden Testfälle wurden untersucht: 50, 100, 150, 200, 250, 300, 350, 400, 450 und 500 Generationen bis zur Terminierung der kü nstlichen Evolution. 84 Klavier / Trommel Zeit [min] LSV [Generation] Fehler [%] EXP452-B1: 50 Generationen 4/4 39 / 50 29,0 / 18,2 EXP452-B2: 100 Generationen 8/8 92 / 50 14,3 / 12,6 EXP452-B3: 150 Generationen 12 / 12 125 / 149 13,8 / 9,9 EXP452-B4: 200 Generationen 16 / 17 157 / 168 13,7 / 9,4 EXP452-B5: 250 Generationen (STD) 20 / 21 232 / 208 13,2 / 9,3 EXP452-B6: 300 Generationen 24 / 25 232 / 296 11,7 / 9,1 EXP452-B7: 350 Generationen 28 / 29 232 / 348 10,9 / 9,0 EXP452-B8: 400 Generationen 32 / 33 232 / 400 10,5 / 8,9 EXP452-B9: 450 Generationen 36 / 38 232 / 401 10,4 / 8,9 EXP452-B10: 500 Generationen 40 / 42 232 / 401 10,3 / 8,9 Erwartungsgemäß verbesserte sich die Fitneß der besten Individuen im Laufe des kü nstlichen Evolutionsprozesses. In den ersten 100 Generationen geschah dies sehr schnell, danach nur noch schwach. Die aus den besten Synthesizern resultierenden Klänge konnte ich ab einer bestimmten Generation (Klavier 350 und Trommel 200) nicht mehr unterscheiden. Experiment 452-C. Variation der Selektionsstrategie. Es wurden die drei folgenden Verfahren betrachtet: Wettkampfselektion, nicht lineare Rangselektion und exponentiell skalierte Selektion. Klavier / Trommel Zeit [min] LSV [Generation] Fehler [%] EXP452-C1: Wettkampfsel. (STD) 20 / 21 232 / 208 13,2 / 9,3 EXP452-C2: nicht lineare Rangsel. 21 / 20 183 / 183 11,5 / 9,2 EXP452-C3: exponentiell skalierte Sel. 21 / 20 240 / 181 12,6 / 9,0 Keines der eingesetzten Selektionsverfahren kann einen entscheidenden Vorteil vorweisen. Im Gegensatz zum Standard können die nicht lineare Rangselektion und die exponentiell skalierte Selektion jedoch eine geringfü gig bessere Fehlerrate erreichen. Experiment 452-D. Variation der Ersetzungsstrategie. Die folgenden Verfahren fü r die Ersetzung wurden untersucht: Starker und schwacher Elitismus mit einem Eliteanteil von 10%, 25% und 50%; dynamischer Elitismus mit einem maximalen Anteil der Elite von 10%, 25% und 50%. 85 Klavier / Trommel Zeit [min] LSV [Generation] Fehler [%] EXP452-D1: st. Elitismus 10% 20 / 21 230 / 63 12,7 / 10,3 EXP452-D2: st. Elitismus 25% 21 / 21 152 / 224 26,2 / 9,1 EXP452-D3: st. Elitismus 50% 21 / 21 32 / 72 15,6 / 8,9 EXP452-D4: schw. Elitismus 10% 20 / 20 221 / 214 12,4 / 9,7 EXP452-D5: schw. Elitismus 25% 20 / 19 245 / 24 14,4 / 12,6 EXP452-D6: schw. Elitismus 50% 20 / 20 237 / 247 22,5 / 8,6 EXP452-D7: dyn. Elitismus 10% (STD) 20 / 21 232 / 208 13,2 / 9,3 EXP452-D8: dyn. Elitismus 25% 20 / 21 210 / 222 13,1 / 8,6 EXP452-D9: dyn. Elitismus 50% 20 / 20 144 / 22 16,8 / 9,2 Die Verwendung einer Ersetzungsstrategie mit einem kleinen Anteil der Elite (10%) scheint die bessere Wahl zu sein, obwohl hier die Ergebnisse der beiden Klänge eher widersprü chlich ausfallen (starker Elitismus Trommel: niedriger Eliteanteil schlecht, hoher gut; schwacher Elitismus Klavier: niedriger Eliteanteil gut, hoher schlecht). Experiment 452-E. Variation der Kreuzungsoperatoren. Es wurden die folgenden Möglichkeiten untersucht: Mischoperator aus Ein-Punkt-Kreuzung und Zwei-PunktKreuzung mit Translokation; Zwei-Punkt-Kreuzung und gleichmäß ige Kreuzung. Alle mit einer Kreuzungswahrscheinlichkeit von jeweils 60%, 75% und 90%. Klavier / Trommel Zeit [min] LSV [Generation] Fehler [%] EXP452-E1: 1P/2PT-Kreuz. 60% 20 / 20 232 / 208 13,2 / 9,3 EXP452-E2: 1P/2PT-Kreuz. 75% (STD) 20 / 21 232 / 208 13,2 / 9,3 EXP452-E3: 1P/2PT-Kreuz. 90% 19 / 21 47 / 244 12,8 / 9,0 EXP452-E4: 2P-Kreuzung 60% 20 / 19 214 / 6 11,1 / 10,8 EXP452-E5: 2P-Kreuzung 75% 19 / 20 185 / 6 14,3 / 10,0 EXP452-E6: 2P-Kreuzung 90% 20 / 20 34 / 24 14,9 / 10,1 EXP452-E7: gleichm. Kreuzung 60% 20 / 21 14 / 122 21,6 / 7,7 EXP452-E8: gleichm. Kreuzung 75% 21 / 20 112 / 1 13,9 / 8,3 EXP452-E9: gleichm. Kreuzung 90% 21 / 20 163 / 7 23,1 / 9,7 Im Durchschnitt kann die Kombination aus Ein-Punkt-Kreuzung und Zwei-PunktKreuzung mit Translokation die besten Ergebnisse erzielen, besonders bei der Wahl einer hohen Kreuzungswahrscheinlichkeit (90%). Sehr widersprü chlich sind die Ergebnisse der gleichmäß igen Kreuzung, wo die Fehlerraten beim Klavier eher schlecht ausfallen und bei der Trommel eher gut. 86 Experiment 452-F. Variation der Mutationsoperatoren. Es wurden die folgenden Möglichkeiten untersucht: Gleichmäß ige und dynamisch gleichmäß ige Mutation. Alle mit einer Mutationswahrscheinlichkeit von jeweils 1%, 2% und 3%. Klavier / Trommel Zeit [min] LSV [Generation] Fehler [%] EXP452-F1: gleichm. Mut. 1% 20 / 20 127 / 12 23,5 / 13,7 EXP452-F2: gleichm. Mut. 2% (STD) 20 / 21 232 / 208 13,2 / 9,3 EXP452-F3: gleichm. Mut. 3% 20 / 20 211 / 114 14,0 / 8,7 EXP452-F4: dyn. gleichm. Mut. 1% 21 / 21 232 / 164 25,4 / 15,9 EXP452-F5: dyn. gleichm. Mut. 2% 20 / 20 146 / 233 12,2 / 8,5 EXP452-F6: dyn. gleichm. Mut. 3% 20 / 20 179 / 19 14,1 / 9,9 Die besten Ergebnisse konnten mit der dynamisch gleichmäß igen Mutation und einer Mutationswahrscheinlichkeit von 2% erzielt werden. Eine Mutationsrate von 1% behindert den kü nstlichen Evolutionsprozeß sehr stark (doppelte Fehlerrate). 4.5.3 Parameter der Klanganalyse Experiment 453-A. Variation der Fenstergrö ße. Es wurden die folgenden Werte untersucht: 64, 128, 256, 512, 1024 und 2048 Samples pro Fenster. Klavier / Trommel Zeit [min] LSV [Generation] Fehler [%] EXP453-A1: 64 Samples 20 / 21 249 / 133 17,8 / 10,2 EXP453-A2: 128 Samples 20 / 20 203 / 14 13,8 / 14,2 EXP453-A3: 256 Samples (STD) 20 / 21 232 / 208 13,2 / 9,3 EXP453-A4: 512 Samples 20 / 20 233 / 13 10,3 / 9,1 EXP453-A5: 1024 Samples 20 / 21 215 / 221 9,5 / 12,0 EXP453-A6: 2048 Samples 20 / 21 10 / 5 9,5 / 11,0 Wie erwartet, sind die Resultate mit sehr kleinen Analysefenstern (64, 128) schlecht ausgefallen (die entwickelten Klänge klingen in Bezug auf das Original entfremdet), die mit sehr groß en nur in befriedigendem Maß e. Am besten wurden die beiden Testklänge mit der Standardkonfiguration nachgebildet. Ich weise auch darauf hin, daß ein Analysefenster mit einer Größ e von 256 Samples in etwa der Genauigkeit von einem Achtel einer Oktave entspricht. 87 Experiment 453-B. Variation der Abdeckungsrate. Es wurden die folgenden Werte getestet: 25%, 50%, 75% und 100% Abdeckung des Klanges mit Analysefenstern. Klavier / Trommel Zeit [min] LSV [Generation] Fehler [%] EXP453-B1: 25% 7/7 171 / 156 16,2 / 10,0 EXP453-B2: 50% 14 / 14 250 / 220 23,5 / 8,5 EXP453-B3: 75% (STD) 20 / 21 232 / 208 13,2 / 9,3 EXP453-B4: 100% 26 / 27 6 / 17 13,2 / 9,3 Es ist ersichtlich, daß ein gewisses Mindestmaß an Analysefenstern nötig ist, damit ein Klang einigermaß en gut nachgebildet werden kann. Der Standardwert von 75% hat sich als gut herausgestellt und eine höhere Abdeckung bewirkt anscheinend keine weiteren Verbesserungen. Experiment 453-C. Variation der Fensterverteilung. Die folgenden Testfälle wurden untersucht: lineare und logarithmische Verteilung der Analysefenster. Klavier / Trommel Zeit [min] LSV [Generation] Fehler [%] EXP453-C1: linear (STD) 20 / 21 232 / 208 13,2 / 9,3 EXP453-C2: logarithmisch 17 / 18 7 / 21 34,9 / 19,7 Wie in der Tabelle zu sehen ist, wurden mit Hilfe der logarithmischen Verteilung keine besseren Ergebnisse erzielt, obwohl beide Klänge eine genaue Nachbildung ihrer Einschwingungsphase erfordern. Leider ist sogar eine Verschlechterung der Fehlerrate auf mehr als das Doppelte eingetreten. Experiment 453-D. Variation der Fensterfunktion. Die folgenden Versuche wurden durchgefü hrt: Dreieck-, Hamming-, Hanning-, Blackman-, Bartlett- und RechteckFunktion. Klavier / Trommel Zeit [min] LSV [Generation] Fehler [%] EXP453-D1: Dreieck (STD) 20 / 21 232 / 208 13,2 / 9,3 EXP453-D2: Hamming 21 / 21 190 / 191 23,6 / 9,5 EXP453-D3: Hanning 19 / 20 6 / 206 13,4 / 9,3 EXP453-D4: Blackman 21 / 21 234 / 17 13,7 / 9,4 EXP453-D5: Bartlett 20 / 21 232 / 208 13,2 / 9,3 EXP453-D6: Rechteck 20 / 21 221 / 219 19,2 / 9,9 88 Die Ergebnisse der verschiedenen Fenster-Funktionen weichen nur in einem sehr geringen Maß voneinander ab, wobei die hohe Fehlerrate bei der Hamming-Funktion sicherlich als Ausnahme gewertet werden kann, da sie der Blackman- und HanningFunktion sehr ähnelt. Die Rechteck-Funktion, die keine Ä nderungen an den Werten vornimmt, hat, im Gegensatz zu den anderen Fensterfunktionen, erwartungsgemäß schlecht abgeschnitten. 4.5.4 Parameter der Klangsynthese Experiment 454-A. Variation der Anzahl der Operatoren. Es wurden die folgenden Möglichkeiten untersucht: Verwendung von 2, 4, 6, 8, 10, 15 und 20 Operatoren fü r den Algorithmus der FM-Synthese. Klavier / Trommel Zeit [min] LSV [Generation] Fehler [%] EXP454-A1: 2 Operatoren 8/8 0/0 11,1 / 11,4 EXP454-A2: 4 Operatoren 14 / 15 11 / 11 14,8 / 10,3 EXP454-A3: 6 Operatoren (STD) 20 / 21 232 / 208 13,2 / 9,3 EXP454-A4: 8 Operatoren 26 / 27 241 / 199 13,0 / 10,2 EXP454-A5: 10 Operatoren 33 / 33 199 / 225 12,2 / 10,9 EXP454-A6: 15 Operatoren 47 / 48 248 / 234 17,2 / 17,5 EXP454-A7: 20 Operatoren 64 / 65 242 / 239 19,6 / 32,3 Das Experiment hat gezeigt, daß schon 2 bis 6 Operatoren genü gen, um eine gute Nachbildung der Originalklänge zu erreichen. Eine Verwendung von sehr vielen Operatoren scheint nicht angebracht zu sein, da die Fehlerrate mit steigender Zahl der Operatoren (ab etwa 10 Operatoren) immer schlechter wird. 4.5.5 Optimierte Standardkonfiguration Basierend auf den bisher durchgefü hrten Experimenten, habe ich eine optimierte Standardkonfiguration mit den folgenden Ä nderungen erstellt: · (GA) Generationsanzahl: 400 Generationen · (GA) Selektionsverfahren: nicht lineare Rangselektion 89 · (GA) Ersetzung: Dynamischer Elitismus mit max. Anteil der Elite von 10% · (GA) Kreuzungsoperator: Ein-Punkt-Kreuzung (33%) und Zwei-PunktKreuzung mit Translokation (67%) bei einer Kreuzungsrate von 90% · (GA) Mutationsoperator: Dynamisch gleichmäß ige Mutation bei einer Mutationsrate von 2% · (GA) Initialisierung des Zufallsgenerators mit einem neuen festen Wert Alle anderen Parameter des Genetischen Algorithmus, der Klangsynthese und der Klanganalyse werden nicht verändert. Auf der Grundlage der nun vorliegenden optimierten Standardkonfiguration habe ich einen weiteren Test durchgefü hrt. In der folgenden Tabelle sind die Testergebnisse der beiden Konfigurationen (Standard und optimiert) fü r mehrere Klangbeispiele aufgefü hrt: Klang (Standard / optimiert) Zeit [min] LSV [Generation] Fehler [%] Banjo – Banjo.wav 21 / 29 119 / 6 25,9 / 13,6 Kirchenorgel – ChurchOrgan.wav 19 / 31 4 / 226 38,8 / 34,8 Harfe – Harp.wav 20 / 31 8 / 365 18,6 / 11,6 Orgel – Organ.wav 19 / 29 2/3 34,7 / 27,0 Klavier – Piano.wav (STD) 20 / 33 232 / 350 13,2 / 9,9 Flächenklang – SlowString.wav 21 / 30 212 / 19 35,5 / 29,6 Gitarre – SteelGuitar.wav 20 / 32 22 / 295 18,6 / 12,3 Synthy 1 – SweepPad.wav 21 / 32 206 / 198 28,6 / 24,0 Trommel – TaikoDrum.wav (STD) 21 / 33 208 / 129 9,3 / 8,1 Trompete – Trumpet.wav 21 / 33 224 / 378 41,9 / 33,7 Glocke – TubularBells.wav 20 / 33 31 / 17 15,0 / 11,4 Synthy 2 – WarmPad.wav 20 / 33 249 / 286 32,3 / 24,4 Durch die Optimierung der Standardkonfiguration konnte die durchschnittliche Fehlerrate von 26% (Standard) auf 20% gesenkt werden. Im Gegenzug ist die Rechenzeit im Schnitt auf etwa 32 Minuten angestiegen. Die Ursache dafü r liegt in der höher gewählten Anzahl von 400 statt 250 Generationen, die bis zur Terminierung des kü nstlichen Evolutionsprozesses durchlaufen werden. Auffällig ist, daß einige Klangbeispiele (z.B. Orgel und Trompete) ü berdurchschnittlich schlecht abschneiden. 90 4.5.6 Experiment 455 (Banjo) Nachdem ich nun alle angedachten Experimente durchgefü hrt habe, möchte ich abschließ end noch die Entwicklung eines FM-Synthesizers fü r zwei Beispielklänge ausfü hrlich darlegen. Als erstes Beispiel dient der Klang eines Banjos (Banjo.wav), das zur Familie der Gitarren gehört. Fü r die Einstellung der Parameter wird die optimierte Standardkonfiguration (siehe 4.5.5 und 4.5.1) verwendet. Abbildung 39: Zeitdomä ne (oben) und Frequenzdomä ne (unten) des Originalklangs (Banjo) Wie in Abb. 39 zu sehen ist, besitzt der Klang eine Grundfrequenz (höchste Spitze im Frequenzspektrum) von knapp 800 Hz (genau: 786 Hz). Nachdem die kü nstliche Evolution abgeschlossen war, konnte ich folgende Beobachtungen machen: In den ersten 6 Generationen wurde die Struktur fü r den Algorithmus der FM-Synthese entwickelt. Die Fehlerrate sank dabei sehr schnell auf 57,1%. Danach folgten einige Generationen, in denen keine Verbesserungen erzielt wurden, d.h. es konnte wahrscheinlich kein besserer Algorithmus gefunden werden. Ab der 10. Generation wurden nur noch die Parameter der Oszillatoren und Hü llkurven optimiert. In der 111. Generation ist die Fehlerrate bereits auf 17,7% gesunken und die Grundfrequenz des Klanges (783 Hz) sowie die Frequenzen einiger naheliegender Obertöne wurden sehr gut nachgebildet. Während der letzten 289 Generationen wurden fast nur noch Ä nderungen an den Parametern der Hü llkurve vorgenommen. 91 Abbildung 40: Entwicklung der Fitneß(Banjo) Die entwickelte Struktur besteht nur aus Trägern und enthält keine Modulatoren. Je ein Träger ist fü r die Erzeugung genau eines Teiltons zuständig (alle Oszillatoren nutzen Sinusschwingungen). Ein derartiger Algorithmus entspricht eigentlich eher dem Verfahren der Additiven Synthese, findet aber oft auch bei der FM-Synthese Anwendung. T1 T2 T3 T4 T5 T6 Abbildung 41: Entwickelte Struktur (Banjo) Abbildung 42: Zeitdomä ne (oben) und Frequenzdomä ne (unten) des Syntheseklangs (Banjo) 92 4.5.7 Experiment 451 (Trommel) Als zweites Beispiel dient der Klang einer Trommel (TaikoDrum.wav). Fü r die Einstellung der benötigten Parameter wurde die Standardkonfiguration aus 4.5.1 angewandt. Abbildung 43: Zeitdomä ne (oben) und Frequenzdomä ne (unten) des Originalklangs (Trommel) Wie in Abb. 43 zu sehen ist, besitzt der Klang eine Grundfrequenz von knapp 80 Hz (genau: 76 Hz). Nach der Terminierung des kü nstlichen Evolutionsprozesses konnte ich folgende Beobachtungen machen: In den ersten 50 Generationen wurde intensiv nach einer passenden Struktur gesucht und gleichzeitig eine Optimierung der Parameter vorgenommen. Die Fehlerrate sank dementsprechend schnell auf 18,2% herab. Danach konnte ü ber 80 Generationen lang keine besser geeignete Struktur gefunden werden. Erst in Generation 144 wurde ein passender Algorithmus ermittelt, mit einer Fehlerrate von 10,0%. Es gab zwar auch später noch vereinzelt Ä nderungen in der Struktur (Generationen 149, 168, 206, 208), aber diese hatten kaum Einfluß auf das Ergebnis. Die Ursache liegt im entsprechenden Trägerstrang, dessen Modulatoren es sind, die sich in ihrer Struktur ab und zu ändern, der Träger aber nur auf einen sehr kleinen Teil des Klanges (max. 1%) einwirkt. In den Generationen 150 bis 250 fanden nur noch Anpassungen der Hü llkurven und Oszillatoren statt, die aber nur einen minimalen Effekt erzielten. Die erreichte Fehlerrate betrug am Ende 9,3%. 93 Abbildung 44: Entwicklung der Fitneß(Trommel) Die entwickelte Struktur besteht aus 2 Trägern und 4 Modulatoren. Der erste Träger wird von den Modulatoren direkt und indirekt moduliert. Er wirkt nur auf die ersten 20 Millisekunden des Klanges ein. Der zweite Träger dient dazu, den Grundton (gefunden in Generation 80) mit einer Frequenz von 76 Hz zu erzeugen. M3 M2 M4 M1 T1 T2 Abbildung 45: Entwickelte Struktur (Trommel) Abbildung 46: Zeitdomä ne (oben) und Frequenzdomä ne (unten) des Syntheseklangs (Trommel) 94 5 Ergebnisse Mein Verfahren ist in der Lage eine annähernde Nachbildung von Klängen zu realisieren, indem es eine passende Struktur fü r den Algorithmus eines FMSynthesizers entwickelt und die beteiligten Parameter optimiert. Dadurch konnte in fast allen Fällen die Tonhöhe (Grundfrequenz) erstaunlich genau nachgebildet werden. Die Dynamik der Lautstärke eines Syntheseklanges paß t sich i.d.R. an die des Originals an. Bei harmonischen Klängen wurden einige dem Grundton naheliegende Obertöne erzeugt. Es ist mir zudem gelungen, dem Nutzer die Auswahl eines Algorithmus und der Parameter der FM-Synthese abzunehmen, mit der ein bestimmter Klang nachgebildet werden soll. Es hat sich allerdings gezeigt, daß weiterhin solide Kenntnisse im Gebiet der Klangerzeugung von groß em Vorteil sind. Dies spiegelt sich in folgendem Sachverhalt wider: Fü r die Nachbildung eines einfachen Tons (Sinus) ist nur ein Operator mit einem Sinusoszillator notwendig. Verwendet man 2 oder mehr Operatoren, erlegt man dem Genetischen Algorithmus nur unnötig Arbeit auf, was dann auch an den schlechteren Ergebnissen zu erkennen ist. Ein komplexer Klang dagegen kann sicherlich nicht mit nur einem Operator reproduziert werden. Der Genetische Algorithmus brachte eine Vielzahl von Strukturen hervor (fü r ein und denselben Klang sogar verschiedene). Es ist mir aufgefallen, daß viele der entwickelten Algorithmen das Prinzip der Additiven Synthese nachahmen. Das kann natü rlich auch an der Art der getesteten Klänge liegen (vorwiegend klassische Instrumente). Bei den Strukturen, die mehrere Modulatoren besaß en, konzentrierten sich i.d.R. ein oder zwei Träger auf die zu erzeugende Grundfrequenz, der andere Teil (oft ein Träger mit einer Struktur aus Modulatoren) versuchte die komplexe Einschwingungsphase (oft die ersten 100 Millisekunden eines Klangs) nachzubilden. Die Struktur des Algorithmus entwickelte sich erwartungsgemäß innerhalb der ersten 100 Generationen, d.h. der Genetische Algorithmus schlug eine grobe Suchrichtung ein. Danach wurde durch Optimierung der Parameter der Klang in seiner Tonhöhe, 95 Klangfarbe und Dynamik geformt. Am Ende des Prozesses fanden nur noch Feineinstellungen statt, die den Fehler weiter senkten. Eine Ä nderung der Struktur gegen Ende der kü nstlichen Evolution ist möglich, betrifft aber nur Teile der Struktur, die keinen oder nur kaum Einfluß auf den Klang ausü ben. Aufgrund groß er Unterschiede in der Komplexität von Tönen, Klängen und Geräuschen ist es oft schwierig vorherzusagen, wie gut mein Verfahren einen Klang nachbilden wird bzw. ob es ü berhaupt eine Lösung findet. Ich konnte allerdings feststellen, daß einfache Töne (Sinus, Dreieck) mit einem Operator sehr gut (Fehlerrate von 0,5% bis 5%) resynthetisiert werden können und klassische Instrumente gut bis befriedigend (Fehlerraten von etwa 7% bis 40%). Im Groß en und Ganzen sind die Ergebnisse ermutigend. Eine Fortfü hrung der Forschungen in diesem Gebiet ist weiterhin notwendig. Ein interessanter Aspekt ist beispielsweise, daß mein Verfahren oft Strukturen entwickelt hat, die eher als Additive Synthese zu bezeichnen sind. Eine Optimierung der Parameter eines Synthesizers mit Additiver Synthese liegt also nahe und sollte möglich sein, da man mit diesem Verfahren theoretisch jeden Klang erzeugen kann. Ein lohnenswertes Ziel liegt sicherlich in der Nutzung dieses Verfahrens zur Komprimierung eines einzelnen Klanges. Mit Komprimierung meine ich nicht die reine Reduzierung des Informationsgehaltes, die durch geschickte Speicherung der Amplitudenwerte (z.B. DPCM) oder Beseitigung von Redundanzen (z.B. MPEG) erreicht wird. Vielmehr denke ich an die Speicherung der Informationen, die fü r die Erzeugung der Klangdaten notwendig sind, d.h. Algorithmus und Parameter der FMSynthese. Die Größ e einer Datei in dieser Form wü rde, je nach Anzahl der verwendeten Operatoren, weniger als 1 oder 2 Kilobyte betragen. Ein 2 Sekunden langer, bei 8000 Hz Abtastrate und 16 Bit pro Sample kodierter Klang wü rde eine circa 32 Kilobyte groß e Datei erzeugen. Ein ähnlicher Ansatz ist natü rlich auch mit anderen Syntheseverfahren denkbar. Die Komprimierung ganzer Lieder auf diese Weise halte ich zur Zeit fü r kaum möglich, da diese Aufgabe zum einen extrem komplex ist (mehrere miteinander vermischte Klänge) und zum anderen eine sehr hohe Rechenzeit fü r die Entwicklung eines Modells notwendig wäre (schon fü r ein 2 96 Sekunden langes Klangbeispiel werden 30 min Rechenzeit benötigt). Ich möchte auch darauf hinweisen, daß diese Idee nicht völlig neu ist, denn ein ähnliches Ziel wird auch bei der Umwandlung von Pixel- in Vektorgrafiken verfolgt. Eine weitere Möglichkeit sehe ich in der Verbindung dieses Verfahrens mit einer vorhandenen Lösung (Software) eines FM-Synthesizers. Ein Nutzer benötigt nur eine geeignete Voreinstellung des FM-Synthesizers (auch bekannt als Preset), um einen bestimmten Klang zu erzeugen. Das ist natü rlich schwierig, wenn diese Voreinstellung noch nicht existiert. Es ist nun folgendes denkbar: Der Nutzer gibt diesem Verfahren einen zu bestimmenden Klang vor. Daraufhin wird automatisch eine Struktur mit geeigneten Parametern entwickelt, mit deren Hilfe der gegebene Klang annähernd nachgebildet wird. Auf der Basis der ermittelten Ergebnisse kann anschließ end der reale FM-Synthesizer konfiguriert werden. Danach wird der Nutzer wieder aktiv, indem er noch einige Feineinstellungen an den Parametern des Synthesizers vornimmt, bis er mit dem Ergebnis zufrieden ist. 97 98 6 Zusammenfassung Die Idee dieser Arbeit liegt in der automatischen Nachbildung eines Klanges mit Hilfe eines Klangsyntheseverfahrens und evolutionären Algorithmen. In der Anfangsphase der Arbeit wurde aus den bekannten Syntheseverfahren die FMSynthese ausgewählt. Der Grund fü r meine Entscheidung liegt im bekannten Erfolg des Verfahrens. Schon mit wenigen grundlegenden Komponenten wie Oszillator oder Hü llkurve können komplexe Schwingungen erzeugt werden. Die Suche nach einem FM-Synthesizer, der einen vorgegebenen Klang nachbilden kann, wird von einem Genetischen Algorithmus ü bernommen. Dieser ermittelt eine passende Struktur und optimale Parameter fü r die Hü llkurven und Oszillatoren des FMSynthesizers. Damit eine Realisierung des Ansatzes möglich war, wurden Klassenbibliotheken fü r Genetische Algorithmen und FM-Synthesizer implementiert. Auf der Basis der Klassenbibliotheken konnte letztlich die Applikation Revival entwickelt werden, die eine grafische Nutzerschnittstelle besitzt und den Genetischen Algorithmus fü r die Suche nach einem FM-Synthesizer realisiert. Nach der Vorgabe eines Klanges und einigen Einstellungen fü r den Genetischen Algorithmus, die Klanganalyse und die Klangsynthese beginnt Revival mit der Entwicklung eines FM-Synthesizers. Das entwickelte Verfahren ist in der Lage eine passende Struktur und optimale Parameter fü r den Prozeß der FM-Synthese zu finden und damit einen gegebenen Klang annähernd nachzubilden. Die Gü te eines resynthetisierten Klanges hängt dabei stark von der Komplexität des Originals ab, d.h. selbst ein einfacher Sinuston kann zwar sehr gut nachgebildet werden, aber eben nur sehr gut und nicht exakt. 99 100 Thesen Die automatisierte Entwicklung einer Struktur und optimaler Parameter fü r den Prozeß der FM-Synthese auf der Basis eines vorgegebenen Klanges und den Genetischen Algorithmen ist möglich. Die Annäherung an die Tonhöhe, Klangfarbe und Dynamik eines gegebenen Klanges mit einem optimierten FM-Synthesizer ist möglich. Der Vorteil fü r einen Nutzer liegt darin, daß er nicht mehr selbst die Oszillatoren und Hü llkurven einstellen muß oder einen passenden Algorithmus auszuwählen hat. Die Nachbildung von natü rlichen und klassisch instrumentalen Klängen, die bis jetzt von der FM-Synthese nicht erzeugt werden konnten, wird möglich. Die Nachbildung eines Klanges auf diese Weise, kann einen Einblick in den strukturellen Aufbau und die verwendeten Parameter der FM-Synthese fü r eine bestimmte Art von Klängen geben. Mit meinem Verfahren ist die Komprimierung eines Klanges denkbar. Es gibt viele Lösungsmöglichkeiten (FM-Synthesizer), mit denen ein gegebener Klang annähernd nachgebildet werden kann. Die perfekte Nachbildung eines Klanges ist extrem schwierig, da die meisten Klänge sehr komplex sind. Solide Kenntnisse und Erfahrungen im Gebiet der Klangerzeugung sind weiterhin von groß em Vorteil. 101 102 Literaturverzeichnis [ABD-99] T. Y. Abdullah: Synthesizers, Music & Television. – F.M. Synthesis. 1999 (http://tyala.freeyellow.com/2fmsynth.htm) [ANW-00] F. Anwander: Synthesizer. So funktioniert elektronische Klangerzeugung. Bergkirchen: PPV Presse Project Verlags GmbH, 2000 [BEN-99] P. J. Bentley: Evolutionary Design by Computers. San Francisco: Morgan Kaufmann Publishers Inc, 1999 [BOL-98] D. Boles: Multimedia-Systeme (Kapitel 10). Technische Universität Oldenburg, 1998 (http://www-is.informatik.uni-oldenburg.de/~dibo/teaching/mm98/ script98/main.html) [BOU-93] P. Bourke: DFT (Discrete Fourier Transform), FFT (Fast Fourier Transform). 1993 (http://astronomy.swin.edu.au/~pbourke/analysis/dft/index.html) [FIE-01] M. Fiedler: Die FM-Synthese, Ein Ü berblick. Universität Oldenburg, 2001 (http://home.arcor.de/mfiedler/fm/fm.html) [FIS-98] T. P. Fischer: Das Synthesizer-Lexikon im Internet. Technische Universität Berlin, 1998 (http://home.snafu.de/sicpaul/tpf_syn0.htm) [FRI-99] H. Fritz: Wissenswertes zur Schallanalyse. Universität Wien. 1999 (http://www.unet.univie.ac.at/~a7425519/Skripten/Schallanalyse.html) [GAR-01] R. A. Garcia: Automatic Generation of Sound Synthesis Techniques. Massachusetts: Massachusetts Institute of Technologies, 2001 [GOU-97] C. Gould: Soundwave – Beginner's Synthesizer FAQ. 1997 (http://tilt.largo.fl.us/faq/synthfaq.html) 103 [GRO-02] R. Groß mann, R. Koch, C. Kü hnel: Verfahren digitaler Audioverarbeitung. Universität Lü neburg, 2002 (http://audio.uni-lueneburg.de/texte/digaudio/index.html) [HOE-02] U. G. Hoenig: Workshop Synthesizer. Klangerzeugung fü r Musiker. Bergkirchen: PPV Presse Project Verlags GmbH, 2002 [HOR-93] A. Horner, J. Beauchamp, L. Haken: FM Matching Synthesis with Genetic Algorithms. Illinois: CERL Sound Group, Computer Music Project and Center for Complex Systems Research, University of Illinois, 1993 [IWE-02] H. Iwe: Genetische Algorithmen. Dresden: Hochschule fü r Technik und Wirtschaft Dresden, 2002 [JOH-99] C. G. Johnson: Exploring the sound-space of synthesis algorithms using interactive genetic algorithms. Exeter: Department of Computer Science, University of Exeter, 1999 [JUN-98] G. Junker: MIDI-Synthese in der kognitiven Musikologie: eine exemplarische Studie des psychoakustischen Phänomens der subjektiven Tondauer. Universität Wien, 1998 (http://kunstbank.waidhofen.at/mitglied/junker/publikationen.html) [KOK-00] L. Kok, B. Mest: Musiksynthese. Universität Hamburg, 2000 (http://tech-www.informatik.uni-hamburg.de/lehre/medien-audio/ vortraege/synthese/index.htm) [MIC-96] Z. Michalewicz: Genetic Algorithms + Data Structures = Evolution Programs. 3. Aufl., New York: Springer Verlag, 1996 [RAB-01] R. Rabenstein: Digitale Klänge. Laboratorium fü r Nachrichtentechnik, Universität Erlangen-Nü rnberg, 2001 [RIT-00] M. Ritsche: Musik am Computer. Waldorfschule Ü berlingen, 2000 (http://www.waldorf-am-see.de/projekte/musik/musik.htm) [RIT-02] W. Ritsch: Einfü hrung in die Elektronische Musik. Graz: Universität fü r Musik und Darstellende Kunst Graz, 2002 104 [SCH-98] R. Schmitz: Analoge Klangsynthese. Das Einsteigerbuch zu Synthesizern und Soundprogrammierung. Köln: Wizoo midi, music & audio technology GmbH, 1998 [WEH-98] K. Wehn: Using Ideas from Natural Selection to Evolve Synthesized Sounds. Oslo: Department of Informatics, University of Oslo, 1998 [WEI-02] E. W. Weisstein: Eric Weisstein's World of Mathematics. 2002 (http://mathworld.wolfram.com/) 105 106 Abbildungsverzeichnis Abbildung 1: Zustandsräume Genetischer Algorithmen ................................ ...... 17 Abbildung 2: Struktur Genetischer Algorithmen ................................................. 19 Abbildung 3: Modellierung und Interpretation des Chromosoms......................... 22 Abbildung 4: Bildung von Nachkommen ............................................................ 26 Abbildung 5: Vergleich verschiedener Selektionsmethoden ................................ 27 Abbildung 6: Beispiel fü r Russisches Roulette ................................ .................... 28 Abbildung 7: Kreuzungspunkte................................ ................................ ........... 29 Abbildung 8: Beispiel Ein-Punkt-Kreuzung ........................................................ 29 Abbildung 9: Beispiel Zwei-Punkt-Kreuzung................................ ...................... 30 Abbildung 10: Beispiel Zwei-Punkt-Kreuzung mit Translokation ......................... 30 Abbildung 11: Beispiel gleichmäß ige Kreuzung................................ .................... 31 Abbildung 12: Beispiel gleichmäß ige Mutation..................................................... 32 Abbildung 13: Prinzip der Subtraktiven Synthese ................................................. 40 Abbildung 14: Prinzip der Wavetable Synthese..................................................... 41 Abbildung 15: Prinzip der Additiven Synthese................................ ...................... 42 Abbildung 16: Prinzip der FM-Synthese ................................ ............................... 44 Abbildung 17: Algorithmen eines FM-Synthesizers mit 5 Operatoren................... 45 Abbildung 18: Grundwellenformen....................................................................... 52 Abbildung 19: ADSR-Hü llkurve................................ ................................ ........... 53 Abbildung 20: Tiefpaß - und Hochpaß filter............................................................ 54 Abbildung 21: Ableitung der Klasse AbstractEvolution................................ ......... 57 Abbildung 22: Ableitung der Klasse AbstractIndividual........................................ 58 Abbildung 23: Klassenstruktur fü r den Genetischen Algorithmus ......................... 59 Abbildung 24: Klassenstruktur fü r die Reproduktion................................ ............. 60 Abbildung 25: Klassenstruktur fü r die Ersetzung ................................ .................. 61 107 Abbildung 26: Erzeugung und Start des Genetischen Algorithmus ....................... 62 Abbildung 27: Klassenstruktur fü r den FM-Synthesizer................................ ........ 63 Abbildung 28: Zeit- und Frequenzdomäne............................................................ 65 Abbildung 29: Fensterfunktionen Rechteck, Dreieck und Blackman ..................... 66 Abbildung 30: Aufbau eines FM-Synthesizer-Chromosoms................................ .. 67 Abbildung 31: Graphen- und Baumstrukturen....................................................... 68 Abbildung 32: Verteilung der Synthesefenster ................................ ...................... 72 Abbildung 33: Applikation Revival....................................................................... 75 Abbildung 34: Evolution eines FM-Synthesizers mit Revival................................ 76 Abbildung 35: Ablauf der Evolutionsphase................................ ........................... 79 Abbildung 36: Ansicht Sound evolvement................................ ............................. 80 Abbildung 37: Ansicht Algorithm evolvement....................................................... 81 Abbildung 38: Ansicht Fitness evolvement ................................ ........................... 81 Abbildung 39: Zeit- und Frequenzdomäne des Originalklangs (Banjo) ................. 91 Abbildung 40: Entwicklung der Fitneß (Banjo)..................................................... 92 Abbildung 41: Entwickelte Struktur (Banjo)......................................................... 92 Abbildung 42: Zeit- und Frequenzdomäne des Syntheseklangs (Banjo) ................ 92 Abbildung 43: Zeit- und Frequenzdomäne des Originalklangs (Trommel) ............ 93 Abbildung 44: Entwicklung der Fitneß (Trommel) ................................ ............... 94 Abbildung 45: Entwickelte Struktur (Trommel)................................ .................... 94 Abbildung 46: Zeit- und Frequenzdomäne des Syntheseklangs (Trommel) ........... 94 108 Glossar Additive Synthese Klangsyntheseverfahren, bei dem ein Klang durch das Zusammensetzen von vielen Teiltönen mit unterschiedlicher Tonhöhe und zeitlichem Verlauf (Hü llkurve) erzeugt wird. ADSR Abk. fü r Attack, Decay, Sustain, Release. Parameter der Hü llkurve, welche die Zeitabschnitte der Einschwingungsphase (Attack und Decay), der stationären Phase (Sustain) und der Ausschwingungsphase (Release) eines Klanges beschreiben. Algorithmus Auch FM-Algorithmus; in der FM-Synthese beschreibt der A. welche der Operatoren wie miteinander verbunden sind. Attack Zeitabschnitt der Hü llkurve, der die Einschwingungsphase eines Klanges beschreibt. Bewertungsfunktion Siehe Zielfunktion. Carrier Engl. fü r Träger. Chromosom Ein C. besteht aus n Zeichen eines bestimmten Alphabets (Zahlen oder Zeichen). Die Zusammenfassung mehrerer Zeichen ergibt die Gene, welche die Parameter eines Optimierungsproblems darstellen und damit den Genotyp eines Individuums repräsentieren. Decay Zeitabschnitt der Hü llkurve, der den Abfall von der maximalen Lautstärke der Einschwingungsphase zur stationären Haltephase beschreibt. Dreieckschwingung Auch Dreieckwelle; eine der typischen Grundwellenformen eines Oszillators. Mit der D. können nur ungerade Obertöne erzeugt werden, deren Intensität mit steigender Ordnung exponentiell abnimmt. Sie besitzt einen weichen und fließ enden Klangcharakter. Elitismus Ein Ersetzungsverfahren, welches, neben den erzeugten Nachkommen, auch die besten Individuen der aktuellen Generation in die nächste Generation ü berträgt. Es wird dabei zwischen dem schwachen, starken und dynamischen Elitismus unterschieden. 109 Envelope Engl. fü r Hü llkurve. Ersetzung Auch Ersetzungsverfahren; Prinzip Feedback Engl. fü r Rü ckkopplung. Fitneß Maß fü r die Gü te eines Individuums, das mit Hilfe der Zielfunktion ermittelt wird. FM Siehe Frequenzmodulation. FM-Synthese Klangsyntheseverfahren, bei dem ein Klang durch die Verknü pfung (Algorithmus) weniger Operatoren (Oszillator mit einer Hü llkurve) in Form von Trägern und Modulatoren erzeugt wird. Die Modulatoren verändern die Tonhöhe der Träger, wodurch sehr komplexe Spektren entstehen können. Frequenzmodulation Auch FM; zeitliche Veränderung der Frequenz eines Oszillators durch einen anderen Oszillator oder eine Hü llkurve. Gen Repräsentation eines Parameters des Optimierungsproblems in einem Chromosom. Genotyp Bezeichnung fü r die Gesamtheit aller Gene, die in einem Chromosom eines Individuums vorkommen. Grundwellenform Verlauf der Periode einer Schwingungsform. Die typischen G. Dreieck, Rechteck, Sägezahn und Sinus beherrschen fast alle Oszillatoren. Hüllkurve Komponente des Synthesizers, die einen zeitlichen Verlauf generiert, der fü r die Veränderung der Lautstärke oder Tonhöhe eingesetzt wird. Eine viel genutzte Variante ist die ADSR-Hü llkurve. Individuum Auch Phänotyp; Eine konkrete Lösung eines Optimierungsproblems, die parallel zu anderen Lösungen in einer Population existiert. Kreuzung Auch Rekombination, Crossover; Genetischer Operator, der die Zeichen der Chromosomen zweier Individuen (Eltern) vermischt, um zwei Nachkommen (Kinder) zu bilden. Lö sungsraum Auch phänotypischer Raum; Bezeichnung fü r die Gesamtheit aller Lösungen eines Optimierungsproblems. 110 Modulator Komponente des FM-Synthesizers, welche die Frequenz, Phase oder Amplitude eines Oszillators zeitlich ändert. Mutation Genetischer Operator, der eine zufällige Veränderung eines oder mehrerer Zeichen im Chromosom eines Individuums vornimmt. Oberton Ein Klang besteht aus Teiltönen, wobei der tiefste Teilton (Grundton) die wahrgenommene Tonhöhe bestimmt und die Obertöne die Klangfarbe. Die Obertöne stehen meistens in einem ganzzahligen Verhältnis zum Grundton. Operator Auch FM-Operator; diese Bezeichnung wurde von Yamaha eingefü hrt und stellt eine Mischkomponente dar, in der ein Oszillator und eine Hü llkurve vereint sind. Der O. wird in einem Algorithmus als Träger oder Modulator verwendet. Optimum Bezeichnung fü r die beste bisher gefundene Lösung eines Optimierungsproblems. Oszillator Komponente des Synthesizers, die einfache Schwingungen in einer bestimmten Tonhöhe (Frequenz) erzeugt. Die meisten O. beherrschen die gängigen Grundwellenformen Sägezahn, Rechteck, Dreieck und Sinus. Phänotyp Bezeichnung fü r die Gesamtheit aller konkret ausgebildeten Merkmale der Gene eines Individuums. Phasenmodulation Auch PM; zeitliche Ä nderung der Phase eines Oszillators durch einen anderen Oszillator oder eine Hü llkurve. PM Siehe Phasenmodulation. Population Zusammenfassung aller Individuen einer Generation. Rechteckschwingung Auch Rechteckwelle; eine typische Grundwellenform eines Oszillators. Mit der R. können alle ungeraden Obertöne erzeugt werden, deren Intensität mit steigender Ordnung proportional abnimmt. Sie besitzt einen hohlen und elektronischen Klangcharakter. Release Zeitabschnitt der Hü llkurve, der die Ausschwingungsphase eines Klanges beschreibt. Reproduktion Sammelbegriff fü r die Bildung der Nachkommen der nächsten Generation. Die R. schließ t die Genetischen Operatoren Selektion, Kreuzung und Mutation ein. 111 Rückkopplung Auch Feedback; das Ausgangssignal eines Operators wird als zusätzliche Modulationsquelle fü r diesen verwendet. Sägezahnschwingung Auch Sägezahnwelle; typische Grundwellenform eines Oszillators. Mit der S. können alle Obertöne erzeugt werden. Die Intensität der Obertöne nimmt mit steigender Ordnung exponentiell ab. Sie besitzt einen kräftigen, harten und hellen Klangcharakter. Sample Der kleinste Teil eines digitalisierten Klanges, der zu einem bestimmten Zeitpunkt einen bestimmten Wert (Amplitude) besitzt. Auch ein Klang wird oft als Sample bezeichnet. Selektion Genetischer Operator, der ein Individuum in Abhängigkeit zu seiner Fitneß aus der aktuellen Population auswählt. Die Wahrscheinlichkeit fü r die Auswahl wird durch ein entsprechendes Selektionsverfahren (Ranking, Wettkampf oder Skalierung) ermittelt. Sinusschwingung Auch Sinuswelle; eine der typischen Grundwellenformen eines Oszillators. Mit der S. kann ein Grundton erzeugt werden, aber keine Obertöne. Demnach besitzt sie einen sehr weichen Klangcharakter. Suchraum Auch genotypischer Raum; Bezeichnung fü r die Gesamtheit aller in einem Chromosom kodierbaren Lösungen eines Optimierungsproblems. Sustain Zeitabschnitt der Hü llkurve, der die stationäre Phase eines Klanges beschreibt. Syntheseverfahren Es beschreibt das prinzipielle Vorgehen eines Synthesizers bei der Erzeugung eines Klanges. Die wichtigsten Vertreter sind FM-Synthese, Subtraktive Synthese, Additive Synthese und die Wavetable Synthese. Synthesizer Ein S. ist eine Hard- oder Software, die durch das Zusammenwirken verschiedener Komponenten (Oszillator, Hü llkurve, Filter) einen Klang erzeugt. Träger Auch Carrier; Komponente des FM-Synthesizers. Ein oder mehrere Träger erzeugen die Amplitudenwerte des Klanges. Zielfunktion Definition des Optimierungsproblems. Interpretiert man die im Chromosom kodierten Parameter und setzt sie in die Z. ein, erhält man die Fitneß eines Individuums. 112