Technical portfolio
Audio software · October 2026

IR Capture + Load JUCE Plugin

A mono Logic Audio Unit for loading, comparing, aligning, and capturing clean amplifier and cabinet impulse responses.

JUCEAudio DSPImpulse responseAudio Unit
IR Capture + Load JUCE Plugin project thumbnail

IR Capture + Load is a small mono Audio Unit v2 effect built with JUCE for Logic Pro. Its Loader page convolves the input through two impulse-response slots, A and B. Each slot has an enable switch and level control, and the plug-in provides input and output trim. Mono WAV files can be loaded into either slot and exported as 48 kHz, 32-bit floating-point WAV files. Imported responses retain their level and leading delay; files longer than 200 ms are shortened with a short end fade.

Compare and align two responses

The Loader plots the first 10 ms from both responses so their initial transients can be compared. Auto Align matches the strongest peak in that early window, while a manual control shifts slot B by up to ±2 ms. Swap A/B exchanges the loaded responses and clears the alignment shift. Session state includes the response sample data and names, so a recalled Logic session does not depend on the original WAV paths.

Illustrative view of the Loader page with two response slots, waveforms, and alignment controls.

Loader page. The waveforms in this interface illustration are representative UI content, not measured responses.

Capture a linear response

The Capture page is designed for a 48 kHz hardware loop through a clean amplifier or cabinet and microphone. It generates an exponential sweep, emits it through the host track, and records the return. Arming switches the plug-in output to silence until capture is started; after completion, error, or abort it remains silent until the Loader is explicitly re-enabled. The return meter marks the recommended −12 to −6 dBFS range.

At 48 kHz, the sweep contains 262,144 samples (about 5.46 seconds), with a 250 ms lead-in and a one-second tail. The corresponding inverse sweep is used for linear-convolution deconvolution. Extraction runs on a worker thread: it searches the expected 0–250 ms return-latency region, retains 1 ms before the detected onset, peak-normalizes a 200 ms response window, and applies a 10 ms end fade. A successful capture can be assigned directly to either slot or exported as a mono WAV. The response display shows a log-frequency magnitude plot from 20 Hz to 20 kHz with 1/12-octave smoothing, relative to its peak.

Illustrative view of the Capture page, including the sweep controls, return meter target, waveform area, and response plot.

Capture page. The plot and waveform areas show the idle interface layout; no hardware measurement is represented.

Implementation and limits

The JUCE processor handles sweep generation, recording, extraction, response-slot state, and convolution. Readable MATLAB reference scripts for sweep generation, extraction, and a delayed-FIR validation case are included in the source project, but MATLAB code generation is not part of the AU and those scripts have not yet run in this environment. The plug-in itself is mono in/out and AU v2; capture is restricted to a 48 kHz host session. It models linear responses, so the amplifier must stay clean during measurement. It does not model distortion, perform averaging or calibration, or correct phase beyond the time shift applied to slot B.

The AU was built and installed for development, and Logic's Audio Unit scan listed it. Full auval validation could not be confirmed in the development environment, and a physical amp/reamp/microphone capture has not yet been performed. The interface and workflow are therefore documented as an implemented tool, while hardware routing and measured capture quality remain to be verified on the actual recording setup.