To null-test an internal REAPER bounce, align it with its source, match both signal paths, and invert one track’s polarity. This Mac workflow uses a synthetic tone generated in Audacity, a duplicate-file control, and a REAPER render to isolate differences.

What does this null test actually compare?

The concrete task is to check whether a file rendered inside REAPER reproduces a fixed source through an otherwise unchanged signal path. Audacity supplies the synthetic reference; REAPER performs the bounce and comparison. You need both desktop applications, with no additional plug-ins.

A null test subtracts one signal from another. If the source is x[n] and the bounce is b[n], the residual is r[n] = x[n] − b[n]. Identical, aligned samples cancel. Any remaining signal represents a difference somewhere in the files or their playback paths.

For this test, the exported tone file becomes the reference. The procedure does not compare Audacity’s internal processing with REAPER’s, and it does not establish that every instrument or effect will behave identically on repeated renders. Keeping one fixed reference makes the result easier to interpret.

Create a fixed synthetic reference in Audacity

Start with an empty Audacity project. On Mac, open Audacity > Preferences > Audio Settings and set Project Sample Rate to 48000 Hz. This setting controls the rate used for newly generated audio in the current project. Audacity Audio Settings Preferences

Choose Generate > Tone. Set Waveform to Sine, Frequency to 1000 Hz, Amplitude to 0.25, and Duration to exactly ten seconds, then generate the tone. Audacity documents these controls for creating a steady synthetic waveform. These values are illustrative test settings. Audacity Tone manual

Choose File > Export Audio. Export the whole project as WAV, select Stereo and 48000 Hz, and name the file tone-reference.wav. Choose the 32-bit float encoding. Audacity documents the export range, channel and sample-rate options, and support for floating-point WAV. Export Audio, Export Formats supported by Audacity

Keep this file unchanged. Exporting a stereo reference also lets the later REAPER bounce use stereo throughout, avoiding an unnecessary mono-to-stereo comparison. Once exported, this file’s actual samples—not a newly generated tone—define the reference.

Prepare a neutral REAPER comparison project

Create a blank REAPER project. Under File > Project Settings, enable a project sample rate of 48000 Hz. The current REAPER user guide covers project sample-rate settings and the render controls used below. A REAPER User Guide v7.84

Drag tone-reference.wav onto a track and name the track SOURCE. Right-click the audio item and open Item properties. Set its position to zero and its fade-in and fade-out lengths to zero. REAPER’s Quick Start documents drag-and-drop import and access to item position and fade properties. REAPER Quick Start Guide

Use the following deliberately neutral configuration. REAPER exposes separate track gain, pan, pan-law, width, mute and polarity settings; matching the paths prevents those controls from becoming unintended test variables. REAPER API functions

Setting Test configuration
Source track and master volume 0.00 dB
Track and master pan Center
Source track pan law 0.0 dB
Source track stereo width 100%
Track, item and master effects None
Automation and additional routing None
Other audio tracks None
Project playback rate 1.0

The important condition is equal gain from each file to the comparison point. For example, a bounce containing master attenuation would later receive another pass through that attenuation when reimported. Starting with a neutral master avoids having to compensate for that extra stage.

Check the comparison setup with a duplicate

Before rendering, copy the reference item onto a second track. Use Item properties to confirm that both items begin at zero and that the duplicate also has zero-length fades. Copying items and editing their properties are documented in REAPER’s Quick Start. REAPER Quick Start Guide

Match the second track’s settings to SOURCE. Engage the second track’s phase/polarity button, commonly displayed as Ø. REAPER documents this track control as phase inversion; here it supplies the polarity reversal needed for subtraction. A REAPER User Guide v7.84

Play both tracks together and inspect the master meter. Because both items reference the same samples, cancellation is the expected mathematical result. Then mute either track: the remaining track must produce a nonzero meter reading. That control distinguishes cancellation from a project that was already producing no signal.

