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

foo_bpm

Reply #101
I hope to return to foo_bpm in a month or so, but for now I'm on a break as per doctor's orders

foo_bpm

Reply #102
Now to make this component real useful, what we need is a crossfading plugin for foobar that uses the BPM data to determine how to most smoothly crossfade between tracks.  This combination would be great.

foo_bpm

Reply #103
Now to make this component real useful, what we need is a crossfading plugin for foobar that uses the BPM data to determine how to most smoothly crossfade between tracks.  This combination would be great.

YESSSSS!!!!!!!!!!!!!!! That would be so cool. I know iTunes has it.

Well... and a key-detector and a good implementation of moodbar or something similar  Maybe even something Moodagent-like.

And finally a rule-based playlist generator that can put tracks in proper order to ensure key/bpm/mood to be consistent all way through.
Can't wait for a HD-AAC encoder :P

foo_bpm

Reply #104
Well, i would like to see such a crossfader that could persuade me that a origin human accomplishment like mixing could be replaced by a automatical procedure - but i am sure that won't happen. I can imagine that synchronicity between the ending of a track and the beginning of another could be achieved. But wouldn't it then be just a boring gimmick? For mixing rock songs the usual crossfader is good enough and mixing electronic music with a bpm-determined crossfader will surely make us to laugh.

foo_bpm

Reply #105
Well, i would like to see such a crossfader that could persuade me that a origin human accomplishment like mixing could be replaced by a automatical procedure - but i am sure that won't happen. I can imagine that synchronicity between the ending of a track and the beginning of another could be achieved. But wouldn't it then be just a boring gimmick? For mixing rock songs the usual crossfader is good enough and mixing electronic music with a bpm-determined crossfader will surely make us to laugh.

It will never be nearly as good as a human mixer, but for casual electronic music listening it could be pretty cool in addition to a generic crossfader. However, with radio edits, rock, pop or other unmixable content, a bpm-aware crossfader could still come in handy, to ensure that the first beat of the mixing track wits with the last beat of the fading track. Sometimes, when using Continuator, a new track laps in too quickly.

Also my proposal for a way to make automatic playlists could simply be a helper for DJ's to find good mixable songs for their manual sets.
Can't wait for a HD-AAC encoder :P

foo_bpm

Reply #106
I hope to return to foo_bpm in a month or so, but for now I'm on a break as per doctor's orders

When u do, first thing should be fixing this crash... if the flac file is corrupt it crashes foobar. 

foo_bpm

Reply #107
It will never be nearly as good as a human mixer, but for casual electronic music listening it could be pretty cool in addition to a generic crossfader. However, with radio edits, rock, pop or other unmixable content, a bpm-aware crossfader could still come in handy, to ensure that the first beat of the mixing track wits with the last beat of the fading track. Sometimes, when using Continuator, a new track laps in too quickly.

Also my proposal for a way to make automatic playlists could simply be a helper for DJ's to find good mixable songs for their manual sets.



Speaking of continuator, I noticed that the newest version is 0.6.1.  Is that compatiable with fooobar 1.0?  Also, where can you download this version.  I can only find very old 4.0 versions.  Thanks.

foo_bpm

Reply #108
I've never used a bpm meter before but i installed this one just for fun. And it is fun . Here are my findings while playing with it:

- the manual tap works on button release. I think it would be better it works right away on button press.
- maybe create an option for seperate automatical tags and manual tags
- it gets confused by almost all Katie Melua songs (some are too slow and all are lacking good reference beats, i guess)

foo_bpm

Reply #109
To celebrate my almost complete recovery, I'm back in the programming saddle and have released version 0.2.4.1. It fixes a few bugs, and adds a context menu for halving/doubling BPMs. Hopefully some more exciting features will be added in the coming weeks!

Quote from: Mark7 link=msg=0 date=
- the manual tap works on button release. I think it would be better it works right away on button press.

Great suggestion, I wouldn't have picked up on it otherwise.


foo_bpm

Reply #111
Hey fraganator,

