Setup · Presets · CLI

Batchy documentation

New here? Follow Your first batch to build a simple chain and export your first files. Find setup, presets, CLI and troubleshooting reference below.

Walkthrough

Your first batch

Make a small batch quieter, export new WAV files and save the chain for next time. This walkthrough uses only the built-in Gain node; you do not need to install or scan any plugins.

What you need: Batchy for macOS or Windows, an active trial or license, and two or three short WAV files you can listen to. Make a folder called Batchy First Batch with separate Sources and Exports folders. Copy your example files into Sources and leave Exports empty.

1 Install and start your trial

Download the installer for your computer, install Batchy and open it. On the welcome screen, enter your email address, then select Start 7-day free trial. You can also start an unused trial from Help → Manage License.... Marketing emails are optional; no payment is required.

Downloading does not start the clock. The seven days begin when you start the trial in the app. Already purchased? Activate with the license key from your purchase email instead.

Ready to continue: the app shows an active trial or license. An expired trial cannot be restarted; license and activation help explains the options.

2 Import a small set of files

Drag your example WAV files from Sources into Batchy's file list, or use File → Import Audio Files... and choose them. Click one file to make it the file you will audition.

Check: you can see your two or three filenames in the list. Clear any search or filter hiding them. The batch window starts from the visible file list; selecting one file for playback does not limit the batch to that file.

3 Build Input → Gain → Output

If you already have a chain you want to keep, use SAVE AS in the preset bar to save it first. Then choose Default from the preset dropdown. This gives you a simple Input connected to Output.

  1. Open NODE GRAPH. If the node palette is hidden, click NODE PALETTE. Find Gain in the built-in nodes and drag it onto an empty area of the graph.
  2. Right-click the existing cable from Input directly to Output and choose Delete Connection. Keep the Input and Output nodes.
  3. Drag from Input's output pin on the right to Gain's input pin on the left. Connect Gain's right-hand output pin to Output's left-hand input pin.
  4. Set Gain to −6 dB. Use its inline control, or double-click the Gain node to open its editor and enter -6 in the value box.
  1. InputReads each source file
  2. Gain −6 dBLowers the signal level
  3. OutputWrites each new file
Signal-flow example: two cables, with every file passing through Gain. Remove the direct Input-to-Output cable so the original signal is not mixed back in.

Check: the graph has these three nodes and two connections. Leave Input processing at the Default preset's settings for this exercise.

4 Listen before exporting

Select a source file and press Space to play or pause. Choose PLAYBACK → LIVE and keep BYPASS off to audition the chain. The selected Output should be the one connected to Gain. At −6 dB, the result should be quieter than the original; this exercise is a level change, not loudness normalization.

If you hear nothing, check both cables and the selected file/output. Open Settings → Audio Settings... to choose your listening device if needed. Press . to stop playback.

5 Choose where the new files go

Double-click the Output node's header to open its settings. Use these settings for this example, then click Apply:

Example output settings

Overwrite source files
Off. Keep the original audio.
Output path
Browse → your Exports folder. Keep this batch easy to find.
Filename
$filename_trial
Add a recognizable suffix; do not type the extension.
Preserve original format
Off. Allow the explicit WAV setting below.
Format
WAV. Make a widely supported audio file.
Normalization → Type
NONE. Keep the Gain change instead of normalizing it away.

Leave the other settings at their defaults for this first pass. In this filename template, $filename means the source name without its extension. A new output's default template is ${filename}_processed, so a batch never writes over its source files unless you ask it to.

Replacing source files. If an output would be written over its own source file (for example the template $filename with the output next to the source, in the same format), its row shows REPLACES SOURCE and PROCESS FILES first asks Replace source files?, listing the files. Cancel renders nothing; Replace renders in place (safely, through a temporary file). Turn on Overwrite source files in the output settings to replace sources without being asked. An automated render (--auto-render) has no one to ask, so it refuses instead.

6 Preview and process the batch

Choose Process → Open Batch Processor. In the batch window, check the source files and selected outputs. For this exercise there should be one output for each of your two or three source files.

Review the OUTPUT FILE column before processing: every destination should point into Exports and have the _trial.wav suffix. Keep Allow overwrite off. If the preview is wrong, correct the Output settings before continuing.

Click PROCESS FILES and wait for the output rows to report DONE. A skipped or failed output is not a completed export; inspect its status and use VIEW LOG if you need details.

7 Find and check the results

Select a completed output row and choose SHOW IN FINDER on macOS or SHOW IN EXPLORER on Windows. You can also open your Exports folder directly.

Sources/voice-01.wav  → Exports/voice-01_trial.wav
Sources/voice-02.wav  → Exports/voice-02_trial.wav
Illustrative filenames. Your exports use the names of the files you imported.

Success looks like: one new WAV for each selected source, the original files still in Sources, and exports you can open and hear. With the default Input, Gain at −6 dB and normalization off, each export should be quieter and have the same duration as its source.

For a repeat run, use a new empty output folder or change the filename suffix. Existing destinations can be skipped when overwriting is disabled.

8 Save the chain for another batch

