Installiere die Dokumente-Online App

word image
Seminararbeit / Hausarbeit

Der Synthe­si­zer: Aufbau, Funk­ti­ons­weise und Software-Pro­gram­mie­rung

4.351 Wörter / ~23 Seiten sternsternsternsternstern Autor Martin H. im Mrz. 2017
<
>
Download
Dokumenttyp

Seminararbeit
Physik

Universität, Schule

Gymnasium Pegnitz

Note, Lehrer, Jahr

11, R. Ringler, 2016

Autor / Copyright
Martin H. ©
Metadaten
Preis 4.00
Format: pdf
Größe: 1.22 Mb
Ohne Kopierschutz
Bewertung
sternsternsternsternstern
ID# 64060







Seminararbeit

Der Synthesizer: Aufbau, Funktionsweise und Software-Programmierung

Datum und Unterschrift des Kursleiters

Inhaltsverzeichnis

1. Einleitung. 2

2. Was ist ein Synthesizer?. 2

3. Geschichte und Entwicklung des Synthesizers. 3

3.1 Der erste Synthesizer. 3

3.2 Von Monophon zu Polyphon. 4

3.3 Von Analog zu Digital5

4. Aufbau und Einzelteile des Synthesizers. 6

4.1 VCO (Voltage Controlled Oscillator)7

4.2 LFO (Low Frequency Oscillator)7

4.3 VCF (Voltage Controlled Filter)7

4.4 VCA (Voltage Controlled Amplifier)8

4.5 ADSR (Attack-Delay-Sustain-Release-Generator)8

4.6 Rauschgenerator. 8

4.7 Klaviatur. 9

4.8 Weitere Möglichkeiten. 9

5. Programmierung eines Software-Synthesizers. 11

5.1 Vorbereitungen. 11

5.2 Programmierung der Visualisierung. 12

5.3 Programmierung des Sounds. 12

6. Schlusserklärung. 15

Literaturverzeichnis. 17

Abbildungsverzeichnis. 18

Anhang. 18


1. Einleitung

Die Musik ist eine der ältesten Künste der Menschen, ist mit ihnen schon durch viele Entwicklungen gegangen und doch hat sie dabei nie an Stellenwert verloren. Bereits Platon bezeichnete die „Erziehung zur Musik [als äußerst wichtig], weil Rhythmus und Harmonie machtvoll in das Innerste der Seele dringen.“[1] Alle Epochen der Menschheitsgeschichte hatten einen Einfluss auf die derzeit aktuelle Musik von den alten Griechen über die Klassik bis hin zur Moderne.

Also ist es nicht verwunderlich, dass auch die heutige Elektrifizierungs- und Digitalisierungsgesellschaft ihre eigene Art von Musik besitzt. Zwar gibt es derzeit sehr viele unterschiedliche populäre Genres, doch haben sie alle von einer bestimmten Errungenschaft mehr oder weniger profitiert: der Erfindung des Synthesizers durch Robert Moog und davon ausgehend auch die Möglichkeit von Musikproduktion mit einem Computer.

Doch die Hintergründe dessen sind nur den wenigsten bekannt, geschweige denn dass sie wissen, wie ein Synthesizer aufgebaut ist und funktioniert. Deswegen soll diese Seminararbeit  genau darüber eine grobe Auskunft geben, jedoch nicht zu sehr ins Detail gehen, da dies wieder zu kompliziert und unverständlich würde.

Außerdem soll die Frage geklärt werden, wie es möglich ist, einen Software-Synthesizer zu programmieren und diesen dann nach den gewonnenen Erkenntnissen zu gestalten.


2. Was ist ein Synthesizer?

Jeder hat den Namen schon mal gelesen und man hört ihn fast immer, wenn man Musik hört. Aber was ist das denn genau? Allgemein bezeichnet man ihn als „regelbaren künstlichen Klangerzeuger“.[2]Daher kommt auch sein Name: künstlich erzeugen = synthesize auf Englisch. Meistens werden sie als Musikinstrumente zum Erzeugen musikalischer Klänge benutzt, doch oft auch zum Beispiel in Filmen, um bestimmte Geräusche zu simulieren.

Die Klänge können durch die Veränderung dieser drei Parameter den eigenen Vorstellungen gerecht gemacht werden: „Frequenz, Kurvenform oder Obertongehalt und Amplitudenverlauf“.[3] Zur Kontrolle der einzelnen Tonhöhen wird meist eine Klaviatur, manchmal aber auch ein Sequenzer benutzt.


3. Geschichte und Entwicklung des Synthesizers

