Sox Cheat Sheet
Note double dashes, even on single-letter parameters:
sox --i file.wav # get info sox in.wav out.wav trim 48000s 48000s # out.wav is in.wav trimmed to [48000;96000] samples # note that in.wav and out.wav cannot be the same file!
Copy samples [48000;96000] to [0;48000] using two temporary files:
sox input.wav tmp1.wav trim 48000s 48000s sox input.wav tmp2.wav trim 0s 48000s sox tmp1.flac tmp2.flac output.wav
Remove DC offset using highpass filter:
sox input.wav output.wav highpass 10 # 10 Hz, 12dB/octave
Sample-Accurate Editing with Audacity
When exporting loops from a DAW such as Ableton Live, glitches may occur when either unsynchronized sample loops or unsynchronized time-varying effects are used. For example, Ableton effects such as Chorus or Reverb that uses Spin or Chorus will often result in imperfect loops. To obtain glitch-free loops, we can either ensure that we only use time-invariant effects such as delay, or we can fix the loop in post-processing.
Looping Using Sync Point
If a looped waveform has a point where all loops are audibly the same, for example a point with complete silence, we can use this point to loop the waveform perfectly. We call such a point a sync point.
We want to create a glitch-free loop from a waveform that has a sync point. The input waveform must at least contain a full loop followed by the part until the sync point.
We create the glitch-free loop by copying from the start of the second loop to the sync point to the start of the first loop.
In this example, we assume that there is a sync point after exactly 2 beats. We then want to copy the first 2 beats of the second loop to the first 2 beats of the first loop. We need the input waveform to contain at least 2 beats more than a full loop.
Example, assuming a sample rate of 44100 smp/s:
loop tempo : 140 BPM beat_duration(140): 18900 smp loop length : 24*4 beats = 24*4*60*44100/140 smp = 1814400 smp 2 beats length : 2*18900 smp = 37800 smp
To be specific, we want to copy the range [1814400;1814400+37800] to [0;37800].
We manually enter the selection and copy:
Selection Start: 1814400 samples Length : 37800 samples
Then change the selection:
Selection Start: 0 samples Length : 37800 samples
And paste. We can finalize the loop by selecting [0;1814400]:
Selection Start: 0 samples Length : 1814400 samples
And Trim. We now have a perfectly loopable waveform of exactly 24*4 beats.
We can accomplish the same using Sox:
sox input-26bars.flac tmp\input-start.flac trim 1814400s 37800s sox input-26bars.flac tmp\input-end.flac trim 37800s 1776600s sox tmp\input-start.flac tmp\input-end.flac output-24bars.wav