Hi ! I would like to know if it is possible, in a DSP callback, to convert the samplerate of the buffer data to another one. For example, if i init the driver with 44100, to convert it to 22050,11025 … and vice versa ? Because, when i play the converted wav file to 22050 (for example), the song play slowly
Thanx in advance
So, you want to init fmod to 44100hz, yet save the sound to wav in a lower format to save disk space?
The most easy way to do it is just save 1 out of 2 samples.
A more accurate way is to take the average of 2 samples and save that.
You have to take into account that the buffer you get is a stereo buffer, so it looks like :
l1 r1 l2 r2 l3 r3 l4 r4
And you have to save
(l1+l2)/2 (r1+r2)/2 (l3+l4)/2 (r3+r4)/2
Of course there are even better ways to resample data, but this would be a very simple way to do it.
I don’t think fmod’s internal routines for doing this are available at this point.
Hey KarlKox, if you need a fast C resampling function, contact me by e-mail!
I made one some time ago for my MOD player in Visual Basic and I think it should work very nice!
It has also linear interpolation if u are going to use upsampling instead of downsampling!
Hi Adion !
I ve used your mp3 encoder and added ogg en wav encoding. Ogg work well (not very hard to do … thanx 😉 but the wav writer need an enhancement. It work well when writing to 8 or 16 bits, but when i want to convert the buffer to a lower rate, the song play slowely (it s normal …). I use the “Don Cross” Wav read/write class, i think it is supposed to write to another frequency, but how to pass the correct modified buffer ? Note that all the work is done in a DSP callback.
Please login first to submit.