Die Anfänge der elektronischen Musikerzeugung liegen bereits im 19. Jahrhundert mit dem Telharmonium[4], doch erst seit der Erfindung des Theremins in den 20er Jahren kann man wirklich von einem Instrument reden. Dieses ist ein einfacher Kasten mit zwei herausstehenden Metallleitungen, die beide durch Handbewegungen in der Luft die Frequenz oder Lautstärke des ausgegebenen Tons verändern.[5]

Einen weiteren Schritt vorwärts ging es durch das Trautonium, welches eher Glockentöne erzeugte und mit Hilfe einer Metallplatte gespielt wurde[6] und letztendlich zu einem Lochstreifen-Sequenzer, welcher dem gleich erklärten Moog-Synthesizer schon recht nahe kam, aber eben nicht über Tasten, sondern über einen vorher gefertigten Lochstreifen gesteuert wurde.[7]


3.1 Der erste Synthesizer

Durch Robert Moog (Abb. 1) wurde die elektronische Musik revolutioniert. Sein im Jahr 1964 vorgestellter Modular-Synthesizer war zwar „eine schrankwandgroße Anordnung von Oszillatoren, Transistoren, Filtern und Verstärkern“[8], aber durch das Hinzufügen einer Klaviertastatur wurde die Bedienung um ein Vielfaches erleichtert.

Ebenfalls war seine Art, die Töne so in elektrische Spannung umzuwandeln, dass eine Oktave – sieben Schritte in der Tonleiter – genau einem Volt entsprechen[9], eine enorme Vereinfachung. Vier Jahre später feierte der Moog-Synthesizer seinen Durchbruch durch das Album „Switched-On Bach“ von Walter Carlos.[10] Nach diesem ersten Synthesizer folgten immer mehr Verbesserungen, bis die ersten bis auf eine handliche Größe kamen, zum Beispiel der Mini-Moog, und auch auf der Bühne verwendet werden konnten.[11]


3.2 Von Monophon zu Polyphon

Zu Anfang waren alle Synthesizer monophon, also konnte nur ein Ton gespielt werden. Sobald eine weitere Taste gedrückt wurde, brachen alle bisherigen Funktionen ab und wurden für die nächste Taste ausgeführt oder es war erst dann möglich einen nächsten Ton zu spielen wenn der vorherige komplett ausgeklungen war.

Da hiermit jedoch die Möglichkeiten für den Instrumentalisten stark eingeschränkt waren, wurden anfangs drei- bis viermal die gleichen Sektionen des Synthesizers angefügt, um bis zu fünf Tasten gleichzeitig spielen zu können, was dann ungefähr einem Akkord mit einer Melodie entsprechen würde.[12] Das Problem hierbei war wieder, dass sobald ein sechster Ton angeschlagen wird, „automatisch die zuerst gespielte Taste gelöscht wird, [die] Funktionsabläufe gestoppt oder unterbrochen, gleichgültig, ob diese schon abgelaufen sind oder nicht.“[13]

Allerdings wurden bereits durch diese kleine Zahl an extra-Modulen die Preise für die Synthesizer um einiges höher, sodass sich von den analogen Geräten nur diese minimal-polyphonen oder solche mit weniger unterschiedlichen Modulen verkauften. Bei den digitalen Synthesizern ist es jedoch um einiges einfacher und kostengünstiger diese als vollstimmige Instrumente zu realisieren, weswegen sich diese mit der Zeit immer mehr durchgesetzt haben.


3.3 Von Analog zu Digital

Der Begriff „analoge Synthesizer“ ist bisher schon oft gefallen aber noch nicht erklärt worden. Ein solches Instrument arbeitet mit Schaltkreisen, die aus einzelnen analogen Bausteinen wie etwa Transistoren, Widerständen und Kondensatoren aufgebaut sind.[14] Sie korrespondieren miteinander über Klinkenkabel, durch die immer Spannungen weitergeleitet werden.

Der Klang dieser Geräte wird meist als warm und weich beschrieben und ist auch teilweise von der Temperatur abhängig.[15] Als sich jedoch das Problem der Größe und des Preises bei polyphonen Synthesizern einspielte, gingen viele Hersteller auf die Entwicklung und Produktion digitaler Synthesizer über.

