Buchempfehlung
Windows System Programming
Windows System Programming
Das Kompendium liefert viele interessante Informationen zur Windows-Programmierung auf Englisch. [Mehr Infos...]
FreeBASIC-Chat
Es sind Benutzer im FreeBASIC-Chat online.
(Stand:  )
FreeBASIC bei Twitter
Twitter FreeBASIC-Nachrichten jetzt auch über Twitter erhalten. Follow us!

Code-Beispiel

Code-Beispiele » Multimedia

MID, WAV und MP3 Audiodateien abspielen

Lizenz:Erster Autor:Letzte Bearbeitung:
k. A.MitgliedEternal_Pain 13.06.2007

Quelle:fb@rchive
Autor:Volta

Das Programm spielt MID, WAV und MP3 Audiodateien ab.
Es ist so kompakt, das es in dein Programm direkt einkopiert oder
als #Include eingebaut werden kann.
Es lässt dem Anwender alle Freiheiten seine Audiodateien einfach im Programmablauf
zu starten, stoppen, wiederholen oder abzubrechen.
Warnung: Das Programm hat keine Fehlerabfrrage, bei Fehlaufrufen kann es
abstürzen oder sich aufhängen.
Aufrufe:

öffnen eines Audiofiles zum Abspielen:
FB_MCI_open (AudioFILENAME als String, AliasName als String)
Mit dem AliasName wird der Aufruf sehr einfach.
zuerst Audiofile öffnen und AliasName vergeben zB.: FB_MCI_open "Musik.mid", "Volta"
dann FB_MCI "play","volta" und nicht vergessen FB_MCI "close","Volta" zum Schluss.

Sartet die Wiedergabe des Audiofiles
FB_MCI ("play"["on"]["an"],AliasName als String)

Beendet das Abspielen des Audiofiles
FB_MCI ("close"["off"]["aus"],AliasName als String)

Stopt das Abspielen des Audiofiles
FB_MCI ("Stop",AliasName als String)
nach einem Startbefehl wird vom Anfang an abgespielt

Spieldauer des Audiofiles abfragen (Rückgabewert in Millisekunden)
x = FB_MCI ("length"["len"],AliasName als String)

aktuelle Abspielposition abfragen (Rückgabewert in Millisekunden)
x = FB_MCI ("position"["pos"],AliasName als String)

Einige Beispiele zeigen wie man Hintergrundmusik und gleichzeitig akustische Effekte
erzielen kann.

Viel Spass damit wünscht euch Volta.

#include once "windows.bi"
#include once "win/mmsystem.bi"

'[ FREEBASE[IC] AUDIO WRAPPER BY EINLANDER]
'Freebasic specific audio wrapper for the windows mmsystem
'Die Orginalversion von EINLANDER ist leider im Internet nicht mehr zu finden?
'(fixed for FB 0.15b by Volta)

Function FB_MCI(ByVal FB_MCICOMMAND As String, ByVal f_Alias As String) As Integer
    Dim temp As String *256
    f_Alias = UCase(f_Alias)
    Select Case LCase(Trim(FB_MCICOMMAND))
      Case "play","on","an"
          mciSendString("play " & f_Alias &" from " & 0, NULL, 0, 0)
      Case "close","off","aus"
          mciSendString("close " & f_Alias, NULL, 0, 0)
      Case "stop"
          mciSendString("stop " & f_Alias, NULL, 0, 0)
      Case "length","len"
          mciSendString("status " & f_Alias & " length", temp, 256,0)
          FB_MCI = Val(temp)
      Case "position","pos"
          mciSendString("status " & f_Alias & " position", temp, 256, 0)
          FB_MCI = Val(temp)
    End Select
End Function

Function FB_MCI_open(ByVal FILENAME As String, ByVal  f_Alias As String) As Integer
    f_Alias = UCase(f_Alias)
    FB_MCI ("close",f_Alias)
    FB_MCI_open = mciSendString("open " & Chr(34) & FILENAME & Chr(34) & " alias " & f_Alias, NULL, 0, 0)
    mciSendString ("set " & f_Alias & " time format milliseconds", NULL, 0, 0)
End Function


'Einige Beispiele zeigen wie man Hintergrundmusik und gleichzeitig
'akustische Effekte erzielen kann.


Dim Hintergrundmusik as string
Dim Effekt1 as string
Dim Effekt2 as string

Hintergrundmusik = "music.mp3" 'Hier den Dateinamen der Hintergrundmusik angeben
Effekt1 = "effekt1.mp3"           'hier den Dateinamen fuer Effekt1 angeben
Effekt2 = "effekt2.wav"           'hier den Dateinamen fuer Effekt2 angeben

Dim t As Integer
FB_MCI_open Hintergrundmusik, "Volta"
t = FB_MCI ("LEN","volta")
FB_MCI "an","volta"
Print "abspielen (" & t\1000 & " sek)"
Sleep 4000

Print "ein paar Effekte dazu"
FB_MCI_open Effekt1, "HiVolta"
FB_MCI_open Effekt2, "Voltage"
For i as integer= 1 To 7
  FB_MCI "an","HiVolta"
  Sleep (FB_MCI ("LEN","HiVolta"))+500
  Sleep 1000
  FB_MCI "an","Voltage"
  Sleep (FB_MCI ("LEN","Voltage"))+500
Next
FB_MCI "aus","HiVolta"
FB_MCI "aus","Voltage"
Sleep 1000

Print "stop ";
FB_MCI "stop","Volta"
Print "3 "; : Sleep 1000
Print "2 "; : Sleep 1000
Print "1" : Sleep 1000
Print "an als Endlosschleife (Tastedruck bricht hier ab)"

FB_MCI "an","volta"
Do
If FB_MCI ("pos","volta")> t-10 Then FB_MCI "an","volta"
Sleep 99
Loop While InKey = ""
FB_MCI "aus","Volta"
End

Zusätzliche Informationen und Funktionen
  • Das Code-Beispiel wurde am 13.06.2007 von MitgliedEternal_Pain angelegt.
  • Die aktuellste Version wurde am 13.06.2007 von MitgliedEternal_Pain gespeichert.
  Bearbeiten Bearbeiten  

  Versionen Versionen