First off, this is brilliant software, and it almost always agrees with the tempo I hear on a track. Sometimes, of course, it'll report a BPM twice what I think is the BPM for dancing purposes, but for a lot of tracks the tempo is subject to interpretation anyway. What you hear as 200 BPM I may hear as 100 BPM. Kinda depends how you want to dance to it. If you're looking at disco or house, say, there isn't much ambiguity about the tempo in the boob-boom-boom rhythm line. When you get into more complex rhythms, you can have rhythmic stuff going on at, say, 100 BPM and within that at 200 BPM, and as a dancer you could focus on either one or the other, or mix it up. If you're always dancing within a range of 80-120 BPM it's an easy call, and you've provided for that.

I'm DJ'ing for blues dancing, which is a very inclusive scene, musically and dancewise. We play music with tempos ranging from about 50 to 200 BPM, though of course you're doing much different stuff at 200 than at 50. With that kind of range, reasonable people might sometimes differ on whether the dominant rhythm for some track is at 100 or 200. I'll sometimes resort to assigning a BPM of "100+" to a song that feels to me mostly like 100 BPM, but that's busy enough that you could find a 200 BPM tempo in it, if that's where you want to go. Or correspondingly "200-". When things are ambiguous, I generally listen for a recognizable backbeat and figure that it counts as the second of two beats. There can still be sort of secondary backbeats between those beats, but at least it's a start.

Now, it isn't a whole lot of trouble for us to decide if our notion of the tempo is half, same or twice the BPM reported by foo_bpm, and it's great that you include the option to easily adjust BPM's accordingly. But if you really want foo_bpm to guess right more often, I'd suggest trying to distinguish backbeats from downbeats, to come up with the BPM that'll mostly match what people hear as the tempo.

I'm not going to attempt to understand your algorithm for identifying beat patterns, but I think it may be fairly straightforward to distinguish backbeats from downbeats. When you hear a boom-chk-boom-chk rhythm in popular music, the downbeat "boom" is generally laid down by the kick drum and/or bass, while the backbeat "chk" will generally be a sharper sound from, say, a snare or small tom-tom. Or comparable electronic instruments. I've been messing around with some parametric filters, and in most of the music I've tried those on you can generally capture the downbeats using a bandpass filter centered around 50-60 Hz, or a low pass filter that's down about 10dB at 200 Hz. You can typically isolate backbeats with a bandpass filter centered at about 500 Hz, dropping out the deeper downbeats as well as any cymbal beats, which can be very regular but which don't necessarily correspond to either downbeats or backbeats. So if you really want to invest the effort, you could try applying those filters and look for alternating downbeats and backbeats. Then see if a revised version of foo_bpm reports the tempo you hear more often than the current one.

Thanks very much for this component, and have fun widdit,
Drew

foo_bpm

Reply #112
Hi Drew,

Thanks for the great post. I know exactly what you're talking about with dominant/backbeats in music. I've been listening and DJing with a lot of dubstep recently and the tempo is either 70 or 140 bpm depending on how busy things sound, but there's always a snare or clap on every second beat if you 'listen at' 70 bpm. Same goes for drum'n'bass which can either be 85 or 170 bpm depending on how you want to hear or dance to it.

I like you idea of filtering the input to try and capture the backbeat. Currently the algorithm tries to weight the sound similarly to how we perceive it, with higher frequencies receiving a higher weight (up to the frequency that is half of the FFT window size). A second or alternative filter like you've suggested could be added in there. I'll have a look into it

foo_bpm

Reply #113
This is a great component, but I am trying to understand its utility with foobar.  Without a crossfading plugin that uses the BPM data to crossfade between tracks, what value is there to assigning a BPM tag to a track.  I guess you can attempt to play songs consecutively which have similar BPM tags in an attempt to make smooth transitions between songs.  Otherwise, I do not understand the value of this tag.  Am I missing something?

foo_bpm

Reply #114
I think I found another bug--this forum seems really quiet though so i don't know if there are any further updates on this.

I set my foobar to detect the BPMs of two albums, and as the process was running I went through and cleaned up all of the tags. When the BPM analysis finished, I wrote the BPM data to the tags, but it also reset all my tags to what they were when I started cleaning the files! and now I have to go through and clean up all the tags again.

foo_bpm

Reply #115
Also my proposal for a way to make automatic playlists could simply be a helper for DJ's to find good mixable songs for their manual sets.


