In case of broken links or downloads, read the whole page products, chances are that you will find a supercede version of the software that you are looking with a different project name, as an example the MP3 OCX is now project rsppmp3 at


RSP MP3 Player DLL 1.0.1 Build 2003

(Sun Aug 30 11:43:40 2009)

Win32 dLL to play MP3 , MP2 , MP1 , MPEG-2.0 , MPEG-2.5 and wav PCM media files ( soon all other formats )

What is new


(Sun Aug 30 11:46:38 2009) More elaborated sample, minor modifications , now the temporary folder created in the system temp folder is RSP_Software

(12/03/2009) Added a new mp3 decoder engine , Madlib , some people say that it is better than the mpeglib , minor bugs fixed

(16/02/2009) Added more multiplayer support , now no limits in the number of instances

(07/05/2008): Windows Vista compliant , freeverb wave effect . minor bugs fixed

(Sat Mar 04 08:21:46 2006): Fixed bug when handling damaged id3v2 tags, in this case a damaged file can crash the control , fixed also some other minor bugs

(Wed Sep 28 10:56:45 2005): Added ability to play streaming files , now the control can play and save files directly from the Internet , added ability to play encrypted mp3 files , the encryptor is included in the form 15 , several other minor modifications , despite the modifications the control is fully compatible with older versions , then no modification required in order to use this new release

(Wed Aug 10 17:20:51 2005) : Added two surround like effects , fixed some minor bugs

(25/Mar/2005 17:22): Fixed a minor problem in the smartbuffer method

(22/Mar/2005 17:11) : A problem related to the MP3 and OGG Vorbis controls was reported regarding problems in generating a multiplayer in Win98

If the wave out cannot be used by multiples players at the same time , then the controls will be unable to generate a multiplayer

Installing the latest version of DirectX may solve the problem , but if your soundcard cannot mix the streams in hardware then no known solution will solve the problem ( at this moment )

This is a limitation of the operating system and not a problem in the controls

A solution would be to create a mixer that will receive the wave streams , mix it and send to a unique instance of the wave out , we will try to add it to a future release , anyway , this is not a priority

(18/Mar/2005 18:20): The new fast normalization mode is an improvement over the original Replaygain algorithm , it is an optimization to don't waste time scanning for information that will not change , due to this improvement the new mode can get the Replaygain level in a fraction of a second , while the normal mode may requires a few seconds to finish even in a fast machine , due to this improvement now you can enable the volume normalization on any file without any noticeable delay on the playback , and the value generated in fast mode is close enough to the original mode that no difference in the playback level can be perceived

This is a list of files used during the development of the new release of this control and the multiplication factor generated by the original mode and new fast mode:

Slow            Fast

0.446684 - 0.459727
0.459727 - 0.449262
0.462381 - 0.469354
0.464515 - 0.465050
0.473696 - 0.470977
0.474242 - 0.491473
0.476980 - 0.476431
0.481948 - 0.505243
0.493742 - 0.509918
0.496592 - 0.589522
0.500035 - 0.537032
0.508160 - 0.555265
0.509331 - 0.507575
0.512271 - 0.552078
0.512271 - 0.570821
0.512861 - 0.485289
0.513452 - 0.464515
0.513452 - 0.517607
0.516416 - 0.582103
0.519398 - 0.564937
0.520595 - 0.572796
0.521795 - 0.518800
0.526017 - 0.540132
0.528445 - 0.548277
0.531496 - 0.526623
0.533335 - 0.529054
0.538270 - 0.517607
0.540754 - 0.540754
0.541377 - 0.527837
0.542625 - 0.511093
0.543876 - 0.485848
0.549541 - 0.570164
0.550174 - 0.581434
0.553988 - 0.577431
0.556545 - 0.541377
0.557186 - 0.580096
0.558470 - 0.540754
0.558470 - 0.540754
0.559114 - 0.616595
0.561048 - 0.588844
0.561048 - 0.623017
0.563638 - 0.537032
0.564287 - 0.567545
0.567545 - 0.507575
0.568853 - 0.592243
0.572137 - 0.585464
0.572796 - 0.576103
0.572796 - 0.580765
0.574117 - 0.636063
0.582774 - 0.612350
0.584117 - 0.565588
0.588166 - 0.630957
0.591562 - 0.607435
0.592243 - 0.624453
0.593608 - 0.628058
0.595662 - 0.563638
0.599101 - 0.633140
0.599101 - 0.638999
0.599791 - 0.576767
0.602560 - 0.651628
0.604644 - 0.642688
0.607435 - 0.603949
0.607435 - 0.611646
0.610239 - 0.691831
0.611646 - 0.598412
0.613056 - 0.592925
0.614469 - 0.600482
0.623735 - 0.667575
0.627336 - 0.684700
0.629506 - 0.631684
0.634600 - 0.631684
0.635331 - 0.615177
0.641210 - 0.671429
0.641948 - 0.654636
0.642688 - 0.689446
0.648635 - 0.648635
0.649382 - 0.653883
0.649382 - 0.693426
0.656901 - 0.636796
0.657658 - 0.647888
0.668344 - 0.697429
0.684700 - 0.647888
0.725271 - 0.729458
0.728618 - 0.789769
0.741310 - 0.744732

