HomeTurtlegrafikGPanelRobotik WebTigerPython |
Python - Online |
Deutsch English |
DU LERNST HIER... |
wie die Turtle verschiedene Töne und Melodien abspielen kann und dabei sogar Figuren zeichnet. |
TONFREQUEENZEN |
Um verschiedene Töne abzuspielen, verwendest du die Funktion
Um Instrumente zu stimmen, wurde das a' mit der Frequenz 440 Hz als Kammerton festgelegt. Die übrigen Frequenzen lassen sich berechnen. Die Zahlen in der Tabelle sind gerundet. |
MUSTERBEISPIELE |
Um mehrere Töne nacheinander abzuspielen, kannst du die zugehörigen Frequenzen in einer Liste zusammenfassen. Mit einer for-Schleife gehst du die Liste durch und spielst du die Töne mit playTone(frequency, duration). ab. Programm: from gturtle import * song = [262, 294, 330, 349, 392, 392, 392, 0, 440, 440, 440, 440, 392] for f in song: playTone(f, 250)
In der Funktion playTone() kannst du die Töne auch mit den Ton-Namen c, d, e, f, g, a, h, c', d', e'.... oder eine weitere Oktave höher c'', d'', e'' ... festlegen. Die Ton-Buchstaben müssen in Anführungszeichen stehen. Programm: from gturtle import * song = ["c'","d'","e'","f'","g'","g'","g'",0,"a'","a'","a'","a'","g'"] song2 = ["c''","d''","e''","f''","g''","g''","g''",0,"a''","a''", "a''","a''","g''"] for f in song: playTone(f, 250) delay(1000) for f in song2: playTone(f, 250) Beispiel 3: Töne abspielen und zeichnen
Programm: from gturtle import * def step(): forward(20) right(90) forward(30) left(90) song = [262, 294, 330, 349, 392, 440, 494, 524] for f in song: playTone(f, 500, block = False) #playTone(f, 500) step()
Beispiel 4: Mehrere Töne gleichzeitig abspielen Programm: from gturtle import * playTone(262, 2000, block = False) playTone(330, 2000, block = False) playTone(392, 2000, block = False)
Beispiel 5: Verschiedene Musikinstrumente wählen Programm: from gturtle import * song = ["c'", "e'", "g'", "c''"] for f in song: playTone(f, 600, instrument="piano") for f in song: playTone(f, 600, instrument="guitar") for f in song: playTone(f, 600, instrument="trumpet") for f in song: playTone(f, 600, instrument="violin") for f in song: playTone(f, 600, instrument="organ") Beispiel 6: Einfaches Klavier
Programm: from gturtle import * def drawPiano(): setPenColor("black") for x in range(-200, 160, 50): setPos(x, -100) for k in range(2): fd(216).rt(90).fd(50).rt(90) setPenWidth(32) for x in [-150, -100, 0, 50, 100, 200]: setPos(x, 0) fd(100) def onMousePressed(x, y): if x > -200 and x < 215 and y > -100 and y < 100: i = int((x + 200)/50) setPos(x, y) if getPixelColorStr() == "black": k = int((x + 215) / 50) f = blacktones[k] else: f = whitetones[i] playTone(f, 400, block = False) whitetones = [262, 294, 330, 349, 392, 440, 494, 524] blacktones = [0, 277, 311, 0, 360, 415, 466, 0, 555] makeTurtle(mousePressed = onMousePressed) hideTurtle() drawPiano() addStatusBar(20) setStatusText("Click a piano key to play!") |
MERKE DIR... |
Mit der Funktion playTone(frequency, duration, instrument) kann die Turtle Töne abspielen. Falls die Turtle gleichzeitig auch zeichnen soll, oder falls du mehrere Töne (Akkord) gleichzeitig abspielen möchtest, verwendest du die nicht blockierende Funktion playTone(frequency, duration, block = False). |
ZUM SELBST LÖSEN |
|
Diese Frequenzen lassen sich berechnen. Wenn man von einem Grundton (a' mit f = 440 Hz) ausgeht, erhält man die Frequenz des darauf folgenden Halbtons mit dem Faktor 1.05946 und den nächsten ganzen Ton mit dem Faktor 1.05946 * 1.05946 ≈ 1,122. (z. Bsp. h' = 440 * 1.122 = 494). Die Frequenzen in der Tabelle sind gerundet.
Warum diese Faktorem? Eine Oktave (Frequenzverhältnis c'' : c' = 2 : 1) ist in zwölf Halbton-Schritte aufgeteilt.
Ein Halbton = 1/12 Oktave. Dies entspricht dem Frequenzverhältnis = zwölfte Wurzel aus 2 = 1.05946.
In der englischen Notation werden die Noten mit Grossbuchstaben bezeichnet.
c, d, e, f ... entspricht C3, D3, E3, F3,...
c', d', e', f'... entspricht C4, D4, E4, F4, ...
c'', d'', e'', f'', entspricht C5, D6, E5, F5, ...