Diese haben eine Art Minicomputer eingebaut, der die Töne über einen Logikcode erstellt und dann an einen Verstärker weitergibt. So wurde es auch um einiges leichter, Synthesizer mit einem Tonumfang wie bei einem Klavier zu bauen, die nicht viel zu teuer waren. Allerdings waren manche Musiker über den meist eher harten Klang nicht sehr erfreut und „entdeckten […] Anfang der 90er-Jahre die besonderen Qualitäten von analogem Equipment wieder.[16] Um jedoch die digitalen Errungenschaften trotzdem zu nutzen wurde ein Speicher für die Einstellungen erstellt, damit nicht jedes Mal alle Regler benutzt werden müssen um den Klang zu verändern, sondern einfach nur ein einziger, der auch nach dem Ausschalten oder Transportieren immer noch die gleichen Einstellungen gespeichert hat.

Download Der Synthe­si­zer: Aufbau, Funk­ti­ons­weise und Software-Pro­gram­mie­rung
• Download Link zum vollständigen und leserlichen Text
• Dies ist eine Tauschbörse für Dokumente
• Laden sie ein Dokument hinauf, und sie erhalten dieses kostenlos
• Alternativ können Sie das Dokument auch kаufen

Doch es gab auch noch andere Möglichkeiten, die durch die Digitalisierung eröffnet wurden, wie zum Beispiel das Sampling, bei dem ein aufgenommener Klang durch Drücken einer Taste abgespielt wird und auch in der Tonhöhe veränderlich ist[17], oder auch die Software-Synthesizer, die als Plug-Ins in DAW[18]-Programmen geöffnet werden können und dann mit Hilfe von Midi-Keyboards, Pad-Controllern oder auch einfach der Computertastatur gesteuert werden können.[19] Die Programmierung einer solchen Software wird auch in Abschnitt 5 dargelegt.


4. Aufbau und Einzelteile des Synthesizers

Im Folgenden wird der schematische Aufbau eines handelsüblichen Analog-Synthesizers an den einzelnen Bauteilen erklärt. Bei den früheren Synthesizern war es noch möglich, diese Bauteile miteinander nach eigenen Vorstellungen mithilfe von Klinkensteckerkabeln zu verbinden (siehe Abbildung 2).

4.1 VCO (Voltage Controlled Oscillator)

Er ist das Herzstück des Synthesizers. Mithilfe von Drehknöpfen können meist die Oktavlage, Feinverstimmung und die Wellenform verändert werden. Dabei sind oftmals die verschiedenen Schwingungen der Formen Sinus, Dreieck, Sägezahn, Rechteck und Puls möglich, die jeweils einen anderen Obertongehalt haben.[20]

4.2 LFO (Low Frequency Oscillator)

Im Prinzip ist funktioniert er genauso wie der VCO, nur dass er Schwingungen unterhalb des für den Menschen hörbaren Bereichs erzeugt.[21] Dadurch können beispielsweise über die Modulation von anderen Bauteilen Vibrato- oder Wah-Wah-Effekte erzeugt werden.[22]

4.3 VCF (Voltage Controlled Filter)

Allgemein sind Filter dafür zuständig, bestimmte Frequenzen des Eingangssignals zu dämpfen beziehungsweise komplett auszublenden.  Die Grenze, ab der der Filter wirkt, wird Arbeitsfrequenz genannt. Eine weitere Einstellung, die es bei Filtern gibt, ist die Flankensteilheit oder Güte. Sie beschreibt die Intensität und Schnelligkeit, mit der er die Lautstärke der Frequenzen ab der Arbeitsfrequenz abschwächt „und wird in dB/Oktave gemessen.“[23]

Es gibt verschiedene Arten von Filtern, die jeweils andere Frequenzen abdämpfen beziehungsweise unverändert lassen. Der Tiefpass-Filter lässt die Frequenzen unterhalb der Arbeitsfrequenz passieren während der Hochpass-Filter ebendiese abfiltert. Bandpass-Filter sind die Kombination aus beiden, wobei nur die Frequenzen zwischen oberer und unterer Grenze passieren können.

Der bekannteste Filter wird wohl der Equalizer sein, der mehrere Frequenzbereiche besitzt, die abgedämpft oder verstärkt werden können.[24]


4.4 VCA (Voltage Controlled Amplifier)

Bei dem VCA handelt es sich um einen einfachen Verstärker, der ein Eingangsignal mit einem weiteren moduliert, also je nach Stärke des Modulationssignals entweder verstärkt oder abschwächt. Als zweites Eingangssignal wird oft ein ADSR-Bauteil benutzt, welches im nächsten Teil näher erklärt wird.[25]

4.5 ADSR (Attack-Delay-Sustain-Release-Generator)

Diese Funktionsgruppe, auch Hüllkurven-Generator genannt, ist für den Verlauf von beispielsweise Lautstärke oder Filter-Modulation ab dem Zeitpunkt des Drückens einer Klaviertaste zuständig.

