Click here to Skip to main content
65,938 articles
CodeProject is changing. Read more.
Articles
(untagged)

MMWaveEditX - Advanced Wave File Editor Control

0.00/5 (No votes)
20 Aug 2001 1  
A control for editing wave files which uses peak values for visual display

Sample Image

Introduction

I have loads of ActiveX controls laying around that I have written.  Some seem somewhat useful, others are wasted drive space.  I came across this one the other day and decided somebody out there might be able to use it.

Audio programming is somewhat of a black art, it took me a while to figure out that "Peak" files are used by waveform editing software to visualize the waveform.

What are peak files? Well essentially you comb through a wave file and take snapshots of averages at different intervals.

The benefit is obvious, by using a peak file we can visualize a .wav file using a much smaller dataset than the 'pcm' data contained in it.

Here is an example: a .wav file whose size is 41.6 megabytes can be visualized with peak data totaling just under 333k. That is how we are able to do really fast zooms and selections on what is in reality a huge amount of data.

I tested my peak file algorithms against SoundForge ( a well known audio editor) and they come pretty close to matching the speed at which
a peak file can be built.

This control is not finished, has bugs, and in general should be used as a starting point for creating your own editor (or just as a learning tool). I do not have time to fully document (or partially) the code, so you will have to dig through it to figure it out (sorry).  I wrote this code more than a year ago and just by looking at it I can see numerous places for optimization.

The control itself contains all the visualization/wave file parsing/peak creation routines.  I included a dialog based app to show how you can use it.

Being a black art it is notoriously hard to find out how the sound coding wizards do the things they do, hopefully my little control will help you in some way.

You are free to use the code as you wish, just drop me an email if you use it in something interesting, extended its usefulness, hate me for not documenting it, love me for giving it away, just want to say "hey!".

License

This article has no explicit license attached to it but may contain usage terms in the article text or the download files themselves. If in doubt please contact the author via the discussion board below.

A list of licenses authors might use can be found here