1 .\" Process this file with
2 .\" groff -man -Tascii squishyball.1
4 .TH squishyball 1 "2013 November 9" "Xiph.Org Foundation" "Xiph Evaluation Tools"
7 squishyball \- perform sample comparison testing on the command line
11 [\fIoptions\fR] fileA [fileB [\fIfileN...\fR]] [> results.txt]
15 is a simple command-line utility for performing double-blind A/B,
16 A/B/X or X/X/Y testing on the command line. The user specifies two
17 input files to be compared and uses the keyboard during playback to
18 flip between the randomized samples to perform on-the-fly comparisons.
19 After a predetermined number of trials,
21 prints the trial results to stdout and exits. Results (stdout) may be
22 redirected to a file without affecting interactive use of the
26 can also be used to perform casual, non-randomized comparisons of
27 groups of up to ten samples; this is the default mode of operation.
31 Perform A/B test on two input samples.
33 A/B testing randomizes the order of two input samples and presents
34 them, unnamed, as sample 'A' and sample 'B'. In each trial the user
35 selects A or B as the preferred sample. The samples are then
36 re-randomized for the next trial. This test is useful for
37 establishing relative or preferred quality between two samples.
39 Perform A/B/X test on two input samples.
41 A/B/X presents two input samples, unrandomized, as sample 'A' and
42 sample 'B'. A third sample 'X' is chosen randomly from either 'A'
43 or 'B'. In each trial, the user selects A or B as the sample believed
44 to be the same as X. X is then re-randomized for the next trial. This
45 test is useful for determining if any differences are audible between
46 two samples and to what confidence level.
48 Note that because the A and B samples are not randomized (they are
49 presented in the order given on the command line as per standard
50 industry practice), an A/B/X test does not eliminate ordering bias.
51 A stronger version of this test that randomizes all samples is the
55 Perform casual comparison of up to ten samples (default).
57 Casual comparison mode does not randomize the input samples or perform
58 multiple trials. It simply provides a convenient way to rapidly flip back and
59 forth within a group of up to ten samples.
61 Perform randomized X/X/Y test on two input samples.
63 X/X/Y testing is a form of A/B/X testing in which the order of all
64 samples is randomized and the position of the 'X' sample is not known
65 ahead of time to be in the third position. In each trial, the user
66 selects which of sample 1, 2 or 3 is believed to be the sample that is
67 different from the other two. This test is useful for determining if
68 any differences are audible between two samples and to what confidence
69 level. It is a stronger version of the A/B/X test that eliminates
73 .IP "\fB-B --beep-flip"
74 Mark transitions between samples with a short beep.
75 .IP "\fB-d --device \fIN\fR|\fIdevice"
76 If a number, output to Nth available sound device. If a device name,
77 use output device matching that device name. The backend audio driver is
78 selected automatically based on the device name provided.
79 .IP "\fB-D --force-dither"
80 Always use dither when down-converting to 16-bit samples for playback
81 on audio devices that do not support 24-bit playback. By default,
82 uncompressed samples are always dithered, but lossy formats (such
83 as Vorbis and Opus) are simply rounded. See the
84 section \fBCONVERSION AND DITHER \fRbelow for more details.
85 .IP "\fB-e --end-time \fR[[\fIhh\fB:\fR]\fImm\fB:\fR]\fIss\fR[\fB.\fIff\fR]"
86 Set sample end time for playback.
87 .IP "\fB-g --gabbagabbahey \fR| \fB--score-display"
88 Show running score and probability figures of trials so far while
89 testing. Can only be used with \fB-a\fR, \fB-b\fR, or \fB-x\fR.
91 Print usage summary to stdout and exit.
92 .IP "\fB-M --mark-flip"
93 Mark transitions between samples with a short period of silence (default).
94 .IP "\fB-n --trials \fIn"
95 Set desired number of comparison trials (default: 20).
96 .IP "\fB-N --do-not-normalize"
97 Do not perform autonormalization to avoid clipping when sample values
98 exceed the maximum playback range in floating point, lossy, and
100 .IP "\fB-r --restart-after"
101 Set 'restart-after mode', where sample playback restarts from start point
103 .IP "\fB-R --restart-every"
104 Set 'restart-every mode', where sample playback restarts from start point
105 after 'flip' as well as after every trial.
106 .IP "\fB-s --start-time \fR[[\fIhh\fB:\fR]\fImm\fB:\fR]\fIss\fR[\fB.\fIff\fR]"
107 Set start time within sample for playback
108 .IP "\fB-S --seamless-flip"
109 Do not mark transitions between samples;
110 flip with a seamless crossfade.
111 .IP "\fB-t --force-truncate"
112 Always round/truncate (never dither) when down-converting samples to 16-bit
113 for playback on audio devices that do not support 24-bit output. See the
114 section \fBCONVERSION AND DITHER\fR below for more details.
115 .IP "\fB-v --verbose"
116 Produce more and more detailed progress information and warnings.
117 .IP "\fB-V --version"
118 Print version and exit.
119 .IP "\fB-1 --downmix-to-mono"
120 Downmix all multichannel samples to mono at load time.
121 .IP "\fB-2 --downmix-to-stereo"
122 Downmix all surround samples to stereo at load time.
124 .SH KEYBOARD INTERACTION
126 .IP "\fBa\fR, \fBb\fR, \fBx"
127 Switch between A and B samples (A/B mode), or A, B and X samples (A/B/X mode).
129 Select A or B as preferred sample (A/B mode), or sample A or sample B as
130 match to sample X (A/B/X testing mode).
131 .IP "\fB1\fR, \fB2\fR, \fB3\fR..."
132 Switch between first, second, third [etc] samples (X/X/Y testing mode, casual comparison mode).
133 .IP "\fB!\fR, \fB@\fR, \fB#"
134 Indicate the 'odd sample out' as sample 1, 2, or 3 (X/X/Y testing mode).
135 .IP "\fB<del>\fR, <ins>"
136 Undo/redo previous trial result selection.
138 Choose current sample for this trial.
139 .IP "\fB<-\fR, \fB->"
140 Seek back/forward two seconds, \fB+shift \fRfor ten seconds.
142 Select sample in sample list (casual mode).
144 Pause/resume playback.
146 Reset playback to start point.
148 Set end playback point to current playback time (see also -e above).
150 Reset end playback time to end of sample.
152 Toggle through beep-flip/mark-flip/seamless-flip modes (see \fB-B\fR, \fB-M\fR, and \fB-S \fRabove).
154 Toggle through restart-after/restart-every/no-restart modes (see \fB-r \fRand \fB-R \fRabove).
156 Set start playback point to current playback time (see also \fB-s \fRabove).
158 Reset start playback time to beginning of sample.
160 Print this keymap. The keymap will not be printed if the terminal has insufficient rows to do so.
164 .SH SUPPORTED FILE TYPES
167 8-, 16-, 24-bit linear integer PCM (format 1), 32-bit float (format 3)
169 8-, 16-, 24-bit linear integer PCM, 32-bit floating point
173 Mono signed 16-bit little endian 48000Hz raw with a .sw extension
180 \fBsquishyball\fR 'reconciles' files to identical channel ordering,
181 length and bit-depth before playback begins so that CPU and memory
182 resource usage during playback should be identical for all samples.
183 When 24-bit playback is available and at least one sample is 24-bit or
184 greater (ie, 32-bit or float), all samples are converted/promoted to
185 24 bits. If 24-bit playback is unavailable, all samples are demoted
186 to 16 bits. Note that Opus and Vorbis files are both considered to be
187 natively float formats.
191 \fBsquishyball\fR checks files for clipping at load time. By default,
192 \fBsquishyball\fR will automatically normalize all float inputs by the
193 amount needed to avoid clipping any one. Automatic normalization can
194 be disabled with the \fB-N\fR option. Integer samples are checked for
195 clipping heuristically; two or more consecutive full-range values in a
196 channel count as clipped. Out-of-range integer values cannot be
197 recovered; in this case, \fBsquishyball\fR issues a warning and
198 performs no normalization based on the integer clipping.
200 Downmixing samples to mono with \fB-1\fR or stereo with \fB-2\fR will
201 also likely require normalization to avoid clipping; as above,
202 \fBsquishyball\fR will automatically normalize all inputs by the
203 amount necessary to avoid clipping in any one unless \fB-N\fR is
207 Down-conversions of uncompressed and lossless samples (WAV, AIF[C],
208 FLAC, SW) to 16-bit are dithered using a simple white TPDF.
209 Lossy-encoded samples (Vorbis and Opus) are dithered to 16-bit only if
210 one or more uncompressed/lossless inputs are also being dithered.
211 Normalization also triggers dithering of all input samples
212 (uncompressed, lossless and lossy) upon conversion to 16 bit.
214 \fB-D\fR overrides the default behavior and forces unconditional
215 dithering of all 16-bit down-conversions. Similarly, \fB-t\fR forces
216 unconditional rounded truncation in all cases, disabling dither
219 Conversions to 24-bit are never dithered.
221 .SH IMPORTANT USAGE NOTES
222 .IP "\fBPlayback Depth and Rate"
224 Many modern audio playback systems (such as PulseAudio or the
225 ALSA 'default' device) give no means of determining if the requested
226 playback paramters are actually being used by the hardware, or if the
227 audio system is helpfully converting everything to some other
228 supported depth/rate. When using these systems, \fBsquishyball\fR has
229 no way of knowing if 16-/24-bit playback or sample rate is being
230 honored. Automatic conversion can affect audible playback quality; be
231 careful to verify actual system behavior.
233 .IP "\fBFlip-Mode Choice"
235 \fBSilent Mode\fR smoothly transitions between samples. It allows the
236 most direct comparison between signals without any intervening auditory
237 distraction. However, the temporary combination of different signals
238 may cause unintended cancellation and comb-filtering effects that can
239 give away the 'unknown' sample just as a 'pop' from an instantaneous
242 \fBMark Mode\fR quickly fades to silence before flipping to another
243 sample, marking the transition. Because the samples never overlap,
244 crosslap artifacts cannot contaminate trial results. However, the
245 audible dip between samples may distract from listening, potentially
246 making it slightly more difficult to detect legitimate artifacts.
248 \fBBeep Mode\fR is similar to mark mode but adds a soft 'beep' to mark
249 where the transition occurs. It makes the transition point especially
250 obvious. It does not crosslap the samples; one sample is faded
251 completely before the second is mixed in as in mark mode.
254 Monty <monty@xiph.org>
259 \fBabx-comparator\fR(1), \fBrateit\fR(1), \fBogg123\fR(1), \fBoggdec\fR(1), \fBopusdec\fR(1), \fBflac\fR(1)