Public Declare Function mciGetErrorString Lib "winmm.dll" Alias "mciGetErrorStringA" (ByVal dwError As Long, ByVal lpstrBuffer As String, ByVal uLength As Long) As Long
Public Declare Function GetShortPathName Lib "kernel32" Alias "GetShortPathNameA" (ByVal lpszLongPath As String, ByVal lpszShortPath As String, ByVal cchBuffer As Long) As Long
Public Declare Function mciSendString Lib "winmm.dll" Alias "mciSendStringA" (ByVal lpstrCommand As String, ByVal lpstrReturnString As String, ByVal uReturnLength As Long, ByVal hwndCallback As Long) As Long
Public Declare Function SendMessage Lib "user32" Alias "SendMessageA" (ByVal hwnd As Long, ByVal wMsg As Long, ByVal wParam As Long, lParam As Any) As Long
Public Declare Function ReleaseCapture Lib "user32" () As Long
Public Declare Function SetWindowPos Lib "user32" (ByVal hwnd As Long, ByVal hWndInsertAfter As Long, ByVal x As Long, ByVal y As Long, ByVal cx As Long, ByVal cy As Long, ByVal wFlags As Long) As Long
Public Const SWP_NOMOVE = &H2
Public Const SWP_NOSIZE = &H1
Public Const HWND_TOPMOST = -1
Public Const HWND_NOTOPMOST = -2
Public TheFileName As String
Public Function IsItPlaying() As Boolean
Static yn As String * 30
mciSendString "status MP3Play mode", yn, Len(yn), 0
IsPlaying = (Mid$(yn, 1, 7) = "playing")
End Function
Public Function mp3Play(FileName As String)
Dim cmdToDo As String * 255
Dim dwReturn As Long
Dim ret As String * 128
Dim tmp As String * 255
Dim lenShort As Long
Dim ShortPathAndFie As String
If Dir(FileName) = "" Then
mmOpen = "Error with input file"
Exit Function
End If
lenShort = GetShortPathName(FileName, tmp, 255)
ShortPathAndFie = Left$(tmp, lenShort)
glo_hWnd = hwnd
cmdToDo = "open " & ShortPathAndFie & " type MPEGVideo Alias MP3Play"
dwReturn = mciSendString(cmdToDo, 0&, 0&, 0&)
If dwReturn <> 0 Then 'not success
mciGetErrorString dwReturn, ret, 128
mmOpen = ret
MsgBox ret, vbCritical
Exit Function
End If
mmOpen = "Success"
mciSendString "play MP3Play", 0, 0, 0
End Function
Public Function mp3Pause()
mciSendString "pause MP3Play", 0, 0, 0
End Function
Public Function mp3Stop() As String
mciSendString "stop MP3Play", 0, 0, 0
mciSendString "close MP3Play", 0, 0, 0
End Function
Public Function PositionInSec()
Static PIS As String * 30
mciSendString "set MP3Play time format milliseconds", 0, 0, 0
mciSendString "status MP3Play position", PIS, Len(PIS), 0
PositionInSec = Round(Mid$(PIS, 1, Len(PIS)) / 1000)
End Function
Public Function Position()
Static P As String * 30
mciSendString "set MP3Play time format milliseconds", 0, 0, 0
mciSendString "status MP3Play position", P, Len(P), 0
sec = Round(Mid$(P, 1, Len(P)) / 1000)
If sec < 60 Then Position = "0:" & Format(sec, "00")
If sec > 59 Then
mins = Int(sec / 60)
sec = sec - (mins * 60)
Position = Format(mins, "00") & ":" & Format(sec, "00")
End If
End Function
Public Function LengthInSec()
Static L As String * 30
mciSendString "set MP3Play time format milliseconds", 0, 0, 0
mciSendString "status MP3Play length", L, Len(s), 0
LengthInSec = Round(Val(Mid$(L, 1, Len(L))) / 1000) 'Round(CInt(Mid$(s, 1, Len(s))) / 1000)
End Function
Public Function Length()
Static L As String * 30
mciSendString "set MP3Play time format milliseconds", 0, 0, 0
mciSendString "status MP3Play length", L, Len(L), 0
sec = Round(Val(Mid$(L, 1, Len(L))) / 1000) 'Round(CInt(Mid$(l, 1, Len(l))) / 1000)
If sec < 60 Then Length = "0:" & Format(sec, "00")
If sec > 59 Then
mins = Int(sec / 60)
sec = sec - (mins * 60)
Length = Format(mins, "00") & ":" & Format(sec, "00")
End If
End Function
Public Function SeekTo(Second)
mciSendString "set MP3Play time format milliseconds", 0, 0, 0
If IsItPlaying = True Then mciSendString "play MP3Play from " & Second, 0, 0, 0
If IsItPlaying = False Then mciSendString "seek MP3Play to " & Second, 0, 0, 0
End Function
VBBrowser v2.2.1
The above will play an MP3 file, without the WMP control.
This class module will help you get the tag information.
To use it you go like this:
Code:
Dim mp3 As New clsID3
Private Sub Command1_Click()
mp3.Filename = "Yourfile.mp3"
MsgBox mp3.Artist
MsgBox mp3.Title
MsgBox mp3.Album
MsgBox mp3.Comment
MsgBox mp3.Genre
MsgBox mp3.Year
End Sub
VBBrowser v2.2.1
could this be used so that audio files could be played one after the other?
is there a way to track down positions/marks so that I could program code to play an mp3 file, then automaticly know when that file is finished so that it can start to play another mp3 file (and so on)..
also I am guessing I do not need any speciall ocx or dll to use this code. Just the ussuall stuff in any Windows (95/98/Me) plus VB runtime files of cource.
hmmm.... it seems to play ALL Mp3 files and .wav and EVEN .wma files !!!!! how??
All in the tiny code that is used above????
I mean.. I have a feeling that the code is relying on some other external file/coder that is doing the business.
if so... do I need to worry about this? would what ever its relying on be all there on the end users computer without me worrying about what extra files to include in my packaged setup??
basicly... would audio files played using the above code work on ANY windows based system (win95/98/Me) With just the VB runtime files of coure.
MidgetsBro's code is using the MCI (multimedia control interface) API calls.
I suppose there is a chance that you'd need to distribute the latest version of the
winmm.dll file with your app but that's just a normal windows file, not a third-party ocx.
YOU may need to download the latest version of MediaPlayer to get the file, I don't know,
I'm not sure where it comes from. You could try distributing your app to a new computer and
see if it works...
I imagine it should work with 98 and definitely with ME but that's just my feeling.
could you please check your version, also which OS your running it on?
if anyone else could also do that..
I am gussing that if I install it on older (i.e. Win98) then the older winmm.dll would be upgraded to the new winmm.dll and that would be upgraded. without any compatiblilty problems..
could you please check your version, also which OS your running it on?
if anyone else could also do that..
I am gussing that if I install it on older (i.e. Win98) then the older winmm.dll would be upgraded to the new winmm.dll and that would be upgraded. without any compatiblilty problems..
could you please check your version, also which OS your running it on?
if anyone else could also do that..
I am gussing that if I install it on older (i.e. Win98) then the older winmm.dll would be upgraded to the new winmm.dll and that would be upgraded. without any compatiblilty problems..
could you please check your version, also which OS your running it on?
if anyone else could also do that..
I am gussing that if I install it on older (i.e. Win98) then the older winmm.dll would be upgraded to the new winmm.dll and that would be upgraded. without any compatiblilty problems..
could you please check your version, also which OS your running it on?
if anyone else could also do that..
I am gussing that if I install it on older (i.e. Win98) then the older winmm.dll would be upgraded to the new winmm.dll and that would be upgraded. without any compatiblilty problems..
Do a search on http://msdn.microsoft.com for winmm.dll and one of the results takes you to their DLL help section which will then list the versions shipped for the different Windows versions.
I am currently running Win98 SE, and its version of the
file is 4.03.1998, which I got by going to its file
properties and clicking on the version tab.
MidgetBro,
How could I get the length of an mp3 while another mp3 is playing??
From your code above, in order to get the length of file, it has to be playing.
And what I want to do is allow the user to add another song to a playlist which includes listing the added file's length and to do all this while the current song is playing.