8. SOUND |
DU LERNST HIER... |
|
MUSTERBEISPIELE |
Eine Tonfolge abspielen Zuerst musst du das Modul music importieren. Dann kannst du mit dem Befehl playTone(f, 500) einen Ton mit der Frequenz f während 500 Millisekunden abspielen. Frequenzen einiger Töne findest du im Overlay-Fenster: Um mehrere Töne nacheinander abzuspielen, erstells du eine Liste song mit den zugehörigen Frequenzen. Die Elemente einer Liste musst du in eckigen Klammern und mit Komma getrennt schreiben (Frequenz 0 legt eine Pause ein). Zum Abspielen durchläufst du die Liste mit einer for-Schleife und entnimmst ihr die Frequenzen, die du playTone() übergibst. Hier ein Beispiel des Beginns eines Kinderlieds. Programm: from music import playTone song = [262, 294, 330, 349, 392, 392, 392, 0, 440, 440, 440, 440, 392, 0, 349, 349, 349, 349, 330, 0, 330, 0, 294, 294, 294, 294, 262] for f in song: playTone(f, 500) Statt Frequenzen kannst du auch eine musikalische Notation (r ist eine Pause) verwenden. Die Tonhöhen werden dabei durch einen Buchstaben und (eventuell ein Kreuz für einen Halbton nach oben) angegeben. Du kannst auch mit einem anschliessenden Doppelpunkt und einer Zahl sagen, dass dieser Ton länger ausgehalten wird. Folgende Töne der chromatischen Tonleiter sind verfügbar: Programm: 'C', 'C#', 'D', 'D#', 'E', 'F', 'F#', 'G', 'G#', 'A', 'A#', 'H', 'c', ' c#', 'd', 'd#', 'e', 'f', 'f#', 'g', 'g#', 'a', 'a#', 'h', 'c2', 'c2#', 'd2', 'd2#', 'e2', 'f2', 'f2#', 'g2', 'g2#', 'a2', 'a2#', 'h2', 'c3' Das Kinderlied kannst du in musikalischer Notation so schreiben: Programm: from music import playTone song = ['c', 'd', 'e', 'f', 'g', 'g', 'g:2', 'a', 'a', 'a', 'a', 'g', 'r', 'f', 'f', 'f', 'f', 'e', 'r', 'e', 'r', 'd', 'd', 'd', 'd', 'c:3'] for f in song: playTone(f, 500) Programme mit Sound ergänzen
Programm: from oxosnake import * from music import playTone def step(): forward() right(90) forward() left(90) makeSnake() setPos(0, 7) scale = ['c','d','e','f','g','a','h','c2'] for tone in scale: playTone(tone, 300) step() Eingebaute Melodien abspielen Programm: from music import * from oxocard import * songs = [ENTERTAINER, RINGTONE, BIRTHDAY, JUMP_UP, JUMP_DOWN, DADADADUM, POWER_UP, POWER_DOWN, PUNCHLINE, WEDDING, BOOGYWOODY, PRELUDE] n = 1 for song in songs: display(n) n += 1 for f in song: playTone(f, 150) sleep(3) Du kannst auch einfacher der Funktion playSong() eine Liste mit Tönen übergeben, die sie dann abspielt: playSong(ENTERTAINER) oder falls du nach die Tondauer angeben willst: playSong(ENTERTAINER, 300) (standardmässig ist sie 150 ms). from music import * playSong(ENTERTAINER, 300) |
MERKE DIR... |
Mit playSound(frequency, duration) kannst du einen Sound mit gegebener Frequenz (in Hertz) und Dauer (in Millisekunden) abspielen. Die Funktion kehrt erst zurück, wenn der Sound fertig gespielt ist, du kannst also nicht mehrere Töne miteinander erzeugen. |
ZUM SELBST LÖSEN |
|
Einige Tonfrequenzen:
Ton | Frequenz | Ton | Frequenz |
h' | 494 | h'' | 988 | ||
a' | 440 | a'' | 880 | ||
g' | 392 | g'' | 784 | ||
f' | 349 | f'' | 698 | ||
e' | 330 | e'' | 660 | ||
d' | 294 | d'' | 588 | ||
c' | 262 | c'' | 524 | c''' | 1048 |
Melodien, die Modul music definiert sind:
DADADUM - Eröffnung von Beethoven’s 5. Sinfonie in C Moll
ENTERTAINER - Scott Joplin’s Ragtime Klassiker
PRELUDE -J.S.Bach’s 48 Preludien und Fugen
RINGTONE - ein Klingelton
BOOGYWOODY - ein Boogie-Woogie Blues
BIRTHDAY - “Happy Birthday to You...”
WEDDING - der Chorus des Bräutigams aus Wagner’s Oper “Lohengrin”
PUNCHLINE - a lustiger Tonclip, nachdem ein Witz gemacht wurde
JUMP_UP - für Spiele, um auf eine Aufwärtsbewegung hinzuweisen
JUMP_DOWN - für Spiele, um auf eine Abwärtsbewegung hinzuweisen
POWER_UP - ein Fanfarenklang
POWER_DOWN - ein trauriger Fanfarenklang, wenn etwas verloren gegangen ist