(18/Mar/2005 18:20): Modified the report of the playback position , now it is as accurate as 100 milliseconds , it was modified by user request , modified the smart buffer method , indeed most portions was completely redesigned , added also support to enlarging and shrinking files (this mean files that have their size modified during playback ,like adding or removing id3 tags or downloading a file from internet while playing ) , notice that it is supported in both smart buffer mode and old buffer mode , there is no way to make the memory playback mode to support it because after a file is loaded to the memory it don't have any other access to the file unless you play it again , fixed a bug in the ID3 v2 tag support , if the mp3 file has invalid ID3 v2 tag information the control may just crash , now the control will first validate the information and if it is inside some predefined limits it will work if not then it will just consider the ID3 v2 information invalid , notice that this problem affect also Winamp , the homepage has a damaged mp3 file that trigger the problem in the mp3 ocx 2.6.2 and Winamp , and you need to be aware that when the new wave effects change the number of samples then the time reported will not be the correct playback position , this mean that the file may terminate the playback after or before the real playback position , this occur because there is no way to update the time information correctly when the number of samples are changing dynamically , this occur with the pitch wave effect at this moment but more wave effects in the future may have the same limitation , added a new fast mode to retrieve the normalization of the file , the normal mode requires a few seconds even in a fast machine while the new fast mode requires less than a second , it is fast because it is only measuring the levels on small portions of the file , but even verifying small portions of the file it gives results very close to the results got with the normal mode , the new functions using this new fast mode are EnableOnTheFlyVolumeNormalizationFast and EnableOnTheFlyVolumeNormalizationAndWriteTAGFast , and since the resulting value is very close to the normal method this is the recommended mode to be used from now on , several other minor problems were fixed

(17/Mar/2005 01:13) : A problem was found on the way the control handle the information on the ID3 v2 tag , in this case it don't validate the size of the values , then if a damaged mp3 file with invalid ID3 v2 tag is loaded the problem will appear and it will just crash the application due to large memory allocation, notice that Winamp is also affected by the same problem , just load the file in Winamp , try to read the ID3 tags and you will see , to reproduce the problem download this mp3 file and load it in the control , then try to read the ID3 v2 tag on it in the sample project , as you will see the application will just crash , remember to save your work before loading this file , click here to download , notice that a new release of the control to solve this problem will be generated as soon as possible , it will address also some minor bugs in the new smart buffer method

(11/Mar/2005 13:24) : Released the documentation of the control , it was updated to reflect the changes in the latest versions , it has several modifications when compared with the older documentation

