Check a REAPER region render against an audio delivery contract. Define the expected audio filenames, WAV format and duration in a render contract, then check the generated region files against it.
You deliver game or app sounds as one WAV per REAPER region and want a repeatable check that every expected file exists, is fresh, has the agreed format and the exact length, before you send the delivery.

Buy the BragiWave bundle at /store/bragiwave/ and extract bragiwave-0.1.1-guide-bundle.zip. Then extract program/bragiwave-preview-20260929.zip into a separate folder. The app/, extension/, samples/ and docs/ paths below refer to that extracted program folder. GUIDE.html and examples/ in the outer bundle contain this manual and its practice material.
In REAPER choose Options › Show REAPER resource path in explorer/finder. Inside its Scripts folder create a folder named BragiWave and copy everything from the package's app folder into it. Keep the lib folder next to the scripts.
Open Actions › Show action list…, click New action… › Load ReaScript… and load bragiwave_panel.lua (the panel with all buttons). Optionally also load bragiwave_preflight.lua, bragiwave.lua and bragiwave_verify.lua to run the same checks directly.
Create the regions the contract describes and save the project; BragiWave refuses unsaved changes. Open REAPER's Render dialog once and set the format the contract needs (for the demo: WAV, 24-bit PCM, stereo), then close it keeping the settings. BragiWave cannot choose the format for you; it checks it afterwards.
Copy the contract next to the saved project and name it bragiwave.contract.json; BragiWave looks for that name. If it is elsewhere, the first run asks for it and remembers the path.
Run the panel action. The BragiWave window shows the contract and output folder, and the buttons Preflight (P), Render & Verify (R), Verify only (V) and Reload contract (L); Esc closes it. Preflight checks project, contract and output folder and changes nothing. Render & Verify first shows a confirmation (Render N region(s) from this project?) listing exactly what it sets; click OK to render.
The panel lists each file as PASS, FAIL or MISS with its observed format and frame count. Render & Verify and Verify only also save reports in a bragiwave-reports folder next to the project: bragiwave-<contract>-<time>.json and .txt plus bragiwave-latest.json and .txt. Preflight writes no file. Verify only cannot tell an old file from a fresh one and says freshness not checked.
BragiWave changes only REAPER's render settings for the run and puts your own settings back afterwards, also when a render fails. It remembers one preference, the last contract path. To remove it, delete the BragiWave folder from Scripts and remove its actions from the action list; reports stay in each project's bragiwave-reports folder.
Input: The package's own synthetic contract app/examples/contract.demo.json (three UI sounds, 48 kHz, 24-bit, stereo, 0.25 s tail) and examples/bragiwave/regions.csv, which lists the three regions to create and the expected result for each.
Expected: Preflight reports no problem. After Render & Verify the panel shows PASS with 3 planned / 3 observed and 3 pass, 0 fail, 0 missing, 0 unexpected: sfx_ui_click_01.wav 36000 frames, sfx_ui_back_01.wav 48000 frames and sfx_ui_confirm_01.wav 31200 frames, each 48000 Hz, 24-bit, 2 ch, in a render folder next to the project. A bragiwave-reports folder holds the JSON and text reports.
BragiWave does not change the render format. Open REAPER's Render dialog, choose the format the contract requires (for example WAV 24-bit PCM), keep the settings, empty the output folder and run Render & Verify again.
The contract requires an empty output folder so that old files cannot pass as new. Move the old files away, then render again.
Save the project first. The contract describes the saved project, so the render must match it.
The panel reloads the contract and output folder for the newly active project first. Check the header, then choose the command again.
Guide and examples: 30 September 2026. Examples are fictional or synthetic. Online guide · Support