BPM.tapper [v1.0] - time BPM 's in MM [MM 2 / MM 3 limited ]
-
- Posts: 906
- Joined: Sun May 28, 2006 4:22 am
- Location: Australia
- Contact:
BPM.tapper [v1.0] - time BPM 's in MM [MM 2 / MM 3 limited ]
BPM.tapper is currently at release v1.0
it can be downloaded here:
http://www.ublik-om.net/software/bpm-tapper
BPM.tapper creates a dockable window within Media Monkey which allows you to tap to the beat of the currently playing song and save that easily to the mp3 file.
it is compatible with MM 3.0
(except for "skip song after save")
Feel free to post any issues with the script you find in this current thread.. please also read the "known issues" section when downloading as your issue may already be listed.
enjoy & happy tapping,
Dale.
(if you are curious, the initial thread where this began is here: http://www.mediamonkey.com/forum/viewtopic.php?t=15338)
it can be downloaded here:
http://www.ublik-om.net/software/bpm-tapper
BPM.tapper creates a dockable window within Media Monkey which allows you to tap to the beat of the currently playing song and save that easily to the mp3 file.
it is compatible with MM 3.0
(except for "skip song after save")
Feel free to post any issues with the script you find in this current thread.. please also read the "known issues" section when downloading as your issue may already be listed.
enjoy & happy tapping,
Dale.
(if you are curious, the initial thread where this began is here: http://www.mediamonkey.com/forum/viewtopic.php?t=15338)
Last edited by DaledeSilva on Thu Jul 06, 2017 7:45 pm, edited 4 times in total.
Product Designer & Indie Developer.
Building at the intersection of motion, art, and code.
Find me on twitter and all the other ones here.
Building at the intersection of motion, art, and code.
Find me on twitter and all the other ones here.
Thanks a lot for your work once more and the update!!!
Some questions:
- What is the exact reason of the fields "diff." and "no."? What is the relationship between those 2 fields and the "tapping"?
- when in "Now Playing" the "BPM Tapper" window is focused. I'd suggest tapping with the space bar shoud be possible at once instead of having to use the mouse first.
Some questions:
- What is the exact reason of the fields "diff." and "no."? What is the relationship between those 2 fields and the "tapping"?
- when in "Now Playing" the "BPM Tapper" window is focused. I'd suggest tapping with the space bar shoud be possible at once instead of having to use the mouse first.
-
- Posts: 906
- Joined: Sun May 28, 2006 4:22 am
- Location: Australia
- Contact:
no. shows the number of taps you have made so farsurfer wrote:- What is the exact reason of the fields "diff." and "no."? What is the relationship between those 2 fields and the "tapping"?
diff. shows whether your last tap was quicker or slower than the average.
I'll look into it.. but while I can make a document wide detection, I am worried that it would detecet an eroneous click when pressing the save button. But I'm sure a variation will come about.surfer wrote:- when in "Now Playing" the "BPM Tapper" window is focused. I'd suggest tapping with the space bar shoud be possible at once instead of having to use the mouse first.
Product Designer & Indie Developer.
Building at the intersection of motion, art, and code.
Find me on twitter and all the other ones here.
Building at the intersection of motion, art, and code.
Find me on twitter and all the other ones here.
nice idea for the script.
Maybe it will be more convenient to use an external tool like
http://www.zdnet.de/downloads/prg/0/6/e ... 06-wc.html
which will do the job?
With regards,
GuHu
Maybe it will be more convenient to use an external tool like
http://www.zdnet.de/downloads/prg/0/6/e ... 06-wc.html
which will do the job?
With regards,
GuHu
-
- Posts: 906
- Joined: Sun May 28, 2006 4:22 am
- Location: Australia
- Contact:
you're right.. if you music get's acurate bpms from that program, it's alot more efficient to use that.
however, the reason I created this script is that while that program can return an 'acurate' bpm, with slower music, it's usually not the beat we're interested in that mixmeister uses...
eg. for a song which we'd want to know is 60bpm, it would probably return 120bpm
so the timing is acurate.. but doesn't give any indication of the "speed" of the song.
Dale.
however, the reason I created this script is that while that program can return an 'acurate' bpm, with slower music, it's usually not the beat we're interested in that mixmeister uses...
eg. for a song which we'd want to know is 60bpm, it would probably return 120bpm
so the timing is acurate.. but doesn't give any indication of the "speed" of the song.
Dale.
Last edited by DaledeSilva on Sun Nov 11, 2007 12:53 pm, edited 1 time in total.
Product Designer & Indie Developer.
Building at the intersection of motion, art, and code.
Find me on twitter and all the other ones here.
Building at the intersection of motion, art, and code.
Find me on twitter and all the other ones here.
I also use this for filetypes not supported by MixMeister! 

Advanced Duplicate Find & Fix Find More From Same - Custom Search. | Transfer PlayStat & Copy-Paste Tags/AlbumArt between any tracks.
Tagging Inconsistencies Do you think you have your tags in order? Think again...
Play History & Stats Node Like having your Last-FM account stored locally, but more advanced.
Case & Leading Zero Fixer Works on filenames too!
All My Scripts
Tagging Inconsistencies Do you think you have your tags in order? Think again...
Play History & Stats Node Like having your Last-FM account stored locally, but more advanced.
Case & Leading Zero Fixer Works on filenames too!
All My Scripts
Re: BPM.tapper [v1.0] - time BPM 's in MM [MM 2 / MM 3 limited ]
Hello!
Many thanks for this extremely useful script!! I used it a lot, but now with MM 3.0.3++ it seems that it doesnt work anymore (doesn't save the BPM into the file), at least on my machine!?
On another take, i would like to add some features:
* read the BPM tag, if there is one, and put the value into the field
* buttons for dividing / multipliyng the value with 2 and 3
Like this, one can easily fix wrong BPMs wich are half or doubles of the real PBM, or in rare cases a third....
I tried to work on the html script, but since it didnt work on my machine, i couldn't test anything and gave up.
Many Thanks!!!
greetings
m
++edit: btw here is the modified BPMtapper.html
Many thanks for this extremely useful script!! I used it a lot, but now with MM 3.0.3++ it seems that it doesnt work anymore (doesn't save the BPM into the file), at least on my machine!?
On another take, i would like to add some features:
* read the BPM tag, if there is one, and put the value into the field
* buttons for dividing / multipliyng the value with 2 and 3
Like this, one can easily fix wrong BPMs wich are half or doubles of the real PBM, or in rare cases a third....
I tried to work on the html script, but since it didnt work on my machine, i couldn't test anything and gave up.
Many Thanks!!!
greetings
m
++edit: btw here is the modified BPMtapper.html
Code: Select all
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN">
<HTML>
<HEAD>
<SCRIPT Language='VBScript'>
Sub setBPM(value,skip)
Dim SDB : Set SDB = CreateObject("SongsDB.SDBApplication")
Dim curSong : Set curSong = SDB.Player.CurrentSong
curSong.BPM = value
curSong.UpdateDB
curSong.WriteTags
If skip Then
SDB.Player.Next()
SDB.Player.PlaybackTime = SDB.Player.CurrentSongLength*0.1
End If
Set curSong = Nothing
Set SDB = Nothing
End Sub
</SCRIPT>
<SCRIPT language=JavaScript>
<!-- Original: Derek Chilcote-Batto (dac-b@usa.net) -->
<!-- Web Site: http://www.mixed.net -->
<!-- Modified by: Ronnie T. Moore, Editor -->
<!-- Later Modified into this version by Dale de Silva (www.oiltinman.net) for use in the programming MediaMonkey (www.mediamonkey.com)
<!-- Ronnie T's script and many more are available free online at -->
<!-- The JavaScript Source!! http://javascript.internet.com -->
<!-- Netscape 4.x+ and MSIE 4.x+ compatible. --!>
<!-- Begin
ns = (navigator.appName == 'Netscape');
ie = (navigator.appName == 'Microsoft Internet Explorer');
secs2 = 0;
count = 0;
allBpm = 0;
avgBpm = 0;
bpm = 0;
function resetAll() {
<!--reset all--!>
secs2 = 0;
count = 0;
allBpm = 0;
bpm = 0;
BPMtoSave = avgBpm
avgBpm = 0;
document.BEATSPERMINUTE.AVG.value = "";
document.BEATSPERMINUTE.HIT.value = "";
document.BEATSPERMINUTE.ACG.value = "";
}
function multB(e){
if(avgBpm>0){
avgBpm = avgBpm * e;
// document.BEATSPERMINUTE.AVG.value = avgBpm;
document.BEATSPERMINUTE.AVG.value = (Math.round(avgBpm * 100)) / 100;
}
return true;
}
function divB(e){
if(avgBpm>0){
avgBpm = avgBpm / e;
// document.BEATSPERMINUTE.AVG.value = avgBpm;
document.BEATSPERMINUTE.AVG.value = (Math.round(avgBpm * 100)) / 100;
}
return true;
}
function saveBPM(){
if(avgBpm>0){
resetAll();
document.BEATSPERMINUTE.AVG.value = "Saved";
document.BEATSPERMINUTE.HIT.value = "";
document.BEATSPERMINUTE.ACG.value = "";
//VBscript call MUST go at end or the other actions wont complete
if(document.BEATSPERMINUTE.SKIP.checked == true){
setBPM(BPMtoSave,true);
} else {
setBPM(BPMtoSave,false);
}
} else {
}
}
function bpmCounter(e) {
//if (ns) clearBpm = e.which;
//else if (ie) clearBpm = event.button;
timeSeconds = new Date;
secs = timeSeconds.getTime();
if (count == 0) {
document.BEATSPERMINUTE.AVG.value = "Begin When Ready";
document.BEATSPERMINUTE.HIT.value = "";
document.BEATSPERMINUTE.ACG.value = "";
count = "start"
} else if (count == "start"){
document.BEATSPERMINUTE.AVG.value = "1st Click";
document.BEATSPERMINUTE.HIT.value = "";
document.BEATSPERMINUTE.ACG.value = "";
count = 1
secs2 = secs;
} else {
oldBpm = bpm;
bpm = (1 / ((secs - secs2) / 1000)) * 60;
bpmChg = (Math.round((bpm - oldBpm) * 10)) / 10;
count++;
allBpm = allBpm + bpm;
oldAvg = avgBpm;
avgBpm = allBpm / (count - 1);
avgChg = (Math.round((avgBpm - oldAvg) * 10)) / 10;
secs2 = secs;
if (bpmChg >= 0) {
PbpmChg = "+" + bpmChg
} else {
PbpmChg = bpmChg
}
if (avgChg >= 0) {
PavgChg = "+" + avgChg
} else {
PavgChg = avgChg
}
document.BEATSPERMINUTE.AVG.value = (Math.round(avgBpm * 100)) / 100;
document.BEATSPERMINUTE.ACG.value = PavgChg;
document.BEATSPERMINUTE.HIT.value = count;
}
return true;
}
//document.onkeydown = bpmCounter;
//document.onmousedown = bpmCounter;
// End -->
</SCRIPT>
<STYLE type="text/css">
h1 {
font-size: 11px;
font-family:Verdana, Arial, Helvetica, sans-serif;
text-align: center;
color: #999999;
}
h2 {
font-size: 10px;
font-family:Verdana, Arial, Helvetica, sans-serif;
text-align: center;
color: #999999;
}
h3 {
font-size: 9px;
font-family:Verdana, Arial, Helvetica, sans-serif;
text-align: center;
color: #BBBBBB;
}
feedback {
font-size: 15px;
font-family:Verdana, Arial, Helvetica, sans-serif;
color: #000000;
text-align: right;
}
html {
overflow:false;
}
body {
margin-left: 0px;
margin-top: 0px;
margin-right: 0px;
margin-bottom: 0px;
}
</STYLE>
<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1"></HEAD>
<BODY bgColor=#FFFFFF>
<FORM name=BEATSPERMINUTE>
<table width="100%" height="100%" border="0">
<tr>
<td>
<h2>
<input name="tap" type=button value=" TAP " onMouseDown="bpmCounter(null)" onKeyPress="bpmCounter(null)">
<BR/>
<input name="Button" type=button value=" Clear " onClick="resetAll()">
<input name="save" type=button value=" Save " onClick="saveBPM()">
<BR/>
<INPUT size=14 name=AVG>
<br>
<input name="mult2" type=button value=" • 2" onClick="multB(2)">
<input name="div2" type=button value=" ÷ 2" onClick="divB(2)">
<br/>
<input name="mult3" type=button value=" • 3" onClick="multB(3)">
<input name="div3" type=button value=" ÷ 3" onClick="divB(3)">
<BR/>
Diff.<input size=2 name=ACG>No.<INPUT size=2 name=HIT>
<BR/>
Skip Song On Save
<input name=SKIP type="checkbox" value="skip">
</h2>
<h3>If clicking "TAP" with your mouse doesn't seem to be registering every hit.. use your spacebar </h3> </td>
</tr>
</table>
</FORM>
</BODY></HTML>
Re: BPM.tapper [v1.0] - time BPM 's in MM [MM 2 / MM 3 limited ]
Just wondering on the current status of this script, as the last poster said it wasn't working on MM3 very well.
External programs still seem to be the way to go - due to all the math that goes into guesstimating beats - but with the ever present doubling/halving issue with BPM calculations, having a batchable button to quickly override the false calcs would be very useful. To date I think I've only seen it in ONE app, (beaTunes?), even though it's requested numerous times on forums.
Still though, no one has even written a good external app that works well enough for us non-DJ's. Beatunes seems to have the most features, but like Rapid Evolution and most other apps, it works only off playlists and Itunes databases. Other apps are Mac-only (the main OS used by DJ's and musicians), or write to the comments field and hork up tags in other ways.
I'd use MixMeister but it's TOO simple, and its speed means it reports a lot of the doubled/halved figures - but with no easy way to correct them save manual editing.
External programs still seem to be the way to go - due to all the math that goes into guesstimating beats - but with the ever present doubling/halving issue with BPM calculations, having a batchable button to quickly override the false calcs would be very useful. To date I think I've only seen it in ONE app, (beaTunes?), even though it's requested numerous times on forums.
Still though, no one has even written a good external app that works well enough for us non-DJ's. Beatunes seems to have the most features, but like Rapid Evolution and most other apps, it works only off playlists and Itunes databases. Other apps are Mac-only (the main OS used by DJ's and musicians), or write to the comments field and hork up tags in other ways.
I'd use MixMeister but it's TOO simple, and its speed means it reports a lot of the doubled/halved figures - but with no easy way to correct them save manual editing.
Re: BPM.tapper [v1.0] - time BPM 's in MM [MM 2 / MM 3 limited ]
It works excelently with MM 3.1:-)
Re: BPM.tapper [v1.0] - time BPM 's in MM [MM 2 / MM 3 limited ]
Hrm, maybe what we need then is just a simple script to rewrite existing BPM's that are selected. It wouldn't make as much sense in combination with the BPM tapper.
What I've seen with some integrated tappers though - ie, ones accompanying apps that did BPM analysis - was that they would actually look at the "original" BPM field, assume if you were tapping it out that it was inaccurate, and then try to contextually determine if you were hitting a fractional value of the stored value. IE, say the track was set to 120 incorrectly. The tapper will then "see" any tapped average of 60bpm +/- 10 beats as 60, and lock onto that value. Really helps for some of us rhythmically-challeneged people.
What I've seen with some integrated tappers though - ie, ones accompanying apps that did BPM analysis - was that they would actually look at the "original" BPM field, assume if you were tapping it out that it was inaccurate, and then try to contextually determine if you were hitting a fractional value of the stored value. IE, say the track was set to 120 incorrectly. The tapper will then "see" any tapped average of 60bpm +/- 10 beats as 60, and lock onto that value. Really helps for some of us rhythmically-challeneged people.
Re: BPM.tapper [v1.0] - time BPM 's in MM [MM 2 / MM 3 limited ]
The script works great for my needs in MM 3.1 also. I don't use the "save" button but it would be nice if I could.
I use it either manually check a BPM value determined by MixMeister or when I'm to lazy to open MixMeister for an individual tracks. One thing I find myself wishing for is the ability to skin the script. I use the Eclipse skin which is a dark skin and BPM.Tapper is very white.
Jim
I use it either manually check a BPM value determined by MixMeister or when I'm to lazy to open MixMeister for an individual tracks. One thing I find myself wishing for is the ability to skin the script. I use the Eclipse skin which is a dark skin and BPM.Tapper is very white.
Jim
-
- Posts: 906
- Joined: Sun May 28, 2006 4:22 am
- Location: Australia
- Contact:
Re: BPM.tapper [v1.0] - time BPM 's in MM [MM 2 / MM 3 limited ]
I like that idea.mistresso wrote:What I've seen with some integrated tappers though - ie, ones accompanying apps that did BPM analysis - was that they would actually look at the "original" BPM field, assume if you were tapping it out that it was inaccurate, and then try to contextually determine if you were hitting a fractional value of the stored value. IE, say the track was set to 120 incorrectly. The tapper will then "see" any tapped average of 60bpm +/- 10 beats as 60, and lock onto that value.
good one, I will try and incorporate it.
I will give it a background image that you can replace.Just JP wrote:One thing I find myself wishing for is the ability to skin the script. I use the Eclipse skin which is a dark skin and BPM.Tapper is very white.
Jim
I guess the reason that I haven't fixed / worked on this script is because i've always got another script in int he back of my mind that will incorporate this into it. However, that script also hasn't been addressed yet.
I will see what I can do to get these small edits happening.
thanks for commenting on my script!

Product Designer & Indie Developer.
Building at the intersection of motion, art, and code.
Find me on twitter and all the other ones here.
Building at the intersection of motion, art, and code.
Find me on twitter and all the other ones here.
Re: BPM.tapper [v1.0] - time BPM 's in MM [MM 2 / MM 3 limited ]
Heh, well the search is still on for a seasoned BPM analyzer that actually does everything we want without making a big mess or running off the Itunes library. It's funny that with all the music apps we have for the PC, there is simply nothing out there that writes to the ID3 tag and isn't totally half-assed. Heck, most of the apps haven't even been updated since 2005.
I think most people look at the calculus required to actually figure out BPM's - which is still only 60% accurate at best - and flee in terror.
I just wish some of the audio engineers out there would put their heads together and come out with an open source library that could be shared.I can't blame the folks who want to make a buck off their hard work, but the fact is that the science still does not work reliably - which seems to scream for a cooperative and not capitalistic solution at this point.
I think most people look at the calculus required to actually figure out BPM's - which is still only 60% accurate at best - and flee in terror.
I just wish some of the audio engineers out there would put their heads together and come out with an open source library that could be shared.I can't blame the folks who want to make a buck off their hard work, but the fact is that the science still does not work reliably - which seems to scream for a cooperative and not capitalistic solution at this point.
Re: BPM.tapper [v1.0] - time BPM 's in MM [MM 2 / MM 3 limited ]
Thanks!DaledeSilva wrote:
I will give it a background image that you can replace.
I believe there are several scripts like this that were written a while ago which are very useful but get "lost" unless you stumble across them. Just the fact that we are discussing it now will bring this script to the attention of a whole group of users.
Keep up the good work.
Jim