Batchy Documentation
Setup, batch processing, .batchyfx presets, CLI and headless rendering, plugin hosting, visualization, and troubleshooting for Batchy & Friends.
Getting Started
What is Batchy?
Batchy is a professional audio processing tool that combines:
- Visual Node-Based Processing — Build audio chains visually with drag-and-drop nodes
- Batch Automation — Process hundreds of files with intelligent filename templating
- Real-Time Playback — Hear your changes instantly with professional audio quality
- Professional Visualization — RX-style spectrograms and waveform analysis
First Launch
1. Audio Device Setup
Configure your audio interface for optimal performance:
- Go to Preferences → Audio Settings
- Select your audio interface from the dropdown
- Choose sample rate (44.1kHz, 48kHz, 96kHz, etc.)
- Set buffer size:
- Smaller (64-128 samples) = Lower latency, higher CPU usage
- Larger (512-1024 samples) = Higher latency, lower CPU usage
- Recommended: 256 samples for most systems
2. Plugin Scanning
Batchy automatically scans for plugins on first launch. Supported formats: VST3 and AU (macOS).
To rescan: Preferences → Plugin Management → Scan Plugins
Default Plugin Locations:
| Platform | Format | Path |
|---|---|---|
| macOS | VST3 | /Library/Audio/Plug-Ins/VST3 |
| macOS | AU | /Library/Audio/Plug-Ins/Components |
| Windows | VST3 | C:\Program Files\Common Files\VST3 |
Basic Workflow
Opening an Audio File
Drag and Drop: Drag an audio file from Finder/Explorer onto the Batchy window.
File Menu: Click File → Open Audio File (Cmd/Ctrl+O)
Supported Formats: WAV, AIFF, FLAC, MP3, OGG, M4A, WMA, CAF
Building Your First Processing Chain
- Switch to Effect Chain View — Click the "Effect Chain" tab
- Add Nodes — Drag a node from the left panel onto the canvas
- Connect Nodes — Click and drag from an output pin (right side) to an input pin (left side)
- Adjust Parameters — Click a node to select it, adjust in the right panel
Example chain:
Input → Gain (+3dB) → Parametric EQ (boost 5kHz) → Compressor → Output
Real-Time Playback
| Control | Shortcut |
|---|---|
| Play/Pause | Space |
| Stop | Cmd/Ctrl + . |
| Toggle Loop | L |
| Toggle Bypass (A/B) | B |
Saving & Presets
- Click File → Save Preset
- Enter a name for your preset
- Add description (optional but recommended)
- Choose a category (e.g., "Mastering", "Dialogue", "Music")
- Add tags for easy searching
- Click "Save"
Your preset is saved as a .batchyfx file and can be recalled via File → Load Preset, used for batch processing, shared with colleagues, and used cross-platform.
Batch Processing (GUI)
- Load Files — Add multiple files to the file list (drag and drop) or File → Add Files to Batch
- Configure Output — Right-click Output node, set filename template, format, sample rate, bit depth
- Start Processing — Click Process → Batch Process Files, review and click "Process"
For command-line processing, see the CLI / Headless section.
Visualization Tools
Waveform View
- Dual-channel stereo display
- Zoom: Mouse wheel or pinch gesture
- Toggle between original and processed views
- Loop regions: Click and drag to set A-B loop points
Spectrogram View
Enable via View → Show Spectrogram
| Setting | Options |
|---|---|
| Color Scheme | RX-Style, Classic, Heat, Blue |
| Frequency Scale | Logarithmic (music), Linear (technical), Mel (vocals), Bark (psychoacoustic) |
| Dynamic Range | Adjustable (default: 70dB) |
Essential Nodes
| Node | Purpose | Key Parameters |
|---|---|---|
| Gain | Level control | Gain (dB) |
| Parametric EQ | Frequency shaping | Frequency, Q, Gain per band |
| Compressor | Dynamic control | Threshold, Ratio, Attack, Release |
| Limiter | Loudness maximization | Ceiling, Release |
| Delay | Echo effects | Time, Feedback, Mix |
| Reverb | Spatial effects | Room Size, Damping, Mix |
| Spectrum Analyzer | Frequency visualization | FFT Size, Display Mode |
| Level Meter | Loudness metering | Peak, RMS, LUFS |
Tips for Success
Performance
- Adjust buffer size — increase if you experience dropouts
- Batch processing automatically uses multiple CPU cores
- Complex chains can be bounced to audio for better performance
Workflow
- Save commonly-used chains as presets
- Right-click node → Rename to label complex graphs
- Use sticky notes and arrows to document routing
- Always test with a single file before batch processing
Quick Reference
Common Tasks
| Task | How |
|---|---|
| Load Audio File | Drag & drop onto window, or File → Open (Cmd/Ctrl+O) |
| Build Processing Chain | Effect Chain tab → drag nodes → connect pins |
| Save Preset | File → Save Preset (Cmd/Ctrl+S) |
| Load Preset | File → Load Preset, or double-click .batchyfx file |
| Batch Process (GUI) | Add files → configure Output node → Process → Batch Process |
| Batch Process (CLI) | ./Batchy --batch-process --input <path> --preset <file> |
Audio Settings
Sample Rates
| Rate | Use |
|---|---|
| 44.1 kHz | CD quality |
| 48 kHz | Video/film standard |
| 96 kHz | Hi-res audio |
| 192 kHz | Ultra hi-res (high CPU) |
Buffer Sizes
| Size | Latency | CPU |
|---|---|---|
| 64-128 samples | 3-6ms | High |
| 256 samples | ~6ms | Balanced (Recommended) |
| 512-1024 samples | 12-23ms | Low |
| 2048 samples | Very high | Minimal |
Bit Depths
| Depth | Use |
|---|---|
| 16-bit | CD quality, smaller files |
| 24-bit | Professional standard |
| 32-bit float | Maximum headroom, no clipping |
Supported Formats
Input
WAV, AIFF, FLAC, MP3, OGG, M4A, WMA, CAF
Output
| Format | Type |
|---|---|
| WAV | Uncompressed PCM (16/24/32-bit) |
| AIFF | Uncompressed PCM (16/24/32-bit) |
| FLAC | Lossless compression |
| OGG | Compressed (lossy) |
| MP3 | Compressed (lossy) |
Filename Tokens
Date/Time
| Token | Example |
|---|---|
$year, $month, $day | 2026, 04, 02 |
$date | 2026-04-02 |
$timestamp | 20260402-143022 |
File & System
| Token | Description |
|---|---|
$filename | Original name without extension |
$counter{N} | Auto-incrementing (N = zero-padding digits) |
$outputnode | Name of the output node |
$user | System username |
$computer | Hostname |
Path Tokens
$documents, $music, $desktop, $home, $source, $working
User-Defined
$project, $author, $client, $engineer, $studio, $show
Metadata Tokens (require MetadataProvider nodes)
$sample_rate, $bit_depth, $duration, $channels, $file_size, $file_created, $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
| Type | Path |
|---|---|
| Presets | ~/Library/Application Support/Batchy/Presets/ |
| Logs | ~/Library/Logs/Batchy/ |
| Settings | ~/Library/Application Support/Batchy/Settings/ |
| Plugin Cache | ~/Library/Application Support/Batchy/pluginList.xml |
Windows
| Type | Path |
|---|---|
| Presets | %APPDATA%\Batchy\Presets\ |
| Logs | %APPDATA%\Batchy\Logs\ |
| Settings | %APPDATA%\Batchy\Settings\ |
| Plugin Cache | %APPDATA%\Batchy\pluginList.xml |
CLI Exit Codes
| Code | Meaning |
|---|---|
| 0 | Success — all files processed |
| 1 | Partial failure — some files failed |
| 2 | Complete failure — configuration error or all files failed |
Performance Tips
- Use appropriate buffer size — balance latency vs. CPU
- Process similar files together — same format/rate = faster
- Use multi-threading for batches — set
--max-threadsto CPU core count - Test with dry run — validate before processing large batches
- Use local storage — network drives slow processing
- Close other audio apps — prevent interface conflicts
Keyboard Shortcuts
Transport Controls
| Shortcut | Action |
|---|---|
| Space | Play/Pause |
| Cmd/Ctrl + . | Stop (return to start) |
| L | Toggle Loop |
| B | Toggle Bypass (A/B) |
| Home | Jump to Start |
| End | Jump to End |
File Operations
| Shortcut | Action |
|---|---|
| Cmd/Ctrl + O | Open Audio File |
| Cmd/Ctrl + S | Save Preset |
| Cmd/Ctrl + Shift + S | Save Preset As |
| Cmd/Ctrl + W | Close Window |
| Cmd/Ctrl + Q | Quit Application |
Editing
| Shortcut | Action |
|---|---|
| Cmd/Ctrl + Z | Undo |
| Cmd/Ctrl + Shift + Z | Redo |
| Cmd/Ctrl + X | Cut |
| Cmd/Ctrl + C | Copy |
| Cmd/Ctrl + V | Paste |
| Cmd/Ctrl + D | Duplicate |
| Delete | Delete Selected |
| Cmd/Ctrl + A | Select All |
| Escape | Clear Selection |
Graph Navigation
| Shortcut | Action |
|---|---|
| Space + Drag | Pan Canvas |
| Middle Mouse + Drag | Pan Canvas (alt) |
| Mouse Wheel | Zoom In/Out |
| Cmd/Ctrl + + | Zoom In |
| Cmd/Ctrl + - | Zoom Out |
| Cmd/Ctrl + 0 | Fit to Window |
| F | Frame Selection |
| H | Home View |
| Tab | Switch View (Waveform/Effect Chain) |
Node Operations
| Shortcut | Action |
|---|---|
| Double-Click Node | Open Editor |
| Cmd/Ctrl + Click | Add to Selection |
| Cmd/Ctrl + E | Bypass Selected |
| R | Rename Node |
| Cmd/Ctrl + I | Node Info |
Parameter Adjustment
| Shortcut | Action |
|---|---|
| Click + Drag | Adjust Value |
| Shift + Drag | Fine Adjust (10x slower) |
| Double-Click Slider | Reset to Default |
| Alt + Click | Type Numeric Value |
| Arrow Keys | Increment/Decrement |
| Page Up/Down | Large Adjust |
Waveform View
| Shortcut | Action |
|---|---|
| Mouse Wheel | Zoom Horizontal |
| Shift + Mouse Wheel | Zoom Vertical |
| Click + Drag | Set Loop Region |
| Double-Click | Clear Loop |
| S | Toggle Spectrogram |
| M | Toggle Mono/Stereo |
| G | Toggle Grid |
Batch Processing
| Shortcut | Action |
|---|---|
| Cmd/Ctrl + B | Open Batch Window |
| Cmd/Ctrl + Enter | Start Processing |
| Escape | Cancel Processing |
| Cmd/Ctrl + R | Refresh 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
CLI / Headless Processing
Overview
Batchy provides powerful command-line batch processing capabilities. True headless operation that doesn't require a display server or GUI session — perfect for CI/CD pipelines, SSH sessions, Docker containers, and server environments.
Quick Start
Process a single file:
./Batchy --batch-process --input audio.wav --preset my_effect.batchyfx
Process all files in a directory:
./Batchy --batch-process --input /path/to/audio/folder --preset my_effect.batchyfx
Run ./Batchy --help for a full list of options, or --help-json for machine-readable output.
Executable Location
| Platform | Path |
|---|---|
| macOS | /Applications/Batchy.app/Contents/MacOS/Batchy |
| Windows | C:\Program Files\Batchy\Batchy.exe |
If Batchy is on your PATH, use batchy --batch-process ... directly.
Command Line Reference
Required Arguments
| Option | Short | Description |
|---|---|---|
--batch-process | --batch | Enable headless batch processing mode |
--input <path> | -i | Input audio file or directory |
--preset <file> | -p | Batchy preset file (.batchyfx) or catalog preset name. Use --list-presets to see available catalog presets. |
Output Configuration
| Option | Short | Description |
|---|---|---|
--output-dir <path> | -o | Output directory (default: same as input) |
--output-format <fmt> | Output format: wav, aiff, flac, ogg, mp3 | |
--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, or “same” | |
--output-filename <template> | Filename template with $tokens (see Filename Templates section) | |
--output <selector> | Select which output nodes to render (see Multi-Output section) | |
--output-override | Per-output setting overrides (see Per-Output Overrides section) |
Processing Options
| Option | Short | Description |
|---|---|---|
--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 <dB> | LUFS target in dBFS (e.g., -14). Range: -60 to 0. Common targets: Spotify/YouTube -14, Apple Music -16, broadcast (EBU R128) -23 | |
--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-tail | Disable tail rendering — output is truncated at input file duration | |
--max-threads <count> | Parallel processing threads (default: min(4, CPU cores)) | |
--preserve-format | Keep source file’s format when no override is specified. Also accepts --preserve-original-format. | |
--no-preserve-format | Force preset default format | |
--preserve-spaces | Preserve spaces in output filenames (default behavior) | |
--overwrite-outputs | Overwrite existing output files instead of skipping them |
General Options
| Option | Short | Description |
|---|---|---|
--help | -h | Show help message |
--help-json | Output help in JSON format — useful for building GUI wrappers or validating automation scripts | |
--list-override-keys | List all valid per-output override keys and accepted values | |
--list-presets | List available catalog presets and exit | |
--verbose | -v | Enable detailed logging |
--log-file <path> | Write logs to a file (parent directory must exist) | |
--progress | Show progress bar. Also accepts --show-progress. | |
--dry-run | Validate inputs and configuration without processing |
Supported Formats
Input Formats
WAV, AIFF, FLAC, MP3, OGG, M4A, WMA, CAF
Output Formats
- Always available: WAV, AIFF, FLAC
- Standard builds also include: OGG, MP3. Run
--helpto verify available formats in your build.
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
| Token | Description | Example |
|---|---|---|
$filename | Original filename (no extension) | mysong |
$outputnode | Output node name | Master |
Date & Time Tokens
| Token | Description | Example |
|---|---|---|
$date | YYYY-MM-DD | 2026-03-26 |
$time | HH-MM-SS | 14-30-22 |
$timestamp | Full timestamp | 20260326-143022 |
$year | Four-digit year | 2026 |
$yearshort | Two-digit year | 26 |
$month | Two-digit month | 03 |
$monthname | Month name | March |
$day | Two-digit day | 26 |
$hour | Two-digit hour (24h) | 14 |
$minute | Two-digit minute | 30 |
$second | Two-digit second | 22 |
Counter Token
| Token | Description | Example |
|---|---|---|
$counter | Auto-incrementing counter | 1, 2, 3, ... |
$counter{N} | Zero-padded to N digits | 001, 002, ... |
Note: The {N} padding syntax only works with the $counter token.
System Tokens
| Token | Description | Example |
|---|---|---|
$user | System username | johndoe |
$computer | Computer name | studio-mac |
Path Tokens
For use in templates that include directory structure:
| Token | Description |
|---|---|
$documents | User’s Documents directory |
$music | User’s Music directory |
$desktop | User’s Desktop directory |
$home | User’s home directory |
$working | Current working directory |
$source | Input file’s parent directory |
$appdata | Application data directory |
$temp | System temp directory |
User-Defined Tokens
Set via CLI arguments:
| Flag | Token | Description |
|---|---|---|
--project <name> | $project | Project name |
--author <name> | $author | Author/artist name |
--client <name> | $client | Client name |
--engineer <name> | $engineer | Engineer name |
--studio <name> | $studio | Studio name |
--show <name> | $show | Show/production name |
batchy --batch-process \
--input ./audio \
--preset mypreset.batchyfx \
--project "Album 2026" \
--author "Artist Name" \
--output-filename '$project/$author/$filename'
# Produces: Album 2026/Artist Name/mysong.wav
Deliverable Metadata Tokens
These tokens resolve from the current processing context first, then fall back to values set in Batchy’s Preferences:
| Token | Description |
|---|---|
$version | Version identifier (e.g., “v2”, “final”) |
$mix | Mix variant (e.g., “vocal up”, “instrumental”) |
$language | Language tag (e.g., “en”, “es”) |
$territory | Territory/region (e.g., “US”, “EU”) |
$deliverable | Deliverable type (e.g., “master”, “stem”, “preview”) |
Metadata Tokens
Require MetadataProvider nodes in your preset:
- File:
$file_size,$file_modified,$file_created,$parent_folder - Audio:
$sample_rate,$bit_depth,$duration,$channels
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
- Per-output overrides (
--output-override,--output:) — highest - Global CLI overrides (
--output-format,--output-sample-rate, etc.) - Preset defaults — lowest
Override Keys Reference
| Key | Aliases | Valid Values | Default |
|---|---|---|---|
output-format | format, file-format | wav, aiff, flac, ogg, mp3 | wav |
output-sample-rate | sample-rate, samplerate, rate | 22050, 44100, 48000, 88200, 96000, 192000, same | same |
output-bit-depth | bit-depth, bitdepth, depth | 16, 24, 32, 32float, same | same |
output-channels | channels | mono, stereo, same | same |
normalization | normalisation | none, peak, rms, lufs | none |
target-loudness | loudness, targetloudness | -60.0 to 0.0 | -14.0 |
output-filename | filename, file-name, filename-template | template with $tokens | $filename |
output-path-template | path, output-path, path-template | template with $tokens | (empty) |
preserve-format | preserve-original-format | true/false, yes/no, on/off, 1/0 | false |
tail-length | — | positive number (seconds) | (preset default) |
no-tail | — | true/false, yes/no, on/off, 1/0 | false |
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, Batchy uses a 200-point windowed-sinc interpolator with better than -100 dB aliasing rejection. The highest quality setting is always used — this is not configurable.
Dithering
TPDF (Triangular Probability Density Function) dithering is applied when reducing bit depth (e.g., 32-float to 16-bit). Dithering is controlled by the preset’s output node settings — configure it in the GUI when creating your 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 an EBU R128 compliant loudness meter (ITU-R BS.1770) with K-weighted pre-filtering, 400 ms gating blocks, absolute gate at -70 LUFS, relative gate at -10 LU below ungated level, and integrated (programme) loudness measurement. After gain is applied, a sample-peak brick-wall limiter engages at -0.09 dBFS to prevent clipping.
| Platform | Target LUFS |
|---|---|
| Spotify, YouTube, Tidal | -14 |
| Apple Music | -16 |
| Broadcast (EBU R128) | -23 |
| Podcast (varies) | -16 to -19 |
Note: Peak normalization uses sample peak measurement, not true peak (inter-sample).
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.
File & Preset Loading
| Option | Description |
|---|---|
--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.
Automation Flags
| Option | Description |
|---|---|
--auto-play | Start playback automatically after loading |
--auto-render | Open batch window and start rendering after loading |
--auto-processed | Enable processed mode (show rendered waveform) |
--view-mode <mode> | Set initial view: waveform, spectrogram, splitview |
--select-files <pattern> | Select files matching glob pattern (repeatable) |
--process-only-selected | Only process selected files during render |
Parameter Overrides
| Option | Description |
|---|---|
--set-param <nodeId:param:value> | Override a node parameter (repeatable) |
--set-bypass <nodeId[:0|1]> | Set node bypass state (default: bypass on; append :0 to un-bypass) |
--save-preset <name> | Save preset after applying overrides |
Render Control
| Option | Description |
|---|---|
--render-report <path> | Write JSON render report to file |
--session-name <name> | Name for this automation session (appears in reports) |
--exit-after-render | Exit application after render completes |
--fail-fast | Stop on first render failure (requires --exit-after-render) |
Example: Automated Render Pipeline
./Batchy \
--load-audio=/audio/session \
--load-preset="Mastering Chain" \
--auto-render \
--exit-after-render \
--render-report=/logs/report.json \
--fail-fast
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:
| Platform | Path |
|---|---|
| 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
Watch folder automation
#!/bin/bash
# Linux (inotifywait) — on macOS, use fswatch instead
# On Windows, use PowerShell FileSystemWatcher or a third-party tool
WATCH_DIR="/audio/incoming"
PRESET="/presets/auto_process.batchyfx"
OUTPUT="/audio/processed"
inotifywait -m "$WATCH_DIR" -e create -e moved_to |
while read dir action file; do
if [[ "$file" =~ \.(wav|aiff|flac)$ ]]; then
./Batchy --batch-process \
--input "$WATCH_DIR/$file" \
--preset "$PRESET" \
--output-dir "$OUTPUT"
fi
done
Script integration
#!/bin/bash
if ./Batchy --batch-process --input "$1" --preset effect.batchyfx; then
echo "Processing completed successfully"
else
echo "Processing failed with code $?"
fi
Error Handling & Troubleshooting
Exit Codes
| Code | Meaning |
|---|---|
| 0 | Success: all files processed |
| 1 | Processing error: one or more files failed |
| 2 | Configuration error: invalid arguments, missing files, or fatal error |
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
.batchyfxfile path, or run--list-presetsto see available catalog names - “No audio files found” — check that the input directory contains supported formats (WAV, AIFF, FLAC, MP3, OGG, M4A, WMA, CAF)
- “Plugin not available in headless mode” — third-party plugins require a GUI scan first (see External Plugin Support above)
Log Locations
| Platform | Path |
|---|---|
| macOS | ~/Library/Logs/Batchy/ |
| Windows | %APPDATA%\Batchy\Logs\ |
Limitations
- Real-time plugin parameters cannot be automated during batch processing
- Maximum file size limited by available RAM
- Some plugin formats may not be available in headless mode
Troubleshooting
Audio Issues
No Audio Output
- Check Preferences → Audio Settings — verify correct interface selected
- Ensure audio interface is connected and powered on
- Check system audio settings (macOS: System Settings → Sound → Output)
- Try increasing buffer size to 512 or 1024 samples
- Ensure sample rate matches your interface
- Press B to toggle bypass — if sound works, issue is in processing chain
Audio Dropouts / Glitches
- Increase buffer size (Preferences → Audio → Buffer Size)
- Close other audio applications and background apps
- Bypass heavy plugins to identify CPU-heavy nodes
- Use direct USB/Thunderbolt connection (avoid hubs)
- Copy files to local SSD before processing
Distortion or Clipping
- Check gain staging — aim for -6dB to -3dB peaks between nodes
- Reduce limiter/compressor intensity
- Bypass plugins one at a time to isolate culprit
- Use 24-bit or 32-bit float output for maximum headroom
Plugin Issues
Plugin Not Found
- Rescan: Preferences → Plugin Management → Scan Plugins
- 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
- macOS VST3:
- Batchy supports VST3 and AU only — VST2 is not supported
- Plugins must be 64-bit
- Check blacklist: Preferences → Plugin Management → Blacklist
- macOS: Check System Settings → Privacy & Security for unsigned plugins
Plugin Crashes Batchy
- Note which plugin you added before the crash
- Update the plugin to latest version from vendor
- Send crash logs to support: macOS
~/Library/Logs/DiagnosticReports/
Plugin UI Not Appearing
- Double-click plugin node to open editor
- Check if plugin window is behind Batchy (Mission Control / taskbar)
- Close and reopen plugin editor, or restart Batchy
File Loading Problems
"File Could Not Be Loaded"
- Check format — Supported: WAV, AIFF, FLAC, MP3, OGG, M4A, WMA, CAF
- Verify file isn't corrupted (try opening in another app)
- Very high sample rates (384kHz+) may not be supported
- 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
- Drop directly onto waveform area, not toolbar
- macOS: Check System Settings → Privacy → Files and Folders
- Try using File → Open instead
Batch Processing Issues
Batch Processing Fails to Start
- Verify preset file path and
.batchyfxextension - Check input path exists and files have supported extensions
- Ensure output directory exists and is writable
- Use
--dry-runto validate configuration
Some Files Fail
- Use
--verbosefor detailed error messages - Use
--output-sample-rate sameto avoid resampling issues - Add
$counter{3}to filename template to avoid conflicts - Check disk space and file permissions
Processing is Very Slow
- Increase threads:
--max-threads 8 - Copy files to local SSD (network drives are slow)
- Use
--output-sample-rate sameto skip resampling - Use
--progressto monitor
Performance & Stability
Slow / Laggy UI
- Close other applications to free RAM and CPU
- Very complex graphs (50+ nodes) can impact UI — consider splitting presets
- Increase buffer size for high-resolution files
- Update graphics drivers
Batchy Crashes
- Most crashes are plugin-related — disable recently added plugins
- Try deleting preferences: macOS
~/Library/Application Support/Batchy/ - Update your OS and Batchy to latest version
- Send crash logs to support
Batchy Won't Launch
- macOS Gatekeeper: Right-click → Open, or run
xattr -cr /Applications/Batchy.app - Windows SmartScreen: Click "More info" → "Run anyway"
- Try deleting license file and re-activating
License & Activation
"License Invalid" or "License Expired"
- Check license status: Preferences → License
- Ensure internet connection for first activation
- Copy-paste license key from email to avoid typos
- Personal licenses allow 2 simultaneous activations — deactivate old machine first
Trial Expired
Visit the website to purchase a full license. One trial per computer — reinstalling won't reset the trial.
Platform-Specific Issues
macOS: "Batchy is damaged and can't be opened"
xattr -cr /Applications/Batchy.app
Run in Terminal, then try launching again.
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:
- Batchy version (Help → About Batchy)
- Operating system version
- Audio interface make and model
- Steps to reproduce the issue
- Screenshots of error dialogs
- Crash logs: macOS
~/Library/Logs/DiagnosticReports/• Windows%APPDATA%\Batchy\Logs\
Email: support@batchyandfriends.com
Typically within 24 hours (business days).
Known Issues
CoreRegistry Race Condition in Parallel Batch Processing
Status: RESOLVED (2026-01-31)
Resolution: Migrated from global CoreRegistry singleton to per-graph core ownership. Each graph now owns its cores, eliminating cross-graph interference.
Impact
- 100-file batch processing with 8 threads: 100% reliable (was ~60% failure rate)
- No more SIGSEGV/SIGABRT crashes from concurrent core access
- Simpler mental model: cores are scoped to their owning graph
No open issues at this time. If you encounter a problem, please contact support@batchyandfriends.com.