Skip to main content

Notice

Please note that most of the software linked on this forum is likely to be safe to use. If you are unsure, feel free to ask in the relevant topics, or send a private message to an administrator or moderator. To help curb the problems of false positives, or in the event that you do find actual malware, you can contribute through the article linked here.
Topic: foo_bpm (Read 159871 times) previous topic - next topic
0 Members and 1 Guest are viewing this topic.

foo_bpm

Reply #125
GREAT WORK! I registed this ID for support you!

suggest:
It will be better if the BPMs can be normolized between 60~180.(I prefer if the min and max value can be set by user)

Question:
1.Is this component still in development?
2.the default tag name is "BPM", it's wonderful that can be modified by user. I noticed that BPM tags written by iTunes is "TEMPO" and the value is "XXXXX BPM". Which format is most standard?

foo_bpm

Reply #126
So, im using this plugin to add a BPM-tag to my musicfiles : http://wiki.hydrogenaudio.org/index.php?ti...lyser_(foo_bpm)
And i have a BPM-column to show the BPM in my playlist (to the left in the image) - http://s17.postimage.org/r0dfgqu1p/ololol.png

Tho, right now i have to rightclick and select scan for all my files - which is just an OUTRAGE!
I need this to be automated, so how can i tell fb2k to automatically run the file through the BPM-plugin when it gets added to the playlist? (the process should preferably happen in the background, i dont want to be aware of the process).

foo_bpm

Reply #127
Can I ask a question of anyone who has successfully compiled the source for this project?

I have set myself up with the current release of the foobar SDK, an install of WTL80 and the source code for foo_bpm version 0.2.4.1.

I can compile the SDK projects just fine, but I'm finding that foo_bpm gives errors in the ATL_Helper includes - specifically surrounding an ATL macro MSG_WM_THEMECHANGED defined in atlcrack.h

I'm new to component development and ATL, but am experienced in SW development. Is this problem because there is some disparity between the 'version' of ATL required for the current SDK ATL Helpers and the foo_bpm source?

Anyone? I'm tearing my hair out on this...

EDIT: FIXED - needed to define for _WINNT to the correct version - my bad...

foo_bpm

Reply #128
Ok, I just cannot get foo_bpm to link as a DLL from the source code. Has anyone else managed to do this?

foo_bpm

Reply #129
Hi there,

I really love this plugin. I just have two problems. First, I have tried to set up a button to activate this plugin (the button is assigned based on the context menu command), but when I press the button nothing happens!

