FreeBasic: Sound
Sounds in FreeBASIC
BearbeitenEs ist in FreeBASIC nicht vorgesehen, Sounds abzuspielen. Daher müssen wir uns einiger Zusatzbibliotheken bedienen. Da viele dieser nicht integrierten Bibliotheken kompliziert zu handhaben sind, habe ich eine eigene geschrieben (basiert auf Sebastian Steiners fbsound-Beispiel), mit der man sich einfach einen kleinen CMD-Player programmieren kann. Mein kleines Projekt habe ich TiSound genannt; es darf auch für kommerzielle Programme benutzt werden. Sie finden es hier.
Edit: Funktioniert (manchmal) nicht! Wer will kann den Quellcode modifizieren und eine bessere Version zur Verfügung stellen.
TiSound
BearbeitenSämtliche Befehle haben das Präfix "Ti", um sie besser von den selbstgeschriebenen Routinen unterscheiden zu können. Der erste Befehl lautet:
TiOpenSample(Datei AS STRING, Handle AS STRING) AS INTEGER
Mit diesem Befehl laden Sie ein neues Soundfile. Mögliche Typen sind: MID, MIDI, RMI, WAV, CDA, AIF, AIFC, AIFF, AU, MP3, SND und WMA. Der erste Parameter ist der Dateiname (gegebenenfalls mit Pfad) und der zweite ist ein Handle für den Sound, mit dem man die Datei immer wieder identifizieren kann. Der Rückgabewert eintspricht -1 wenn das Laden geglückt ist und 0 wenn ein Fehler aufgetreten ist.
Der Sound ist zwar nun geladen, muss aber noch abgespielt werden. Dies übernimmt
TiPlaySample(Handle AS STRING) AS INTEGER
Der Funktion muss nur der Handle der Datei übergeben werden. Der Rückgabewert ist wie bei TiOpenSample.
Zum Stoppen der Ausgabe müssen Sie die Funktion
TiStopSample(Handle AS STRING) AS INTEGER
aufrufen. Der Parameter und der Rückgabewert entsprechen der vorherigen Funktion.
Zuletzt gibt es noch
TiCloseSample(Handle AS STRING) AS INTEGER
Ich denke diese Funktion erklärt sich von selbst.
Mit diesen vier Befehlen können wir schon eine Sounddatei abspielen:
#include "TiSound.bi"
DIM strSoundFile AS STRING
LINE INPUT "Bitte geben Sie die Datei an: ", strSoundFile
PRINT "Die Datei wird geladen."
TiOpenSample(strSoundFile, "Test")
PRINT "Die Datei wird abgespielt."
TiPlaySample("Test")
PRINT "Drücken Sie eine Taste, um die Wiedergabe zu beenden."
SLEEP
TiStopSample("Test")
TiCloseSample("Test")
PRINT "Programm beendet."
In diesem einfachen Beispiel wurde auf die Fehlerbehandlung verzichtet.
Weitere Befehle finden Sie in der "Dokumentation.txt" im TiSound-Engine-Archiv.