HomeTurtlegraficsGPanelRobotics WebTigerPython
 Python - Online
sound
Deutsch   English   

5. SOUND

 

 

YOU LEARN HERE...

 

how you can use the built-in speaker to play sounds, tone sequences and short melodies. Under additional material you can see how you can even connect headphones or speakers to the micro:bit to get better sound quality.

 

 

SPEAKER (BUZZER)

 

A speaker is built into the back of the micro:bit V2. You can use it to play individual tones and short melodies.

The commands for the buzzer are in the music module. You must also import this.

 

 

EXAMPLES

 

Play a tone sequence
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:


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)
► Copy to clipboard

 

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.

Programm:

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)
► Copy to clipboard

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.

Programm:

from music import *

melody = ['e:4', 'f#', 'g#', 'r:2', 'e', 'f#', 'g:4']
play(melody)
► Copy to clipboard

 

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.

Programm:

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)
► Copy to clipboard

 

 

REMEMBER YOU...

 

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.

 

 

TO SOLVE BY YOURSELF

 

 

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.

 

 

 

ZUSATZSTOFF

 

SOUNDANLAGE AUFBAUEN

 

Du kannst am micro:bit auch Kopfhörer oder einen grösseren Lautsprecher anschliessen Dazu brauchst du zwei 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. Jetzt kannst du alle vorhergehende Beispiele mit deinem Soundsystem testen.

 
 

 

 

MERKE DIR...

 

Den Kopfhörer musst du an die Ausgänge, die mit GND und P0 bezeichnet sind, anschliessen.



   
5-1
Technical notes

 

Ton Frequency Ton Frequency    

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
Technical notes

Melody, at modul music:

ADADADUM - Eröffnung von Beethoven 5. Sinfonie in C Moll
ENTERTAINER - Scott Joplin Ragtime Klassiker
PRELUDE -J.S.Bach 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 Oper "Lohengrin"
FUNERAL - der "Trauerzug", Chopin Klaviersonate
PUNCHLINE - a lustiger Tonclip, nachdem ein Witz gemacht wurde
PYTHON - aus "Monty Python 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