Die Attack-Zeit beschreibt die Zeit, wie lange der gespielte Ton braucht, um in der Hüllkurve seinen höchsten Wert zu erreichen.

Die Decay-Zeit steht für die Zeit, in der die Hüllkurve auf einen bestimmtes Sustain-level sinkt.

Das Sustain-Level „bestimmt den Pegel, der nach dem Decay so lange gehalten wird, bis die Taste losgelassen wird.“[26]

Die Release-Zeit ist das letzte Stück der Hüllkurve und bezeichnet die Zeit, die der Ton braucht, um auf den Nullpunkt abzuklingen.

Bei manchen Hüllkurven-Generatoren ist es noch möglich eine Delay-Time einzustellen, also eine Verzögerung des Starts der Hüllkurve nach dem Drücken der Taste.[27]

4.6 Rauschgenerator

Dieses Bauteil wird dazu benutzt, um weißes Rauschen – umfasst alle Frequenzen – oder farbiges Rauschen – hat einen Schwerpunkt auf einem bestimmten Frequenzbereich bzw. lässt einige aus – dem Ton hinzuzufügen. Das kann zum Beispiel bei der Simulation älterer Aufnahmen oder von Naturgeräuschen nützlich sein, oder wenn Töne dem Anschlag einer Snare-Drum ähnlich sein sollen.[28]


4.7 Klaviatur

Die Klaviatur ist für die Steuerung von Tönen zuständig. Durch das Drücken einer bestimmten Taste wird ein Signal an die Oszillatoren und den Hüllkurvengenerator weitergegeben, das von der Tonhöhe beziehungsweise dem Anschlag der jeweilig gedrückten Taste abhängt. Außerdem wird ein „Gate-Signal“[29] solange ausgegeben, wie die Taste gedrückt wird und bestimmt somit die Länge des Sustain im ADSR.[30] Bei monophonen Synthesizern kann wie bereits erklärt nur eine Taste gleichzeitig gedrückt werden, während bei polyphonen alle genutzt werden können.

4.8 Weitere Möglichkeiten

Um noch größere Klangvielfalt zu bekommen gibt es noch weitere Möglichkeiten, um den Ton zu modulieren und zu verändern. Die einfachste davon ist das parallelschalten von mehreren Systemen um somit mehr Möglichkeiten an Einstellungen zu haben.[31] Um jedoch nicht immer zwei komplette Synthesizer kaufen zu müssen kann dafür ein sehr einfaches System erwerben, das „über jeweils zwei Sektionen der wichtigsten Bereiche verfügt.“[32]

Der Ringmodulator ist ein weiteres Bauteil, der metallisch klingende Töne erzeugt. Dies geschieht dadurch, dass die Summe und Differenz von mindestens zwei Eingängen zugleich ausgegeben werden, was dann zu einer sehr unregelmäßigen Schwingung führt, wobei der Grundton fast komplett verschwindet.[33]


5. Programmierung eines Software-Synthesizers

Die bisher beschriebenen Synthesizer waren alles Hardware-Geräte. Doch die Digitalisierung nimmt auch vor diesen elektronischen Instrumenten keinen Halt. Schon seit vielen Jahren werden in der Musikproduktion, sowie auch im privaten Gebrauch, VST-Plugins genutzt, um Instrumente oder Effekte in DAW-Programmen zu nutzen.  Um die im Rahmen dieser Arbeit gewonnenen Erkenntnisse anzuwenden wird im Folgenden der Programmcode eines Software-Synthesizers in der Programmiersprache „Csound“ in der Entwicklungsoberfläche „Cabbage Audio“ erklärt und die Herangehensweise dargestellt.

Der Programmcode ist im Anhang beigelegt und sollte während dem lesen ab dem Abschnitt 5.2 danebengelegt werden. Außerdem ist die Benutzeroberfläche als Bild im Anhang zu finden.


5.1 Vorbereitungen

Um sich einen Eindruck über die Programmierung von VST-Plugins zu verschaffen, wird zuerst einmal mit der Suchmaschine Google nach diesen Stichwörtern gesucht. Auf Tutorial-Seiten wird des Öfteren die freie VST-Bibliothek des Instituts Steinberg und auch das Programm Juce erwähnt. Nach vielem Ausprobieren dieser Tutorials, bei denen dann oft Probleme auftraten aufgrund von Inkompatibilität mit Visual Studio 2015, zeigten die Suchergebnisse dann den Namen Cabbage an.