If the duplicate fails to cancel, fix the comparison setup before proceeding. Check item positions, fades, track levels and polarity states. When the control works, remove the duplicate track from the project, leaving SOURCE and its reference file intact.

Render the internal bounce and compare it

With only SOURCE contributing audio, open File > Render. Use the settings below. REAPER documents master-mix rendering, custom bounds, output sample rate and channel count, postprocessing, and automatic insertion of rendered files. A REAPER User Guide v7.84

Render control Setting
Source Master mix
Bounds Custom time range
Start and end Zero to exactly ten seconds
Tail Disabled
Sample rate 48000 Hz
Channels Stereo
Output format WAV
WAV bit depth 32 bit FP
Render speed Full-speed Offline
Output filename tone-bounce.wav
Add rendered items to new tracks in project Enabled

Disable dither and noise shaping. In Postprocess, disable normalization, limiting, added fades, silence trimming and padding. These are separate render operations documented by REAPER; leaving them inactive keeps them outside this identity test. REAPER API functions

Render the file. Name its newly inserted track BOUNCE. Match that track to the neutral configuration above. Check both items’ positions and fades again: an automatically added fade on the returned item would change the comparison even when the rendered file itself was correct.

Leave both tracks active and invert the polarity of BOUNCE only. Play the full ten-second interval, including its beginning and end. Inspect the master meter, where the two paths combine. The individual track meters can still show signal while their sum cancels.

For a numerical residual check, use the same master-mix bounds and choose Dry Run (no output) in the render dialog. Inspect the sample-peak statistics, keeping postprocessing disabled. REAPER documents dry runs as render calculations without output files. A finite residual peak establishes a difference; an apparently empty playback meter alone does not prove exact digital zero. A REAPER User Guide v7.84

Diagnose a residual without changing several things at once

The following sequence follows from the subtraction equation. It is a diagnostic aid, not a report of measured REAPER results. Restore each experimental change before testing the next possibility.

Residual pattern First check Reason
Strong signal throughout Exactly one track has polarity inverted Without inversion, matching signals add
Steady, reduced sine Track, item and master gain Unequal amplitudes cannot cancel
Difference concentrated at the edges Item fades and render boundaries A changed envelope affects those samples
Difference throughout despite equal levels Exact item position and playback rate Different sample timing prevents subtraction
Difference mainly in one channel Pan, width and channel mapping Left and right must each match
Very small residual Output encoding, dither and processing Small sample changes still produce a residual

Why a one-sample offset matters

At 48,000 samples per second, one sample lasts approximately 20.83 microseconds. For an ideal steady 1 kHz sine shifted by one sample, the residual amplitude relative to the source is 2 × sin(π × 1000 / 48000), or approximately 0.1308. That is about −17.67 dB relative to the source amplitude.

This worked calculation shows why visually similar waveforms can leave a substantial residual. A small gain mismatch also matters: increasing one copy by 0.1 dB leaves an ideal residual approximately −38.73 dB relative to the source. These are calculated illustrations, not application measurements.

A steady sine also has a useful limitation to remember. At 1 kHz and 48 kHz, one cycle occupies 48 samples. A shift of exactly one cycle can cancel across the overlapping interior while leaving unmatched edges. Confirm the actual item positions and inspect the complete interval rather than moving the bounce until its middle cancels.

What can you conclude from the result?

A successful comparison supports a narrow conclusion: this bounce matches this fixed synthetic reference through the tested playback paths, to the resolution established by your measurement. It does not establish identical file metadata or validate every possible project configuration.

If your eventual task involves a live instrument or effects chain, preserve this simple project as the baseline. Then add one intended processing stage at a time. The REAPER guide specifically notes that some plug-ins can perform differently during offline rendering; a fixed-file comparison avoids introducing that variable at the outset. A REAPER User Guide v7.84

Finish with the reference, bounce, exact render settings and residual reading saved together in your project notes. When a difference appears, those details make the next check concrete: timing, level, boundaries, channel mapping or processing. A null test becomes useful when the comparison is controlled well enough to explain its result.

Sources