Skip to content

Repository files navigation

WolfEQ green waveform logo

WolfEQ

Your music. Your curve. Your workspace.
A Windows parametric EQ editor for FiiO and Snowsky devices.

Latest beta Windows 10 / 11 .NET 8 MIT license

Download • Changelog • Discord app channel • Report an issue

✨ Meet WolfEQ 0.7.0 beta

A redesigned workspace, colorful live spectrum bars, light and dark backgrounds, and a faster path from finding a preset to making it yours.

WolfEQ editor with colorful spectrum bars and expanded band controls

App render with an illustrative spectrum. Band controls start collapsed; expand them when you want hands-on faders or a table.

What's new
🎚️ Make room for your mix Drag EQ nodes, edit frequency/gain/Q/filter shape, and resize Band controls live with the divider.
🎶 See what's playing Colorful spectrum bars behind the curve, with smooth motion and a one-click toggle.
🎨 Make it yours Light or dark backgrounds, green by default, solid accents, and Aurora, Sunset, Neon, and Ocean palettes.
📚 Find, name, and open A compact library, naming before saving, Curve/Table online previews, and local names for device slots.
⌨️ One-button switching A Windows ScriptDeck setup flyout generates a ready-to-paste PowerShell command for your saved device.
✨ Details that connect Theme-aware icons, device thumbnails, selected-band highlights, subtle glows, and a larger transparent app/tray logo.
See light mode

WolfEQ light appearance with green accents

Choose Settings → Appearance → Background. Background mode is saved, and accent colors adapt for readable contrast.

🚀 Download

Get the latest release

🔌 First session

  1. Connect your DAC over USB. In Settings → Device → Connections, refresh the list, select your device, and save the connection.
  2. For supported K13 lighting controls, select its Bluetooth connection too. Use Identify to confirm you have the same unit.
  3. Open Library. Choose a saved preset, or search AutoEQ and OPRA through Discover Online and inspect its Curve or Table preview.
  4. Choose Open in editor. Opening a preset closes the library; browsing alone does not replace your edits.
  5. Shape the curve or expand Band controls. Use Optimize headroom to make room for boosts, then Save to Library to choose a name.
  6. Select the intended USER slot and write when ready. On supported devices, Live sync sends edits automatically; its question-mark tooltip explains the behavior.

The Tools menu groups editing, A/B comparison, device preparation, and sharing. Undo/redo is available in the title bar and with Ctrl+Z / Ctrl+Y. Import/export includes Equalizer APO, FiiO XML, and JSON workflows.

🎶 Live spectrum

The Spectrum toggle beside EQ Curve shows audio playing through the default Windows multimedia output. It is a visual monitor: it does not process audio or measure the DAC's final analog response. Spectrum height uses its own relative level scale, separate from the EQ gain axis.

  • Enabled by default; an explicitly saved off choice is respected.
  • Follows output-device changes and fades to silence when playback stops.
  • Pauses capture and animation when disabled, hidden, minimized, inactive, or scrolled out of view.
  • Separate drawing layers, cached colors, and precomputed FFT data reduce repeated work.

📚 Presets and local slot names

My Library includes compact search, + New, and a preset-actions menu for duplicate, delete, and device writing. Save to Library asks for a name before saving. Online presets are saved locally before opening or writing; their previews include a read-only band table.

WolfEQ remembers descriptive names locally for each saved USB device and slot. They appear in the slot picker, selected-slot subtitle, and tray quick profiles. These labels stay on your PC; they are not names written into device firmware.

📌 System tray

Click or right-click the green waveform for quick access to saved USER slots and their local names. Double-click it or choose Open editor to return to the workspace.

  • Close to tray defaults on; Minimize to tray defaults off. Both preferences are saved.
  • Quit exits the app and checks for unsaved edits.
  • The active indicator reflects the confirmed device slot. Optional saved profile lighting follows confirmed switches.

Tray and automation switches select EQ already stored on the device. Save or discard editor changes before switching; use the editor to write a library preset into a slot.

⌨️ Stream Deck setup

In Settings → Integrations, open Windows ScriptDeck setup:

  1. Follow the link to Windows ScriptDeck by Start-Automating in the Elgato Marketplace.
  2. Choose the USER slot to switch to.
  3. Copy the generated PowerShell script. WolfEQ fills in its executable location and saved USB device path, with argument quoting handled for you.
  4. Add the plugin's script action to a Stream Deck key and paste the script into On Press. Repeat for other slots.

Re-copy scripts if you move WolfEQ or change its saved connection. For lighting, save the Bluetooth connection and enable Apply saved lighting when switching USER slots under Profile Lights.

The existing Save shortcut workflow is also available: assign the exported .lnk to Stream Deck's System → Open action.

Command-line automation and exit codes
WolfEQ.exe --slot 2
WolfEQ.exe --device "Desk K13" --slot 3
WolfEQ.exe --list-devices
WolfEQ.exe --help

--device accepts the saved connection name or exact USB path. It must match the saved connection and never silently reassigns Bluetooth. Existing instances receive requests without taking focus; cold commands run without opening the editor.

Exit codes: 0 success, 1 failure/disconnected, 2 invalid arguments/unsupported slot, 3 busy/unsaved edits, 4 slot switched but lighting failed.

Results are also written to %LOCALAPPDATA%\WolfEQ\automation-result.json. Use PowerShell Start-Process -Wait -PassThru when you need the GUI executable's exit code.


