0
0

Hi, i ‘m trying to do a unit that changes the
BPM (tempo) of a mp3 file, to be able to mix 2 of them (beatmatch)…

i heard you can use setfrequency?, anyone knows how to do it?

• You must to post comments
0
0

the MANUAL needs a lot more of information…

• You must to post comments
0
0

to set the freq to 98000 hz :

FSOUND_SetFrequency(FSOUND_ALL, 98000);

Valid ranges for the second param are from 100 to 705600, and -100 to -705600. Return TRUE on success.

• You must to post comments
0
0

yes, but how do you convert that into BPM information…

lets say… 98000 hz EQUALS what BPM??

• You must to post comments
0
0

you can’t change the bpm this way, you must create a DSP wich will change the pitch of the sound without.
You have an excellent piece of explanation on how to do it here :

• You must to post comments
0
0

FSOUND_SetFrequency is all that you really need.
If you search some you can find how to get the default frequency of a stream/mp3. (For almost every mp3, this is 44100)

If you know the bpm of the song when it’s played normal, you can calculate how fast it has to be.

For example : The song at default frequency is 140 bpm, and you want it at 142 bpm, this means 1.42% faster, or 1.0142 times the original frequency (142/140=1.0142…)
So use setfrequency with 44100 * 1.0142

If you want to get the bpm of a song, there are only some ways to know :
1) you know how many bpm’s a song has, maybe because it’s your own song
2) you create/search some program to tap the beats that will show you the bpm’s
4) you create/search a program that will calculate the bpm’s automatically, which is quite difficult and won’t work for all songs
(check my webpage if you want to use my ocx to detect bpm’s)