Use SAVE AS in the top preset bar. Give the file a name such as First Batch -6dB.batchyfx and save it. Use the preset dropdown to recall presets in your configured preset folders.

A preset stores the processing setup, including output settings; it is not a package of your source audio. When you reuse it, import the new source files and check the Output path and batch preview again.

You now have: a reusable processing chain and a small, verified set of exports. Next, replace Gain with the processing your work needs, then repeat the same preview-and-check routine.

Setup

Setup and workflow basics

New to Batchy? Start with Your first batch above. These notes cover additional setup; third-party plugins are optional.

Audio device setup

Open Settings → Audio Settings... to choose your audio device, sample rate and buffer size. A larger buffer can help with playback dropouts; a smaller buffer reduces playback latency. Use your device's working defaults to begin.

Third-party plugins

Batchy's built-in nodes work without a plugin scan. To configure your own VST3 plugins, or Audio Units on macOS, open Settings → Plugin Settings.... Use Settings → Rescan Plugins when you need to refresh the available plugins.

A preset that uses third-party plugins needs those plugins installed and available on the machine where it runs.

Files, graphs and presets

The file list holds the source audio. NODE GRAPH defines the processing route, and each Output node defines an export. A .batchyfx preset saves the setup for reuse. Start with one Output; add more when you need different deliveries from the same sources.

Audition one file, check the destination preview, and render a small batch before processing a large folder.

Reference

Quick Reference

Common Tasks
TaskHow
Load Audio FileDrag & drop onto window, or File → Import Audio Files... (Cmd/Ctrl+O)
Build Processing ChainNODE GRAPH → NODE PALETTE → add nodes and connect pins
Save PresetSAVE or SAVE AS in the preset bar
Load PresetChoose a preset from the preset dropdown
Batch Process (GUI)Add files → configure Output node → Process → Open Batch Processor
Batch Process (CLI)./Batchy --batch-process --input <path> --preset <file>
Audio Settings

Sample Rates

RateUse
44.1 kHzCD quality
48 kHzVideo/film standard
96 kHzHi-res audio
192 kHzUltra hi-res (high CPU)

Buffer Sizes

SizeLatencyCPU
64-128 samples3-6msHigh
256 samples~6msBalanced (Recommended)
512-1024 samples12-23msLow
2048 samplesVery highMinimal

Bit Depths

DepthUse
16-bitCD quality, smaller files
24-bitProfessional standard
32-bit floatMaximum headroom, no clipping
Supported Formats

Input

WAV and AIFF are always available. FLAC, MP3, and OGG depend on readers registered in the build; M4A/AAC/CAF use Apple Core Audio, and WMA/ASF require Windows Media Format support. Run Batchy --help for the exact target-machine list.

Output

FormatType
WAVUncompressed PCM (16/24/32-bit)
AIFFUncompressed PCM (16/24/32-bit)
FLACLossless compression
OGGCompressed (lossy)
MP3Compressed (lossy)
Filename Tokens

Date/Time

TokenExample
$year, $month, $day2026, 04, 02
$date2026-04-02
$timestamp20260402-143022

File & System

TokenDescription
$filenameOriginal name without extension
$counter{N}Auto-incrementing (N = zero-padding digits)
$outputnodeName of the output node
$userSystem username
$computerHostname

Path Tokens

$documents, $music, $desktop, $home, $source, $working

User-Defined

$project, $author, $client, $engineer, $studio, $show

Metadata Tokens (filled in automatically; write underscore names in braces)

${sample_rate}, ${bit_depth}, $duration, $channels, ${channel_count}, ${source_file_modified}, ${source_file_created}, ${source_parent_folder}

Common Templates

$filename_processed           → mysong_processed.wav
$date/$filename              → 2026-04-02/mysong.wav
$client/$project/$filename   → ABC Studios/Album 2025/mysong.wav
File Locations

macOS

TypePath
Presets~/Library/Application Support/Batchy/Presets/
Logs~/Library/Application Support/Batchy/Batchy.log (GUI); .../Batchy/Logs/batch_process_*.log (CLI)
Settings~/Library/Application Support/Batchy/Settings/
Plugin Cache~/Library/Application Support/Batchy/pluginList.xml

Windows

TypePath
Presets%APPDATA%\Batchy\Presets\
Logs%APPDATA%\Batchy\Batchy.log (GUI); %APPDATA%\Batchy\Logs\batch_process_*.log (CLI)
Settings%APPDATA%\Batchy\Settings\
Plugin Cache%APPDATA%\Batchy\pluginList.xml
CLI Exit Codes
CodeMeaning
0Success — the requested operation completed
1Processing failed — a render/fatal processing error occurred, result accounting was inconsistent, or a requested report could not be written
2Configuration error — invalid arguments, missing input/preset, nothing to process, or another pre-processing validation failure
130Cancelled or interrupted — for example Ctrl+C, SIGINT, SIGTERM, or an internal cancellation deadline
Performance Tips
  1. Use appropriate buffer size — balance latency vs. CPU
  2. Process similar files together — same format/rate = faster
  3. Use multi-threading for batches — set --max-threads to CPU core count
  4. Test with dry run — validate before processing large batches
  5. Use local storage — network drives slow processing
  6. Close other audio apps — prevent interface conflicts

