2022-07-13 12:03:05 -04:00
|
|
|
|
<h2>Stretching</h2>
|
2022-07-11 16:44:32 -04:00
|
|
|
|
|
2022-07-13 12:03:05 -04:00
|
|
|
|
<p>
|
|
|
|
|
When you load an audio clip into a trigger slot, Ardour applies some
|
|
|
|
|
heuristics to estimate its temo in beats per minute. If neither the file
|
|
|
|
|
name nor the metadata specify it, Ardour will use
|
|
|
|
|
<a href="https://github.com/breakfastquay/minibpm">minibpm</a> to analyze
|
|
|
|
|
the file assuming it has a fixed tempo.
|
|
|
|
|
</p>
|
|
|
|
|
|
|
|
|
|
<p>
|
|
|
|
|
After estimating the tempo, Ardour will enable stretching for the clip
|
|
|
|
|
to make it match session's bpm at any given time. This means that should
|
|
|
|
|
session's tempo change over time (in either ramped or constant mode),
|
|
|
|
|
Ardour will re-stretch all audio clips to accomodate for that.
|
|
|
|
|
</p>
|
|
|
|
|
|
|
|
|
|
<p>
|
|
|
|
|
Disabling stretching when original clip's tempo doesn't match that of the
|
|
|
|
|
session will most of the times make the clip audibly go out of sync with
|
|
|
|
|
the beat.
|
|
|
|
|
</p>
|
2022-07-11 16:44:32 -04:00
|
|
|
|
|
|
|
|
|
<p>Stretch modes:</p>
|
|
|
|
|
|
2022-07-13 12:03:05 -04:00
|
|
|
|
<p>
|
|
|
|
|
Once stretching is enabled, you have several options how to apply it:
|
|
|
|
|
</p>
|
|
|
|
|
|
2022-07-11 16:44:32 -04:00
|
|
|
|
<ul>
|
|
|
|
|
<li><dfn>Crisp</dfn> works best for sounds with fast onset like drums and percussion</li>
|
|
|
|
|
<li><dfn>Smooth</dfn> is best used for sustained notes like pads</li>
|
|
|
|
|
<li><dfn>Mixed</dfn> is for anything in between</li>
|
|
|
|
|
</ul>
|
|
|
|
|
|
|
|
|
|
<h2>BPM</h2>
|
|
|
|
|
|
2022-07-13 12:03:05 -04:00
|
|
|
|
<p>
|
|
|
|
|
This is where Ardour displays the estimated tempo rounded to the closest
|
|
|
|
|
integer. You can progressively divide or mutiply by two whatever Ardour
|
|
|
|
|
thinks is the original tempo.
|
|
|
|
|
</p>
|
|
|
|
|
|
|
|
|
|
<p>
|
|
|
|
|
Supposing, session's tempo is currently 120bpm and original clip's tempo
|
|
|
|
|
is 90bpm. Stretching the clip to match session's tempo will make it sound
|
|
|
|
|
faster that it originally is.
|
|
|
|
|
</p>
|
|
|
|
|
|
|
|
|
|
<p>
|
|
|
|
|
If you divide the estimated clip's tempo by 2, you get 45bpm. Stretching it
|
|
|
|
|
back to 120bpm will make it sound faster. And multiplying the original
|
|
|
|
|
clip's tempo by 2 will make it 180bpm. Stretched down to 120bpm, the clip
|
|
|
|
|
will sound slower than it originally is.
|
|
|
|
|
</p>
|
2022-07-11 16:44:32 -04:00
|
|
|
|
|
|
|
|
|
<h2>Clip Length</h2>
|
|
|
|
|
|
|
|
|
|
Measured in beats. Affects the bpm. FIXME
|
|
|
|
|
|
|
|
|
|
<h2>Length in Bars</h2>
|
|
|
|
|
|
|
|
|
|
<p>It’s a hint to help you counting. FIXME</p>
|
|
|
|
|
|
|
|
|
|
<p>1) when a file is loaded, we infer its bpm either by minibpm's estimate, a flag in the filename, metadata (TBD) or other means</p>
|
|
|
|
|
|
|
|
|
|
<p>2) we assume the clip must have an integer number of beats in it (simplest case is a one-bar loop with 4 beats in it)</p>
|
|
|
|
|
|
|
|
|
|
<p>3) ...so we round to the nearest beat length, and set the tempo to *exactly* fit the sample-length into the assumed beat-length</p>
|
|
|
|
|
|
|
|
|
|
<p>4) the user may recognize a problem: "this was a 3/4 beat, which was rounded to 4 beats but it should have been 3"</p>
|
|
|
|
|
|
|
|
|
|
<p>5) if the user changes the beat-length, then the tempo is recalculated for use during stretching</p>
|
|
|
|
|
|
|
|
|
|
<p>6) someday, we will also allow the sample start and length to be adjusted in a trimmer, and that will also adjust the tempo</p>
|
|
|
|
|
|
|
|
|
|
<p>7) in all cases the user should be in final control; but our "internal" value for stretching are just sample-start and BPM, end of story</p>
|