Initial beats calculation..

Hi again.
Just wondering how everest determines the initial number of beats that a pasted loop runs for.
Ie. I started with a fresh everest, pasted in an initial wav file (say 16 beats long), and everest decided that it runs for 15 beats.
A nice integer divisble length such as four, eight or sixteen would have been ideal, given that fifteen makes for an awkward quantisation when now trying to record a half length loop along side the pasted wave.


  • Thanks for the note Troy. Here is some background on the current behavior:

    Everest sets it's tempo on quarter-note-scoped sample lengths. This is what enables Everest to have perfect sample-accurate sync without any time stretching. While this makes for super-tight synchronization, it has limitations, especially when interacting with other tempos and beat quantum from other apps.

    In practice, when Everest sees a new loop, with no master tempo set, it tries to determine a tempo from the length of the sample. If the sample is long, it tries to determine a tempo above 60 BPM by dividing the loop into successively higher powers of two. In other words, if the entire loop is too long (i.e. less than 60 BPM), then it will cut the beat length in half. If it is still too long it will repeat this algorithm till the tempo is faster than 60 BPM.

    The problem is that while all long samples recorded in Everest are forced to be an even multiple of the base sample beat, loop sample lengths _pasted_ into Everest are not necessarily evenly divisible by a power of 2 at every step of the algorithm. This leads to a quantization error of sorts; Everest simply can't divide these intermediate numbers by two without potentially losing a sample at each step.

    This is most likely what you are seeing. I was able to duplicate this behavior on my phone, esp. when using apps that I know are not performing any kind of quantization on samples to some integer BPM.

    Barring me altering the algorithm (which is a valid possibility for paste) there are some current work arounds:

    Everest prefers short samples to set the initial master tempo. When importing samples from another project try importing a 1/4 note sample first, then the longer one. The longer sample can then be synchronized by editing the length AND turning on length quantization in the settings menu.

    It may also help to export a short recorded-in-everest sample into your other app, then record new loops in the sibling app to that everest-exported tempo. This may force the other app to use a sample accurate 1/4 note beat length that Everest can work with.

    Another possibility in the future would be allow an expert user to pre-set an integer tempo. This _could_ then forcibly truncate (by usually only a few samples) incoming samples to match the set tempo.

    If I think of any other work arounds or possible improvements I will post them here. Also, let me know if any of the above works for you.
Sign In or Register to comment.