Results 1 to 10 of 10

Thread: MP3s

  1. #1

    Thread Starter
    Member
    Join Date
    Oct 2000
    Posts
    34
    Does anyone know how to play MP3s in a VB app (without using third-party controls/DLLs)?

    Thanks,
    Rippin

  2. #2
    PowerPoster MidgetsBro's Avatar
    Join Date
    Oct 2000
    Location
    Apparently, Internet.com
    Posts
    3,125

    I've got some code, but...

    I have code to do this, but it's at home. I am at school right now so I can't get it for u. When I get home, 3:00 PST, I will post it, unless someone else posts it before me.
    <removed by admin>

  3. #3
    Guest
    Here is basically everything you need:

    Code:
    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
        IsItPlaying = (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 mp3Unpause()
        mciSendString "resume 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

  4. #4

    Thread Starter
    Member
    Join Date
    Oct 2000
    Posts
    34
    A million thank you's Matthew Gates, it works just great!!!

    Rippin

  5. #5
    PowerPoster MidgetsBro's Avatar
    Join Date
    Oct 2000
    Location
    Apparently, Internet.com
    Posts
    3,125
    That is the same exact code i was going to post. Maybe I got it from Matthew. Oh well. Thanks for posting Matthew.
    <removed by admin>

  6. #6
    Guest
    Originally posted by MidgetsBro
    That is the same exact code i was going to post. Maybe I got it from Matthew. Oh well. Thanks for posting Matthew.
    Sorry for posting it MidgetsBro, but I figured rippin wanted it NOW and didn't want to wait .

  7. #7
    PowerPoster MidgetsBro's Avatar
    Join Date
    Oct 2000
    Location
    Apparently, Internet.com
    Posts
    3,125
    You don't have to apologize Matthew. I knew someone would post before I got home, but I was just letting rippin know that if no one else posted, I would. I admire your skill with vb. I really don't mind it that much.
    <removed by admin>

  8. #8
    Fanatic Member
    Join Date
    Jun 1999
    Location
    California, USA
    Posts
    662
    I would like to decode the mp3 so i can draw a waveform of it in vb. Is there a way to do this?

  9. #9
    Guest
    Do you mean convert mp3towav?

    Code:
    'code from Megatron
    
    Private Declare Function mciSendString Lib "winmm.dll" Alias "mciSendStringA" (ByVal lpstrCommand As String, ByVal lpstrReturnString As Any, ByVal uReturnLength As Long, ByVal hwndCallback As Long) As Long
                                           
    Private Sub cmdRecord_Click()
    
        'Open a WaveAudio called Record
        mciSendString "open new type waveaudio Alias record", 0&, 0, 0
        'Start Recording
        mciSendString "record record", 0&, 0, 0
        'Play your MP3 Here.
    
    End Sub
    
    Private Sub cmdSave_Click()
    
        'Stops recording
        mciSendString "stop record", 0&, 0, 0
        'Saves the sound
        mciSendString "save record C:\Windows\Desktop\MyWav.wav", 0&, 0, 0
        'Close "Record"
        mciSendString "close record", 0&, 0, 0
                                           
    End Sub

  10. #10
    Fanatic Member
    Join Date
    Jun 1999
    Location
    California, USA
    Posts
    662
    i want to manually decode the mp3, get the actual audio data, and draw it to the screen using pset

Posting Permissions

  • You may not post new threads
  • You may not post replies
  • You may not post attachments
  • You may not edit your posts
  •  



Click Here to Expand Forum to Full Width