Hi, (Using Delphi6 Personal)

I’ve got a pretty basic app, the gist of which is

FSOUND_INIT (44100,32,0);

FSound3 := FSOUND_Sample_Load (FSOUND_FREE,PChar (OpenDialog1.Filename),FSOUND_16BITS OR FSOUND_FORCEMONO OR FSOUND_2D,0,0);


I am loading an MP3 using this, takes a few seconds, but thats okay..
Plays the sample fine.

Problem is, is when I start adjusting the playback rate using FSOUND_SeqFrequency, on [i:5lnzdq2v]some[/i:5lnzdq2v] mp3’s when it reaches near 0 value, it will crash reporting a “Integer Overflow Error”
(guarantee that FSOUND_SetFrequency(FSOUND_ALL,10); for those mp3’s that are affected will cause it to fail)

I’ve spent some time trying to figure out whats so different about these mp3’s that cause this, but I can’t seem to find a correllation. They range from Joint , to Stereo, 128kbits, to 160kbits, CRC’s and no CRC”s… 😮

It stops in the dissaembler, and if I scroll back far enough to find an FMOD tag, i see
and its 0x2473 bytes back from the breakpoint.

Any ideas?


  • You must to post comments

As the frontend code I posted is quite small, I’m quite sure that this is an issue with FMOD itself, can anybody try this with VC++ and see what it does?

  • You must to post comments

Hi Brett,

Thanks for the response..The reason I need to use a sample instead of a stream, is I will be requiring reverse playback of MP3 files.. Some instances, I have found that I had to clamp at +/- 2000 hz before it will eventually error out.

Could you not store the value of this operation into something larger than an integer to prevent this issue? I can’t use any exception handling to catch this

What I can do then, is clamp at a safe value, and FSOUND_SetPaused between 2000 and -2000 HZ..

  • You must to post comments
Showing 2 results
Your Answer

Please first to submit.