Reference

Keyboard Shortcuts

Transport Controls
ShortcutAction
SpacePlay/Pause
.Stop (return to start)
LToggle Loop
AToggle Live / Processed Audio
HomeJump to Start
EndJump to End
File Operations
ShortcutAction
Cmd/Ctrl + OImport Audio Files
Cmd/Ctrl + SSave Preset
Cmd/Ctrl + Shift + SSave Preset As
Cmd/Ctrl + WClose Window
Cmd/Ctrl + QQuit Application
Editing
ShortcutAction
Cmd/Ctrl + ZUndo
Cmd/Ctrl + Shift + ZRedo
Cmd/Ctrl + XCut
Cmd/Ctrl + CCopy
Cmd/Ctrl + VPaste
Cmd/Ctrl + DDuplicate
DeleteDelete Selected
Cmd/Ctrl + ASelect All
EscapeClear Selection
Graph Navigation
ShortcutAction
Space + DragPan Canvas
Middle Mouse + DragPan Canvas (alt)
Mouse WheelZoom In/Out
Cmd/Ctrl + +Zoom In
Cmd/Ctrl + -Zoom Out
Cmd/Ctrl + 0Fit to Window
FFrame Selection
HHome View
TabSwitch View (Waveform/Node Graph)
Node Operations
ShortcutAction
Double-Click NodeOpen Editor
Cmd/Ctrl + ClickAdd to Selection
Cmd/Ctrl + EBypass Selected
RRename Node
Cmd/Ctrl + INode Info
Parameter Adjustment
ShortcutAction
Click + DragAdjust Value
Shift + DragFine Adjust (10x slower)
Double-Click SliderReset to Default
Alt + ClickType Numeric Value
Arrow KeysIncrement/Decrement
Page Up/DownLarge Adjust
Waveform View
ShortcutAction
Mouse WheelZoom Horizontal
Shift + Mouse WheelZoom Vertical
Click + DragSet Loop Region
Double-ClickClear Loop
SToggle Spectrogram
MToggle Mono/Stereo
GToggle Grid
Batch Processing
ShortcutAction
Cmd/Ctrl + BOpen Batch Window
Cmd/Ctrl + EnterStart Processing
EscapeCancel Processing
Cmd/Ctrl + RRefresh Preview
Quick Reference Card
Space       Play/Pause
Cmd/Ctrl+S  Save Preset
Cmd/Ctrl+Z  Undo
Delete      Delete Selected
B           Bypass (A/B)
Tab         Switch View
Cmd/Ctrl+0  Fit Graph

Command line

CLI / Headless Processing

Overview

Batchy provides command-line batch processing on supported macOS and Windows hosts. Headless --batch-process runs without opening the application UI or requiring an interactive desktop session, making it suitable for scripts, CI/CD jobs, remote sessions, and scheduled automation.

Quick Start

Process a single file:

./Batchy --batch-process \
  --input audio.wav \
  --preset my_effect.batchyfx \
  --output-dir ./processed

Process all files in a directory:

./Batchy --batch-process \
  --input /path/to/audio/folder \
  --preset my_effect.batchyfx \
  --output-dir /path/to/processed

Run ./Batchy --help for the exact options and formats supported by that build. ./Batchy --help-json writes one strict JSON document to stdout for automation and wrapper integrations; diagnostics are sent to stderr.

Executable Location

PlatformPath
macOS/Applications/Batchy.app/Contents/MacOS/Batchy
WindowsC:\Program Files\Batchy\Batchy.exe

The Windows installer uses the path above by default; a custom install may use another folder. If you add the executable’s directory to PATH, invoke Batchy --batch-process ... directly.

Command Line Reference

Required Arguments

OptionShortDescription
--batch-process--batchEnable headless batch processing mode
--input <path>-iInput audio file or directory
--preset <file>-pBatchy preset file (.batchyfx) or catalog preset name. Use --list-presets to see available catalog presets.

Output Configuration

OptionShortDescription
--output-dir <path>-oOutput directory (default: input directory). If the final path would equal the input, Batchy refuses unless you explicitly pass --in-place (--overwrite-outputs never overwrites a source file).
--output-format <fmt>Output format: wav, aiff, flac, ogg or mp3. MP3 uses the LAME encoder bundled with Batchy; run Batchy --help on the target machine for the exact list.
--output-sample-rate <rate>Sample rate (22050, 44100, 48000, 88200, 96000, 192000) or “same” to match input
--output-bit-depth <depth>Bit depth: 16, 24, 32, 32float, or “same”. (32 and 32float are equivalent — IEEE 754 single-precision float)
--output-channels <config>Channel layout: mono, stereo, “same”, or “graph”
--output-filename <template>Relative filename or safe subpath beneath --output-dir, with $tokens
--output <selector>Select output nodes by ID, exact name, or a name glob using * and ?
--output-override <target:key:value>Per-output setting override; repeat for multiple overrides (see Per-Output Overrides)

Processing Options