Dieses Programm besteht aus zwei Teilen, der Visualisierung, die von den eigenen Bibliotheken des Programms ausgeht, und der Sound-Wiedergabe beziehungsweise Aufnahme, die auf der Programmiersprache Csound basiert. In der Help-Rubrik des Source-Editors sind die Dokumentationen zu den beiden Teilen zu finden, welche vor Beginn des Programmierens zumindest angelesen werden sollte, um später bereits eine Ahnung zu haben, wo zu suchen ist, wenn sogenannte „Opcodes“ benötigt werden.


5.2 Programmierung der Visualisierung

Der Programmcode für diesen Teil umfasst die Zeilen 1 bis 36. An Anfang und Ende dieses Abschnitts muss immer, ähnlich wie bei HTML <Cabbage> und </Cabbage> stehen. Dazwischen können alle vorgegebenen Module mit den jeweiligen Eigenschaften implementiert werden. Dazu gehören zum Beispiel Labels, Slider, Comboboxen, Buttons oder Text-Felder.

Das Attribut „bounds“ weist immer auf die Position und die Größe des Moduls hin, die restlichen sind meist optional, und geben weitere Spezifikationen wie einen Text, die Farbe oder ähnliches an. Mit dem Sound-Abschnitt des Programms kommunizieren sie durch die channel- und identchannel-Attribute. Das erste gibt einen Wert, der in der Benutzeroberfläche zu verändern ist, als Zahl oder Zeichenreihe weiter und kann mit dem Befehl „chnget“ aufgerufen werden, während das zweite Attribut aus der Sound-Sektion mit dem Befehl „chnset“ aufzurufen ist und damit alle Attribute des ausgewählten Moduls verändert werden können.

Zuerst wird auf einem Papier der gewünschte Aufbau aufgezeichnet und dann implementiert. Dank des mit eingebauten Editor-Modus können alle Module live eingefügt, bearbeitet und verschoben werden, was diesen Arbeitsschritt erheblich erleichtert, da nicht mühselig Pixel abgezählt und ausgerechnet werden müssen.


5.3 Programmierung des Sounds

Der weitaus umfassendere Bereich wird in einzelne Abschnitte geteilt, um das Verständnis zu erleichtern. Sie beginnen und enden wie auch der erste Teil ähnlich dem HTML-Format.

Der erste Teil von Zeile 37 bis 40 umfasst die Optionen, die festlegen, wie Csound mit dem Betriebssystem, einem Midi-Keyboard oder der Tastatur interagiert.

Es ist nicht sinnvoll, diese Zeilen genauer zu erklären, da es teilweise nur noch mehr verwirrt.[35]

Der nächste Abschnitt heißt „CsInstruments“ und beginnt mit der Festlegung der globalen Variablen und der Speicherreservierung in Zeile 41. Mit „;“ können Kommentare eingefügt werden, hier gliedern sie den Programmcode zur besseren Übersicht. „sr“ (Zeile 43) steht für die Sample-Rate, also hier 44100 Hz, „ksmps“ (Zeile 44) beschreibt die Abstände, in denen die k-Variablen (wird später noch genauer erklärt) aktualisiert werden, das heißt dass sie in diesem Fall 32 mal in der Sekunde überprüft werden.

„nchnls“ (Zeile 45) ist die Anzahl der Output-Channels, bei 2 also Stereo und „0dbfs“  (Zeile 46) beschreibt die maximale Lautstärke, 1 ist die maximale, 0 die minimale. Wenn ein Output-Wert über das Maximum kommt, also übersteuert, wird er automatisch auf dieses gesetzt.

Der Programmcode für das Instrument umfasst die Zeilen 49 bis 157. Die erste und letzte Zeile gibt Anfang und Ende des Instruments an und die 1 nach „instr“ ist dessen Name. Es ist auch möglich mehrere dieser Sektionen zu erstellen, aber in diesem Fall wäre es nicht sinnvoll gewesen.

Um den danach folgenden Programmcode zu verstehen ist es sinnvoll, die Variablendeklaration in Csound zu kennen. Es gibt drei verschiedene Variablen, die als Kleinbuchstabe vor den Namen der Variable geschrieben werden: i-Variablen sind einfache Kommazahlen, die beim Start eines Instruments, also dem Drücken einer Taste initialisiert werden.

Die, die mit einem k anfangen, werden sooft aktualisiert, wie es am Anfang festgelegt wird und a-Argumente bei jedem Durchlauf des Instrument-Codes, also entsprechend der Sample-Rate. Um aus diesen Variablen dann funktionierende Instrumente zu erstellen, benötigt man die bereits genannten Opcodes. Das sind im Grunde Funktionen, die aus den Eingabeparametern einen Ausgabewert errechnen.

