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
- Tone — Audacity / Muse Group.
- Audio Settings Preferences — Audacity.
- Export Audio — Audacity.
- Export Formats supported by Audacity — Audacity.
- Quick Start Guide — REAPER / Cockos.
- Up and Running: A REAPER User Guide v7.84 — REAPER / Cockos, Geoffrey Francis.
- REAPER API functions — Cockos.