OptionShortDescription
--normalization <type>Normalization mode: none, peak, rms, lufs. Also accepts --normalisation. LUFS uses EBU R128 integrated loudness measurement. Peak uses sample peak (not true peak).
--target-loudness <target>Target for the selected normalization mode, from -60 to 0: LUFS for lufs, dBFS for peak/rms. Defaults when selecting a mode are -14 LUFS, -1 dBFS peak, and -20 dBFS RMS.
--tail-length <seconds>Render additional tail after file ends, in seconds (for reverbs, delays). Without this flag, the preset’s tail settings are used.
--no-tailDisable tail rendering — output is truncated at input file duration
--max-threads <count>Parallel processing threads (default: min(4, CPU cores))
--fail-fastStop remaining batch work after the first render failure
--render-report <path>Write a JSON report, including failures and cancellation; missing parent directories are created after validation
--session-name <name>Name this batch session in the report
--preserve-formatKeep source file’s format when no override is specified. Also accepts --preserve-original-format.
--no-preserve-formatForce preset default format
--preserve-spacesKeep spaces in output filenames, overriding the preset
--no-preserve-spacesReplace spaces with underscores, overriding the preset; with neither flag, use the preset setting
--overwrite-outputsReplace existing output files instead of skipping them. Never overwrites source files; use --in-place for that.
--in-placeAllow a resolved output to replace its input (the only flag that does; --overwrite-outputs does not). Also required for a preset whose output is set to overwrite source files. Batchy renders to a temporary file and swaps only after a successful render; use only when replacement is intentional.

General Options

OptionShortDescription
--help-hShow help message
--help-jsonOutput help in JSON format — useful for building GUI wrappers or validating automation scripts
--list-override-keysList all valid per-output override keys and accepted values
--list-presetsList available catalog presets and exit
--verbose-vEnable detailed logging
--log-file <path>Write logs to a file; Batchy creates missing parent directories
--progressShow progress bar. Also accepts --show-progress.
--dry-runValidate inputs and configuration without processing

License Commands

These are standalone, mutually exclusive commands. They do not require --batch-process, --input, or --preset, and exit after the requested license operation. Headless exports use the same machine license state as the GUI. Start a 7-day free trial with your email address from the welcome screen or Manage License, or purchase and activate a license. Marketing emails are optional. An active trial also permits headless exports on the same machine; the CLI does not start trials. Legacy trials retain their original terms.

OptionDescription
--license-statusPrint the current license state and machine ID; returns 0 even when the machine is unlicensed or the trial has expired
--activate <license-key>Activate this machine and exit; a rejected activation returns 1, while a missing key returns 2
--deactivateDeactivate this machine and exit; returns 1 when no active license exists or deactivation fails
Batchy --license-status
Batchy --activate "YOUR-LICENSE-KEY"
Batchy --deactivate

Accepted Aliases

The canonical names above are recommended for new scripts. The parser also accepts these compatibility spellings:

Canonical optionAccepted aliases
--help-h
--verbose-v
--batch-process--batch
--input-i
--preset-p
--output-dir-o, --output-directory
--output-format--format, --file-format
--output-sample-rate--sample-rate, --samplerate, --rate
--output-bit-depth--bit-depth, --bitdepth, --depth
--output-filename--filename, --file-name, --filename-template, --output-filename-template
--normalization--normalisation
--target-loudness--loudness, --targetloudness
--output-channels--channels
--progress--show-progress
--preserve-format--preserve-original-format
--output--outputs
--output-override--override
Paths, Validation & Output Safety
  • Relative paths: file and directory arguments are resolved from the process’s current working directory, including --input, preset paths, --output-dir, --log-file, --render-report, GUI load paths, and positional audio paths. Paths beginning with ~ resolve from the user’s home directory.
  • Validation before mutation: parser and mode-validation failures do not create user-requested output, log, or report directories. Each output destination is also safety-checked before its directory is materialized.
  • Contained outputs: filename templates may create safe subdirectories but must remain relative beneath the resolved output root; absolute filenames and .. escapes are rejected. Output roots are canonicalized through symlinks, and blocked system locations or over-limit path components are rejected before writing.
  • Existing files: a different existing output is skipped by default; pass --overwrite-outputs to replace it.
  • Input replacement: if an output resolves to the input itself (including a preset set to overwrite source files), Batchy fails unless --in-place explicitly permits replacement; --overwrite-outputs only replaces earlier outputs and never overwrites a source file. The error explains the fix, including when an empty token made the names match. In-place renders use a temporary sibling plus swap/rollback protection rather than writing directly over the source.

For automation, use distinct input/output directories and run --dry-run first. A dry run performs production path and output-collision validation without rendering or creating output directories.

JSON Render Reports

--render-report <path> writes a deterministic JSON summary after a batch reaches processing, including failed, skipped, and cancelled counts. It creates missing report parent directories. Commands rejected before processing do not create a report; if a requested report cannot be written, the process returns exit code 1.

The stable top-level fields are session, summary, parameterOverrides, and files:

