BPM.tapper [v1.0] - time BPM 's in MM [MM 2 / MM 3 limited ]

Download and get help for different MediaMonkey Addons.

Moderators: Peke, Gurus

BPM.tapper [v1.0] - time BPM 's in MM [MM 2 / MM 3 limited ]

Postby DaledeSilva » Sat Feb 17, 2007 9:44 pm

BPM.tapper is currently at release v1.0
it can be downloaded here:

http://downloads.oiltinman.com/bpmtapper-v100/

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: viewtopic.php?t=15338)
Last edited by DaledeSilva on Sat Mar 03, 2012 11:04 am, edited 3 times in total.
my plugins & skins: http://downloads.oiltinman.com/ ; PrettyPictures [v0.9.2], Forget Crossfade [v1.0], Behind Titlebars [v0.9], Filter Nodes [v1.0.1], View Mode [1.0], BPM.tapper [v1.0]
my folio site: http://www.oiltinman.com
DaledeSilva
 
Posts: 892
Joined: Sun May 28, 2006 4:22 am
Location: Australia

Postby surfer » Sun Feb 18, 2007 3:46 am

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.
surfer
 
Posts: 260
Joined: Fri Oct 22, 2004 4:55 am

Postby DaledeSilva » Sun Feb 18, 2007 4:41 am

surfer wrote:- What is the exact reason of the fields "diff." and "no."? What is the relationship between those 2 fields and the "tapping"?


no. shows the number of taps you have made so far
diff. shows whether your last tap was quicker or slower than the average.


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.


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.
my plugins & skins: http://downloads.oiltinman.com/ ; PrettyPictures [v0.9.2], Forget Crossfade [v1.0], Behind Titlebars [v0.9], Filter Nodes [v1.0.1], View Mode [1.0], BPM.tapper [v1.0]
my folio site: http://www.oiltinman.com
DaledeSilva
 
Posts: 892
Joined: Sun May 28, 2006 4:22 am
Location: Australia

Postby surfer » Sun Sep 16, 2007 3:52 am

Does this script work on the new MM 3.0 beta2?
If not, could you please update?
surfer
 
Posts: 260
Joined: Fri Oct 22, 2004 4:55 am

Postby GuHu » Mon Sep 17, 2007 3:03 am

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/en10290906-wc.html

which will do the job?

With regards,

GuHu
GuHu
 
Posts: 63
Joined: Mon Feb 12, 2007 6:25 am

Postby DaledeSilva » Sun Nov 11, 2007 8:43 am

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.
Last edited by DaledeSilva on Sun Nov 11, 2007 12:53 pm, edited 1 time in total.
my plugins & skins: http://downloads.oiltinman.com/ ; PrettyPictures [v0.9.2], Forget Crossfade [v1.0], Behind Titlebars [v0.9], Filter Nodes [v1.0.1], View Mode [1.0], BPM.tapper [v1.0]
my folio site: http://www.oiltinman.com
DaledeSilva
 
Posts: 892
Joined: Sun May 28, 2006 4:22 am
Location: Australia

Postby Bex » Sun Nov 11, 2007 9:16 am

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
Bex
 
Posts: 6316
Joined: Fri May 21, 2004 5:44 am
Location: Sweden

Re: BPM.tapper [v1.0] - time BPM 's in MM [MM 2 / MM 3 limited ]

Postby molnium » Wed Oct 08, 2008 8:06 am

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
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=" &#8226; 2" onClick="multB(2)">
          <input name="div2" type=button value=" &divide; 2" onClick="divB(2)">
          <br/>
          <input name="mult3" type=button value=" &#8226; 3" onClick="multB(3)">
          <input name="div3" type=button value=" &divide; 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>
molnium
 
Posts: 14
Joined: Sun Jun 04, 2006 11:06 am

Re: BPM.tapper [v1.0] - time BPM 's in MM [MM 2 / MM 3 limited ]

Postby mistresso » Mon Jan 19, 2009 6:26 pm

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.
mistresso
 
Posts: 67
Joined: Sun Feb 24, 2008 11:15 am
Location: New Haven

Re: BPM.tapper [v1.0] - time BPM 's in MM [MM 2 / MM 3 limited ]

Postby surfer » Tue Jan 20, 2009 2:41 am

It works excelently with MM 3.1:-)
surfer
 
Posts: 260
Joined: Fri Oct 22, 2004 4:55 am

Re: BPM.tapper [v1.0] - time BPM 's in MM [MM 2 / MM 3 limited ]

Postby mistresso » Tue Jan 20, 2009 10:14 am

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.
mistresso
 
Posts: 67
Joined: Sun Feb 24, 2008 11:15 am
Location: New Haven

Re: BPM.tapper [v1.0] - time BPM 's in MM [MM 2 / MM 3 limited ]

Postby Just JP » Tue Jan 20, 2009 9:42 pm

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
Image
Just JP
 
Posts: 151
Joined: Sun Oct 01, 2006 6:53 pm
Location: New Jersey, USA

Re: BPM.tapper [v1.0] - time BPM 's in MM [MM 2 / MM 3 limited ]

Postby DaledeSilva » Tue Jan 20, 2009 10:28 pm

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.

I like that idea.
good one, I will try and incorporate it.

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 will give it a background image that you can replace.


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!

:)
my plugins & skins: http://downloads.oiltinman.com/ ; PrettyPictures [v0.9.2], Forget Crossfade [v1.0], Behind Titlebars [v0.9], Filter Nodes [v1.0.1], View Mode [1.0], BPM.tapper [v1.0]
my folio site: http://www.oiltinman.com
DaledeSilva
 
Posts: 892
Joined: Sun May 28, 2006 4:22 am
Location: Australia

Re: BPM.tapper [v1.0] - time BPM 's in MM [MM 2 / MM 3 limited ]

Postby mistresso » Wed Jan 21, 2009 1:04 am

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.
mistresso
 
Posts: 67
Joined: Sun Feb 24, 2008 11:15 am
Location: New Haven

Re: BPM.tapper [v1.0] - time BPM 's in MM [MM 2 / MM 3 limited ]

Postby Just JP » Wed Jan 21, 2009 9:55 pm

DaledeSilva wrote:
I will give it a background image that you can replace.



Thanks!

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
Just JP
 
Posts: 151
Joined: Sun Oct 01, 2006 6:53 pm
Location: New Jersey, USA

Next

Return to Need Help with Addons?

Who is online

Users browsing this forum: Exabot [Bot] and 6 guests