(10/Mar/2005 23:30): Added a few dsp based wave effects , it includes voice removal , echo and pitch playback control , for more information on it take a look in the sample or the documentation ( that soon will be available in the homepage ) , notice that this is our first attempt in the dsp area , many other wave effects will be added in the future , anyone that have a few knowledge on dsp code and want to help , please , contact us , removed the function ChangeSpeed , it was removed because now we have a dsp based code that does it, and it work on the wave stream while the ChangeSpeed function was just changing the samplerate on the waveOutWrite function ,modified the progressbar to make it work without problems in environments other than VB , the progressbar in the version 2.5.8 will just crash if used in other development tools as an example the Fujitsu Cobol , fixed a bug in the smart buffer method , the version 2.5.8 may show an assert message box about a error in the file filebuffer.c at line 595 or line 790 with a "assert (bytesleft >= 0)" information , this error occurs if the size of the file change while it is playing , to reproduce the problem load a small mp3 file , start the playback and while it is playing bring up the id3 tag form and add or remove the id3 v1 or v2 tag , and wait for the end of the playback , in the end of the playback you will see the error assert message box , this problem is fixed in this version , notice that anyway the chances of a file size change during playback is very small , minor other modifications

(09/Mar/2005 16:27) : The documentation of the latest release of the control is available , it describes the new functions added and explain about what was modified when compared with older releases , it is a must for people using or learning about the large amount of features of this control

(26/Feb/2005 15:48): Several modifications and enhancements in the spectrum analyzer , now it has more auto adjust code , and it also was modified to report the information more smoothly without hard changes in the value , and the levels are reported in a such a way to all the bands to have the same minimum adjusted level , it gives a better representation of the peak level , removed the functions to adjust or change the spectrum analyzer, now you have only a unique function just to enable or disable the spectrum analyzer , no changes made to the rest of the code when compared with the version 2.5.7 , if the spectrum analyzer is important to you then the version 2.5.7 or above is the best option

(25/Feb/2005 20:42): Fixed a problem that may occur with the new smart mode , in this case if the resource is too slow to be retrieved the control will freeze until the resource is available , this occur because there is not way to get some information from the file if the file is not available yet , how can you get the sample rate of a file if the file is not here yet ? , to avoid this problem when a function that can block like the getsamplerate function , it will enter in a loop and call Sleep for 50 milliseconds and call DoEvents , it will make the application using the ocx to don't freeze , but yet the function will only return when the minimum chunk of the file is available to get the samplerate , fixed a problem also in the cancel function , the same problem will occur like the other problem explained in this case if the resource is being retrieved there is no way to cancel it unless the function retrieving the chunk of the file return , in this case also the internal functions in the control will call sleep and doevents in order to wait for the return of the read resources function in order to return to the user , tested also the new smart buffer function with very slow resources , and it is working perfectly , added a new mode to the spectrum analyzer , in this new mode the values and adjusted to don't reach the limit of the scale , this will make the report of the values to be as accurate as possible , it is an auto gain adjust method , the old mode is still available but not recommended , always use the mode 1 and it is already pre calibrated , just enable the spectrum analyzer and it is already configured for maximum response , fixed several small bugs in the smart buffer method , the past version will never read the last 4096 bytes of the file , and depending on the seek on the file some bytes would be lost , anyway these bugs are not perceptible but fixed in this version , added a new event Bufferizing , this event will be raised when the control is bufferizing the file due to a slow disk access , like when you are accessing a file in the network , if it detected the slow access response it will raise the event , and raise the event again when the control is ready to initiate the playback , it was added to the user know why it is not playing and wait for the buffer to be filled in order to play , and also it has lots of other minor improvements

(24/Feb/2005 17:41) It describes the new buffer method added to the version 2.5.6

It has two buffers, each can hold 20 seconds of playback

The buffers read the data in chunks of 20 seconds of playback in sequence , first buffer 1 then buffer 2 then buffer 1 , again and again until the end of the file , this way:

The next buffer load process occurs in another thread running concurrently with the decoder engine and playback threads , then now we have 3 threads running in order to play

When the application request data from the first buffer and it reach the middle of the capacity then the second buffer start reading the next chunk of data

This way when the first buffer is empty the second buffer is already filled with data and ready to be used

Then again when the second buffer has less than half of the data available it make the first buffer start reading more data , this way when the second buffer is empty the first buffer already has data to pass to the application

