Die additive Synthese bezieht ihre Theorie von einem Mathematiker namens Fourier. Diese besagt, dass jeder erdenkliche Klang aus einer geeigneten Mischung von vielen einzelnen elementaren Sinusschwingungen erzeugt werden kann. Man kann hiermit komplexe Wellenformen jeglicher Art erzeugen, indem man verschiedene Sinuswellen addiert.
Eine Orgel stellt einen frühen Vertreter der additiven Synthesizer dar. Mithilfe der Zugriegel kann man Teiltöne der Obertonreihe in Sinusform hinzufügen. Je weiter solch ein Riegel herausgezogen wird, desto lauter wird der Oberton.
Wie wir schon in einem älteren Artikel gesehen haben, kann man mit GEN10 komplexe Wellenformen erzeugen, indem man verschiedene harmonische Komponenten dazunimmt. Es ist außerdem möglich, die Lautstärke der einzelnen Komponenten zu bestimmen. So ist es möglich eine Sägezahnwelle oder Rechteckwelle zu erzeugen, einfach mithilfe der verschiedenen Komponenten.
Der klangliche Unterschied zwischen einer Sägezahn– und einer Rechteckwelle kommt zustande, weil die Sägezahnwelle eine Summe aller harmonischen Obertöne ist, während die Rechteckwelle die Summe der ungeraden Harmonien ist.
Beispiel einer Sägezahnwelle (nur 10 Harmonien):
f1 0 4096 10 10 5 3.3 2.5 1.6 1.4 1.25 1.1 1
Beispiel einer Rechteckwelle (nur 9 Harmonien):
f2 0 4096 10 10 0 3.3 0 2 0 1.4 0 1.1
Durch’s Ändern der relativen Gewichtung der einzelnen Obertöne, kann man viele verschiedene Timbren erzeugen.
Die einzelnen Komponenten müssen aber nicht in harmonischer Relation stehen. Ein wichtiger Punkt, wenn man interessante Timbres erzeugen will, ist die Nutzung nicht-harmonischer Obertöne. Man könnte auch Timbres erzeugen, die nur aus nicht-harmonischen Komponenten bestehen.
Harmonien sind ganzzahlige Vielfache ihrer Fundamentalen:
f (fundamental), 2*f (second harmonic), 3*f, 4*f, 5*f, 6*f, 7*f, 8*f, usw…
D.h., wenn die Fundamentale 200Hz beträgt, dann ist die 2te Harmonische 400Hz und die 3te 600Hz, usw… Komponenten, die nicht-harmonische Obertöne der Fundamentalen sind, nennt man unharmonische Komponenten. Im Folgenden wollen wir harmonische Obertöne benutzen und diese im Laufe der Zeit unharmonisch machen und wieder zurück, mithilfe von Glissandos. Somit erzeugen wir dann Sounds, die innerhalb eines Zeitrums ihr Timbre ändern.
Dafür benötigen wir Kontrollvariablen. Jede einzelne harmonische Komponente bekommt einen eigenständigen Envelope zum Kontrollieren der Frequenz und Amplitude. Das Ändern einer harmonischen Frequenz und Amplitude – abhängig der anderen Wellenform-Komponenten – ist ein wesentlicher Bestandteil natürlicher Sounds. Aus diesem Grund ist es wichtig diese Parameter zu kontrollieren, um natürliche und lebendige Sounds zu kreieren.
Im folgende Beispiel benutze ich den Opcode oscili, der identisch zu oscil ist, aber einem interpolierten digitalen Synthesizer entspricht. Die Syntax ist die gleiche, aber das Audiosignal ist von besserer Qualität.
<CsoundSynthesizer> <CsOptions> -o dac ;realtime audio </CsOptions> <CsInstruments> sr = 48000 ksmps = 10 nchnls = 2 instr 1 k2hrm expseg 200, p3/2, 234, p3/2, 200 k3hrm expseg 300, p3/2, 333, p3/2, 300 k4hrm expseg 400, p3/2, 376, p3/2, 400 k5hrm expseg 500, p3/2, 527, p3/2, 500 k6hrm expseg 600, p3/2, 609, p3/2, 600 k7hrm expseg 700, p3/2, 715, p3/2, 700 k8hrm expseg 800, p3/2, 853, p3/2, 800 afund oscili 3900, 100, 1 ahrm2 oscili 3900, k2hrm, 1 ahrm3 oscili 3900, k3hrm, 1 ahrm4 oscili 3900, k4hrm, 1 ahrm5 oscili 3900, k5hrm, 1 ahrm6 oscili 3900, k6hrm, 1 ahrm7 oscili 3900, k7hrm, 1 ahrm8 oscili 3900, k8hrm, 1 out afund+ahrm2+ahrm3+ahrm4+ahrm5+ahrm6+ahrm7+ahrm8, afund+ahrm2+ahrm3+ahrm4+ahrm5+ahrm6+ahrm7+ahrm8 endin </CsInstruments> <CsScore> f1 0 4097 10 1 i1 0 10 </CsScore> </CsoundSynthesizer>
Am Anfang ist das Spektrum harmonisch und aufgrund der Envelopes wird das Signal langsam unharmonischer, bis es zum Ende hin wieder harmonisch wird. Hier noch ein weiteres Beispiel:
<CsoundSynthesizer> <CsOptions> -o dac ;realtime audio </CsOptions> <CsInstruments> sr = 48000 ksmps = 10 nchnls = 2 instr 2 k2hrm expseg 200, p3/2, 220, p3/2, 200 k3hrm expseg 300, p3/2, 320, p3/2, 300 k4hrm expseg 400, p3/2, 420, p3/2, 400 k5hrm expseg 500, p3/2, 520, p3/2, 500 k6hrm expseg 600, p3/2, 620, p3/2, 600 k7hrm expseg 700, p3/2, 720, p3/2, 700 k8hrm expseg 800, p3/2, 820, p3/2, 800 afund oscili 3800, 100, 1 ahrm2 oscili 1900, k2hrm, 1 ahrm3 oscili 1900, k3hrm, 1 ahrm4 oscili 1900, k4hrm, 1 ahrm5 oscili 1900, k5hrm, 1 ahrm6 oscili 1900, k6hrm, 1 ahrm7 oscili 1900, k7hrm, 1 ahrm8 oscili 1900, k8hrm, 1 ahrm2b oscili 1900, 200, 1 ahrm3b oscili 1900, 300, 1 ahrm4b oscili 1900, 400, 1 ahrm5b oscili 1900, 500, 1 ahrm6b oscili 1900, 600, 1 ahrm7b oscili 1900, 700, 1 ahrm8b oscili 1900, 800, 1 out afund+ahrm2+ahrm3+ahrm4+ahrm5+ahrm6+ahrm7+ahrm8+ ahrm2b+ahrm3b+ahrm4b+ahrm5b+ahrm6b+ahrm7b+ahrm8b, afund+ahrm2+ahrm3+ahrm4+ahrm5+ahrm6+ahrm7+ahrm8+ ahrm2b+ahrm3b+ahrm4b+ahrm5b+ahrm6b+ahrm7b+ahrm8b endin </CsInstruments> <CsScore> f1 0 4097 10 1 i2 0 10 </CsScore> </CsoundSynthesizer>
Hier benutzen wir immer ein Paar von Oszillatoren für jede Komponente. In jedem Paar ändert sich die Frequenz bei einem Oszillator um 20Hz, während der andere konstant bleibt. Deswegen hören wir ein ansteigendes Beating (bis zu 20 Beatings pro Sekunde). Zum Ende hin nimmt das Beating wieder ab.
Diese beiden Beispiele haben nur Änderungen der Frequenz mithilfe von Envelopes genutzt. Wie sieht es mit der Amplitude aus?
<CsoundSynthesizer> <CsOptions> -o dac ;realtime audio </CsOptions> <CsInstruments> sr = 48000 ksmps = 10 nchnls = 2 instr 3 k2hrm expseg 234, 1, 200, p3-1, 200 k3hrm expseg 333, 1, 300, p3-1, 300 k4hrm expseg 376, 1, 400, p3-1, 400 k5hrm expseg 527, 1, 500, p3-1, 500 k6hrm expseg 609, 1, 600, p3-1, 600 k7hrm expseg 715, 1, 700, p3-1, 700 k8hrm expseg 853, 1, 800, p3-1, 800 kampodd linseg 0, .1, 5000, .1, 2000, 2, 2000, 2, 7000, p3-6.2, 1000, 2, 0 kampeven linseg 0, .1, 5000, .1, 2000, 2, 2000, 2, 0, p3-6.2, 6000, 2, 0 afund oscili kampeven, 100, 1 af oscili kampodd, 100, 1 ahrm2 oscili kampeven, k2hrm, 1 ahrm3 oscili kampodd, k3hrm, 1 ahrm4 oscili kampeven, k4hrm, 1 ahrm5 oscili kampodd, k5hrm, 1 ahrm6 oscili kampeven, k6hrm, 1 ahrm7 oscili kampodd, k7hrm, 1 ahrm8 oscili kampeven, k8hrm, 1 out afund+af+ahrm2+ahrm3+ahrm4+ahrm5+ahrm6+ahrm7+ahrm8, afund+af+ahrm2+ahrm3+ahrm4+ahrm5+ahrm6+ahrm7+ahrm8 endin </CsInstruments> <CsScore> f1 0 4097 10 1 i3 0 8 </CsScore> </CsoundSynthesizer>
Dieses Beispiel erzeugt einen Sound mit einem plötzlichen Attack und einem langen Decay. Am Anfang ist das Timbre unharmonisch und später harmonisch. Sobald der Sound harmonisch wird, werden die ungeraden Komponenten lauter, genauso wie die geraden Komponenten, aber jede hat einen anderen Envelope dafür.
Soviel für heute. Das nächste mal schauen wir uns ein paar andere Funktionsgeneratoren und Oszillatoren an…
1 Pingback