EINFÜHRUNG |
Um ein Soundsignal im Computer zu verarbeiten, muss es zuerst digitalisiert werden. Dazu tastet man es in äquidistanten Zeitschritten ab und wandelt den Wert des Signals mit einem Analog-Digital-Wandler in jedem Abtastzeitpunkt in eine Zahl um. Aus dem Soundsignal ergibt sich danach eine Zahlenfolge, die im Computer gespeichert und verarbeitet werden kann. Unter der Abtastfrequenz (oder Abtastrate) versteht man die Anzahl Abtastwerte pro Sekunde. Sie ist für das WAV Audioformat standardisiert und kann folgende Werte annehmen: 8000, 11025, 16000, 22050 and 44100 Hertz. Je höher die Abtastfrequenz, je genauer kann nach einer Digital-Analog-Wandlung der Sound wiederhergestellt werden. Für die Qualität ist ebenfalls der Wertebereich der Abtastwerte wichtig. In der TigerJython Soundbibliothek werden die Werte immer als Integer-Zahlen im 16-bit Bereich (-32768 und 32767) in einer Liste abgespeichert. Wir müssen unterscheiden, ob es sich um einen monauralen oder binauralen Sound handelt. Je nach dem, werden ein oder zwei Kanäle verwenden. Bei zwei Kanälen (Stereo) sind die Werte für den linken und rechte Kanal als aufeinanderfolgende Zahlen abgespeichert. In diesem Kapitel benötigst du einen Computer mit einer Soundkarte und der Möglichkeit, Sound über einen Lautsprecher oder einen Kopfhörer anzuhören und mit einem Mikrofon aufzunehmen. |
SOUND ANHÖREN |
Beschaffe dir einen lustigen Soundclip im WAV Format von kurzer Dauer (ungefähr 2 bis 5 Sekunden lang). Du findest solche auf dem Internet. Kopiere die Sounddatei unter dem Namen mysound.wav ins gleiche Verzeichnis, in dem sich dein Programm befindet. Zuerst importierst du alle Funktionen der Soundbibliothek. Nun kopierst du die Soundsamples in die Liste samples und schreibst die Information der Sounddatei in das Konsolenfenster, denn du benötigst die Abtastrate. In hier gezeigten Beispiel beträgt ihr Wert 22050 Hz. Mit openMonoPlayer hast du die Möglichkeit den Sound abzuspielen. Übergibst du eine falsche Abtastrate, so wird der Sound mit anderer Geschwindigkeit und daher mit anderen Frequenzen abgespielt. from soundsystem import * samples = getWavMono("mysound.wav") print(getWavInfo("mysound.wav")) openMonoPlayer(samples, 22050) play() |
MEMO |
Die Funktion getWavMono() liefert die Soundsamples in einer Python Liste. Jeder Wert ist ein Integer im Bereich -32768 und 32767. Mit openMonoPlayer() wird ein Soundplayer zur Verfügung gestellt, um den Sound mit play() abzuspielen. Da Listen nur eine bestimmte maximale Grösse haben dürfen, die von der Speicherfähigkeit deines Computer abhängt, können nur relativ kurze Soundclips mit getWavMono() eingelesen werden. |
SOUNDKURVE |
from soundsystem import * samples = getWavMono("mysound.wav") print(getWavInfo("mysound.wav")) openMonoPlayer(samples, 44100) play() from gpanel import * makeGPanel(0, len(samples), -33000, 33000) for i in range(len(samples)): draw(i, samples[i]) |
MEMO |
Wir müssen das Koordinatensystem des GPanels günstig wählen. In der x-Richtung liegen die Werte zwischen 0 und der Anzahl der Abtastwerte, die gleich der Länge der Samples-Liste ist. In der y-Richtung liegen die Werte zwischen -32768 und 32767. Darum verwenden wird einen Bereich von +-33000. |
ES GEHT NOCH EINFACHER |
Falls du eine Sounddatei nur abspielen willst, so benötigst du nur drei Zeilen Code. Damit kannst du sogar auch lange Sounds, z.B. deine Lieblingssongs abspielen. from soundsystem import * openSoundPlayer("myfavoritesong.wav") play() |
MEMO |
Du kannst auch einige Soundclips verwenden, die sich in der Distribution von TigerJython befinden. Dazu wählst du einen der folgenden Dateinamen:
(Die Liste wird laufend ergänzt. Falls sich in deinem eigenen Unterverzeichnis wav eine Sounddatei mit gleichem Namen befindet, wird diese verwendet.) Der SoundPlayer kennt wie ein professioneller Musik-Player viele Steuerungsbefehle. Man kann beispielsweise den Song mit pause() anhalten und mit play() an derselben Stelle weiterspielen lassen. Die Dauer des Sounds ist bei diesen Funktionen nicht begrenzt, da der Sound nur in kleinen Paketen eingelesen und abgespielt wird (Streaming Player).
|
AUFGABEN |
|