A cross-platform desktop application for stacking and managing audio channels from multiple media files. Built with JUCE and C++20.
- Drag and Drop: Drop audio or video files to automatically detect and import audio channels
- Waveform Display: Visual waveform envelope for each channel lane
- Lane Reordering: Drag lanes to reorder the channel stack
- Audio Preview: Play back all channels mixed to stereo for auditioning
- Multiple Export Options:
- Single multichannel file (WAV, AAC, Vorbis, Opus)
- Multiple mono files
- Stereo pair files
- Configurable bit depth and sample rate
ChannelStacker requires FFmpeg to be installed on your system. The app will show a helpful dialog on first launch if FFmpeg is not detected.
Option 1: Using Homebrew (Recommended)
# Install Homebrew if you don't have it
/bin/bash -c "$(curl -fsSL https://raw.githubusercontent.com/Homebrew/install/HEAD/install.sh)"
# Install FFmpeg
brew install ffmpegOption 2: Using MacPorts
sudo port install ffmpegOption 3: Manual Download
- Download a static build from FFmpeg.org
- Extract and move
ffmpegandffprobeto/usr/local/bin/
Option 1: Using winget
winget install ffmpegOption 2: Manual Download
- Download from gyan.dev (choose "ffmpeg-release-essentials.zip")
- Extract to
C:\Program Files\ffmpeg - Add
C:\Program Files\ffmpeg\binto your PATH:- Press Win+X, select "System"
- Click "Advanced system settings"
- Click "Environment Variables"
- Under "System variables", find "Path", click "Edit"
- Click "New" and add
C:\Program Files\ffmpeg\bin - Click "OK" on all dialogs
- Restart any open terminals or applications
Ubuntu/Debian:
sudo apt update
sudo apt install ffmpegFedora:
sudo dnf install ffmpegArch Linux:
sudo pacman -S ffmpegAfter installation, verify FFmpeg is working:
ffmpeg -version
ffprobe -versionBoth commands should display version information.
make # Build the app
make run # Build and run
make help # Show all available commandsmacOS (Recommended - using Makefile):
make # Build Release
make BUILD_TYPE=Debug # Build Debug
make xcode # Open in Xcode for debuggingmacOS/Linux (manual):
mkdir build
cd build
cmake ..
cmake --build . --config ReleaseWindows (Visual Studio):
mkdir build
cd build
cmake .. -G "Visual Studio 17 2022"
cmake --build . --config ReleaseOr open the generated .sln file in Visual Studio.
# Unsigned DMG (for local testing)
make dmg-unsigned
# Signed DMG (requires Developer ID)
make sign CODESIGN_IDENTITY="Developer ID Application: Your Name (TEAMID)"
make dmgFor distribution outside the App Store, apps must be notarized:
# Set your Apple Developer credentials
export CODESIGN_IDENTITY="Developer ID Application: Your Name (TEAMID)"
export APPLE_ID="your@email.com"
export APPLE_TEAM_ID="XXXXXXXXXX"
export APPLE_APP_PASSWORD="@keychain:notarytool-password"
# Full release: build, sign, package, notarize
make release- Add Files: Drag audio or video files into the application window
- View Channels: Each audio channel creates a lane with waveform visualization
- Reorder: Drag the grip handle on the left of each lane to reorder
- Delete: Click the X button on any lane to remove it
- Export: Click "Export..." to choose an export format:
- Single Multichannel WAV: Combines all lanes into one file with N channels
- Multiple Mono WAVs: Exports each lane as a separate mono file
- Stereo Pairs: Groups adjacent lanes into stereo files
- Uses
juce::ChildProcessto run ffmpeg/ffprobe as external commands - Audio is decoded to raw float32 PCM for waveform computation
- Waveform envelope uses 4000 points for responsive display
- Export uses ffmpeg's
asplitwithpan=monoandamergefilters - No libav* linking - pure subprocess approach for simplicity and licensing flexibility
- Batch processing