Sounds mit Python ausgeben

Das ALSA Soundsystem ist der Standardmanager für Linuxbasierte Audioverarbeitung. ALSA kann in der GUI oder an der Kommandozeile gleichsam verwendet werden.

Für das ALSA-Soundsystem kann das vorinstallierte Python-Modul pygame herangezogen werden. Leider unterstützt es nur die eingebaute Soundkarte. Um einen USB-Soundadapter mit Python anzusprechen, kann man Linux-Befehle für den SoX-Player oder arecord aufrufen. Über den Lunk am Ende der Seite kann man auch eine kleine Python-Klasse DoSound herunterladen, die einem sogenannten Wrapper für die Systemkommandos bildet.Damit kann die Soundkarte softwaremässig ausgewählt werden.

Das folgende Beispiel zeigt, wie das Abspielen einer Sounddatei von Python aus erfolgt:

#!/usr/bin/env python

import time
from dosound import DoSound

# Device mit ID 1 verwenden  (USB audio adapter)
player = DoSound(1)       
player.play("/home/pi/humptataa.mp3", 0.5) # volume = 0.5
print "isPlaying:", player.isPlaying()
print "stop"
player.stopPlaying()
print "isPlaying:", player.isPlaying()

Oft werden nur bestimmte Signaltöne benötigt, wozu die internen Soundkarte ausreicht. Die Klasse DoSound verwendet playTone(), um einen Ton mit der vorgegebener Frequenz und Dauer abzuspielen. Im folgenden Beispiel werden erst drei Töne nacheinander und dann alle zusammen abgespielt.

#!/usr/bin/env python

from dosound import DoSound
import time

dev = 0  # interner Soundadapter
DoSound.playTone(440, 0.3, dev)
DoSound.playTone(550, 0.3, dev)
DoSound.playTone(660, 0.3, dev)
time.sleep(1)
DoSound.playTone([440, 550, 660], 3, dev)
DoSound.stopPlaying()