Eine Übersicht ist ebenfalls in der Csound-Dokumentation im Abschnitt „II. Opcodes Overview“ gegeben.

Somit wird in Zeile 50 die Grundfrequenz für diesen Durchlauf festgelegt, der der gedrückten Taste entspricht, da p4 die dafür zugehörige Variable ist. In der nächsten Zeile wird die Amplitude auf den Wert des Sliders für die komplette Lautstärke gesetzt.

Der nächste Abschnitt fasst alle Befehle des Envelope-Generators zusammen. Zuerst werden die Werte übernommen, die der Benutzer festgelegt hat und dann mit Hilfe des Opcodes „madsr“ in einen Amplitudenverlauf umgewandelt.

Darauf folgt die Deklarierung für den LFO. Dieser beinhaltet drei unterschiedliche Arten. Einmal Additiv, also einfach ein weiterer Oszillator, ein Tremolo, das ist ein mehrfach wiederholter Ton und ein Vibrato, der den Ton periodisch höher und tiefer macht. Um dies zu realisieren werden natürlich zuerst wieder die Eingabewerte benötigt.

Einmal eine Entscheidung zwischen den drei Varianten und dann zwischen den Wellenformen und für die anderen Parameter wie Lautstärke, Verstimmung, Fußlage und Schnelligkeit des Oszillators werden einfache Regler benutzt. Um dem Opcode „lfo“ nun die richtigen Parameter zu übergeben muss if-Schleife hinzugefügt werden, um einerseits die unnötigen Regler auszublenden und die Frequenz auf den gewünschten Wert zu setzen.

Beim Additiven LFO wird dabei die gespielte Frequenz zuerst mit dem Parameter Tune verstimmt und dann für einen Pitch-Wert von -2, also zwei Oktaven tiefer, durch vier geteilt und so weiter. Für die anderen beiden wird einfach die Schnelligkeit als Frequenz benutzt,  denn das entspricht auch dem Endergebnis das erreicht werden soll, dass der Ton sich bei einer Schnelligkeit von eins einmal in der Sekunde verändert.

Zuletzt werden dann die Lautstärke, die Frequenz und die Wellenform in den Opcode eingesetzt, und „aLfo“ berechnet.

Der Teil der Fußlage funktioniert genauso wie beim LFO und dann muss noch für den Fall dass der LFO einen Vibrato-Effekt erzeugen soll, auf die Frequenz des VCO der „aLfo“ addiert werden. Damit ist dieser Teil auch schon abgeschlossen und alle Attribute können dem Opcode übergeben werden.

Für den Noise-Generator muss kaum Aufwand betrieben werden, da dieser nur der Eingabeparameter Lautstärke und Art benötigt und diese einfach in den Opcode „fractalnoise“ eingefügt werden können.

Die Filter laufen wieder sehr einfach ab. Zuerst wird noch ein weiterer einfacher Envelope-Generator erstellt bei dem nur der Decay-Wert veränderbar ist, der den Verlauf des Noise bestimmt, da dieses sonst zu dominant wäre. Dann wird das Ausgabesignal bis zu diesem Zeitpunkt berechnet, wobei für den Fall des Additiven LFO’s noch „aLfo“ addiert werden muss.

Dieses Signal wird dann den Low- und High-Pass-Filtern übergeben und danach der minimale Wert der beiden weitergegeben.

Als letztes wird noch die Lautstärkenmodulation durch den Tremolo-LFO zum Sound hinzugefügt und dann wird das Endergebnis als Stereosignal ausgegeben.

CsScore ist der letzte Teil der Csound Syntax und hier kann der zeitliche Verlauf der Instrument-Wiedergabe gesteuert werden. Das ist hier jedoch nicht nötig, da dies vom Benutzer über das Keyboard passiert. Durch diese Sektion wäre es unter anderem möglich einen Sequencer zu erstellen, der dann eine bereits festgelegte Melodie abspielt.


6. Schlusserklärung

Die künstliche Klangerzeugung mit Synthesizern ist also keineswegs nur für Elektroniker oder Informatiker verständlich, sondern auch für einfache Musiker oder Hobby-Bastler, denn es beruht alles auf einfachen Grundregeln und Überlegungen. Alle Module, aus denen dieses elektronische Musikinstrument aufgebaut ist, werden mit Reglern gesteuert und korrespondieren miteinander auf einfachste Weise über Kabel oder sind intern verbunden.

