4

Apparently "beat songs" do not have constant tempos throughout the song... For example, they may vary between 125 to 130 beats per minute. Is there a way to make them "beat" at a constant and exact rate (e.g. exactly at 130 throughout the whole duration of the song)? Second, is there an open-source way to do this?

According to https://superuser.com/questions/129041/any-beat-detection-software-for-linux, some time ago there was the BpmDj project, but now it seems abandoned and I cannot get it to work. It seems unrelated to what I want to do, but it could help me.

Edit (after being enlightened by Warrior Bob)

It seems audio technology has evolved a lot last years. Ableton defines this "beat-matching with metronome" (or time streching) as "warping". I tried the "non-beat" "boxer of Simon & Garfunkel" with Ableton. I was amazed of how accurately it finds the beats/tempo. I "warped" it in about 1 hour reading one simple manual page and watching some demonstrating videos. I suppose an experienced user could do it in even (quite) less than 10 minutes. Last, this is also possible with BitWig Studio and it runs natively in Linux so I'll probably stick to BitWig!

3

Broadly speaking, the technology you're looking for is called "timestretching" and specifically something that can stretch time to a musical time grid. Timestretching usually connotes changing time while making an attempt to preserve pitch and texture; that is to say, the audio doesn't pitch up and down as it's sped or slowed.

The go-to answer for this is usually Ableton Live, which is DAW software that advertises an easy-ish way to do this as a flagship feature. I believe most major DAWs can do this now, though (off the top of my head Bitwig Studio and I believe Logic and Reaper can all do it).

I am unaware of any open-source tool with this feature, but I'm sure someone has something somewhere. Most of the commercial packages license zplane's elastique algorithms but I'm sure someone's implemented something conceptually similar. The open-source DJ software Mixxx has some sort of change-speed-while-keeping pitch feature, so perhaps someone's leveraged the same tools?

  • If someone knows of a good open-source timestretching tool, please feel free to edit that into my answer. – Warrior Bob Jan 6 '15 at 22:01
  • An open-source time stretching library is rubber band (I haven't tried it yet, though). – leftaroundabout Jan 9 '15 at 13:18
5

It's a little tricky, but in Audacity you can use the "Sliding Time Scale / Pitch Shift" effect (in the Effect menu).

4

I don't know about free or open source. Ableton does this. It usually works or you can adjust the result of the algorithm's guess fairly easily. It was a pioneer in this in the last decade or so, but most major DAWs now have some of this functionality.

3

I created a small program in Python that does beat alignment. You may want to take a look: https://github.com/smiszym/tempoligner

It's not perfect; probably usable just for simple cases. It doesn't do beat detection - you need to mark beats manually in Audacity. Yet it's free, easy to use and worked for my needs.

2

This can be done easily in FL studio as well. not open source but they have demo versions of their software that includes the time stretching feature. Both FL studio and Logic do this very nicely with different types of beat-matching to choose from --Options to change pitch or not when time stretching etc.

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service, privacy policy and cookie policy

Not the answer you're looking for? Browse other questions tagged or ask your own question.