Releases: averagenative/0xFX
v1.3.1
Maintenance release — signed and Apple-notarized macOS builds.
🍎 macOS
- Signed + notarized — no more Gatekeeper workaround. Double-click the .pkg, follow the installer, done.
- Same install layout as 1.3.0:
/Applications/0xFX.appplus/Library/Audio/Plug-Ins/{CLAP,VST3,Components}/.
🐛 Fixes rolled up from post-1.3.0 work
- Factory presets now load on macOS (
.appchdirs toContents/Resources/). - "Open recording folder" creates the folder first so the button works before the first recording.
- DMG replaced by a proper
.pkginstaller that handles standalone + all three plug-in formats in one flow.
Other platforms
No changes from 1.3.0. Linux/Windows users should stay on 1.3.0 — same binaries.
v1.3.0
Download (pick your platform):
- Linux x64 —
0xFX-1.3.0-linux-x64.tar.gzor0xFX-1.3.0-linux-x86_64.AppImage - Linux ARM64 (Chromebook / RasPi) —
0xFX-1.3.0-linux-arm64.tar.gzor0xFX-1.3.0-linux-aarch64.AppImage - Windows x64 —
0xFX-1.3.0-windows-x64-setup.exe(installer) or.zip - Windows ARM64 —
0xFX-1.3.0-windows-arm64-setup.exe(installer) or.zip - macOS (Universal — Apple Silicon + Intel) —
0xFX-1.3.0-macos-universal.pkg(installer, recommended) or.zip(portable)
Optional — Cab IR pack:
650-assorted-cabinet-impulses.zip(~12 MB) — mirrored public-domain cabinet IR pack (zoyd's release, musical-artifacts.com/artifacts/252). 651 .wav impulse responses. Unzip anywhere, then in 0xFX use Import IR... → Folder (bulk, recursive)... and point it at the unzipped folder to load the whole set into your custom cab library.
🍎 macOS install
Double-click 0xFX-1.3.0-macos-universal.pkg and follow the installer. The installer places:
- App —
/Applications/0xFX.app - CLAP —
/Library/Audio/Plug-Ins/CLAP/0xFX.clap - VST3 —
/Library/Audio/Plug-Ins/VST3/0xFX.vst3 - Audio Unit —
/Library/Audio/Plug-Ins/Components/0xFX.component
Click Customize in the installer UI if you only want certain plug-in formats.
Gatekeeper workaround (one-time, until notarization ships)
This build is not yet Apple-notarized, so Gatekeeper will block both the .pkg and the installed app on first launch.
Installer: right-click the .pkg → Open → Open (bypass the "from an unidentified developer" warning).
App (after install): macOS will block 0xFX.app the first time you launch it. Either:
- Option A (GUI): open System Settings → Privacy & Security, scroll to the Security section, and click "Open Anyway" next to the 0xFX warning.
- Option B (Terminal):
xattr -cr /Applications/0xFX.app xattr -cr /Library/Audio/Plug-Ins/CLAP/0xFX.clap xattr -cr /Library/Audio/Plug-Ins/VST3/0xFX.vst3 xattr -cr /Library/Audio/Plug-Ins/Components/0xFX.component
You only have to do this once per install. Notarization is on the roadmap so future releases won't need the workaround.
🔁 Looper
- 9-slot looper module (TASK-363) — keyboard-driven grid for live/practice use. Record, overdub, undo, clear, play/pause per slot. Tab cycles through all slots,
?shows the full keybind cheat sheet. - Docked panel + global keybinds — looper lives in its own strip above the signal chain; Space toggles record/play on the focused slot, number keys 1–9 focus a slot from anywhere in the app.
- RT-safe looper audio — buffer allocation is done off the audio thread so the engine never blocks during
RECORDINGstate. Fixed an issue where looper pads could drop clicks during record arming. - Slot import/export — save individual loops out and bring your own audio in.
- Master-volume bypass fix — looper playback now correctly respects the master volume fader (was ignoring it in dual-chain mode).
🎨 Theme System
- 11 color palettes — Worn Grime (default), Hacker Green, Cyberpunk Neon, Studio Pale, Blueprint, Vaporwave, Nature Dirt, Toxic Slime, Blood Moon, Amber CRT, Molten Forge.
- Per-session persistence — last selected theme restores on next launch.
📦 Custom Cab Library
- User .wav IR upload (TASK-369) — bring your own cabinet impulse responses via a visible "Load IR..." button next to the cab dropdown. Name and optional image per custom cab.
- Shared user library across instances — JSON-backed, mutex-protected so the standalone app and multiple plugin instances see the same custom cab list.
- Bulk import — recursive folder scan for batch IR loading. Invalid files are skipped with toast feedback.
- Auto-downscale oversized user images + procedural fallback icon when no image is provided.
🖼 App Icon + Toolbar Refresh
- SVG master icon — flat orange "0xFX" monogram, rasterized to all target sizes via
rsvg-convert+tools/generate_icons.sh. Replaces the older neon glow logo. - OS window metadata — standalone (SDL2) and plugin windows (Win32 HICON, X11
_NET_WM_ICON) now display the new icon in taskbars, alt-tab, window corners. - Toolbar wordmark — in-app top bar uses the gradient "0xFX" wordmark instead of the old logo asset. Cleaner left-align, correct spacing against the tuner.
- Refreshed README screenshots showing the new look across multiple themes.
🐛 Fixes
- Multi-instance plugin crash on close — NULL deref in ImGui OpenGL3 backend when tearing down a second plugin instance (fixed).
- Cab-label lookup on chain B — was pulling chain A's labels in dual-chain mode.
- UX polish — X close buttons, popup overlap drag fix, "recording saved" dialog, resizable plugin window.
- macOS factory presets —
.appnow chdirs toContents/Resources/on launch so bundled factory presets load. - macOS "Open recording folder" — creates the folder first so the button works before the first recording.
- 1.3.0 audit fixes — shell-safe
open_folder, droppedimgui_internal, assorted RT-safety nits.
🔜 Next up (1.4.0)
- AI tone matching (BYOK) — later-phase work on profile-from-reference against a user-supplied LLM key.
- macOS notarization — once Apple Developer enrollment completes, the Gatekeeper workaround above will no longer be needed.
v1.2.0
Download (pick your platform):
- Linux x64 —
0xFX-1.2.0-linux-x64.tar.gzor0xFX-1.2.0-linux-x86_64.AppImage - Linux ARM64 (Chromebook) —
0xFX-1.2.0-linux-arm64.tar.gzor0xFX-1.2.0-linux-aarch64.AppImage - Windows x64 —
0xFX-1.2.0-windows-x64-setup.exe(installer) or.zip - Windows ARM64 —
0xFX-1.2.0-windows-arm64-setup.exe(installer) or.zip
🎸 Sound
- Real measured cab IRs — 4 public-domain impulse responses from the 650 Assorted pack replace the previous parametric synthesis for every stock cab (TASK-368). Synthetic models remain as a fallback. Users report "this is actually what cabinets sound like."
- Fixed cab IR normalization — cabs used to vary 6–10 dB in output depending on which one you picked. Now peak-normalized to −0.4 dBFS so swapping cabs keeps your level consistent.
- Fixed cab-swap audio race — rapid scrolling through cabs could crash the audio thread mid-convolution. Now waits 20 ms between marking the old IR unloaded and freeing its buffers so in-flight callbacks exit cleanly.
🎛 Standalone UX
- Input gain trim + −20 dB pad (TASK-367) — slider in audio settings, also mirrored next to the input meter in the status bar for quick adjustments without opening settings. Saves per-session.
- Scroll-wheel + right-click on faders — hover any input-gain or master-volume fader: scroll wheel nudges in fine steps, right-click resets to 0. Works on all three faders (settings + status bar + master).
- PipeWire mic detection fixed (TASK-365) — native Fedora 43/44 with PipeWire now reliably enumerates USB interfaces (iRig, Scarlett). Monitor sources are filtered out.
- Audio device change mid-session — switching output device no longer requires an app restart.
📦 Distribution
- Multi-arch release packaging (TASK-352) —
./scripts/packaging/package_release.sh 1.2.0auto-detects installed toolchains and builds every arch it can.--arch x64|arm64|alllets you restrict scope. - Containerized Linux ARM64 — first release to ship real Linux ARM64 binaries. Built inside an aarch64 Fedora container via podman + qemu-user-static, so no fiddly sysroot setup required on the host. Works on Chromebooks, RasPi, etc.
- Packaging robustness — script now uses
set -o pipefailand wipes stale cross-compile build dirs, so a silent configure failure can't sneak stale binaries into a release. - Windows smoke-test Wine bottle (TASK-366) —
scripts/wine/{setup,install-0xfx,launch-0xfx,install-reaper}.shscripts bring up a dedicated Wine prefix on Linux for validating the NSIS installer and plugin scanning before shipping. Seescripts/wine/README.md.
🐛 Other fixes
- Preset delete flow, preset name collisions, Ctrl+S save behavior
- Pedal "remove" X moved to an overlay on the pedal image (TASK-343)
- AppImage aarch64 + fuse3 runtime (TASK-364) — prerequisite for this release's real Linux ARM64 support
🔜 Next up (1.3.0)
- Looper module with keyboard-driven 9-slot grid for live/practice use (TASK-363)
- Custom cab IR upload button (TASK-369) so you can bring your own
.wavIRs
v1.1.0 — Multi-Architecture Support
v1.1.0 — Multi-Architecture Support
ARM64 builds for Windows and Linux. macOS universal binary with CLAP, VST3, and AU plugins.
New platforms
- Windows ARM64 — Native ARM64 build for Surface Pro, Snapdragon laptops, etc. Cross-compiled via llvm-mingw.
- Linux ARM64 — Native aarch64 build for Raspberry Pi 4/5, Pine64, ARM Chromebooks, etc.
- macOS Universal — Fat binary (arm64 + x86_64) for Intel and Apple Silicon Macs. Includes CLAP, VST3, and AU plugins.
Downloads
| Platform | Architecture | File |
|---|---|---|
| Windows | x64 | 0xFX-1.1.0-windows-x64.zip |
| Windows | ARM64 | 0xFX-1.1.0-windows-arm64.zip |
| Linux | x64 | 0xFX-1.1.0-linux-x64.tar.gz |
| Linux | ARM64 | 0xFX-1.1.0-linux-arm64.tar.gz |
| macOS | Universal (Intel + Apple Silicon) | 0xFX-1.1.0-macos-universal.dmg / .zip |
macOS notes
- DMG contains the standalone app with drag-to-Applications installer
- ZIP includes standalone app + CLAP, VST3, and AU plugin bundles
- Unsigned — clear Gatekeeper quarantine:
xattr -cr /Applications/0xFX.app - Requires SDL2:
brew install sdl2 - See
Plugins/INSTALL_PLUGINS.txtin the ZIP for plugin installation paths
Changes
- ARM64 cross-compilation toolchains (llvm-mingw for Windows, aarch64-linux-gnu for Linux)
- Cross-compiled SDL2 2.30.12 for ARM64 Windows and Linux
- Architecture-aware VST3 bundle paths (arm64-win, aarch64-linux)
- Compiler-aware static linking (Clang vs GCC)
- VST3 proper bundle directory structure on all platforms
- macOS universal binary support via CMAKE_OSX_ARCHITECTURES
- macOS CLAP/VST3/AU proper .bundle structure with Info.plist + codesigning
- AUv2 plugin via CPLUG (aufx type, loads in Logic Pro, GarageBand, etc.)
- Ad-hoc codesigning placeholder (CODESIGN_IDENTITY cmake option)
- AppImage .desktop file for Linux desktop integration
Build from source
# macOS (universal binary)
brew install sdl2 cmake
cmake -B build -DCMAKE_BUILD_TYPE=Release
cmake --build build -j$(sysctl -n hw.ncpu)
# Windows ARM64 (from Linux)
LLVM_MINGW_PREFIX=~/tools/llvm-mingw-* cmake -B build_win_arm64 \
-DCMAKE_TOOLCHAIN_FILE=cmake/llvm-mingw-arm64.cmake -DCMAKE_BUILD_TYPE=Release
cmake --build build_win_arm64 -j$(nproc)
# Linux ARM64 (from x64 Linux)
cmake -B build_linux_arm64 \
-DCMAKE_TOOLCHAIN_FILE=cmake/aarch64-linux-gnu.cmake -DCMAKE_BUILD_TYPE=Release
cmake --build build_linux_arm64 -j$(nproc)Full Changelog: v1.0.0...v1.1.0
Linux AppImage
AppImages provide a portable, no-install format that runs on most Linux distributions.
| Architecture | File |
|---|---|
| x86_64 | 0xFX-1.1.0-x86_64.AppImage |
| aarch64 | 0xFX-1.1.0-aarch64.AppImage |
Both AppImages use the type2-runtime which supports FUSE 2 and FUSE 3.
FUSE requirements: Running an AppImage requires FUSE to be available on the host system.
- Fedora/RHEL:
sudo dnf install fuse3 - Debian/Ubuntu:
sudo apt install libfuse2(for FUSE 2) orsudo apt install fuse3(for FUSE 3) - Arch:
sudo pacman -S fuse3
No FUSE available? Use the extract-and-run workaround:
APPIMAGE_EXTRACT_AND_RUN=1 ./0xFX-1.1.0-x86_64.AppImageThis extracts the AppImage to a temporary directory and runs directly without mounting.
v1.0.0
0xFX v1.0.0
Guitar amp simulator & effects pedalboard — standalone app + CLAP/VST3 plugins.
Downloads
| Platform | File | Description |
|---|---|---|
| Windows | 0xFX-1.0.0-windows-x64-setup.exe |
Installer (standalone + plugins + presets) |
| Windows | 0xFX-1.0.0-windows-x64.zip |
Portable zip |
| macOS | 0xFX-1.0.0-macos-x64.dmg |
Disk image (drag to Applications) |
| macOS | 0xFX-1.0.0-macos-x64.zip |
Zip with app + plugins |
| Linux | 0xFX-1.0.0-linux-x64.tar.gz |
Standalone + plugins + presets |
| Linux | 0xFX-1.0.0-x86_64.AppImage |
Single-file standalone (double-click to run) |
Installation
Windows
Installer (recommended): Run 0xFX-1.0.0-windows-x64-setup.exe. It installs the standalone app, CLAP plugin, and VST3 plugin automatically. Includes Start Menu and Desktop shortcuts.
Portable zip: Extract anywhere and run 0xfx_gui.exe. To use plugins in your DAW, copy manually:
CLAP: Copy 0xFX.clap to C:\Program Files\Common Files\CLAP\
VST3: Copy 0xFX.vst3 to C:\Program Files\Common Files\VST3\0xFX.vst3\Contents\x86_64-win\
macOS
DMG: Open the disk image and drag 0xFX to Applications.
Zip: Extract and copy 0xFX.app to /Applications.
Plugin installation:
mkdir -p ~/Library/Audio/Plug-Ins/CLAP
mkdir -p ~/Library/Audio/Plug-Ins/VST3
cp Plugins/0xFX.clap ~/Library/Audio/Plug-Ins/CLAP/
cp -r Plugins/0xFX.vst3 ~/Library/Audio/Plug-Ins/VST3/Gatekeeper (unsigned app): macOS may block the app with "cannot be opened because the developer cannot be verified". Fix by running in Terminal:
# For the standalone app:
xattr -cr /Applications/0xFX.app
# For the CLAP plugin:
xattr -cr ~/Library/Audio/Plug-Ins/CLAP/0xFX.clap
# For the VST3 plugin:
xattr -cr ~/Library/Audio/Plug-Ins/VST3/0xFX.vst3Or go to System Settings > Privacy & Security and click "Allow Anyway" after attempting to open.
Requires: SDL2 (brew install sdl2)
Linux
AppImage (easiest):
chmod +x 0xFX-1.0.0-x86_64.AppImage
./0xFX-1.0.0-x86_64.AppImagetar.gz: Extract and run ./0xfx_gui. Plugin installation:
# CLAP plugin
mkdir -p ~/.clap
cp 0xFX.clap ~/.clap/
# VST3 plugin
mkdir -p ~/.vst3/0xFX.vst3/Contents/x86_64-linux
cp 0xFX.vst3 ~/.vst3/0xFX.vst3/Contents/x86_64-linux/Requires: SDL2 (sudo apt install libsdl2-2.0-0 on Ubuntu/Debian)
Plugin Paths Reference
| Format | Windows | macOS | Linux |
|---|---|---|---|
| CLAP | C:\Program Files\Common Files\CLAP\ |
~/Library/Audio/Plug-Ins/CLAP/ |
~/.clap/ |
| VST3 | C:\Program Files\Common Files\VST3\ |
~/Library/Audio/Plug-Ins/VST3/ |
~/.vst3/ |
After copying plugins, restart your DAW and rescan.
Highlights
Amps & Cabs
- 12 circuit-modeled amp models — bilinear transform digitization (Fender, Marshall, Vox, Mesa, Orange, Sunn, Peavey topologies)
- Circuit-accurate tone stacks (Fender TMB, Marshall TMB, Vox Cut, Tilt EQ)
- Dual amp chains with independent amp/cab/mic per chain and mix control
- 10 microphone models — dynamic, ribbon, condenser with distance/angle/position controls
Effects
- 41 effect pedals — overdrive, distortion, fuzz, delay, reverb, modulation, wah, compression, pitch, experimental
- 9 rack processors — FET/optical/VCA compressors, passive/parametric EQ, tape/tube saturation, limiter, room sim
- Pre/post pedal sections with drag-and-drop reorder
MIDI & Automation
- 137 automatable parameters — full DAW automation via CLAP + VST3
- MIDI CC control with MIDI learn mode
- Chromatic tuner — MPM pitch detection
Recording
- WAV (16/24-bit), MP3 (192/320kbps), FLAC (16/24-bit)
- Timestamped filenames
Presets
- 32 factory presets — organized by genre (Classic, 80s, 90s, Modern, Heavy, Experimental)
- Open .0xfx JSON format — human-readable, shareable, version-controllable
GUI
- Skeuomorphic design — photorealistic amp/pedal/rack graphics, interactive knobs
- "Worn grime" visual aesthetic — beat-up, scuffed, road-worn gear
Architecture
- Pure C99 DSP engine — zero dependencies, real-time safe
- Public API boundary — GUI never touches engine internals
- Native plugin GUI — Win32+WGL (Windows), X11+GLX (Linux), no SDL2 in plugins
- Thread-safe multi-instance — run multiple 0xFX instances in the same DAW session
- Multi-plugin coexistence — 0xFX + 0x808 + 0xSYNTH can all run simultaneously
Building from Source
# Linux
sudo apt install libsdl2-dev libgl-dev g++
cmake -B build -DCMAKE_BUILD_TYPE=Release
cmake --build build -j$(nproc)
# macOS
brew install sdl2 cmake
cmake -B build -DCMAKE_BUILD_TYPE=Release
cmake --build build -j$(sysctl -n hw.ncpu)
# Windows (cross-compile via MinGW)
cmake -B build_win -DCMAKE_TOOLCHAIN_FILE=cmake/mingw-w64.cmake
cmake --build build_win -j$(nproc)