Doch nun noch ein paar Worte zum selbst programmierten Synthesizer. Dieser ist im Prinzip aufgebaut wie ein Modular-Synthesizer in den Anfängen der Entwicklung. Dies ist bewusst so gemacht, da die meist zu findenden VST-Synthesizer sehr kompliziert und unübersichtlich aufgebaut sind. Daher eignet sich dieser „Easy-Synth“ perfekt für eine grundlegende Erklärung der Funktionsweise eines Synthesizers.

Doch mit den Bibliotheken die von Csound mitgeliefert werden ist um einiges mehr möglich und auch die benutzten Syntheseformen sind die einfachsten.

Mir selbst hat diese Arbeit auch weitergeholfen, da ich ohne Vorkenntnisse über Synthesizer oder die Csound Programmiersprache arbeiten musste und mich auch selbst durch die Bibliotheken suchen musste, da es kaum Tutorials dazu gibt die aufschlussreich sind. Ich persönlich bin auch gespannt, in welche Richtungen sich die Musik noch weiter entwickelt und von welchen Aspekten es dann wiederum abhängen wird.


Literaturverzeichnis

Cabbage Audio. Cabbage Docs | Cabbage Audio. [Online] [Zitat vom: 06. Oktober 2016.]

Engels, Josef. 2012. Der Synthesizer – die Musikrevolution des Robert Moog. [Online] 23. Mai 2012. [Zitat vom: 15. Oktober 2016.]

Entropia e. V. 2008. Elektronische Instrumente. Entropia. [Online] 10. Juli 2008. [Zitat vom: 2. November 2016.]

Fischer, T. Paul. 1998. Themen der Synthesizer-Seite. Synthesizer Lexikon. [Online] 14. Januar 1998. [Zitat vom: 6. Juni 2016.]

Luther, Roger. 2000. Moog Archives. [Online] 2000. [Zitat vom: 14. Oktober 2016.]

Moogulator. Sequencer. [Online] [Zitat vom: 15. Oktober 2016.]

Musicians Life. 2009. Kleine Synthesizergeschichte. Recording.de. [Online] 26. Juli 2009. [Zitat vom: 27. Oktober 2016.]

Paulun, Paul. 2015. Geschichte des Synthesizers - Als die Mutter von Techno auf die Welt kam. Deutschlandradio Kultur. [Online] 5. August 2015. [Zitat vom: 2. November 2016.]

Schmidtmann, Dr. Achim. 2016. spruecheportal.de. [Online] 2016. [Zitat vom: 3. November 2016.]

Schreiber, Bernd. 1980. Das Synthesizer Handbuch - Synthesizer transparent gemacht. Marburg : Wenzel, 1980.

Wikimedia Foundation Inc. Wikipedia - Synthesizer. Wikipedia. [Online] [Zitat vom: 5. Juli 2016.]

Winter, Stephan. 2007. Entwicklung und Bau eines Synthesizers für Ausbildungszwecke. Westfälische Wilhelms-Universität Münster. [Online] 24. Juni 2007. [Zitat vom: 4. Juni 2016.]

Abbildungsverzeichnis

Abbildung 1: Robert Moog (Luther, 2000)3

Abbildung 2: ADSR-Kurve. 8

Abbildung 3: Moog Modular 1965 (Luther, 2000)7


Anhang

Anhang 1: (Schreiber, 1980 S. 8f)

Anhang 2:

1    <Cabbage>

2    form caption("Easy Synth") size(870, 660), colour(0, 0, 0), pluginID("def1")

3    keyboard bounds(0, 494, 870, 125), keywidth("20")

4    label bounds(16, 56, 178, 23), text("Tone Generator")

5    groupbox bounds(16, 124, 288, 80), text("Standard Tone")

6    rslider bounds(20, 148, 50, 50), channel("toneVolume"), range(0, 1, 0.5, 1, 0.001),         text("Volume")

7    rslider bounds(72, 148, 50, 50), channel("toneTune"), range(-16, 16, 0, 1, 0.001), text("Tune")

9    combobox bounds(188, 148, 108, 30), channel("toneWaveform"), items("Triangle",      "Rectangle", "Saw", "Pulse")

10   groupbox bounds(16, 224, 288, 86), text("Low Frequency Oscillator")

11   rslider bounds(20, 248, 50, 50), channel("lfoVolume"), range(0, 1, , 1, 0.001),              text("Volume")

12   rslider bounds(72, 248, 50, 50), channel("lfoTune"), range(-16, 16, , 1, 0.001),             text("Tune"), identchannel("lfoTuneIdent")

13   rslider bounds(72, 248, 50, 50), channel("lfoRate"), range(1, 20, 5, 1, 1),         text("Rate"), identchannel("lfoRateIdent"), visible(0)

