|
| 1 | +ExhaleGUI |
| 2 | +A modern macOS application that provides an intuitive graphical interface for the Exhale high-quality XE AAC audio encoder. |
| 3 | + |
| 4 | +XE AAC is a format that can create fm / cd quality at extremely low bitrates 36-48kb stereo with esbr. |
| 5 | + |
| 6 | +I created this after finding the fre ac mac gui did not support newer exhale versions. |
| 7 | + |
| 8 | +Overview |
| 9 | +ExhaleGUI simplifies the process of converting audio files to high-quality AAC format using the Exhale encoder. With support for batch processing, parallel conversions, and multiple input formats, it's designed to make professional audio encoding accessible through a clean, native macOS interface. |
| 10 | + |
| 11 | +Bugs |
| 12 | +Note it creates m4a by default so rename your m4as into mp4s before converting. Also try to use downloads folder and subfolders to run app and exhale from due to mac permissions. |
| 13 | +Note setting 0 only works with <32khz this is from exhale. |
| 14 | +To build you need to download ffmpeg first and add into your buildfolder. |
| 15 | +It is large because it bundles both intel ffmpeg 75mb and apple silicon ffmpeg 50mb. Would be a lot smaller with one or other. |
| 16 | + |
| 17 | +Features |
| 18 | +🎵 Multi-Format Support |
| 19 | +Input formats: WAV, MP3, FLAC, M4A, AAC |
| 20 | +Output format: M4A (AAC) using Exhale encoder |
| 21 | +Smart conversion: Automatically handles format conversion via bundled FFmpeg |
| 22 | + |
| 23 | +⚡ Batch Processing |
| 24 | +Drag-and-drop multiple files at once |
| 25 | +Parallel conversion (1-8 concurrent processes) |
| 26 | +Real-time progress tracking for each file |
| 27 | +Queue management with add/remove capabilities |
| 28 | + |
| 29 | +🎛️ Quality Presets |
| 30 | +Choose from Exhale's comprehensive quality options: |
| 31 | +Standard HE-AAC (0-9): 48 kbps to 192+ kbps |
| 32 | +eSBR Low-Bitrate (a-g): 36-108 kbps for efficient encoding (these are recommended) |
| 33 | +Preset 5 (128 kbps) set as default for optimal quality/size balance |
| 34 | + |
| 35 | +🔧 Advanced Options |
| 36 | +Metadata preservation: Maintain ID tags from source files (note most players do not support tags for xe aac) |
| 37 | +Source file management: Optional deletion after successful conversion |
| 38 | +Custom temp directories: Configure temporary file locations |
| 39 | +Exhale binary configuration: Point to your Exhale installation (suggest using exhale and gui in downloads folder) |
| 40 | + |
| 41 | +💻 Native macOS Experience |
| 42 | +Clean, modern SwiftUI interface |
| 43 | +Drag-and-drop file handling |
| 44 | +Settings tabs for easy configuration |
| 45 | +Real-time conversion status updates |
| 46 | + |
| 47 | +Requirements |
| 48 | +macOS 11.0+ (Big Sur or later) |
| 49 | +Exhale encoder binary - Download from GitLab |
| 50 | +Intel or Apple Silicon Mac (Universal support) |
| 51 | + |
| 52 | +Installation |
| 53 | + |
| 54 | +Download ExhaleGUI from the releases page and exhale from releases page |
| 55 | + |
| 56 | +To build download ffmpeg from releases page |
| 57 | + |
| 58 | +Configure Exhale path in ExhaleGUI Settings → General → Executable Path |
| 59 | + |
| 60 | +Usage |
| 61 | +Basic Conversion |
| 62 | + |
| 63 | +Launch ExhaleGUI |
| 64 | +Drag audio files onto the drop zone or click "Add Files" |
| 65 | +Select desired quality preset (default: 5 - ~128 kbps) |
| 66 | +Click "Start Conversion" |
| 67 | + |
| 68 | +Quality Settings |
| 69 | + |
| 70 | +Preset 0: ~48 kbps (lowest, ≤32kHz sample rate only) |
| 71 | +Preset 5: ~128 kbps (recommended default) |
| 72 | +Preset 9: ~192+ kbps (highest quality) |
| 73 | +Presets a-g: eSBR encoding for lower bitrates (36-108 kbps) |
| 74 | + |
| 75 | +Advanced Features |
| 76 | + |
| 77 | +Parallel conversions: Adjust in Settings → Advanced (default: 2) (note exhale is not multithreaded so only multiple files sped up not one) |
| 78 | +Metadata preservation: Enable in Settings → General |
| 79 | +Source file deletion: Enable with caution in Settings → General |
| 80 | + |
| 81 | +Technical Details |
| 82 | +Conversion Process |
| 83 | + |
| 84 | +WAV files: Direct conversion using Exhale |
| 85 | +Other formats: Two-step process: |
| 86 | + |
| 87 | +Step 1: Convert to WAV using bundled FFmpeg |
| 88 | +Step 2: Encode to M4A using Exhale |
| 89 | + |
| 90 | + |
| 91 | +Performance |
| 92 | + |
| 93 | +Utilizes multiple CPU cores for parallel processing |
| 94 | +Efficient memory usage during batch conversions |
| 95 | +Progress tracking with estimated completion times |
| 96 | + |
| 97 | +Troubleshooting |
| 98 | +Common Issues |
| 99 | +"Exhale executable not found" |
| 100 | + |
| 101 | +Ensure Exhale is installed and path is correctly set in Settings |
| 102 | +Verify the binary has execute permissions: chmod +x /path/to/exhale |
| 103 | + |
| 104 | +"Sample rate too high for Preset 0" |
| 105 | + |
| 106 | +Use presets 1-9 or a-g for files with >32kHz sample rate |
| 107 | +Preset 0 only supports ≤32kHz audio |
| 108 | + |
| 109 | +Conversion fails |
| 110 | + |
| 111 | +Check input file integrity |
| 112 | +Verify sufficient disk space |
| 113 | +Try a different quality preset |
| 114 | +Check console output for detailed error messages |
| 115 | + |
| 116 | +Debug Tools |
| 117 | + |
| 118 | +Test Exhale Binary: Settings → Advanced → Debug section |
| 119 | +Test Bundled FFmpeg: Verify internal FFmpeg functionality |
| 120 | +Console output: Detailed logging for troubleshooting |
| 121 | + |
| 122 | +About Exhale |
| 123 | +Exhale is a state-of-the-art AAC encoder that provides: |
| 124 | + |
| 125 | +High-quality audio encoding |
| 126 | +Efficient compression ratios |
| 127 | +Support for various AAC profiles |
| 128 | +Optimized for both quality and file size |
| 129 | + |
| 130 | +Development |
| 131 | +Built with Xcode |
| 132 | + |
| 133 | +SwiftUI for modern macOS interface |
| 134 | +AVFoundation for audio metadata handling |
| 135 | +Combine for reactive programming |
| 136 | +Process for external tool integration |
| 137 | +Third-Party Components |
| 138 | +FFmpeg |
| 139 | +This application includes FFmpeg, which is licensed under the LGPL v2.1 or later. |
| 140 | + |
| 141 | +FFmpeg website: https://ffmpeg.org/ |
| 142 | +Source code: https://github.com/FFmpeg/FFmpeg |
| 143 | +License: LGPL v2.1+ (https://www.gnu.org/licenses/old-licenses/lgpl-2.1.html) |
| 144 | + |
| 145 | +FFmpeg is used for audio format conversion (MP3, FLAC → WAV) and is included as a bundled binary. The FFmpeg source code and build instructions are available at the links above. |
| 146 | +Exhale Encoder |
| 147 | +ExhaleGUI serves as a graphical interface for the Exhale AAC encoder: |
| 148 | + |
| 149 | +Exhale project: https://gitlab.com/ecodis/exhale |
| 150 | +License: Please refer to the Exhale project for current licensing terms |
| 151 | +Note: Exhale is a separate download and not included with ExhaleGUI |
| 152 | + |
| 153 | +License & Disclaimer |
| 154 | +ExhaleGUI is released under [your chosen license]. |
| 155 | +FFmpeg Disclaimer: This software uses libraries from the FFmpeg project under the LGPL v2.1. FFmpeg source code is available at https://ffmpeg.org/download.html. ExhaleGUI does not claim any rights to FFmpeg and complies with LGPL redistribution requirements. |
| 156 | +Exhale Disclaimer: ExhaleGUI is an independent third-party interface and is not affiliated with or endorsed by the Exhale encoder development team. Users must obtain Exhale separately and comply with its licensing terms. |
| 157 | +Contributing |
| 158 | +Issues and feature requests are welcome! Please check the existing issues before creating new ones. |
| 159 | + |
| 160 | +Note: ExhaleGUI is a third-party interface for the Exhale encoder and is not affiliated with the Exhale development team. |
0 commit comments