TigerJython4Kids
HomeTurtlegrafikRobotikDatenbanken
sound

5. SOUND

 

 

DU LERNST HIER...

 

wie man an den micro:bit einen Kopfhörer oder Lautsprecher anschliesst, um Töne, Tonfolgen und kurze Melodien abzuspielen.

 

 

SOUNDANLAGE AUFBAUEN

 

Um mit dem micro:bit Sounds abzuspielen, brauchst du einen Kopfhörer und 2 Kabel mit Krokodilklemmen. Mit dem ersten Kabel (hier gelb) verbindest du den Pin GND mit dem hinteren Teil des Kopfhörersteckers. Mit dem zweiten Kabel (hier rot) verbindest du den Pin0 mit dem vorderen Teil des Kopfhörersteckers. Damit du den Sound in den beiden Hörmuscheln hörst, muss du versuchen, die Krokodilklemme so zu plazieren, dass sie die beiden vorderen Teile des Steckers berührt.

 
 

 

 

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:

from music import *

song = [262, 294, 330, 349, 392, 392, 392, 0, 440, 440, 440, 440, 392]
for f in song: 
   pitch(f, 500)
Programmcode markieren (Ctrl+C kopieren, Ctrl+V einfügen)

 

Eingebaute Melodien abspielen
Einige Melodien sind bereits eingebaut. Ihre Namen findest du hier oder in der Dokumentation. Du kannst das Abspielen der Melodien mit der Verwendung der Buttons kombinieren. Wenn du den Button A  drückst, wird die Melodie JUMP_UP abgespielt, beim Drücken des Buttons B die Melodie JUMP_DOWN.

from microbit import *
from music import *

while True:
    if button_a.was_pressed():
        play(JUMP_UP)
    if button_b.was_pressed():
        play(JUMP_DOWN)
    sleep(10)
Programmcode markieren (Ctrl+C kopieren, Ctrl+V einfügen)

Was passiert, wenn du beide Button miteinander gedrückt hältst?

 

Melodien in musikalischer Notation abspielen

Die Notation hält sich an folgende Regeln:

  • Die zwölf Halbtöne einer Oktave haben  mit Kreuz geschrieben die Bezeichnungen C, C#, D, D#, E, F, F#, G, G#, A, A#, H  (auch mit Kleinbuchstaben). Für die Pause verwendet man die Note "R"
  • Will man die Oktave wechseln, so schreibt man eine Oktavezahl hinter die Note, also C2 für die zweite Oktave (zu Beginn ist man in der 4. Oktave). Diese Oktave gilt dann für alle folgenden Noten, bis wieder eine Oktavezahl angegeben wird
  • Hinter der Note kann ein Doppelpunkt mit einer Angabe der Dauer (in Ticks) stehen. Alle folgenden Noten werden dann mit dieser Dauer abgespielt, bis wieder eine neue Angabe der Dauer folgt.

Um eine Melodie zu komponieren, schreibst du die Noten in eine Liste, beispielsweise im folgenden Programm für einen Dur-  und nachfolgenden Moll-Akkord.

from music import *

melody = ['e:4', 'f#', 'g#', 'r:2', 'e', 'f#', 'g:4']
play(melody)
Programmcode markieren (Ctrl+C kopieren, Ctrl+V einfügen)

 

Ein akustisches Lagemessgerät
Messgeräte mit akustischen Ausgaben sind sehr beliebt. Du erzeugst hier ein Tonsignal, dessen Höhe von der Seitwärtsneigung des micro:bit abhängt. Ausgehend von einer Anfangsfrequenz f0 = 1000, berechnest du die steigenden bzw. fallenden Tonfrequenzen für Halbtöne der wohltemperierten Stimmung und spielst jeden Ton 100 Millisekunden lang ab.

Mit dem Button B kannst du das Tonsignal ausschalten.

from music import *
from microbit 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)
Programmcode markieren (Ctrl+C kopieren, Ctrl+V einfügen)

 

 

MERKE DIR...

 

Den Kopfhörer musst du an die Ausgänge, die mit GND und P0 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.

 

 

ZUM SELBST LÖSEN

 

 

1.
a)

Schreibe ein Programm, welches die folgende Tonfolge  abspielt:

song = [262, 294, 330, 262, 262, 294, 330, 262, 330, 349, 392, 330, 349, 392]

Du kannst selbstverständlich auch eigene Tonfolgen komponieren.

b)

Du möchtest die Abspielgeschwindigkeit interaktiv ändern:
- Wenn du den Button A klickst, soll der Song doppelt so schnell abgespielt werden
- Wenn du den Button B klickst, erfolgt das Abspielen langsamer.

Beachte, dass im Befehl pitch(f, time) der Parameter time eine ganze Zahl sein muss.


2.

Du kannst eine Melodie wiederholt abspielen lassen, indem du play() mit zusätzlichen Parametern verwendest, beispielsweise für die Melodie BIRTHDAY

play(BIRTHDAY, wait = False, loop = True)

Wegen wait = False, erfolgt das Abspielen im Hintergrund und das Programm läuft weiter.

Schreibe ein Programm, dass das Geburtstagslied solange endlos abspielt, bis man den Button A klickt. (Anmerkung: Du kannst eine Soundausgabe mit dem Befehl stop() beenden.)

3.

Schreibe die folgende Melodie in der musikalischen Notation und spiele sie ab.

5-1
Fachliche Hinweise:

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

5-2
Fachliche Hinweise:

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
n 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

5-3
Fachliche Hinweise:

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 =

5-4
Fachliche Hinweise:

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).