HomeTurtlegrafikGPanelRobotik WebTigerPython |
Python - Online |
DU LERNST HIER... |
wie du mit dem Calliope Töne, Tonfolgen und kurze Melodien abzuspielen kannst. |
MUSTERBEISPIELE |
Eine Tonfolge abspielen Mit dem Befehl pitch(f, 500) wird ein Ton mit der Frequenz f während 500 Millisekunden abgespielt. Um mehrere Töne nacheinander abzuspielen, gibst du die zugehörigen Frequenzen in einer Liste an und durchläufst diese mit einer for-Schleife. Eine Tabelle mit Tönen und ihren Frequenzen findest du im Overlay-Fenster: Ein Ton mit der Frequenz 0 ist gleichbedeutend mit einer Pause. Programm: from music import * song = [262, 294, 330, 349, 392, 392, 392, 0, 440, 440, 440, 440, 392] for f in song: pitch(f, 500)
Eingebaute Melodien abspielen Programm: from calliope_mini import * from music import * while True: if button_a.was_pressed(): play(JUMP_UP) if button_b.was_pressed(): play(JUMP_DOWN) sleep(10) Was passiert, wenn du die beiden Button miteinander gedrückt hältst?
Ein akustisches Lagemessgerät Mit dem Button B kannst du das Tonsignal ausschalten. Programm: from music import * from calliope_mini import * def beep(n): freq = int(f0 * r**n) pitch(int(r**n * f0), 100) sleep(50) f0 = 1000 r = 2**(1/12) while not button_b.was_pressed(): n = int(accelerometer.get_x() / 100) beep(n) sleep(10)
Mikrofon
Programm: from calliope_mini import * from cpmike import * print("starting") while True: if isClicked(level = 20, rearm_time = 800): display.show(Image.DIAMOND) sleep(500) display.clear()
Kopfhörer oder Lautsprecher anschliessen
Um den Sound über den Pin1 auszugeben, musst du das Modul calliope_mini importieren und in der Funktion pitch() oder play() den Parameter pin auf pin1 setzen.
Programm: from music import * from calliope_mini import * print("starting") play(ENTERTAINER, pin = pin1) |
MERKE DIR... |
Den Kopfhörer musst du an die Ausgänge, die mit GND und P1 bezeichnet sind, anschliessen. Einen Ton mit der Frequenz f spielst du mit dem Befehl pitch(f, time) ab. Mit play(song) kannst du ganze Melodien, entweder als Tonfolge oder in musikalischer Notation abspielen. Das eingebaute Mikrofon detektiert die Umgebungsgeräusche. |
ZUM SELBST LÖSEN |
|
ZUSATZSTOFF |
Melodien in musikalischer Notation abspielen Die Notation hält sich an folgende Regeln:
Um eine Melodie zu komponieren, schreibst du die Noten in eine Liste, beispielsweise im folgenden Programm für einen Dur- und nachfolgenden Moll-Akkord. Programm: from music import * melody = ['e:4', 'f#', 'g#', 'r:2', 'e', 'f#', 'g:4'] play(melody)
Der Morsecode wird zur Übermittlung von Nachrichten verwendet. Buchstaben, Satzzeichen und Zahlen sind als kurzes Signal, langes Signal und Pause codiert. Mit dem eingebauten Lautsprecher kannst du sehr einfach Morse-Nachrichten erzeugen. Es ist zweckmässig, den Code in einem Python-Dictionary abzulegen. Programm: from calliope_mini import * from music import * dt = 100 # adapt to your speed morse = { 'a':'.-' , 'b':'-...' , 'c':'-.-.' , 'd':'-..' , 'e':'.' , 'f':'..-.' , 'g':'--.' , 'h':'....' , 'i':'..' , 'j':'.---' , 'k':'-.-' , 'l':'.-..' , 'm':'--' , 'n':'-.' , 'o':'---' , 'p':'.--.' , 'q':'--.-' , 'r':'.-.' , 's':'...' , 't':'-' , 'u':'..-' , 'v':'...-' , 'w':'.--' , 'x':'-..-' , 'y':'-.--' , 'z':'--..' , '1':'.----', '2':'..---', '3':'...--', '4':'....-', '5':'.....', '6':'-....', '7':'--...', '8':'---..', '9':'----.', '0':'-----', '-':'-....-', '?':'..--..', ',':'--..--', ':':'---...', '=':'-...-'} def dot(): pitch(1000, dt) sleep(dt) def dash(): pitch(1000, 3 * dt) sleep(dt) def transmit(text): for c in text: if c == " ": sleep(4 * dt) else: c = c.lower() if c in morse: k = morse[c] for x in k: if x == '.': dot() else: dash() sleep(2 * dt) transmit("komme morgen abend") |
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:
ADADADUM - 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
ODE - "Ode an Joy" Thema aus Beethoven's 9. Sinfonie in D Moll
NYAN - das Nyan Cat Thema
RINGTONE - ein Klingelton
FUNK - ein Geräusch für Geheimagente
BLUES - ein Boogie-Woogie Blues
BIRTHDAY - "Happy Birthday to You..."
WEDDING - der Chorus des Bräutigams aus Wagner's Oper "Lohengrin"
FUNERAL - der "Trauerzug", Chopin's Klaviersonate
PUNCHLINE - a lustiger Tonclip, nachdem ein Witz gemacht wurde
PYTHON - aus "Monty Python's Flying Circus"
BADDY - Filmclip aus "The Baddy"
CHASE - Filmclick aus einer Jagdszene
BA_DING - ein Signalton, der darauf hinweist, dass etwas geschehen ist
WAWAWAWAA - ein trauriger Posaunenklang
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
Da bei der wohltemperierten Stimmung die Oktave (Verdoppelung der Frequenz) in 12 Halbtöne mit gleichem Frequenzverhältnis r eingeteilt wird, gilt r12 = 2, also
r = |
Statt einen Kopfhörer kann man auch einen billigen, verstärkerbetriebenen Lautsprecher (z.B. eine "Hamburgerbox") verwenden (aber nicht direkt einen Lautsprecher ohne Verstärker).