This execution cycle occurs again and again until the file is completely read or the user cancel the playback

(23/Feb/2005 21:49): Added a spectrum analyzer , it is using a FFT transform to retrieve the frequency information , it provides ten bands frequency information, exactly as the equalizer bands , the frequency information is returned in an event called SpectrumAnalyzer , added several new functions , they are UseOldFileBufferMode , UseSmartFileBufferMode ,PlayFromMemoryFileSizeLimit , EnableRepeatPlaylist ,GetShuffleNextItemPlaylist , GetNextItemPlaylist ,AddItemToPlaylist , SetFilePlayingPlaylist ,ResetPlaylist , RegisterFinishedEventMessage ,IsPathFolder ,IsPathFile , EnableSpectrumAnalyzer and SpectrumAnalyzerAdjust , and events SpectrumAnalyzer and DebugInformation , many functions were added to support a playlist playback , sample included , added functions to optimize the file buffer access , when the new smart buffer mode is used the file will be pre loaded in portions of 10 to 20 seconds , and it will only start the playback when at least 10 to 20 seconds of playback is available , and it will keep bufferizing this way until the end of the playback , this is the preferred buffer method to be used and is enabled by default , added also a possibility to load the whole file to the memory and play from it , notice that it is limited to 20 megabytes to avoid system crash , and the user will define the file limit in this mode , it is initiated at 250 kb limit ( this mean that if a file is less than 250 kb it will play from the memory ) added two functions to test files or folders , added a debug event that will report problems on the media file and other important debug information , including also the file buffer mode being used , always watch this debug information if the control cannot play some of your mp3 files , and report it back to us as soon as possible , notice also that the spectrum analyzer requires a few processor cycles , then only enable it when required , it will use approximately 10 to 20 percent of the time required to decompress a mp3 file , then if you can play a mp3 file in a 133 cpu it is possible that you will be able to run the spectrum analyzer also , by the way the processor time required to play a mp3 in real time is 100 mhz , modified the report of the peak level value , now when it is paused the values are 0 , and not the last value of the peak , the same occur with the spectrum analyzer, please , make a few tests at least to be certain that this new version is running as expected , several modifications were introduced and only the time will show whether it is stable enough , we have run several sequential tests and they passed , the upgrade is highly recommended , thanks to all the people that are requesting features and reporting bugs , due to your help this control is now better than ever

(14/Feb/2005 12:43): Added full id3 tag support , it include id3v1 , id3v1.1 and id3v2.3.0 or 2.4.0 , the functions are very easy to use , the tags are directly based on what Winamp provides , then it will read and write all the id3 tags supported in Winamp , fixed normalization problem that may cause the multiplication factor to become too high when the file is pure silence , now it is limited to no more than 15 , added milliseconds based functions to retrieve position and length of the media file , fixed problem when opening files , in this case the peak level meter will show an invalid value in the middle of the progressbar , this version will only initiate the update of the progressbar after the playback initiated , fixed also the report of milliseconds when the file is opened and not played , in this case the value will not be 0 but a few milliseconds , fixed also the peak level metter , now it is more accurate , added full support to VBR files based on the Fraunhoffer vbr tag "VBRI" , older versions will not detect and read this tag , fixed detection of vbr files , older versions will report vbr files all Xing based vbr files , some files has an Info vbr tag , that isnot a reference to a vbr file but a cbr file , now it will only report a file as vbr if it has a Xing vbr tag or VBRI vbr tag , thanks to Vassilis Antonoulas for helping in fixing this problem and adding VBRI tag support , minor bugs fixed

(27/Jan/2005 19:15): Added new event to show the wave out peak level , the PeakLevel event , it will return the left and right channel independently , this event occurs 20 times in a second , added a new function to change the playback speed , the ChangeSpeed function , it range from 0 to 100 , and 50 is the normal playback position , the speed can be modified during playback , minor other modifications