{
  "session": {
    "name": "nightly-mastering",
    "startTime": "...",
    "endTime": "...",
    "durationMs": 1234,
    "batchyVersion": "...",
    "preset": "mastering.batchyfx"
  },
  "summary": {
    "totalFiles": 2,
    "succeeded": 1,
    "failed": 1,
    "skipped": 0,
    "cancelled": 0,
    "exitCode": 1
  },
  "parameterOverrides": [],
  "files": [
    {
      "input": "...",
      "output": "...",
      "status": "success|failed|skipped",
      "error": "present when applicable",
      "durationMs": 0,
      "inputSize": 0,
      "outputSize": 0,
      "inputFormat": { "sampleRate": 48000, "bitDepth": 24, "channels": 2 },
      "outputFormat": { "sampleRate": 48000, "bitDepth": 24, "channels": 2 },
      "peakLevelDb": 0,
      "warnings": []
    }
  ]
}

Use --session-name to label the report. The report’s summary.exitCode matches the process result for the reported batch, including exit 130 for cancellation. Headless reports currently provide aggregate rows: their per-file path/format fields may contain the requested batch paths and zero/unknown metadata, with an aggregate-only warning. Do not treat those fields as a per-file manifest.

Supported Formats

Input Formats

WAV and AIFF are always available. FLAC, MP3, and OGG depend on the readers registered in that build; M4A/AAC/CAF use Apple Core Audio, and WMA/ASF require Windows Media Format support. Run Batchy --help on the target machine for the exact list.

Output Formats

  • Always available: WAV, AIFF, FLAC, OGG
  • MP3: written with the LAME encoder that ships with Batchy on macOS and Windows. If that encoder is missing, MP3 is not listed; run --help on the target machine to check.

Note: AAC/M4A output is not supported.

Filename Templates

Important: Shell quoting. Templates containing $tokens must be single-quoted on macOS/Linux to prevent shell variable expansion:

--output-filename '$filename_$date'     # Correct (single quotes)
--output-filename "$filename_$date"     # WRONG — shell expands $filename and $date

