Hacker News new | ask | show | jobs
by acconrad 3617 days ago
As a DJ, a few requests on an amazing start:

- sort by Key - sort by BPM - move the song dragging it (need to line up by the kick) - cue points

1 comments

I'm looking into bpm detection and cue points are on each player (they just might be hidden on a small screen). Will look into key and dragging the waveform.

Thanks for the feedback.

Do you have any leads on bpm detection? I tried doing it in Python a while ago for a project and the library I used was always 5-10bpm off...
There was a nice article on the beatport tech blog. I didn't manage to find it when I searched yesterday. Basically what they suggested was applying a low pass filter to isolate the base drums, then count the most common intervals between peaks (basically some kind of transformation) and then reconstruct the BPM from there by applying a range from 80-160 or similar. Hope this gives you a rough idea.

I implemented and tested it and it worked quite well with electronic music.

Thanks! Was it this one? http://web.archive.org/web/20160304012151/http://tech.beatpo...

(no longer on the beatport site; tech.beatport doesn't seem to exist any more and the current beatport blog starts at 2015)

Yeah that's the one, I was looking at this post that uses Spotify and echonest too https://jmperezperez.com/bpm-detection-javascript/
Exactly, this one. :)

I wanted to try it with another transformation to see if it can achieve better results.

I did find this too, it's the same library used by most DJ software: https://www.sonicapi.com/docs/api/analyze-tempo

Works pretty well but requires to upload a file, then process it to get the BPM. So you would need smaller audio samples as the soundcloud stream is too big and takes ages.

Total shot in the dark but I don't suppose it was reading a 44.1kHz file at 48kHz or the other way round?
I don't know how often the data is present, let alone correct, but iirc the SoundCloud API lists bpm as a field in the track data. Might be worth a look if you haven't already.