Results 1 to 19 of 19

Thread: WAV Player with Simulated Real-Time Sine Wave Display

  1. #1

    Thread Starter
    PowerPoster
    Join Date
    Jan 2008
    Posts
    11,074

    WAV Player with Simulated Real-Time Sine Wave Display

    Plays .wav files and displays the sine wave. The sine wave appears to be created in real time but it is not. The sound is captured first in a buffer then converted to it's sine wave. A Picturebox holds the graphics of the sine wave while a 2nd Picture which sits on top of the this Picturebox moves horizontally across the graphical Picturebox thus revealing the sine wave as though it was being displayed in real time
    Attached Images Attached Images  
    Attached Files Attached Files
    Last edited by jmsrickland; Jun 23rd, 2013 at 10:52 PM.


    Anything I post is an example only and is not intended to be the only solution, the total solution nor the final solution to your request nor do I claim that it is. If you find it useful then it is entirely up to you to make whatever changes necessary you feel are adequate for your purposes.

  2. #2
    PowerPoster Nightwalker83's Avatar
    Join Date
    Dec 2001
    Location
    Adelaide, Australia
    Posts
    13,344

    Re: WAV Player with Simulated Real-Time Sine Wave Display

    I am getting the "Object does not support this property or method" error.

    vb Code:
    1. nbrDivisions = frmMain.Picture.ScaleWidth / sngLength

    I have put the main form code in subs with a module.
    when you quote a post could you please do it via the "Reply With Quote" button or if it multiple post click the "''+" button then "Reply With Quote" button.
    If this thread is finished with please mark it "Resolved" by selecting "Mark thread resolved" from the "Thread tools" drop-down menu.
    https://get.cryptobrowser.site/30/4111672

  3. #3

    Thread Starter
    PowerPoster
    Join Date
    Jan 2008
    Posts
    11,074

    Re: WAV Player with Simulated Real-Time Sine Wave Display

    That should be

    nbrDivisions = Picture1.ScaleWidth / sngLength

    There is no frmMain either


    Anything I post is an example only and is not intended to be the only solution, the total solution nor the final solution to your request nor do I claim that it is. If you find it useful then it is entirely up to you to make whatever changes necessary you feel are adequate for your purposes.

  4. #4
    PowerPoster Nightwalker83's Avatar
    Join Date
    Dec 2001
    Location
    Adelaide, Australia
    Posts
    13,344

    Re: WAV Player with Simulated Real-Time Sine Wave Display

    Quote Originally Posted by jmsrickland View Post
    That should be

    nbrDivisions = Picture1.ScaleWidth / sngLength

    There is no frmMain either

    yes, I know! You miss understood what I said

    I have put the main form code in subs with a module.
    So if this form code is now located inside a module (changed the form_load etc to subs called from my form). How does that change the above code?
    when you quote a post could you please do it via the "Reply With Quote" button or if it multiple post click the "''+" button then "Reply With Quote" button.
    If this thread is finished with please mark it "Resolved" by selecting "Mark thread resolved" from the "Thread tools" drop-down menu.
    https://get.cryptobrowser.site/30/4111672

  5. #5

    Thread Starter
    PowerPoster
    Join Date
    Jan 2008
    Posts
    11,074

    Re: WAV Player with Simulated Real-Time Sine Wave Display

    So if this form code is now located inside a module (changed the form_load etc to subs called from my form). How does that change the above code?


    Only if you changed something that no longer exists like if you use frmMain.Picture and there is no picturebox on frmMain called Picture you will get the error. Other than that I don't have any idea why you get that particular error.


    Anything I post is an example only and is not intended to be the only solution, the total solution nor the final solution to your request nor do I claim that it is. If you find it useful then it is entirely up to you to make whatever changes necessary you feel are adequate for your purposes.

  6. #6
    PowerPoster Nightwalker83's Avatar
    Join Date
    Dec 2001
    Location
    Adelaide, Australia
    Posts
    13,344

    Re: WAV Player with Simulated Real-Time Sine Wave Display

    Damn, I had a demo working the way I wanted but I forgot to save the project before VB quit on me. Which part of the code is responsible for displaying the graph on the picture box because while I can load the sound into the array and play it back the picture box remains blank. I am using your project as a demo until I can get this sorted out.

    Edit:

    Never mind! I solve the problem which was this line

    vb Code:
    1. frmPlayer.Picture2.Move L, Picture2.Top, W, Picture2.Height

    I left the form name off the top and height. It is suppose to be

    vb Code:
    1. frmPlayer.Picture2.Move L, frmPlayer.Picture2.Top, W, frmPlayer.Picture2.Height
    Last edited by Nightwalker83; Jun 25th, 2013 at 10:39 PM. Reason: Adding more!
    when you quote a post could you please do it via the "Reply With Quote" button or if it multiple post click the "''+" button then "Reply With Quote" button.
    If this thread is finished with please mark it "Resolved" by selecting "Mark thread resolved" from the "Thread tools" drop-down menu.
    https://get.cryptobrowser.site/30/4111672

  7. #7
    PowerPoster Nightwalker83's Avatar
    Join Date
    Dec 2001
    Location
    Adelaide, Australia
    Posts
    13,344

    Re: WAV Player with Simulated Real-Time Sine Wave Display

    Here are the improvements I made to your original code.

    Module
    vb Code:
    1. Option Explicit
    2.  
    3. Private Type udtWaveFormatEx
    4.   FormatTag As Integer
    5.   Channels As Integer
    6.   SamplesPerSec As Long
    7.   AvgBytesPerSec As Long
    8.   BlockAlign As Integer
    9.   BitsPerSample As Integer
    10.   ExtraDataSize As Integer
    11. End Type
    12.  
    13. Private Type udtWaveHdr
    14.   lpData As Long
    15.   dwBufferLength As Long
    16.   dwBytesRecorded As Long
    17.   dwUser As Long
    18.   dwFlags As Long
    19.   dwLoops As Long
    20.   lpNext As Long
    21.   reserved As Long
    22. End Type
    23.  
    24. Private WaveOut As udtWaveHdr ' Used for playing
    25.  
    26. Private Type udtWaveCaps
    27.   ManufacturerID As Integer
    28.   ProductID As Integer
    29.   DriverVersion As Long
    30.   ProductName(1 To 32) As Byte
    31.   Formats As Long
    32.   Channels As Integer
    33.   reserved As Integer
    34. End Type
    35.  
    36. Private Const WAVE_FORMAT_PCM = 1
    37. Private Const WHDR_DONE = &H1&          'done bit
    38. Private Const WHDR_PREPARED = &H2&      'set if this header has been prepared
    39. Private Const WHDR_BEGINLOOP = &H4&     'loop start block
    40. Private Const WHDR_ENDLOOP = &H8&       'loop end block
    41. Private Const WHDR_INQUEUE = &H10&      'reserved for driver
    42.  
    43. Private Declare Sub CopyMemory Lib "kernel32.dll" Alias "RtlMoveMemory" (ByRef Destination As Any, ByRef Source As Any, ByVal Length As Long)
    44.  
    45. Private WavSound() As Byte
    46. Public UsingWavSound() As Byte
    47. Private WavSoundRecord() As Byte
    48. Private InputDataValue() As Integer ' array to store wave data
    49.  
    50. Private c_Ptr As Long
    51. Private k_Ptr As Long
    52.  
    53. Private WaveFormat As udtWaveFormatEx
    54.  
    55. Public WaveOutDevice As Long
    56. Public WaveOutHandle As Long
    57.  
    58. Public Pic2Left As Single
    59. Public Pic2Width As Single
    60.  
    61. Private XMin, XMax As Long          ' Xmin and Xmax for display of graph
    62. Private YMin, YMax As Integer       ' values for display of graph
    63. Private DataMax As Long             ' Total number of integer data in wave file
    64.  
    65. Dim DataLength As Long
    66. Dim WaitTillDone As Boolean
    67. Dim ArrayFirstChunk As Boolean
    68. Dim k As Single
    69. Dim BarSpeed As Single 'Long
    70. Dim sngLength As Single
    71. Dim nbrDivisions As Single
    72. Dim PlayTime As Single
    73. Dim StartTime As Single
    74. Dim StopTime As Single
    75. Dim i As Long
    76. '========================================================================================================================
    77. ' BELOW CODE IF FOR READING IN A FILE INTO AN ARRAY AND PLAYING IT BACK FROM AN ARRAY
    78. '========================================================================================================================
    79. Public Sub WaveIntoArray()
    80.  Dim WaveFormat As udtWaveFormatEx
    81.  Dim lngReturn As Long
    82.  Dim n As Long
    83.  Dim nn As Long
    84.  
    85. frmPlayer.picCover1.Visible = True
    86.  
    87.  frmPlayer.cmdPlayFromLoadedArray.Enabled = False
    88.  
    89.  Open App.Path & "\test1.wav" For Binary As #1
    90.  
    91.  ReDim WavSound(LOF(1) - 1)
    92.  
    93.  Get #1, , WavSound
    94.  
    95.  Close #1
    96.      
    97.  'Load Wave Format with info from file
    98.  c_Ptr = 20
    99.  WaveFormat.FormatTag = ReadInteger
    100.  
    101.  c_Ptr = 22
    102.  WaveFormat.Channels = ReadInteger
    103.  
    104.  c_Ptr = 24
    105.  WaveFormat.SamplesPerSec = ReadLong
    106.  
    107.  c_Ptr = 34
    108.  WaveFormat.BitsPerSample = ReadInteger
    109.  
    110.  c_Ptr = 32
    111.  WaveFormat.BlockAlign = ReadInteger
    112.  
    113.  c_Ptr = 28
    114.  WaveFormat.AvgBytesPerSec = ReadLong
    115.  
    116.  WaveFormat.ExtraDataSize = 0
    117.    
    118.  lngReturn = waveOutOpen(WaveOutHandle, WaveOutDevice, VarPtr(WaveFormat), 0, 0, 0)
    119.  
    120.  'Start at offset 44 - Position where actual sound data begins
    121.  c_Ptr = 44
    122.  
    123.  ReDim UsingWavSound(UBound(WavSound) - c_Ptr)
    124.  
    125.  'Copy sound data into another array buffer
    126.  For n = 44 To UBound(WavSound)
    127.    nn = n - 44
    128.    UsingWavSound(nn) = ReadByte
    129.  Next n
    130.  ' Get the progressbar movement data and the playing time
    131.  sngLength = UBound(UsingWavSound) - 1
    132.  nbrDivisions = frmPlayer.Picture1.ScaleWidth / sngLength
    133.  
    134.  DataMax = UBound(UsingWavSound) / 2
    135.  
    136.  ' Draw the sine wave graph
    137.  DisplayGraph1
    138.  
    139.  frmPlayer.cmdPlayFromLoadedArray.Enabled = True
    140. End Sub
    141. Public Sub PlayFromLoadedArray()
    142.  Dim lngReturn As Long
    143.    
    144.  WaveOut.lpData = VarPtr(UsingWavSound(0))
    145.  WaveOut.dwBufferLength = UBound(UsingWavSound())
    146.  WaveOut.dwLoops = 1
    147.  WaveOut.dwFlags = WaveOut.dwFlags Or WHDR_BEGINLOOP
    148.  WaveOut.dwFlags = WaveOut.dwFlags Or WHDR_ENDLOOP
    149.        
    150.  lngReturn = waveOutPrepareHeader(WaveOutHandle, VarPtr(WaveOut), Len(WaveOut))
    151.        
    152.  If lngReturn = 0 Then
    153.    WaveOutTime.wType = TIME_BYTES
    154.    
    155.    frmPlayer.picCover1.Visible = False
    156.    frmPlayer.cmdLoadWaveIntoArray.Enabled = False
    157.    
    158.    frmPlayer.Timer1.Enabled = True
    159.    
    160.    ' Start playing the sound
    161.    lngReturn = waveOutWrite(WaveOutHandle, VarPtr(WaveOut), Len(WaveOut))
    162.  Else
    163.    MsgBox GetMMError(lngReturn)
    164.  End If
    165. End Sub
    166. Public Sub sinewaveDisplay()
    167. 'Timer1 used to control the progress bar across the sine wave display
    168.  Dim lngResult As Long
    169.  Dim sngPosition As Single
    170.  Dim L As Single, W As Single
    171.  
    172.  lngResult = waveOutGetPosition(WaveOutHandle, VarPtr(WaveOutTime), Len(WaveOutTime))
    173.  
    174.  If lngResult = 0 Then
    175.    sngPosition = WaveOutTime.u * nbrDivisions
    176.    
    177.    ' Get incremental amount to move progress bar
    178.    L = Pic2Left + sngPosition
    179.    W = Pic2Width - sngPosition
    180.      
    181.    On Error Resume Next
    182.    frmPlayer.Picture2.Move L, frmPlayer.Picture2.Top, W, frmPlayer.Picture2.Height
    183.    
    184.    If WaveOutTime.u >= sngLength Then
    185.      ' If end of scale then reset some properties
    186.      frmPlayer.Timer1.Enabled = False
    187.      frmPlayer.cmdPlayFromLoadedArray.Enabled = False
    188.      frmPlayer.cmdLoadWaveIntoArray.Enabled = True
    189.      frmPlayer.picCover1.Visible = True
    190.      frmPlayer.Picture1.Cls
    191.      frmPlayer.Picture2.Left = Pic2Left
    192.      frmPlayer.Picture2.Width = Pic2Width
    193.      CloseWaveOut
    194.    End If
    195.  Else
    196.    ' Let's hope it doesn't come here
    197.    frmPlayer.Timer1.Enabled = False
    198.    CloseWaveOut
    199.    MsgBox GetMMError(lngResult)
    200.  End If
    201. End Sub
    202. Public Sub CloseWaveOut()
    203.  Dim lngReturn As Long
    204.    
    205.  lngReturn = waveOutReset(WaveOutHandle)
    206.  lngReturn = waveOutUnprepareHeader(WaveOutHandle, VarPtr(WaveOut), Len(WaveOut))
    207.  lngReturn = waveOutClose(WaveOutHandle)
    208. End Sub
    209. '========================================================================================================================
    210. ' Below code are helper functions
    211. '========================================================================================================================
    212. Private Function ReadString(nbrBytes As Long) As String
    213.  '
    214.  ' Read a String (variable number of bytes) Value
    215.  ReDim aBuff(0 To nbrBytes - 1)
    216.  
    217.  CopyMemory aBuff(0), WavSound(c_Ptr), nbrBytes
    218.  ReadString = StrConv(aBuff, vbUnicode)
    219.  c_Ptr = c_Ptr + nbrBytes
    220. End Function
    221. Private Function ReadInteger() As Integer
    222.  '
    223.  ' Read an Integer (2 byte) Value
    224.  '
    225.  CopyMemory ReadInteger, WavSound(c_Ptr), 2&
    226.  c_Ptr = c_Ptr + 2
    227. End Function
    228. Private Function ReadLong() As Long
    229.  '
    230.  ' Read a Long (4 byte) Value
    231.  '
    232.  CopyMemory ReadLong, WavSound(c_Ptr), 4&
    233.  c_Ptr = c_Ptr + 4
    234. End Function
    235. Private Sub ReadVariable(ByVal nbrBytes As Long)
    236.  '
    237.  ' Read one or more bytes
    238.  '
    239.  ReDim aBuff(0 To nbrBytes - 1)
    240.    
    241.  CopyMemory aBuff(0), WavSound(c_Ptr), nbrBytes
    242.  c_Ptr = c_Ptr + nbrBytes
    243. End Sub
    244. Private Function ReadByte() As Byte
    245.  '
    246.  ' Read one byte
    247.  '
    248.  ReadByte = WavSound(c_Ptr)
    249.  c_Ptr = c_Ptr + 1
    250. End Function
    251. '=====================================================================================================================
    252. Private Sub DisplayGraph1()
    253.  YMin = 32767
    254.  YMax = -32768
    255.  XMin = 0
    256.  XMax = DataMax
    257.  
    258.  frmPlayer.Picture1.Scale (XMin, YMin)-(XMax, YMax) ' Set up a user defined scale mode
    259.  
    260.  c_Ptr = 44
    261.  
    262.  For i = XMin To XMax - 2
    263.    frmPlayer.Picture1.PSet (i, ReadInteger)         ' maps the wave data to picture box
    264.  Next i
    265.  
    266.  frmPlayer.Picture1.ScaleMode = vbPixels
    267. End Sub
    268. Private Function ReadInt() As Integer
    269.  '
    270.  ' Read an Integer (2 byte) Value
    271.  '
    272.  CopyMemory ReadInt, WavSoundRecord(k_Ptr), 2&
    273.  k_Ptr = k_Ptr + 2
    274. End Function

    frmPlayer
    vb Code:
    1. Option Explicit
    2. Private Sub cmdLoadWaveIntoArray_Click()
    3.  WaveIntoArray
    4. End Sub
    5.  
    6. Private Sub cmdPlayFromLoadedArray_Click()
    7.  PlayFromLoadedArray
    8. End Sub
    9.  
    10. Private Sub Form_Load()
    11.  cmdPlayFromLoadedArray.Enabled = False
    12.  
    13.  picCover1.Visible = True
    14.  
    15.  Picture2.BackColor = vbBlack
    16.  Picture2.Line (1, 0)-(1, Picture2.ScaleHeight), vbWhite
    17.  
    18.  Pic2Left = Picture2.Left
    19.  Pic2Width = Picture2.Width
    20. End Sub
    21. Private Sub Form_Unload(Cancel As Integer)
    22.  CloseWaveOut
    23. End Sub
    24.  
    25. Private Sub Timer1_Timer()
    26.  sinewaveDisplay
    27. End Sub
    Last edited by Nightwalker83; Jun 26th, 2013 at 09:16 PM.
    when you quote a post could you please do it via the "Reply With Quote" button or if it multiple post click the "''+" button then "Reply With Quote" button.
    If this thread is finished with please mark it "Resolved" by selecting "Mark thread resolved" from the "Thread tools" drop-down menu.
    https://get.cryptobrowser.site/30/4111672

  8. #8

    Thread Starter
    PowerPoster
    Join Date
    Jan 2008
    Posts
    11,074

    Re: WAV Player with Simulated Real-Time Sine Wave Display

    I put the project here for public use. Anyone can do whatever they want to it as that is what it is for.

    An improvement would be to show the sine wave as the sound is being made in real time. I see that you simply moved the Subs around.
    Last edited by jmsrickland; Jun 27th, 2013 at 03:44 PM.


    Anything I post is an example only and is not intended to be the only solution, the total solution nor the final solution to your request nor do I claim that it is. If you find it useful then it is entirely up to you to make whatever changes necessary you feel are adequate for your purposes.

  9. #9
    PowerPoster Nightwalker83's Avatar
    Join Date
    Dec 2001
    Location
    Adelaide, Australia
    Posts
    13,344

    Re: WAV Player with Simulated Real-Time Sine Wave Display

    Any ideas how I can implement the code above in my mp3 player project? As you probably know my project uses a class to replace the functions of WMP instead of using Windows Media Player itself. My mp3 player uses MarkT's code here to play the file rather than putting it in an array. Given that how do I modify your code so the Sine Wave works in that case?

    Edit:

    Quote Originally Posted by jmsrickland View Post
    An improvement would be to show the sine wave as the sound is being made in real time. I see that you simply moved the Subs around.
    That is true! Although, fixed up some of the code to work correctly with Option Explicit.
    Last edited by Nightwalker83; Jun 27th, 2013 at 07:41 PM. Reason: Adding more!
    when you quote a post could you please do it via the "Reply With Quote" button or if it multiple post click the "''+" button then "Reply With Quote" button.
    If this thread is finished with please mark it "Resolved" by selecting "Mark thread resolved" from the "Thread tools" drop-down menu.
    https://get.cryptobrowser.site/30/4111672

  10. #10

    Thread Starter
    PowerPoster
    Join Date
    Jan 2008
    Posts
    11,074

    Re: WAV Player with Simulated Real-Time Sine Wave Display

    OK then


    Anything I post is an example only and is not intended to be the only solution, the total solution nor the final solution to your request nor do I claim that it is. If you find it useful then it is entirely up to you to make whatever changes necessary you feel are adequate for your purposes.

  11. #11
    PowerPoster Nightwalker83's Avatar
    Join Date
    Dec 2001
    Location
    Adelaide, Australia
    Posts
    13,344

    Re: WAV Player with Simulated Real-Time Sine Wave Display

    Quote Originally Posted by jmsrickland View Post
    OK then
    Sorry, I was updating my previous post when you replied. I have added more to it.
    when you quote a post could you please do it via the "Reply With Quote" button or if it multiple post click the "''+" button then "Reply With Quote" button.
    If this thread is finished with please mark it "Resolved" by selecting "Mark thread resolved" from the "Thread tools" drop-down menu.
    https://get.cryptobrowser.site/30/4111672

  12. #12
    Frenzied Member
    Join Date
    Apr 2012
    Posts
    1,253

    Re: WAV Player with Simulated Real-Time Sine Wave Display

    Guys, take a look at vbRichClient5.dll available from vbrichclient.com

    There are a number of classes in that dll related to these kinds of task, although I have not used them. For example cAudioCaptureClient, cAudioClient, cAudioMeterInformation, cAudioRenderClient, cAudioStreamVolume. The methods exposed by these classes appear to do everything you could want to do with audio.

    As with many of the classes in this dll, there are very little code examples to get you up-and-running but I know the author pretty well and I may be able to persuade him to knock-up a demo project if you're interested?

    As a side note, this dll is very powerful and allows VB6 to do all kinds of hitherto difficult tasks as well as providing Win7 theming to VB Classic. Well worth a look...
    If you don't know where you're going, any road will take you there...

    My VB6 love-children: Vee-Hive and Vee-Launcher

  13. #13

    Thread Starter
    PowerPoster
    Join Date
    Jan 2008
    Posts
    11,074

    Re: WAV Player with Simulated Real-Time Sine Wave Display

    Well they may be everything you say they are but if no source code is available I don't think I would be interested but thanks anyway


    Anything I post is an example only and is not intended to be the only solution, the total solution nor the final solution to your request nor do I claim that it is. If you find it useful then it is entirely up to you to make whatever changes necessary you feel are adequate for your purposes.

  14. #14
    Frenzied Member
    Join Date
    Apr 2012
    Posts
    1,253

    Re: WAV Player with Simulated Real-Time Sine Wave Display

    The source code for all widgets is available at GitHub but the source for the dll itself has not been 'opened up' as yet. Do you have the source for winmm.dll, then? ;-)
    If you don't know where you're going, any road will take you there...

    My VB6 love-children: Vee-Hive and Vee-Launcher

  15. #15

    Thread Starter
    PowerPoster
    Join Date
    Jan 2008
    Posts
    11,074

    Re: WAV Player with Simulated Real-Time Sine Wave Display

    No, I do not have source for winmm.dll


    Anything I post is an example only and is not intended to be the only solution, the total solution nor the final solution to your request nor do I claim that it is. If you find it useful then it is entirely up to you to make whatever changes necessary you feel are adequate for your purposes.

  16. #16
    PowerPoster Nightwalker83's Avatar
    Join Date
    Dec 2001
    Location
    Adelaide, Australia
    Posts
    13,344

    Re: WAV Player with Simulated Real-Time Sine Wave Display

    @ColinE66,

    The point of the codebank is to allow the thread starter to try out their creativity or share code they have found. I am sure if jmsrickland knew about vbRichClient5.dll he would have posted about that rather than expressing his creativity.

    @jmsrickland,

    Any help with post #9?
    when you quote a post could you please do it via the "Reply With Quote" button or if it multiple post click the "''+" button then "Reply With Quote" button.
    If this thread is finished with please mark it "Resolved" by selecting "Mark thread resolved" from the "Thread tools" drop-down menu.
    https://get.cryptobrowser.site/30/4111672

  17. #17
    Frenzied Member
    Join Date
    Apr 2012
    Posts
    1,253

    Re: WAV Player with Simulated Real-Time Sine Wave Display

    tbh, nightwalker, I didn't post in relation to jms's code. Rather, it was for your benefit in relation to the project that you mentioned. But thanks for the lecture...
    If you don't know where you're going, any road will take you there...

    My VB6 love-children: Vee-Hive and Vee-Launcher

  18. #18
    PowerPoster Nightwalker83's Avatar
    Join Date
    Dec 2001
    Location
    Adelaide, Australia
    Posts
    13,344

    Re: WAV Player with Simulated Real-Time Sine Wave Display

    Quote Originally Posted by ColinE66 View Post
    tbh, nightwalker, I didn't post in relation to jms's code. Rather, it was for your benefit in relation to the project that you mentioned. But thanks for the lecture...
    Ah ok! I have posted the project in its own code bank thread.
    when you quote a post could you please do it via the "Reply With Quote" button or if it multiple post click the "''+" button then "Reply With Quote" button.
    If this thread is finished with please mark it "Resolved" by selecting "Mark thread resolved" from the "Thread tools" drop-down menu.
    https://get.cryptobrowser.site/30/4111672

  19. #19
    Frenzied Member
    Join Date
    Apr 2012
    Posts
    1,253

    Re: WAV Player with Simulated Real-Time Sine Wave Display

    All good :-)
    If you don't know where you're going, any road will take you there...

    My VB6 love-children: Vee-Hive and Vee-Launcher

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