(25/Jan/2005 23:10): Added code to detect and fix the seek on the mp3 file on the fly , due to this modification now the seek occurs instantaneously , older versions required in some cases more than one second to finish the seek , added code to detect and avoid bad sections on the mp3 file , now in case of a bad mp3 frame it will just skip over it silently , added support to change the volume using the InternalVolume function on wav files 8 bits , modified the pause method , now the decoder will follow the slider position instantaneously , older versions will only apply the change in the seek after the resume is called , added sample project to play files in a directory , minor other modifications

(24/Jan/2005 13:52): Fixed a reference to the standard Microsoft VB controls that mistakenly was added to the version 2.5.0 and 2.5.1 versions , now it don't have any references to any Microsoft controls , fixed the preamplifier sample that was referencing InternalVolume instead of PreamplifierValue , the mixer demo has a little mofifications also

(23/Jan/2005 16:33) : Modified the initialization of the playback to always initiate at 0 , and not at the slider position , if you want to initiate the playback in a predefined position , then open the media file , move the slider or call Seek with the position then call ResumePlayback , it was modified to avoid possible confusion , fixed a bug in the GetStatus event , that will not be raised when the file is opened and the playback is resumed , in this case the event will not raise with the updated status "play" , minor modifications

(22/Jan/2005 17:01) : Modified the Seek function , now it will seek instantaneously and it will disable the output sound during the seek , fixed a bug that will not free allocated memory used by the wave out functions , a call to waveOutUnprepareHeader was missing in the end of the playback or when the cancel function was called , added fade in and out sample in the package ( by Normam ) , added the function DisableSliderUpdateDuringSeek , this function will disable the update of the slider during seek , it is required because now the seek is based in the KeyUp and MouseUp event of the slider , and not in the Scroll event anymore , older versions required the control to wait for the seek value to stabilize before applying the value in the control , added the function CheckVolumeTag , it will check to see whether the normalization volume tag is in the media file , added the function SeekBasedOnSeconds , it will seek on the file based in the second position , then if you pass 20 , it will seek to the second 20 in the playback , the function SetVolumeGain was modified , now it range from 0 to 100 and not from 0 to 10 anymore , added enum StatusValue it is the return value of the new function GetStatusLong , added function InternalVolume , it has the same effect as the SetVolumeGain , but it will only affect the file playing in the control , while the SetVolumeGain will affect all the wave out based files playing because it access the system mixer , then the InternalVolume function is the preferred method to change the volume playback , added function DoubleBuffer , this function will double the gain of the equalizer function , added also the possibility to define the initial playback position , to use it just move the slider to the position desired , then open or play the file , and it will initiate at that position , if you want to always initiate at position 0 even if the slider is moved , then make a call to Seek with a value -1 before opening or playing the file , and it will always initiate at 0 , fixed several other minor problems

Bug found on the new fade sample : The fade playback sample has a few bugs that can make the application to don't work as expected , an updated version of the sample was posted that don't have the problem , click here to download an updated version

New sample project : Our friend Norman from Digital Tanagent Limited have generated a sample project with fade playback support between tracks , it can fade in and fade out when playing multiple tracks at the same time , the samples are available to download in this link ( link removed due to a bug , this is a new release )

What is new in the version 2.3.0 : Fixed a problem that may occur with very damaged mp3 files (mp3 files with wrong binary information that may confuse the mp3 decoding engine in the beginning of the file or in the middle ) now the decoder is less susceptible to problems to decode the mp3 file , fixed a problem that may occur when retrieving the properties of the mp3 files , in some cases the value reported is the value of the last media file loaded and not the actual media file loaded , this occur if the call to retrieve the information from the media file occurs just after the load or play functions , thanks to Revivo Eyal for reporting and explaining about the problem , fixed a bug when setting the volume of the playback , the change in the volume only occurs when the file is loaded or playing , to test for the bug , just change the volume slider before the load or play of the file , as you will see the volume will not change, now the volume will change no matter the file is stopped or loaded or playing , minor bugs fixed