This !!! I'm holy about tagging genre as well as new field subgenre, helps me string together potential sets using autoplaylists, random pools and playlist tree mod based on genre/subgenre/rating then dropping the tweaked playlist into traktor, in about 25% of the cases the bpm is detected correctly however I have to redetect within traktor (to 3 decimals!) to get the beat grids lined up for my 4/4 deep house sets.

It's starting to pay-off, foobar is the shit!


foo_bpm

Reply #117
Thanks for a great plugin.

Would it be possible to rewrite it to scan multiple items at one, similar to ReplayGain?

This would take advantage of multicore processors.

 

foo_bpm

Reply #118
Impressive plugin, seems to work fine except for one thing, I cant read the BPM tag it makes in Windows 7.  I can see it in the player, but not in windows.

Ive tried changing the tag it writes to Beats-per-minute as thats what it says in windows, but that didnt work and there isnt a tag simply called BPM to choose.  Thing is, some of my tunes already have Beats-per-minute tags that do show up in the field in windows, but the only way I can make it appear there is by right clicking the mp3, going properties and manually putting it in.

Am I doing something wrong? Thanks a lot.

foo_bpm

Reply #119
First, thank you very much fraganator for filling this important niche with a very nice implementation!  I noticed that tempo influences me a lot on certain gym equipment, so I installed it to build playlists with consistent tempos - not as glamorous as DJing, but personally very gratifying.

When tagging hundred songs, you're faced with a large BPM Analysis Results list to verify whether to double/halve before writing the tags to file.  I wonder if this results window could be a little more flexible?  My first impulse is to sort by BPM, so that I can visually skim the track names to find any outliers compared to their neighbors.  This way I wouldn't have to read the BPM and track name of every row, only for tracks that stand out.  Also, if it's easy to add window resizing/maximizing, that might be useful. 