On Windows CMD, $ is not special. In PowerShell, use single quotes or backtick escaping (`$filename).

Built-in Tokens

TokenDescriptionExample
$filenameOriginal filename (no extension)mysong
$outputnodeOutput node nameMaster

Date & Time Tokens

TokenDescriptionExample
$dateYYYY-MM-DD2026-03-26
$timeHH-MM-SS14-30-22
$timestampFull timestamp20260326-143022
$yearFour-digit year2026
$yearshortTwo-digit year26
$monthTwo-digit month03
$monthnameMonth nameMarch
$dayTwo-digit day26
$hourTwo-digit hour (24h)14
$minuteTwo-digit minute30
$secondTwo-digit second22

Counter Token

TokenDescriptionExample
$counterAuto-incrementing counter1, 2, 3, ...
$counter{N}Zero-padded to N digits001, 002, ...

Note: The {N} padding syntax only works with the $counter token.

System Tokens

TokenDescriptionExample
$userSystem usernamejohndoe
$computerComputer namestudio-mac

Path Tokens

For use in templates that include directory structure:

TokenDescription
$documentsUser’s Documents directory
$musicUser’s Music directory
$desktopUser’s Desktop directory
$homeUser’s home directory
$workingCurrent working directory
$sourceInput file’s parent directory
$appdataApplication data directory
$tempSystem temp directory

User-Defined Tokens

Set via CLI arguments:

FlagTokenDescription
--project <name>$projectProject name
--author <name>$authorAuthor/artist name
--client <name>$clientClient name
--engineer <name>$engineerEngineer name
--studio <name>$studioStudio name
--show <name>$showShow/production name
--user-token <name=value>${name}Custom token; repeat the option for multiple values. Names must start with a letter and contain only letters, digits, and underscores.
batchy --batch-process \
  --input ./audio \
  --preset mypreset.batchyfx \
  --project "Album 2026" \
  --author "Artist Name" \
  --user-token rev=v2 \
  --output-filename '$project/$author/${rev}_$filename'
# Produces: Album 2026/Artist Name/v2_mysong.wav

Removed Tokens

The deliverable tokens $version, $mix, $language, $territory and $deliverable were removed. Older presets that still use them render the word as literal text; supply a value with --user-token (for example --user-token version=v2) to fill one in.

Metadata Tokens

Filled in automatically for every file. Write names that contain an underscore in braces: a bare token stops at the first _, so $sample_rate is read as $sample followed by _rate.

  • Source file: ${source_file_modified}, ${source_file_created}, ${source_parent_folder}
  • Audio (the file being written): ${sample_rate}, ${bit_depth}, $duration, $channels, ${channel_count}
Per-Output Overrides

When your preset has multiple outputs, you can customize settings per output node. Run --list-override-keys to see all valid keys and accepted values.

Syntax

Two equivalent syntaxes:

--output-override="<target>:<key>:<value>"
--output:<target>.<key>=<value>

Where <target> is an output node name or wildcard selector (e.g., Stems/*).

Override Precedence

  1. Per-output overrides (--output-override, --output:) — highest
  2. Global CLI overrides (--output-format, --output-sample-rate, etc.)
  3. Preset defaults — lowest

Override Keys Reference

KeyAliasesValid ValuesDefault
output-formatformat, file-formatwav, aiff, flac, ogg, mp3wav
output-sample-ratesample-rate, samplerate, rate22050, 44100, 48000, 88200, 96000, 192000, samesame
output-bit-depthbit-depth, bitdepth, depth16, 24, 32, 32float, samesame
output-channelschannelsmono, stereo, same, graphsame
normalizationnormalisationnone, peak, rms, lufsnone
target-loudnessloudness, targetloudness-60.0 to 0.0-14.0
output-filenamefilename, file-name, filename-templatetemplate with $tokens$filename
output-path-templatepath, output-path, path-templatetemplate with $tokens(empty)
preserve-formatpreserve-original-formattrue/false, yes/no, on/off, 1/0false
tail-length—positive number (seconds)(preset default)
no-tail—true/false, yes/no, on/off, 1/0false

output-path-template is a scoped override key, not a standalone flag. Use --output-override='Master:output-path-template:$project/Masters' or --output:Master.output-path-template='$project/Masters'.

Examples

# Different format per output
--output-override="Master:format:wav" \
--output-override="Stems/*:format:flac"

# Different loudness targets for different delivery platforms
--output-override="Streaming:loudness:-14" \
--output-override="CD:loudness:-9"

# Using legacy syntax
--output:Master.format=wav \
--output:Stems/*.format=flac
Multi-Output Processing

Batchy supports presets with multiple output nodes. By default, all output nodes are rendered.

# Render specific outputs only
./Batchy --batch-process \
  --input audio.wav \
  --preset stems_preset.batchyfx \
  --output "Master,Vocals,Drums"

# Use wildcards
--output "Stems/*"

# Per-output format overrides
--output-override "Master:format:wav" \
--output-override "Stems/*:format:flac"
Audio Quality Notes

Sample Rate Conversion

When --output-sample-rate differs from the source, offline rendering uses the highest-quality 200-point windowed-sinc mode (approximately -120 dB aliasing rejection). Its group delay is compensated so converted files remain sample-aligned in duration.

Dithering

When enabled in the preset’s output node, TPDF (Triangular Probability Density Function) dithering is applied at the final write depth (for example, when delivering 16-bit audio). Configure it in the GUI when creating the preset.

Double-dithering is automatically prevented: any in-graph dithering is suppressed during batch rendering so only the final post-render dither is applied.

Loudness Measurement

LUFS normalization uses integrated programme loudness with ITU-R BS.1770-4/EBU R128 weighting and gating. LUFS and RMS normalization then use true-peak-aware limiting plus a final BS.1770-4 true-peak safety stage at -1.0 dBTP; peak normalization remains gain-only and targets sample peak. Uncommon channel layouts without a canonical BS.1770 table use a conservative flat-weight fallback and emit a warning.

Normalization modeDefault when selected from CLI
LUFS-14 LUFS
Peak-1 dBFS sample peak
RMS-20 dBFS RMS

Pass --target-loudness to override these defaults. Delivery-platform recommendations change; follow the current specification from your distributor or broadcaster rather than treating Batchy’s defaults as a delivery mandate.

GUI Launch Options

These flags launch Batchy in GUI mode with pre-loaded state — they require a display and are distinct from headless --batch-process mode. Do not combine GUI launch/automation flags with --batch-process; Batchy rejects mixed modes before opening the UI or creating requested output paths.

File & Preset Loading

OptionDescription
--load-audio=<path>Load audio file or directory into GUI (repeatable)
--load-preset=<name>Load preset by name or path
--scan-plugin=<path>Scan a single plugin file and exit

Positional arguments (bare audio file paths) are also loaded into the GUI. Relative GUI paths resolve from the current working directory, just like headless paths.

Automation Flags

OptionDescription
--auto-playStart playback automatically after loading
--auto-renderOpen batch window and start rendering after loading. If any output would replace its own source file (including a preset set to overwrite source files), the whole batch is refused unless you also pass --in-place; --batch-process refuses only the affected files.
--auto-processedEnable processed mode (show rendered waveform)
--show-windowKeep the main window visible when supplying a GUI preset or auto-render command; these normally run without the main window

Render Control

OptionDescription
--exit-after-renderExit application after render completes
--output-dir <path>Set the destination for GUI --auto-render; other batch-only output overrides require --batch-process

Example: Automated Render Pipeline

./Batchy \
  --load-audio=/audio/session \
  --load-preset="Mastering Chain" \
  --auto-render \
  --exit-after-render
External Plugin Support

To use third-party VST/AU plugins in batch mode, first run the GUI to scan your plugins. The cache is stored at:

PlatformPath
macOS~/Library/Application Support/Batchy/pluginList.xml
Windows%APPDATA%\Batchy\pluginList.xml

The CLI automatically loads this cache. Without it, only built-in effects are available.

Examples

Process with custom output settings

./Batchy --batch-process \
  --input /audio/masters \
  --preset mastering_chain.batchyfx \
  --output-dir /audio/output \
  --output-format flac \
  --output-sample-rate 96000 \
  --output-bit-depth 24 \
  --normalization lufs \
  --target-loudness -14 \
  --progress

Process with tail rendering

./Batchy --batch-process \
  --input /audio/vocals \
  --preset reverb_chain.batchyfx \
  --tail-length 3.0 \
  --output-format flac

Preserve original format during normalization

./Batchy --batch-process \
  -i /audio/mixed_formats \
  -p normalize.batchyfx \
  --preserve-format \
  --normalization lufs \
  --target-loudness -14

WAV-to-FLAC archival conversion

./Batchy --batch-process \
  -i /audio/session_masters \
  -p passthrough.batchyfx \
  --output-format flac \
  --output-bit-depth 24 \
  -o /archive/flac

Stem delivery with client naming

./Batchy --batch-process \
  -i session.wav \
  -p stems_export.batchyfx \
  --client "Acme Records" \
  --project "Album 2026" \
  --output-filename '$client/$project/$filename_$outputnode' \
  --output-format wav \
  --output-sample-rate 48000 \
  --output-bit-depth 24

Log to file for debugging

./Batchy --batch-process \
  -i audio.wav \
  -p effect.batchyfx \
  -v --log-file /tmp/batchy.log

Scheduled folder automation

Run the same command from macOS launchd or Windows Task Scheduler. Existing outputs are skipped by default, so a recurring job can safely revisit the incoming directory:

Batchy --batch-process \
  --input /audio/incoming \
  --preset /presets/auto_process.batchyfx \
  --output-dir /audio/processed \
  --render-report /audio/reports/latest.json \
  --fail-fast

Script integration

#!/bin/bash
./Batchy --batch-process \
  --input "$1" \
  --preset effect.batchyfx \
  --output-dir ./processed
status=$?

case "$status" in
  0)   echo "Processing completed successfully" ;;
  1)   echo "One or more processing operations failed" ;;
  2)   echo "Command or configuration error" ;;
  130) echo "Processing was cancelled or interrupted" ;;
  *)   echo "Unexpected exit code: $status" ;;
esac
exit "$status"
Error Handling & Troubleshooting

Exit Codes

CodeMeaning
0Success: the requested operation completed
1Processing failure: a render/fatal processing error occurred, result accounting was inconsistent, or a requested report could not be written
2Configuration error: invalid or incompatible arguments, missing input/preset, nothing to process, or pre-processing validation failure
130Cancelled or interrupted: Ctrl+C, SIGINT, SIGTERM, internal cancellation, or deadline expiry

Debugging Failed Runs

Combine --verbose, --log-file, and --dry-run to diagnose issues:

# Validate configuration without processing
./Batchy --batch-process -i /audio -p preset.batchyfx --dry-run --verbose

# Run with full logging to file
./Batchy --batch-process -i /audio -p preset.batchyfx --verbose --log-file debug.log

Common Errors

  • “Preset not found” — use the full .batchyfx file path, or run --list-presets to see available catalog names
  • “No audio files found” — run Batchy --help and check that the input directory contains a format supported by that platform build
  • “Plugin not available in headless mode” — third-party plugins require a GUI scan first (see External Plugin Support above)
  • “Refusing to render: the output for … would overwrite the source file itself” — choose a separate --output-dir or a different --output-filename, or pass --in-place only when source replacement is intentional (--overwrite-outputs is not enough)

Log Locations

PlatformPath
macOS~/Library/Application Support/Batchy/Logs/batch_process_*.log
Windows%APPDATA%\Batchy\Logs\batch_process_*.log

Limitations

  • Real-time plugin parameters cannot be automated during batch processing
  • Rendering is streamed rather than buffered as a whole file, but source/output format limits, free disk space, path limits, plugin behavior, and the configured render deadline still apply
  • Some plugin formats may not be available in headless mode

Support

Troubleshooting

Audio Issues

No Audio Output

  1. Check Settings → Audio Settings... — verify correct interface selected
  2. Ensure audio interface is connected and powered on
  3. Check system audio settings (macOS: System Settings → Sound → Output)
  4. Try increasing buffer size to 512 or 1024 samples
  5. Ensure sample rate matches your interface
  6. Press B to toggle bypass — if sound works, issue is in processing chain

Audio Dropouts / Glitches

  1. Increase buffer size (Settings → Audio Settings...)
  2. Close other audio applications and background apps
  3. Bypass heavy plugins to identify CPU-heavy nodes
  4. Use direct USB/Thunderbolt connection (avoid hubs)
  5. Copy files to local SSD before processing

Distortion or Clipping

  1. Check gain staging — aim for -6dB to -3dB peaks between nodes
  2. Reduce limiter/compressor intensity
  3. Bypass plugins one at a time to isolate culprit
  4. Use 24-bit or 32-bit float output for maximum headroom
Plugin Issues

Plugin Not Found

  1. Rescan: Settings → Rescan Plugins
  2. Verify plugin location:
    • macOS VST3: /Library/Audio/Plug-Ins/VST3
    • macOS AU: /Library/Audio/Plug-Ins/Components
    • Windows VST3: C:\Program Files\Common Files\VST3
  3. Batchy supports VST3 and AU only — VST2 is not supported
  4. Plugins must be 64-bit
  5. Check blacklist: Settings → Plugin Settings...
  6. macOS: Check System Settings → Privacy & Security for unsigned plugins

Plugin Crashes Batchy

  1. Note which plugin you added before the crash
  2. Update the plugin to latest version from vendor
  3. Send crash logs to support: macOS ~/Library/Logs/DiagnosticReports/

Plugin UI Not Appearing

  1. Double-click plugin node to open editor
  2. Check if plugin window is behind Batchy (Mission Control / taskbar)
  3. Close and reopen plugin editor, or restart Batchy
File Loading Problems

"File Could Not Be Loaded"

  1. Check format — use the platform-specific input list printed by Batchy --help
  2. Verify file isn't corrupted (try opening in another app)
  3. Very high sample rates (384kHz+) may not be supported
  4. Check file permissions and path length

Large File Warnings

Batchy uses memory-mapped I/O — actual RAM usage is only 5-30 MB per file regardless of size. Warnings appear at files ≥ 2 GB and are informational only.

Adjust threshold: Preferences → File Limits → Warning Threshold (10-25%)

Drag and Drop Not Working

  1. Drop directly onto waveform area, not toolbar
  2. macOS: Check System Settings → Privacy → Files and Folders
  3. Try using File → Open instead
Batch Processing Issues

Batch Processing Fails to Start

  1. Verify preset file path and .batchyfx extension
  2. Check input path exists and files have supported extensions
  3. Choose a writable output location; Batchy creates missing directories only after the command and path checks pass
  4. Use --dry-run to validate configuration

Some Files Fail

  1. Use --verbose for detailed error messages
  2. Use --output-sample-rate same to avoid resampling issues
  3. Add $counter{3} to filename template to avoid conflicts
  4. Check disk space and file permissions

Processing is Very Slow

  1. Increase threads: --max-threads 8
  2. Copy files to local SSD (network drives are slow)
  3. Use --output-sample-rate same to skip resampling
  4. Use --progress to monitor
Performance & Stability

Slow / Laggy UI

  1. Close other applications to free RAM and CPU
  2. Very complex graphs (50+ nodes) can impact UI — consider splitting presets
  3. Increase buffer size for high-resolution files
  4. Update graphics drivers

Batchy Crashes

  1. Most crashes are plugin-related — disable recently added plugins
  2. Try deleting preferences: macOS ~/Library/Application Support/Batchy/
  3. Update your OS and Batchy to latest version
  4. Send crash logs to support

Batchy Won't Launch

  1. macOS: Batchy is notarized by Apple. If macOS still blocks it, make sure the installer came from batchyandfriends.com and contact support.
  2. Windows: SmartScreen may warn about a new release. Make sure the installer came from batchyandfriends.com, then choose "More info" → "Run anyway".
  3. Try deleting license file and re-activating
License & Activation

Download, try or activate Batchy

Download Batchy and start a 7-day free trial with all features. An email address is required to start; no payment is required. After seven days, purchase and activate a license to continue processing and exporting. Downloading does not start the trial. New trials begin when started in the app and cannot be extended or restarted.

  1. Download the installer for your platform and install Batchy.
  2. Select Start 7-day free trial on the welcome screen or in Manage License, then enter your email address. Marketing emails are optional. Already purchased? Paste the license key from your purchase email.
  3. If you entered a license key, select Activate.

"License Invalid" or "License Expired"

  1. Check license status in Preferences → License, or run Batchy --license-status on a headless machine
  2. Ensure internet connection for first activation
  3. Copy-paste license key from email to avoid typos
  4. Personal licenses allow 2 simultaneous activations — deactivate old machine first

Headless Activation

Batchy --activate "YOUR-LICENSE-KEY"
Batchy --license-status
# Before retiring or moving this machine:
Batchy --deactivate

Each command is standalone and exits immediately. Do not combine license commands with one another.

"Activation Required" on first launch

Fresh installations offer a 7-day trial or license activation. If existing license data cannot be read, the recovery screen requires license activation; it does not grant a replacement trial. Contact support if you need help recovering access.

Platform-Specific Issues

macOS: "Batchy is damaged and can't be opened"

Batchy is notarized by Apple, so this message usually means the download was interrupted or came from somewhere other than batchyandfriends.com. Download the installer again from the downloads page. If macOS still blocks it, contact support.

Windows: Missing DLL Error

Install Visual C++ Redistributable 2022 (x64) from Microsoft, then restart.

Windows: Audio Device Shows "ASIO4ALL"

Install proper ASIO drivers from your audio interface manufacturer.

Getting Help

Before contacting support, please gather:

  1. Batchy version (Help → About Batchy)
  2. Operating system version
  3. Audio interface make and model
  4. Steps to reproduce the issue
  5. Screenshots of error dialogs
  6. Crash logs: macOS ~/Library/Logs/DiagnosticReports/ • Windows %LOCALAPPDATA%\Batchy\CrashDumps\ and Event Viewer

Email: [email protected]

Typically within 24 hours (business days).