14   rslider bounds(128, 248, 50, 50), channel("lfoPitch"), range(-2, 2, , 1, 1),                 text("Pitch"),  identchannel("lfoPitchIdent")

15   combobox bounds(184, 248, 112, 24), channel("lfoWaveform"), text("Sine",    "Triangle", "Square bipolar", "Square unipolar", "Saw", "Saw upwards")

17   groupbox bounds(16, 336, 288, 80), text("Noise Generator"), 

18   rslider bounds(28, 360, 50, 50), channel("ngVolume"), range(0, 1, , 1, 0.001), text("Volume")

19   combobox bounds(88, 368, 90, 30), channel("ngSort"), items("White", "Pink", "Brown")

20   hslider bounds(180, 368, 112, 30), channel("noiseLength"), range(0, 2, 1, 1, 0.001), text("Length")

21   label bounds(240, 56, 114, 23), text("Filter"), 

22   groupbox bounds(318, 124, 80, 140), text("High-Pass")

23   vslider bounds(344, 148, 30, 108), channel("hpFreq"), range(0, 22000, , 1, 0.001)

24   groupbox bounds(318, 280, 80, 138), text("Low-Pass")

25   vslider bounds(340, 304, 30, 108), channel("lpFreq"), range(0, 22000, 22000, 1, 0.001)

26   label bounds(436, 56, 182, 23), text("ADSR-Generator")

27   groupbox bounds(416, 124, 318, 294), text("ADSR-Generator")

28   rslider bounds(440, 344, 50, 50), channel("Attack"), range(0, 1, 0.1, 1, 0.001), text("Attack")

30   rslider bounds(580, 344, 50, 50), channel("Sustain"), range(0, 1, 0.6, 1, 0.001), text("Sustain")

31   rslider bounds(652, 344, 50, 50), channel("Release"), range(0, 1, 0.7, 1, 0.001), text("Release")

32   image bounds(428, 152, 300, 173), file("C:\Users\Feilx \Documents\Schule\      W-Seminar\ADSR_Grafik.jpg")

33   label bounds(744, 56, 118, 23), text("Volume")

34   groupbox bounds(756, 124, 94, 294), text("Volume")

35   vslider bounds(788, 148, 30, 262), channel("totalVolume"), range(0, 1, 1)

36   </Cabbage>

37   <CsoundSynthesizer>

38   <CsOptions>

39   -n -d -+rtmidi=NULL -M0 -m0d --midi-key-cps=4 --midi-velocity-amp=5

40   </CsOptions>

41   <CsInstruments>

42   ; Globale Variablen

43   sr = 44100

44   ksmps = 32

45   nchnls = 2

46   0dbfs = 1

47   ;Speicherreservierung

48   prealloc 1,32

49   instr 1

50   iFreq = p4

51   iAmp  chnget"totalVolume"

52   ;ADSR

53   iAtt  chnget"Attack"

54   iDec  chnget"Decay"

55   iSus  chnget"Sustain"

57   kEnv madsr iAtt, iDec, iSus, iRel

58   ;LFO

59   iLfoType chnget"lfoWaveform"

60   iLfoVol chnget"lfoVolume"

61   iLfoTune chnget"lfoTune"

62   iLfoKind chnget"lfoKind"

63   iLfoRate chnget"lfoRate"

64   iLfoPitch chnget"lfoPitch"

65   if changed(iLfoKind)==1 then

66   -[36]if (iLfoKind == 1) then

67   -  - chnset"visible(0)", "lfoRateIdent"

68   -  - chnset"visible(1)", "lfoTuneIdent"

69   -  - chnset"visible(1)", "lfoPitchIdent"

70   -  - iLfoAdd = iFreq +iLfoTune

71   -  - if changed(iLfoPitch)==1 then

72   -  -  - if (iLfoPitch==-2) then

73   -  -  -  - iLfoCps = iLfoAdd/4

74   -  -  - elseif (iLfoPitch==-1) then

75   -  -  -  - iLfoCps = iLfoAdd/2

76   -  -  - elseif (iLfoPitch==0) then

77   -  -  -  - iLfoCps = iLfoAdd

78   -  -  - elseif (iLfoPitch==1) then

79   -  -  -  - iLfoCps = iLfoAdd*2

80   -  -  - elseif (iLfoPitch==2) then

81   -  -  -  - iLfoCps = iLfoAdd*4

82   -  - endif

83   - endif

84   - elseif (iLfoKind == 2) then

85   -  - chnset"visible(1)", "lfoRateIdent"


Swop your Documents