As it is, I'm updating the file tags as-is, then verifying them in the main GUI.  I've added the BPM column into the main GUI and sorted by it.  Along with a quick visual check (What is  and I'm now playing from fastest to slowest, using the builtin crossfader DSP with a large (4+sec) overlap and checking songs one by one. 

Again, thanks!

foo_bpm

Reply #120
Hi guys, I'm new to all thing foo and am currently clambering up that learning curve to get things set up as I want them. Loving it so far. Wish I had made the switch a long time ago!

Anyway, first off, let me thank fraganator for all his hard work. And secondly, give you all some results from a little playing around I've done.

I used the two Lily Allen albums to test. No reflection on my musical tastes, they were just the first thing I thought of that had varied BPM and some possible troublesome tracks.  FLAC files with f00_bpm, and ALAC with beaTunes.

Code: [Select]
Track                           Manual | beaTunes     | foo_bpm                          | foo_bpm
                                1      | 2      3     | 4     5      6      7      8     | 9
---------------------------------------|--------------|----------------------------------|--------
Smile                           95.6   | 95.3   95.3  | 190   190.3  95.1   95.4   95.5  | 95.5
Knock 'Em Out                   130.5  | 64     128   | 159   159.6  159.6  159.9  64    | 64
LDN                             100.5  | 50.1   100.1 | 100   99.6   99.6   100    100   | 100
Everything's Just Wonderful     157.7  | 79     79    | 79    78.7   78.7   78.9   79    | 79
Not Big                         102.6  | 51     102   | 102   101.7  101.7  101.9  101.9 | 101.9
Friday Night                    128.9  | 63.8   127.6 | 127   127.1  127.1  127.5  63.8  | 63.8
Shame for You                   74.3   | 74     74    | 147   147.5  73.8   147.9  74    | 74
Littlest Things                 82.7   | 82     82    | 82    81.7   81.7   81.9   82    | 82
Take What You Take              100.4  | 100    100   | 100   99.7   99.7   99.9   100   | 100
Friend of Mine                  82.6   | 164    82    | 163   81.7   81.7   81.9   82    | 82
Alfie                           120.3  | 120    120   | 120   119.5  119.5  119.9  120   | 120
                                       |              |                                  |
Everyone's At It                117.1  | 117    117   | 78    116.6  116.6  116.9  116.9 | 116.9
The Fear                        134.2  | 67     134   | 89    133.5  133.5  133.9  133.9 | 133.9
Not Fair                        121.7  | 121.5  121.5 | 121   121.1  121.1  121.4  121.4 | 121.5
22                              131.2  | 131    131   | 75    130.5  70.8   130.9  65.5  | 65.5
I Could Say                     124.8  | 124    124   | 124   123.6  123.6  123.9  62    | 62
Back To The Start               140.3  | 70     140   | 140   78.6   70.0   70.1   70    | 70
Never Gonna Happen              71.9   | 71.5   71.5  | 142   142.5  142.5  142.9  142.9 | 142.9
Fuck You                        130    | 130    130   | 129   129.5  129.5  129.9  65    | 65
Who'd Have Known                85.2   | 84     84    | 84    83.7   83.7   83.9   84    | 84
Chinese                         72.3   | 143    71.5  | 95    95.1   71.3   142.9  142.9 | 142.9
Him                             96.3   | 96     96    | 191   95.7   95.7   95.9   96    | 96
He Wasn't There                 70.8   | 70.7   70.7  | 76    76.1   75.9   141.3  141.6 | 141.3    
---------------------------------------|--------------|----------------------------------|--------



1. Manual Tap. I use the underlying tempo. What I consider to be the head nod, foot tap, shake that arse beat that people would use. This defo gives better results when used in smart playlists. As has already been pointed out, you often need to double up, or halve the suggested BPM.

2. beaTunes, Rayshoot, auto range, highest quality, don't use online resources. This is spot on apart from the need to double/halve some tracks.

3. beaTunes. As above but with a range of 70-140 bpm. Even better results. Only "Everything's Just Wonderful" needs changing, and that's down to personal preference.

4. foo_bpm with default setting, 6 tracks are way off.

5. As above but with precision set to 1 decimal place. This is better, only 4 are off.

6. As above, with a range of 70-160 bpm. Only 3 off now

7. Next I doubled the seconds per sample and samples per song up too 20 each, and halved the FFT size to 1024. Only 1 wrong now, the troublesome "Knock 'Em Out"...

8. Fiddled around with lots and lots of small changes. Many of them fixed the problem track, but broke others. The above config, with Seconds per Sample up to 30, Min Sample Offset down to 10%, Max Sample Offset up to 90%, and Min BPM down to 60 finally gave a result I can live with.

And finally, I decided to check out performance with lossy files. beaTunes with AAC .75 VBR and LAME -V0 worked well. Identical results as test 2, so no point adding them to the chart.

9. foo_bpm, same config as test 8, AAC .75 VBR. Virtually identical results. I'll forgive one or two tenths of a beat in a couple of files

10. As above, with LAME -V0 files. Same results as test 9, so won't bother adding them to the chart.


Conclusion: It's looking very promising but is a bit too much like hard work at the mo. Whatever beaTunes are doing works for me. Just wish I didn't have to transcode to ALAC and back.


foo_bpm

Reply #121
anyone know a foo_run command that would scan the bpm of every track that is played, because it crashes if i try t oscan large batches

foo_bpm

Reply #122
Twitch29, thank you very much for your insightful post!

The information you provide makes me wish Foobar2000 and/or foo_bpm could use both cores of my CPU... ;-)

Hi guys, I'm new to all thing foo and am currently clambering up that learning curve to get things set up as I want them. Loving it so far. Wish I had made the switch a long time ago!
[...]
Conclusion: It's looking very promising but is a bit too much like hard work at the mo. Whatever beaTunes are doing works for me. Just wish I didn't have to transcode to ALAC and back.


foo_bpm

Reply #123
Hey Twitch29 (and anyone else interested):
As of the latest version of beaTunes, they've added partial OGG and FLAC support. It's only partial because their miniplayer is a little dodgy, but the analysis tools (to include BPM analysis) work just fine. To wit: http://help.beatunes.com/discussions/quest...ac-support-mean

foo_bpm

Reply #124
I did many tests. I got the best results with the following parameters :

Seconds per sample : 30
Samples per track : 6
Sample offset min : 33%
Sample offset max : 67%
BPM min : 75
BPM max : 180
FFT Window : gaussian
FFT size : 256

I compared the results with the EXACT bpm of multiple tracks. I used the graphic vizualisation of FL Studio and checked if peaks stayed on the grid.