◀ Back to contents
Tips
Small things that make a big difference - shown one at a time at startup
(turn that off with the checkbox on the tip dialog, or in
Preferences ▸ Look & Feel),
and all collected here.
Coherent averaging digs far below the noise floor.
Leave coherent (complex) averaging on and let the FFT run: each block is
de-rotated to a common phase before summing, so the tone adds coherently
while the noise partly cancels - the floor keeps dropping the longer you
wait. See
Theory ▸ Coherent
averaging.
Snap the generator to an FFT bin for a clean spectrum.
With
Snap frequency to nearest on, the tone lands exactly on a
bin, so window leakage doesn't smear the fundamental across its neighbours
and the harmonic estimates stay honest.
See
Generator ▸ Snap.
Pin the fundamental by hand on a twin-T notch.
A passive twin-T null is so steep that a few tenths of a hertz of thermal
drift swing the de-embedded fundamental by tenths of a dB and wobble your
THD. Enter the level you actually know with
Manual fundamental;
the harmonics, on the gentle flank, de-embed fine.
See
Theory ▸ pinning the
fundamental.
Only the QA40x is bit-exact in a browser.
A page has no exclusive mode: Web Audio capture reaches it as float32
after the Windows shared mixer, so whatever that mixer did is already in
the samples. The QA40x is the exception - it bypasses the mixer by not
being a sound card at all, and is read directly over WebUSB. See
Theory ▸ Audio backend.
There is no backend to pick for a faster scope.
The oscilloscope's refresh rate is set by the Web Audio callback and the
render path, not by a driver you can choose. What you can raise is the
capture rate itself, and that is set in Windows on the device rather than
in this application. See
Windows input device.
The mouse wheel zooms around the cursor.
In any trace view: wheel moves vertically, Shift+wheel
horizontally, Ctrl+wheel zooms the vertical axis and
Ctrl+Shift+wheel the horizontal - and both zooms keep the value
under the pointer fixed, so you zoom into exactly what you're looking at.
Every numeric field takes units, the wheel, and the keyboard.
Type a value with its unit (µV, 1.5 V,
-3 dBV, 2 kHz), or scroll the wheel, click the
▲/▼ arrows, or press the keyboard ↑/↓ keys to step.
Sinc interpolation only matters when you're zoomed in.
The Sin/Lin switch changes the trace only when sample points are at least
a couple of pixels apart on screen; otherwise straight lines look
identical and cost less CPU. Turn it on once individual samples are
visible. See
Oscilloscope ▸
Sin/Lin.
Hysteresis stabilises the trigger on a weak, noisy signal.
Without it, noise around the trigger level fires a flurry of false
triggers and the trace jitters. Enable trigger hysteresis and the trace
locks. See
Oscilloscope
▸ Hysteresis.
A saved generator signal is a perfect reference.
Save to... writes the ideal, mathematically exact waveform -
synthesised digitally, with no DAC, amplifier or cabling distortion. Feed
it to another instrument and any imperfection you measure belongs to that
device, not the source. See
Theory ▸ saving a signal.
De-embed a fixture with a calibration file.
Measure a notch, attenuator or soundcard's response once in the
Frequency-response module, then load that
.frc into the FFT
analyser: its response is divided out at display time, so the table shows
the device under test, not the chain. See
Theory ▸ the red and blue dots.
The reconstructed-beat overlay tames a close two-tone pair.
In dual-tone mode the scope's
Reconstructed beat overlay draws
the slow |f₁−f₂| envelope, so you can trigger on the beat instead of
chasing the fast carrier crossings. See
Oscilloscope ▸ Reconstructed
beat.
The frequency-response sweep is its own reference.
The swept measurement is deconvolved against the
exact sweep that
was played - not a re-measured copy - so the recovered magnitude and phase
are the device's true transfer function. See
Theory ▸ Frequency response.
Ctrl+F1 jumps straight to the right help.
Press
F1 anywhere for the manual, or
Ctrl+
F1
to open the help at the exact section for the control that currently has
focus. And the new
Index & search page
searches the whole manual.
The residual view shows what hides under the fundamental.
Flip a scope channel to
Residual and it draws the captured signal
minus its best-fit tone - the distortion, noise and glitches buried under
the fundamental become visible. Dual tone works too: both frequencies are
measured from the capture itself, so free-running DAC and ADC clocks cannot
smear the subtraction. See
Oscilloscope.
Overlay an ideal filter on a measured response.
The Frequency-response module's
Filters tab anchors an ideal
low-pass, high-pass, band-pass or notch (Butterworth, Chebyshev, inverse
Chebyshev, elliptic or Bessel) to the measured curve, and
Compare
plots the deviation from it - just like comparing against RIAA. See
Frequency response.
Let the Unevenness readout judge flatness for you.
On the
Unevenness tab, read the band edges where the response first
leaves a ±X dB corridor from its peak (or from its minimum, for a notch), or
the ± deviation over a chosen range - annotated on the plot, with the
figures drawn as an overlay table on the curve. See
Frequency response.
Full-scale calibration belongs to the sound card.
Each card keeps its own profile - one row per attenuator or DIP range,
separate left / right values, matched by device name on every backend - so
switching devices or backends never mixes calibrations up. Known cards come
pre-configured; your crosshair calibration refines them. See
Preferences ▸ Card.
Drive only the channel you are measuring.
The generator, the frequency-response sweep and the notch tuner each have an
Output channel selector - Both, Left only or Right only - that gates
the driven lane live. Handy for crosstalk checks and single-input devices.
See
Generator.
Zoomed far out, the scope renders like a real DSO.
Above one sample per pixel the trace becomes a digital-phosphor image: each
column's dwell histogram, swept with a pen of the configured trace width -
narrow pulses and beat envelopes keep their true peak-to-peak at any zoom,
and brightness shows where the signal dwells. See
Theory ▸ Oscilloscope.
Glitched captures never poison a long average.
The FFT rejects blocks containing splices, dropouts or band-limit-violating
glitches before they enter the average, then re-syncs and keeps going. For a
small or non-sinusoidal signal that trips the gate on every block, uncheck
Detect time discontinuity on the FFT settings tab. See
Theory ▸ keeping bad blocks out.
SNR and ENOB stay honest under a wide or noisy tone.
The noise figures exclude not only the fundamental and its harmonics but the
fundamental's whole leakage / phase-noise
skirt: the excluded band
widens to follow a broad or jittery tone outward until its bins fall back to
the noise floor, so a wide skirt never inflates SNR or ENOB.
See
Theory ▸ Distortion & noise
metrics.
Skip the unit - plain digits mean the base unit.
Type just a number and the field takes it in its base unit: 1000
in a frequency field is 1000 Hz, in an amplitude field 1000 V, in a
time field 1000 s. And kilohertz has short forms: 1.5k,
1.5kh and 1.5khz all mean 1.5 kHz.
Drag a rectangle to zoom into exactly that region.
In the oscilloscope, FFT and frequency-response views, drag with the left
button to rubber-band the area you care about - on release it stretches to
fill the view (the scope keeps the trigger level and position on the same
waveform point). Ctrl+Z steps back through the last
32 zooms of the view under the pointer or with focus - a thin green border
marks which view will take the undo.
Set dither in dBV and read it straight off the FFT floor.
The generator's dither field takes bits or a dBV level, and the dBV already
includes the FFT window's noise bandwidth - so with incoherent (power)
averaging the FFT noise floor lands exactly where you set it: enter
−100 dBV and the floor sits at −100 dBV. Coherent
averaging cancels noise and reads far lower.
The hardware does not have to be on your desk.
Run Phonalyser as a
server on the machine your converters are wired
to, then press
Servers... in Preferences ▸ Audio. The table opens
empty: type that bench's host and port (8377 by default) under
Add a
server by address once, and its own peer table fills in the rest. Its
backends then join the backend list, and
devices, cards, calibration, the generator and the sweeps all work as though
the card were plugged in here.
See
The Phonalyser server and
Preferences ▸ measuring
through a server.
A bench device someone else is measuring on says so.
Each of a server's devices is locked to one client at a time, and a device
another operator holds reads
in use by plus that client's name
right in the device list - so you find out before you press Record, not
after.
See
Preferences ▸
choosing a bench backend.
Read harmonics straight off the axis with dBr.
Switch the FFT's magnitude unit to
dBr and the fundamental sits at
exactly 0, so every harmonic and spur reads directly as "so many dB below
the tone". The reference is the displayed fundamental and is re-read on
every repaint, so it keeps following a drifting level.
See
FFT ▸ magnitude unit and
Theory ▸ plot-time corrections.
Type an output level in dBFS when full scale is what you
mean. The generator, the frequency-response sweep and the tune-notch
wizard all accept an amplitude in dBFS - suffix
dbfs, or the
short
dbf - and keep displaying it in that unit. 0 dBFS
is a full-scale
sine, so the figure does not change meaning when
you switch waveform.
See
Generator ▸ amplitude.
The amplitude histogram tells clipping from noise at a
glance. Open it from the oscilloscope toolbar: a sine draws the bathtub
of its two turning points, broadband noise a Gaussian bell, and a clipped
signal a hard spike where the rail is. A waveform clipped on one side only
shows as unequal bars about the centre line.
See
Oscilloscope ▸
amplitude-histogram window and
Theory ▸ how often, not
when.
A QA40x "0 dBV" input range is not 0 dBV RMS.
The ranges table spells it out -
0 "dBV" real 0 dBFS or -9 dBV
- because a QA input range is a peak-to-peak dBFS reference across the
differential pair, whose true RMS full scale sits about 9 dB lower.
The output ranges are genuine dBV.
See
Theory ▸ what a "dBV"
input range actually is.
Your calibration can follow you onto the bench.
Select a server device that has no calibration while this machine holds a
calibrated card matching it, and Phonalyser.web offers to copy the values across
- once per session, and never silently. Say no and nothing is written.
See
Preferences ▸ cards
and calibration on the bench.
A QA403 runs at 384 kHz; a QA402 does not.
The rate list follows the analyzer actually attached - the sample-rate
register has a fourth code only the QA403 has. Capture and generator both
run at whichever rate you pick, because the two directions share one
hardware clock.
See
Theory ▸ the QA40x analyzer
backend.
The QA40x can drive a converter straight from its
front-panel I2S port. Switch the port on under
QA40x
preferences and the output bit-depth list offers the port's 16 and 32
bits in place of the analyzer's 24, the input staying at 24 throughout. It
is experimental: QuantAsylum documents the connector, but not the registers
that enable it.
See
Preferences ▸ Audio.
A long sweep no longer has to be waited out.
The frequency-response progress window carries a
Cancel button. It
is cooperative - the sweep ends through the ordinary stopped path, so the
window closes and the pane unlocks exactly as after a completed run, with
the capture and the generator handed back.
See
Frequency response.
A smooth-looking frequency response can still be
clipped. If the capture reached full scale you are warned as soon as
the trace appears. Deconvolution turns a railed recording into a fine
regular ripple that reads like noise rather than like damage, so lower the
drive level instead of trusting the curve.
See
Frequency response ▸
wobbly trace.
Any frequency response on screen can be saved.
The
Save to... tab writes the displayed curve to a file with no
quality gate of any kind - a sweep you have just run, one driven gently, or
one loaded back from disk. The only thing it asks is that a measurement
exists.
See
Frequency response ▸ Save
to....
Plug a card in without restarting the application.
Scan devices in Preferences ▸ Audio re-enumerates the browser's
device list, re-composes the backend list - which is how a QA40x plugged in
after start-up appears as a backend at all - and asks a connected bench for
its backends again.
See
Preferences ▸ the buttons
on the backend row.
Preferences tells you when your volts are guesses.
Closing the Audio tab after a backend or device change checks that the
committed selection really resolves to a measured full scale, and names the
input, the output or both when it does not. A card bound to the device but
holding zeros counts as uncalibrated - an empty row is not a measurement.
See
Preferences ▸ card.
A dead input says so instead of drawing a flat line.
Unplug the card, or let another application take it exclusively, and the
oscilloscope and the FFT stop with one dialog naming the backend and saying
whether the device was lost or merely stopped delivering samples. The
playback side is watched the same way.
See
Theory ▸ a stream
that dies after it started.
A stored setting that will not parse is never
overwritten. Your settings and cards live in the browser's
local storage, not in files. A value that will not parse is copied
aside to the same key with a .corrupt suffix and the run starts
from defaults, so every
calibration in it survives for recovery instead of being cemented
over by the next save.
◀ Back to contents