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 161289 times) previous topic - next topic
0 Members and 1 Guest are viewing this topic.

foo_bpm

Reply #150
Nice. foo_bpm does several (i.e. a configurable number of) passes over the same track. It seems to keep some parameters the same, but varies others. I wonder if this could be done during a single pass over the track.

By the way: foo_bpm 02.4.3 should eliminate further reasons for crashing.

foo_bpm

Reply #151
Thanks, but now i get this error message:
Quote
Failed to load DLL: foo_bpm.dll
Reason: This component is missing a required dependency, or was made for different version of foobar2000.

The libfftw.dll is present in the foobar2000 main directory.
Does it now belongs to another directory? Or is another dll needed now?

foo_bpm

Reply #152
Oops, I forgot to put the libfftw3-3.dll into the archive. Please re-download.

foo_bpm

Reply #153
Thanks

foo_bpm

Reply #154
EpicForever, is this what you meant by multithreaded beat detection?

*deleted, not ready for primetime*

Quote
I wonder if this could be done during a single pass over the track.


What I was thinking is that fraganator's algorithm could be threaded like my component, while still allowing scanning of multiple audio segments per file.

foo_bpm

Reply #155
WOW !! that was a quick bomb. And I see that accuracy is very good. Al least in Trance music - there's no need of halving or doubling BPMs. I haven't tested it on other music yet. I can't compare scanning times directly as your component does not write anything to console

OK, but how about writing values to tags? I can't find them in my files...

foo_bpm

Reply #156
It doesn't write to tags yet, nor to %bpm% titleformat syntax values. Those will be done when its officially made public.

foo_bpm

Reply #157
@mudlord
Wow, what a fast calculation
Unfortunately i tested it with some of my own composed music files (where i know the exact bpm's) and only 1 of 4 was detected with the correct bpm...
(synthpop files)

EDIT: But don't worry: the foo_bpm with default settings has detected all files with halfed or doubled bpm
(with "corrected" settings the half of my files where detected correctly, the other half with doubled bpm...)

foo_bpm

Reply #158
Can't wait for this  I'll still be using foo_bpm for tapping BPMs - it is done nicely there. But it seams that foo_beatit will be my automatic bpm calculation rocket

foo_bpm

Reply #159
Yeah, the algorithm may be fast, but it has faults. SoundTouch also has faults. Personally I haven't tried fraganator's BPM component yet.

foo_bpm

Reply #160
What I was thinking is that fraganator's algorithm could be threaded like my component, while still allowing scanning of multiple audio segments per file.

My impression of fraganator's is that is does the following (for a configurable value of 3):
Code: [Select]
decode -> analysis_1 \
decode -> analysis_2  | -> aggregate
decode -> analysis_3 /

What I think should be possible is:
Code: [Select]
           / analysis_1 \
decode -> |  analysis_2  | -> aggregate
           \ analysis_3 /

I will have to take a closer look at the core algorithm but it was my impression that there are N independent analysis passes over the same data. If you could reduce this as pictured you would get parallel data flow. Of course this could be combined with parallel control flow to allow concurrent processing of multiple tracks.

foo_bpm

Reply #161
I looked at the source, and it does what you describe in your second example (seeks to each portion to be BPM checked, per analysis segment. It doesn't reopen the decoder ), although it should still be threadable (multiple tracks at a time), which still will be a huge improvement.

edit: uploaded a completely untested kissfft class for foo_bpm

foo_bpm

Reply #162
Is bpv 0.2.4.1 the latest update?
After I installed foobar seems unstable (always on startup one random plugin fails to load).
This version looks also pretty old which may be on cause.

foo_bpm

Reply #163
thx so much for this component !
last version was crashing my foobar alot but i can't do without it hope it's now ok



foo_bpm

Reply #166
Probably missing FFTW. Does your download include libfftw3-3.dll?

I made a additional FFT method available to foo_bpm, but I'm not sure if foosion has integrated it, which removes the need for extra DLLs.

foo_bpm

Reply #167
The required DLL for FFTW should be part of the latest release. I started integrating KISS FFT but this is not part of a released version. So far I worked on some regression tests to make the transition as smooth as possible.


foo_bpm

Reply #169
foo_bpm 0.2.4.4

This version uses KISS FFT so the license issue with FFTW is resolved. I implemented a naive wrapper for KISS FFT which means the computation is not as fast as it could be but it is easy to see that the output is in the the same format as that of FFTW. This is subject to change in future versions.

I have also uploaded this version to the official components page so it should be available via the built-in update function.

foo_bpm

Reply #170
This is a brilliant plugin, and I really love it, mostly for the simplicity of the design which makes it open to be exploited by many different workflows.
I like to tap out to confirm bpm myself, but having a baseline bpm presented, the doubling and halving options, and the facts that the dialogs are non-modal allows me to look at the bpm detection list, run manual tap validation whilst playing the original track in foobar (Add in the preview plugin and updating/verifying track bpm is a doddle compared to any other method I've discovered.)
Perfect. I could kiss you.

One thing (surely flattery gets me some points ::grin ) I would like to see added is the ability to update the BPM tags without changing the filedate of the file.  This keeps 'new music' lists reliant on the filedate in order, while allowing the modified date to be updated and trigger rescans in libraries that watch modified date rather than filedate.

This is available as an option in the lyricsgrabber plugin, which is also very useful (in combination with the preview file plugin) for auto tagging lyrics into files.

Even if you do nothing more, I would just like to say a BIG thankyou thankyou thankyou. This is a wonderful, flexible, and fit for task tool.

The bore.

foo_bpm

Reply #171
I just added a bunch of FLAC files to my foobar2K 1.3.2 library. Using foo_bpm 0.2.4.4 I tried to tag the new files and nothing gets written to the files.

I can see the analysis window popup and when I enable the write debug messages to console I can see that the calculation is done... but, again, nothing actually gets added to the file.

I also tried an MP3 file just in case this was FLAC specific but that didn't help.

Any thoughts on what to check next?

Thanks!

foo_bpm

Reply #172
What exactly happens when you click the "Update files" button in the result dialog? Are there any error messages on the console?

foo_bpm

Reply #173
I believe @mneimeyer has set "Writes tags automatically" in BPM analyzer preferences, in which case nothing is written to files, although files are being analyzed.
Unchecking that checkbox is working solution for me.

About operation progress in Windows taskbar icon - it cycles on every analyzed track, instead showing overall progress. I don't know if this is how foobar implements this feature, or component should assign right progressbar for taskbar icon?

foo_bpm

Reply #174
Regarding the progress bar: The component uses the primary progress bar for each track and the secondary progress bar for the whole scan. It would be easy to reverse this in the code. Unfortunately, my computer at home is broken and haven't found the time to fix it and re-install everything.

Added issue on GitHub.