nordloef wrote:danimal cannon wrote:Since the tempo on LSDJ isn't absolute, it won't match an exact BPM unless its MIDI synced anyways. I often have to do some manual editing to integrate it with traditional recordings
2009-07-25: v3.9.d
* tempo calculation was rewritten to get more precise. new error margin
should be about 0.005%.
If you're using a DAW I think that the DAW might fluctuate more than lsdj.
With the voice of Richard Stallman, "I'd just like to interject for a moment."
LSDj is nowhere near that accurate. It's using a 4096 clock as its tempo base, which is then divided down to the BPM. This means you can set the time between interrupts in increments of about 0.2 milliseconds. The error for the BPM value varies with the BPM. Higher BPM means lower accuracy. However, there is a trick in place to switch between different values on every tick to increase the accuracy. Which increases the accuracy a small bit.
A real world example: 128 BPM is a tempo that divides from the 4096 Hz clock, and is theoretically completely accurate (to the limit of the clock crystal's accuracy.) 129 BPM is a tempo that divides badly from the 4096 Hz clock, and the real world BPM turns out to be 128.805 BPM. This is 0.151% too low. This one of the worst cases. 130 BPM becomes 130.032 BPM, or about 0.0244%.too high. I think Johan may have made a mistake and meant to say that the worst case error is a factor of 0.005, or 0.5% off. That's still fairly good.
Edit: The algorithm seems to be more complicated than I thought, and the accuracy is higher than the calculations above.
Notice how I purposely used the word accuracy instead of precision. Precision is something different than accuracy. LSDj has a relatively bad precision, ie the time between notes may jitter such that the time between each note varies, even if the long term average converges to the 0.5% or smaller error. This is because the CPU may be busy doing other things when a timer interrupt happens. The culprit is typically kits as well high frequency vibrato, and not using these will reduce the jitter. I haven't made any calculations on the actual error from this but might do so in the future.
Last edited by nitro2k01 (Jan 20, 2013 2:36 am)