winzip icon

Wave Class - Easily read and write RIFF PCM WAVE format.

Submitted on: 2/16/2015 3:59:00 AM
By: Nick Williams (from psc cd)  
Level: Intermediate
User Rating: By 9 Users
Compatibility: VB 6.0
Views: 5258
     The purpose of this code is to provide an easy drop-in solution to reading and writing RIFF WAVE file formats. The clsWave class requires no external dependencies, and provides only the necessary functions for retrieving WAVE data, extended wave information, and writing WAVE files I had looked at several examples on Planet Source Code to do this, but many had flaws in them (one actually looped to find a fixed-position value in the header), were inefficient, or did not conform well to my own uses. As a result, I've spent the evening writing this class. It can read and write small wave files (~ 50K) within a millisecond or two on any modern computer. My main objective in writing this class was reusability, and I believe I have achieved that quite well. You simply open a file, retrieve the bytes directly in a byte array. To write a wave, you must only set the properties of the class and feed it a byte array (or, optionally specify the header parameters and leave the current instance's headed untouched). I have written this class to be about as efficient and quick as it can be, however if anyone notices something that can be improved (aside from the plotting - this was not the goal, only to demonstrate the class), please leave me a note. Currently only supports a static PCM format (44 byte header). Thanks to Robert's comment, I've learned there is alot more to the header than I assumed. The submission will be updated within a week or thereabouts to add support for all PCM variations - but I do not plan to handle things such as MP3 and other such formats, only PCM.


Windows API/Global Declarations:

Can't Copy and Paste this?
Click here for a copy-and-paste friendly version of this code!
'Windows API/Global Declarations for :Wave Class - Easily read and write RIFF PCM WAVE format.
SysAllocStringByteLen and RtlMoveMemory - used for quickly allocating a string to read data into from file.
winzip iconDownload code

Note: Due to the size or complexity of this submission, the author has submitted it as a .zip file to shorten your download time. Afterdownloading it, you will need a program like Winzip to decompress it.Virus note:All files are scanned once-a-day by Planet Source Code for viruses, but new viruses come out every day, so no prevention program can catch 100% of them. For your own safety, please:
  1. Re-scan downloaded files using your personal virus checker before using it.
  2. NEVER, EVER run compiled files (.exe's, .ocx's, .dll's etc.)--only run source code.
  3. Scan the source code with Minnow's Project Scanner

If you don't have a virus scanner, you can get one at many places on the net

Report Bad Submission
Use this form to tell us if this entry should be deleted (i.e contains no code, is a virus, etc.).
This submission should be removed because:

Your Vote

What do you think of this code (in the Intermediate category)?
(The code with your highest vote will win this month's coding contest!)
Excellent  Good  Average  Below Average  Poor (See voting log ...)

Other User Comments

 There are no comments on this submission.

Add Your Feedback
Your feedback will be posted below and an email sent to the author. Please remember that the author was kind enough to share this with you, so any criticisms must be stated politely, or they will be deleted. (For feedback not related to this particular code, please click here instead.)

To post feedback, first please login.