🎧 Device Support

Device Status Notes
FiiO K13 R2R ✅ WolfEQ verified Main tested target. USB detection, EQ readback, USER slot switching, PEQ writes, global preamp writes, preset storage, LED cues, USB/COAX input switching.
FiiO BR15 R2R ⚠️ Experimental Community-sourced 10-band layout and USER 1-10 save path. Save-only until WolfEQ readback is physically verified.
FiiO QX13 ⚠️ Experimental Community-sourced 10-band layout and USER 1-10 save path. Save-only until WolfEQ readback is physically verified.
FiiO BTR17 ⚠️ Experimental Community-sourced 10-band USER 1-10 layout with V2 0x21 save command. Save-only until physically verified.
FiiO BTR13 ⚠️ Experimental Community-sourced 10-band layout with USER 1-3. Save-only until WolfEQ readback is physically verified.
FiiO KA15 ⚠️ Experimental Device profile, slot map, 10-band PEQ layout, USB EQ path. Needs real-device testing.
FiiO KA17 ⚠️ Experimental Device profile, slot map, 10-band PEQ layout, USB EQ path. Needs real-device testing.
FiiO JA11 ⚠️ Experimental Device profile, 5-band PEQ layout, core filter support. Needs real-device testing.
Snowsky Melody ⚠️ Experimental 10-band PEQ and USER 1-3 writes. Automatic EQ readback and Load from slot are disabled because the device does not answer the required read command. Readback remains unavailable by design.
Snowsky Retro Nano ⚠️ Experimental Product-name matched profile, slot map, 10-band PEQ layout. Needs real-device testing.

For full Windows audio format support, set the K13 to UAC2.0 mode. FiiO documents that enabling K13 R2R PEQ limits playback to PCM 192 kHz/24-bit, disables MQA processing, and can briefly reconnect USB when switching between EQ Off and an active EQ mode.

The BR15 R2R, QX13, BTR17, and BTR13 layouts are adapted from the 0BSD-licensed DevicePEQ project and cross-checked against FiiO's published PEQ documentation. See THIRD_PARTY_NOTICES.md. Upstream configuration is evidence for an experimental profile, not a substitute for WolfEQ hardware verification.

K15, K17, and K19 are not listed as supported because their dedicated serial/RS232 control path needs a separate transport implementation. K11 R2R support likewise needs the separate WalkPlay protocol rather than WolfEQ's current FiiO HID handler.


Security and Data Safety

  • Preset, library, settings, online-profile, release-metadata, and installer sizes are bounded before parsing or saving.
  • FiiO XML import prohibits DTD/entity expansion; imported numeric values are normalized to safe finite ranges.
  • Local library, lighting, and BLE cache updates use atomic replacement to reduce corruption after an interrupted save.
  • AutoEQ, OPRA, and application-update downloads are restricted to their expected HTTPS hosts and repository paths.
  • Update downloads use unique temporary paths, enforce a 250 MB limit, and must have a Windows executable header.
  • FiiO writes validate the device profile, writable slot, band number, filter support, numeric ranges, HID report size, and response timeout.
  • Application logs escape line breaks, truncate oversized entries, and rotate at 5 MB.

WolfEQ does not upload local presets or device data. Online search and update checks contact the providers named above. Installer code signing or published checksum verification remains recommended for a stable release.


🧪 Beta Notes

This is beta software, and every profile except K13 R2R is intentionally marked experimental in WolfEQ. The BR15 R2R, QX13, BTR17, and BTR13 profiles begin in save-only mode: automatic readback and live writes stay disabled until their Windows HID behavior is confirmed on physical hardware.

If you test an experimental profile:

  1. Select the exact device model in Settings and use Reconnect device.
  2. Start with a flat or low-gain profile and an unused USER slot.
  3. Confirm the selected slot on the device before choosing Write to USER.
  4. Report the Windows version, device firmware, USB mode, selected slot, and whether the device stayed connected.
  5. Attach %LOCALAPPDATA%\WolfEQ\logs\wolfeq.log when reporting a failure.

K13 controls still being explored:

  • front-panel LCD text
  • volume control
  • EQ on/off switching
  • NOS / OS / SAM mode switching
  • optical and Bluetooth input switching

Please open an issue if something breaks or feels strange. Include your Windows version, device model, USB mode, and the exact preset/slot action you were doing.


🛠️ Build

git clone https://github.com/audioslayer/wolfeq.git
cd wolfeq
dotnet build WolfEQ.csproj
dotnet run --project WolfEQ.csproj

Run the regression suite and dependency vulnerability audit:

dotnet test tests\WolfEQ.Tests\WolfEQ.Tests.csproj
dotnet list WolfEQ.csproj package --vulnerable --include-transitive

For a local build-and-launch from a mapped drive or network share, use deploy.bat. It keeps WPF intermediate files under %LOCALAPPDATA%\WolfEQ\deploy-build so switching between drive letters and UNC paths cannot leave stale generated-source references.

If an older checkout reports missing Views\*.g.cs files, close any active build, remove the generated obj folder, and run the current deploy.bat again.

Build the installer with Inno Setup 6 installed:

.\build-installer.bat

📄 License

MIT. See LICENSE for details.


Built by Tyson Wolf
Buy me a coffee

About

Modern Windows EQ workspace for the FiiO K13 R2R

Resources

Stars

2 stars

Watchers

1 watching

Forks

Releases

Packages

Contributors

Languages