TigerJython4Kids
HomeTurtlegrafikRobotikDatenbanken
anhang

ANHANG : SOUNDCLIPS

 

 

MUSTERBEISPIELE

 

Um den Soundclip der Datei frog.wav abzuspielen, verwendet man das Modul soundsystem, das hier dokumentiert ist. Die Datei frog.wav, die im Beispiel abgespielt wird, muss sich im gleichen Verzeichnis, wie die Programmdatei. Lade die Datei frog.zip herunter, packe sie aus und speichere die Datei frog.wav im Programmverzeichnis.

from soundsystem import *
openSoundPlayer("frog.wav")
play()
► In Zwischenablage kopieren

Die Daten einer Sounddatei können wie jede andere binäre Datei in einer Tabelle gespeichert werden. Dazu liest man die Datei mit getBytes() in einen Bytebuffer ein und fügt diesen mit insert() in die Tabelle. Nachher wird die Tabelle mit save() in der Datenbank gespeichert.

from dbtable import *
frogSound = getBytes("frog.wav")
animals = DbTable('name', 'sound') 
animals.insert("frog", frogSound)
animals.save("animalsound.db")
► In Zwischenablage kopieren

Mit restore() liest man die Daten aus der Datenbank aus und erhält dabei einen Bytebuffer. Diesen kann man mit storeBytes() wieder in eine Datei schreiben und hat damit die Originaldatei bitgenau wieder hergestellt.

from dbtable import *
animals = DbTable()
animals.restore('animalsound.db')
resultSet = animals.select(name = "frog")
storeBytes(resultSet[0][1], "myfrog.wav")
► In Zwischenablage kopieren

Das Verfahren funktioniert genau gleich für jede beliebige Datei, also auch für jedes andere Audioformat, z.B. MP3.

In der Datenbank gespeicherte WAV-Dateien (nur solche) kann man aber auch direkt abspielen, ohne sie wieder in eine Datei zu schreiben:

from dbtable import *
from soundsystem import *
animals = DbTable()
animals.restore('animalsound.db')
resultSet = animals.select(name = "frog")
openSoundPlayer(resultSet[0][1])
play()
► In Zwischenablage kopieren

In der Datenbank tigerjython.db der Distribution von TigerJython befindet sich die Tabelle birdsounds mit den Namen und Zwitschertönen einiger Singvögel. Die Clips können wie folgt nacheinander ausgeschrieben und abgespielt werden:

from dbtable import *
from soundsystem import *
import time
birdsounds = DbTable()
birdsounds.restoreFromTJ("tigerjython.db")
for bird in birdsounds:
    print(bird.name)
    openSoundPlayer(bird.sound)
    blockingPlay()
    time.sleep(3)
► In Zwischenablage kopieren

 

 

5-1
Fachliche Hinweise:

In den meisten Datenbanken kann man ein Feld besonders als Schlüssel auszeichnen und damit verhindern, dass zwei Datensätzen denselben Schlüsselwert haben. Zudem wir meistens der Schlüsselwert beim Einfügen neuer Datensätze automisch erzeugt.