What is new in the version 2.1.0 : Added volume normalization , it is based on the ReplayGain algorithm , the volume normalization can be generated on the fly and write to the file for later use , if the volume tag is available it will be used , if not it will be generated on the fly , the sample has the explanation about the use of the normalization , fixed a bug that may use all the processor time when the Wait playback mode is used, minor changes

If you are interested in Volume Normalization , then visit this link : rspnormalization.htm

What is new in the version 2.0.0 : Fixed a bug that will show a message box with "error loading the dll" when any of the functions EnableEqualizer EqualizerSettings EnablePreamplifier or PreamplifierValue are called as the first function called in the control , this don't occur after any other function is called , fixed in this version , thanks to AdiEyal for reporting the problem

What is new in the version 1.9.0 : Added a high quality graphical equalizer with 10 bands , and with more than +-14dB of gain per band , it was derived from a XMMS equalizer plugin , any feedback about the equalizer will be very important , and it can be extended to 15 , 25 or 31 bands , minor bugs fixed

What is new in the version 1.8.0 : Added code to skip over the id3v2 tag to avoid some binary data being considered a valid mp3 header frame

What is new in the version 1.7.0 : Fixed bug in the retrieve of the playback time , now it work smoothly with any kind of mp3 files and it is more accurate , changed the size of the internal buffers to be based on the mp3 file

What is new in the version 1.6.0 : Fixed bug that occur when playing very small mp3 files , added support to play mp3 files in freeformat, changed the way the type of file is detected , now it will detect whether the file is wav or mpeg in a more consistent way , and it isnot based on the extension anymore , minor bugs fixed

What is new in the version 1.5.0 : Changed the mp3 decoder to a more advanced version and more fast , fixed several bugs regarding the handle of VBR files including seeking , changed the interface to a new set of functions , notice that you cannot just replace the code using older versions with this new version because the function names have changed , minor bugs fixed

What is new in the version 1.4.0 : Added multiplayer capabilities to the control , now you can add up to ten instances of the control to a form in order to create a multiplayer , each instance is totally independent , multiplayer sample project is included , minor bugs fixed

What is new in the version 1.2.0 : Added function to set the volume , added mp3 to wav conversion function , fixed bug in the pause and resume functions , now the pause and resume will execute instantaneously , fixed bug in the Finish event , minor bugs fixed


- This controls is using a high quality decoder engine

- Ability to play media files in the following formats :

    wav in PCM format
    MPEG 1 layer 3 ( MP3 ) ,
    MPEG 1 layer 2
    MPEG 1 layer 1
    MPEG 2.0 ( sample rates 16000 , 24000 and 22050 Hz)
    MPEG 2.5 ( sample rates 8000 , 11025 and 12000 Hz)

- It has a high quality graphical equalizer

- It has a spectrum analyzer with 10 bands

- The decoder engine is loaded dynamically in the process

- You can define what wave out device ( soundcard ) will play the MP3 file

- The control has support to Xing and VBRI based VBR files

- The control can retrieve bitrate , samplerate , layer , stereo mode and the time of the mp3 file as formatted string or milliseconds

- Future versions will have more features



- To install the dll , open the package and extract the files to an empty folder

- To uninstall the dll remove the folder where it was extracted





Build 1999 in CHM format ( incomplete for the moment ) , see here

Build 1998 in CHM format ( incomplete for the moment ) , press here


Build 1996 in CHM format ( incomplete for the moment ) , touch here


RSP MP3 DLL 1.0.1 Build 2003

RSP MP3 DLL 1.0.1 Build 2003

RSP MP3 DLL 1.0.1 Build 2002

RSP MP3 DLL 1.0.0 Build 2001

RSP MP3 DLL 1.0.0 Build 1999

RSP MP3 DLL 1.0.0 Build 1998

RSP MP3 DLL 1.0.0 Build 1996






This dll is available to register at PayPal

This dll is available to register at Shareit!

After the registration the licensed version will be emailed to you , thanks for considering the registration


vbwire.gif (8247 bytes)


Home   Contact   About   Development   C Programming

RSP_C   Processor Research   Products   License   Mirrors

frontpage hit counter
asp hit counter