My second problem is not going to be a big surprise: simply that it doesn’t work for many tracks. Sometimes when I increase the sample size to 15 seconds, or increase the number of samples to 15, it will then work. But many times it doesn’t work even when I increase both fields to 20. Often the tempo will be bafflingly way off (and I'm not just talking about half or double).

Does this plugin detect rhythms at different frequencies? If not, I would suggest that it should. It should scan different frequency ranges for rhythms and compare all of these with each other, rather than just detecting one bpm per sample.

I would also like to suggest that 75 is a bit high for the default minimum BMP. Loads and loads of songs are in the 60BPM range.

One other little suggestion: if you're manually tapping and you miss a beat, this affects the overall BMP for a while. I think the plugin should recognise that if a tap occurs more than 150% later than the currently established interval then this is likely a missed beat and analysis should resume when the next tap is pressed.

Oh, one final thing: this is probably way too advanced for the scope of this plugin, but when you "correct" the plugin and manually set a value by tapping or otherwise, might it somehow be possible for the plugin to then analyse the track, knowing the true bmp, in order to "learn" how to detect BMPs better? Sorry, this is getting a bit too ambitious, probably. Just a thought, anyway!

foo_bpm

Reply #130
One more thing to add to my above post…

I would love to select whole albums and let this plugin work out the BPMs for every track… but I’d be worried that this information might not be accurate. Let’s face it, many of the songs would have the wrong BPM.

One solution (perhaps) is this… when the plugin finds the BPM of a track, is it possible for it to also return a value for how “certain” it is of the BPM? So 95% means it is almost certain the BPM is correct, whereas 20% means the plugin struggled to find a clear BPM and it may be wrong. If this value is (optionally) written to another tag, then the user could review these afterwards and may decide to check over the ones with low scores. Or, the option could be to simply add a tag “BPMuncertain = 1” when this certainty is below a specified percentage. Or, optionally, it simply does not write BPM tag data for any results when the certainty is below a specified percentage?

Just a few ideas. Thanks for the plugin!

foo_bpm

Reply #131
One more thing to add to my above post…

I would love to select whole albums and let this plugin work out the BPMs for every track… but I’d be worried that this information might not be accurate. Let’s face it, many of the songs would have the wrong BPM.

One solution (perhaps) is this… when the plugin finds the BPM of a track, is it possible for it to also return a value for how “certain” it is of the BPM? So 95% means it is almost certain the BPM is correct, whereas 20% means the plugin struggled to find a clear BPM and it may be wrong. If this value is (optionally) written to another tag, then the user could review these afterwards and may decide to check over the ones with low scores. Or, the option could be to simply add a tag “BPMuncertain = 1” when this certainty is below a specified percentage. Or, optionally, it simply does not write BPM tag data for any results when the certainty is below a specified percentage?

Just a few ideas. Thanks for the plugin!


Wouldn't that be like... Metametadata?

foo_bpm

Reply #132
Hi, At the risk of seeming a bit clueless i wanted to ask about foo_BPM's compatibility with foobar v1.1.13 or v1.1.18. I tried installing it, then tried just putting it in the component director etc and every time when i start up foobar it gives me this:

Failed to load DLL: foo_bpm.dll
Reason: This component is missing a required dependency, or was made for different version of foobar2000.

soooo, i see people are still posting in 2012 so still using it (perhaps on older versions of foobar? hopefully not); is this a known issue? (with a known fix?).

Any thoughts on this would really be appreciated as I love foobar (and there don't appear to be any other options for analyzing the bpm for OGG or FLAC).

Cheers,

-Gaiko

foo_bpm

Reply #133
Thank you to the developper

foo_bpm

Reply #134
Hi, At the risk of seeming a bit clueless i wanted to ask about foo_BPM's compatibility with foobar v1.1.13 or v1.1.18. I tried installing it, then tried just putting it in the component director etc and every time when i start up foobar it gives me this:

Failed to load DLL: foo_bpm.dll
Reason: This component is missing a required dependency, or was made for different version of foobar2000.

soooo, i see people are still posting in 2012 so still using it (perhaps on older versions of foobar? hopefully not); is this a known issue? (with a known fix?).

Any thoughts on this would really be appreciated as I love foobar (and there don't appear to be any other options for analyzing the bpm for OGG or FLAC).

Cheers,

-Gaiko


You need this file: "libfftw.dll" inside your foobar2000 directory. Not inside "components" folder but inside main program directory - alongside with foobar2000.exe, uninstall.exe and few other DLLs.  This file should be bundled in zip file with foo_bpm.dll.

foo_bpm

Reply #135
Hello,
great tool, but please let file modification timestamp unchanged?
what i mean is.
1. save then "file modified timestamp". Info MSDN
2. change and save the tag "bpm" in the audio file.
3. restore the saved "file modified timestamp".Info MSDN
Thanks in advance

foo_bpm

Reply #136
the component most likely uses the foobar core to tag files. and i'm almost certain that will never do what you're asking.

Leaving the file modification date untouched when updating a file does not make any sense. Doing so would violate Windows conventions. It is intended to keep track of the last time a file has been changed, and nothing else.


you may cite other programs that do it but the likely response will be to go and use those instead.

foo_bpm

Reply #137
Is there a light of hope that this plugin will be still developed? It crashes way to often and it doesn't benefit from multithreading... it is so slow nowadays...
Especially crashes occur when for example FLAC stream is corrupted even if audio MD5 is OK.

foo_bpm

Reply #138
from the developer's profile page...

Quote
Last Seen: 18th May 2012 - 01:52



foo_bpm

Reply #139
Well, he has left the sources, maybe someone else with programming skills would be able to help... Ah, again I can only ask question "why I am not a programmer but sound engineer instead" - more work, better salary, possibility to handle own computer problems using own plugins/apps... Eh...

foo_bpm

Reply #140
Quote
Is there a light of hope that this plugin will be still developed? It crashes way to often and it doesn't benefit from multithreading... it is so slow nowadays...
Especially crashes occur when for example FLAC stream is corrupted even if audio MD5 is OK.


Elaborate.

foo_bpm

Reply #141
The crashes probably come from the complete lack of exception handling in the worker thread. I couldn't sleep so I gave this a little overhaul. You can get foo_bpm 0.2.4.2 on GitHub.

It shouldn't crash anymore for those damaged FLAK files. There should be an error message in the console instead.

foo_bpm

Reply #142
Thanks for this update
Are you planning to offer it on the official components page at foobar2000.org so it could be easily updated through Preferences/Components in foobar2000?
(I ask because i maintain the component links at the german foobar-users forum and possible further updates can be more easily found at the components page )

foo_bpm

Reply #143
Thanks foosion a lot !!
And thanks mudlord for bumping

In addition: I tried old trick with running 2 separate BPM analysis for 2 diffferent ranges of files. Result is as it was in most cases in the past... Crash.

foo_bpm

Reply #144
I cannot reproduce that, EpicForever. Which settings do you use? Does it happen only with specific file formats?

 

foo_bpm

Reply #145
AFAIK fftw_plan_r2r_1d() and fftw_destroy_plan() are not guaranteed to be thread-safe.

foo_bpm

Reply #146
I use foo_bpm for various MP3 (mostly webshops encoded 320kbps) and FLAC files (my own CD-DA rips, WEB WAV -> FLAC transcodes).  It happens to all of them. Most noticeable crashes occured for example on some slightly corrupted FLAC streams (where stream itself was corrupted, but audio was OK accordingly to MD5).

My settings:


Most probably taken from forum and tweaked a bit.

foo_bpm

Reply #147
AFAIK fftw_plan_r2r_1d() and fftw_destroy_plan() are not guaranteed to be thread-safe.


In that case, change to something that is, like KISSFFT or ooura.
I was working on my own beat detection plugin as a replacement to this, seems thats no longer needed.
I suppose I could implement fraganator's BPM algorithm, too.

foo_bpm

Reply #148
In that case, change to something that is, like KISSFFT or ooura.
I was already considering this, given that FFTW is licensed under the GPL.

I was working on my own beat detection plugin as a replacement to this, seems thats no longer needed.
I'll only do technical maintenance on foo_bpm. I am not interested in tweaking the algorithm. So feel free to fork my foo_bpm repo on Github. I could also give you push rights.

foo_bpm

Reply #149
In my own component, I have two different algorithms, one from SoundTouch, another from another source. Since fraganator's algorithm is under the WTFPL, I suppose I can implement that, too.

My component is 100% multithreaded, so it computes files just like how the official ReplayGain component does threading. (each song has its own worker thread)