Reckless IR Capture
v1.0.3A free app that measures your own cabinet: it plays a test signal out of your audio interface into a power amplifier and speaker, records it back through a microphone, and turns the recording into an impulse response, ready to load into the Reckless Cab or any other IR loader.
Download
Free, for any use, on as many computers as you like, for macOS, Windows and Linux, under the same terms as the plugins: what you make with it is yours (licence agreement).
To uninstall it: on Windows, Reckless IR Capture in Settings > Apps; on a Mac, Uninstall Reckless IR Capture in /Applications/Reckless Technology, which leaves the Reckless plugins alone; on Linux, sudo apt remove reckless-ir-capture, or delete the unpacked folder.
What you need
An audio interface with an output and an input, a power amplifier, the cabinet and a microphone: the interface’s output into a power amplifier, the amplifier into the cabinet, a microphone in front of the speaker, and the microphone back into the interface’s input. IR Capture plays its test signals out, records what comes back, and works out the response of everything in between. Start with the level low: a power amplifier into a speaker can be very loud.
The diagram at the top of the window draws the same chain, each box lighting as the test signal passes through it, with the response drawn in the last box once a capture is done.
No hardware to hand? Choose Simulation (no hardware) as the driver: a simulated amplifier, 4x12 cabinet and microphone to try everything on.
The window
The window, pictured at the top of the page, has its settings down the left in the order you use them: the audio interface, the stimulus, the input level and the capture. The measurement is on the right: the signal flow, the frequency response over the impulse response, the capture’s figures, the export and a log.
1. Audio interface
Pick the Driver, the Input the microphone comes back on and the Output that drives the amplifier, each with its channel, and the sample Rate: 44.1, 48, 88.2 or 96 kHz. Rescan looks again for interfaces plugged in since.
- Windows: ASIO where your interface has a driver - one interface both ways, the Windows mixer out of the path - or Windows Audio. Windows Audio runs a device at the rate set for it in Windows’ sound settings, and IR Capture refuses any other rate rather than let Windows resample it, since the converter would be measured too; turn on Rate conversion to allow it.
- macOS: Core Audio. macOS asks once for the microphone the first time the input is opened: allow it, or the input records silence.
- Linux: JACK (PipeWire’s JACK layer on a modern desktop) or ALSA.
2. Stimulus
Every capture plays two test signals, a stretch of periodic noise and then a sine sweep, and merges the two responses (how it measures). Level is the level at the output, in dBFS: start low with a power amplifier. Periods sets how many noise periods are played and how long each one is; Sweep the sweep’s length, 5, 10 or 20 seconds; Response how much of the response to analyse. The line under them says what a capture will play and how long it will take: about 20 seconds at the defaults.
3. Input level
Play test signal loops the noise on the output while the meter shows what comes back. Set your interface’s input gain so the peaks sit in the shaded window, -13 to -3 dBFS; the meter says Gain OK when they do, and its lamp latches red if the input clips. Monitor input shows the level without playing anything.
4. Capture
Give the capture a Name - the cabinet, the speaker, the microphone and where it stands - and press Capture; press it again to abort. The strip under the button shows each stretch of the test signal filling as it is recorded: the settling period, the noise periods, the gap, then the sweep. When the capture is done the strip closes up into what it yielded, and the log reports the round trip, the noise floor, how many periods were averaged, the sweep’s harmonics and level, and whether the audio driver dropped anything.
5. Reading the response
The frequency response is drawn at the level the Reckless Cab will play it, 0 dB being unity gain for pink noise, smoothed by the fraction of an octave chosen above it: 1/3, 1/6, 1/12 (the default) or 1/24, or none. The Response buttons choose what the graph fills and the export writes: the noise’s response, the sweep’s, or their merge, the default. The other two are drawn dashed over it, and the log says how closely they agree from 50 Hz to 10 kHz.
Phase adds a strip of the phase under the magnitude: unwrapped, the delay before the response taken out, and left blank where the magnitude is too far down for the phase to mean anything. The last three captures stay on the graph as faint traces, to compare a microphone moved or a speaker changed, until Clear previous.
The impulse response is under it, its first 20 ms by default (the Time axis also shows the first 5 or 50 ms, or the whole response), with its Envelope in dB on the scale at the right.
Minimum phase shows, and exports, the response rebuilt with the same magnitude and the least possible delay: it starts at its first sample and sounds the same through a cabinet loader, as most commercial cabinet files are made.
The figures
The strip under the plots reads out the capture: the round trip through your interface, the noise floor, the decay to -60 dB, the gain the export will apply to bring the response to the Cab’s level, the peak at that level, the noise periods used, the sweep’s harmonics, and the driver’s health. A block of audio lost mid-capture is caught from the recording itself, whether or not the driver reports it: the period it landed in is left out and the ones after it realigned, the periods figure turns amber, and the log says what happened.
6. Export
Choose the Format - 16, 24 or 32-bit PCM, or 32-bit float - the Rate, the Length and the Level, then Export WAV. The file is named after the capture, and you can change the name as you save. The line under the choices says what the file will hold. Save raw recording keeps the microphone’s recording of the whole capture, for when something needs looking into.
IR Capture remembers every setting between runs, and the window’s size and place.
How it measures
A speaker cabinet, a power amplifier below clipping, a microphone and a room all behave, to a good approximation, as a fixed filter: whatever goes in comes out shaped by one response. To measure it, IR Capture plays a signal it knows, records what comes back, and divides one by the other. What makes a measurement good is the signal it divides with, so every capture uses two, each strong where the other is weak.
Periodic noise. A burst of noise a second or two long, built to hold every frequency at once at equal strength, is played back to back, ten times by default. The first period only lets the amplifier, the speaker’s resonances and the room settle, and is thrown away. Each period after it is a complete measurement on its own, exact at every frequency, and averaging them lowers the background noise by 3 dB every time the number of periods doubles. The period a dropped audio block landed in is left out, and the periods after it realigned. The method’s weakness is distortion: the harmonics an amplifier or a speaker adds to a repeating signal land on the same frequencies and become part of the measurement.
The sine sweep. One tone glides from 10 Hz to the top of the audio band, spending the same time in every octave, so it carries more low end than high, as a guitar does, and puts more energy through the speaker than the noise at the same peak level. The maths that turns the recording into a response moves each harmonic the system adds out ahead of the response itself, where it is cut away, so the sweep’s response comes out clean of distortion; the log reports how strong the harmonics were.
Both, merged. The noise, a second’s gap and the sweep are played and recorded as one stream through the same interface, so the two responses share the same timing. They are lined up and averaged half and half, which averages their independent errors too. The sweep’s level is set for you: a sine comes back loudest at the cabinet’s resonance, so during the gap IR Capture works out from the noise just recorded how loud the sweep will return, and plays it to come back 1 dB under the noise’s peak, never louder than your Level - so an input gain set with the test signal never clips on the sweep.
The level of an exported file
An exported file is set to the level the Reckless Cab brings every response it loads to: pink noise - near enough a guitar’s spectrum - passes through it at the level it went in, so captures made at different levels sit at the same loudness. A PCM file cannot hold a sample over full scale, so a response whose peak would go over -0.1 dBFS at that level is turned down to it; a cabinet never gets near that, and a 32-bit float file is never turned down. Peak at -0.1 dBFS and None (as measured) are there for other loaders. 64-bit float is deliberately not offered: IR loaders reject it.
The command line
ir-capture-cli, installed with the app, makes the same capture with no window: the noise, the sweep, the merge, the same analysis and the same export. The macOS installer and the Debian package put it on the PATH; on Windows it is beside the app, in %LOCALAPPDATA%\Programs\Reckless Technology\IR Capture for the default per-user install or C:\Program Files\Reckless Technology\IR Capture for every user, and not on the PATH; from the Linux archive, it is wherever you unpacked it.
ir-capture-cli --list # the drivers and their devices
ir-capture-cli --simulate --name "4x12" cab.wav # the simulated cabinet
ir-capture-cli --api ASIO --input UMC --input-channel 3 --output-channel 5 --level -18 \
--periods 16 --sweep-seconds 10 --format FLOAT --minimum-phase cab.wav
Devices can be named by any unique part of their name; --response noise|sweep|merged chooses which response the file holds, --raw FILE keeps the recording, and --help lists every option.
Updates
While its window is open, IR Capture asks this website whether a newer version is out - at once the first time it runs, then at most once a day, or an hour after a check that failed - and shows UPDATE beside its version in the header when one is. The Updates menu says where the check stands, opens the download page for the new version, checks now, and turns the daily check off with Check automatically. It never downloads or installs anything itself, and the request carries the version you have and nothing about you or your computer (privacy).