4.5 AKUSTIK-EXPERIMENTE

 

 

EINFÜHRUNG

 

Du kannst den Computer auch an Stelle eines Experimentalsystems verwenden, beispielsweise um mit dem Soundsystem das menschliche Hören zu untersuchen. Dies ist nicht nur billiger, sondern gibt dir auch eine ungeheure Flexibilität, insbesondere wenn du die Experimente mit einem selbstgeschriebenen Programm durchführst.

PROGRAMMIERKONZEPTE: Kammerton, Schwebung, Tonleiter

 

 

STIMMEN EINES MUSIKINSTRUMENTS, SCHWEBUNG

 

Das Gehör kann zwei Töne mit fast gleichen Frequenzen, die allein gespielt werden, nicht unterscheiden. Werden diese aber gleichzeitig gespielt, so ergibt sich ein An- und Abschwellen der Lautstärke, das sehr gut hörbar ist. Um dies selbst erleben, spielst du mit deinem Programm zuerst während 5 Sekunden den Standard-Kammerton a (440 Hz)  und nachher während derselben Zeit einen um nur 1 Hertz höheren Ton. Es ist kein Unterschied feststellbar. Beim Abspielen beider Töne hörst du aber ein deutliches Schwebungsphänomen.

import time

playTone(440, 5000)
time.sleep(2)
playTone(441, 5000)
time.sleep(2)
playTone(440, 20000, block = False)
playTone(441, 20000)
Programmcode markieren (Ctrl+C kopieren, Ctrl+V einfügen)

 

 

MEMO

 

Die globale Funktion playTone() hat verschiedene Parameter-Variationen, die du in der TigerJython Hilfe unter APLU Dokumentation (Koordinatengrafik) nachlesen kannst. Hier verwendest du den benannten Parameter block, mit dem du wählen kannst, ob die Funktion blockiert, bis der Ton zu Ende gespielt ist, oder ob sie nach Beginn des Abspielens sofort zurückkehrt. Um mehrere Töne gleichzeitig zu spielen, musst du die nicht-blockierende Variante verwenden.

Um Instrumente in einem Orchester, aber auch die Töne eines einzelnen Instruments (Saiteninstrument, Klavier, usw.) zu  stimmen, spielt man zwei Töne gleichzeitig und achtet  auf Schwebungen.

 

 

TONLEITERN

 

Die wohltemperierte Tonleiter geht vom Standard-Kammerton mit der Frequenz 440 Hz aus und teilt die Oktave (Frequenzverhältnis 2)  in 12 Halbtöne mit dem gleichem Frequenzverhältnis r. Demnach gilt

Du kannst damit leicht die C-Dur-Tonleiter spielen, die gemäss der Notenschrift

aus Ganz- und Halbtönen besteht. Der Kammerton entspricht der Note a.

In der reinen oder natürlichen Tonleiter werden die Tonfrequenzen durch Multiplikation mit einfachen Brüchen aus dem Grundton gebildet. Für die 8 Töne einer Oktave lauten sie:   

oder als Zahlenreihe 24, 27, 30, 32, 36, 40, 45, 48. Um sie abzuspielen, kannst du die Frequenzen in einer Liste speichern und diese playTone() übergeben. Nachdem du beide Tonleitern einzeln abgespielt hast, hörst du dir zwei verschieden gestimmte Instrumente an, welche die Tonleiter zusammen spielen. Wie du feststellen wirst, tönt es schrecklich.

r = 2**(1/12)
a = 440

scale_temp = [a / r**9, a / r**7, a / r**5, a / r**4, a / r**2,
              a, a * r**2, a * r**3]
scale_pure = [3/5 * a, 3/5 * a * 9/8, 3/5 * a * 5/4,  3/5 * a * 4/3,  3/5 * a * 3/2,
              a, 3/5 * a * 15/8, 3/5 * a * 2]

playTone(scale_temp, 1000)
playTone(scale_pure, 1000)

playTone(scale_temp, 1000, block = False)
playTone(scale_pure, 1000)
Programmcode markieren (Ctrl+C kopieren, Ctrl+V einfügen)

 

 

MEMO

 

Bei der wohltemperierten Tonleiter haben benachbarte Halbtöne immer dasselbe Frequenzverhältnis (also nicht etwa gleich Frequenzdifferenzen!). Der Vorteil der wohltemperierten gegenüber der reinen Stimmung ist, dass die Frequenzverhältnisse für alle Tonarten (C-Dur, D-Dur, usw.) immer gleich gross sind. [mehr... Akkorde in der reinen Stimmung klingen aber "rein", da es keine Schwebungen der Obertöne gibt.]

 

 

MELODIEN SPIELEN

 

Mit playTone() kannst du auch zum Spass eine einfache Melodie spielen. Für sich folgende Töne mit gleicher Länge verwendest du ein Tupel mit Tonhöhe und Geschwindigkeitsangabe und packst diese Tonreihen in eine Liste. Zuletzt ist es noch möglich, ein Musikinstrument zu wählen. Beispielsweise erkennst du in deinem Programm sicher eine Kindermelodie. Erkennst du sie?

v = 250
playTone([("cdef", v), ("gg", 2*v), ("aaaa", v//2), ("g", 2*v),
          ("aaaa", v//2), ("g", 2*v), ("ffff", v), ("ee", 2*v),
          ("dddd", v), ("c", 2*v)], instrument="harp")
Programmcode markieren (Ctrl+C kopieren, Ctrl+V einfügen)

 

 

MEMO

 

Es ist zwar erstaunlich, wie einfach du mit playTone() eine Melodie spielen kannst. Allerdings tönt diese verglichen mit einem Musikinstrument sehr synthetisch.

 

 

AUFGABEN

 

1.


Du kannst ein Lied als Liste der Tonfrequenzen notieren und diese mit einer for-Schleife abspielen:

melody = [262, 444, 349, 349, 392, 330, 262, 466, 440, 392, 392, 349]
v = 200
for f in melody:
    playTone(f, v)

a. Kennst du das Lied? Spiel das Lied etwas langsamer ab.

b. Spiel das Lied eine Oktave höher.

c. Für deine Singklasse ist die erste Version zu tief und die zweit zu hoch. Transponiere die Melodie, so dass sie anstelle von c' mit g' beginnt.

2.


Spiel den Akkord c'', e'', g'' (Terz, Quint) während zwanzig Sekunden mit der wohltemperierten Stimmung ab. (Du kannst dazu playTone() mit Ton-Buchstabenangabe verwenden.) Spiel nun denselben Akkord mit der reinen Stimmung. Was stellst du fest?