Skip to content

Feature Request: Expose HTTP/WebSocket API for External Control #1002

@dazdaz

Description

@dazdaz

Feature Request: Expose HTTP/WebSocket API for External Control

Summary

Request to expose EqMac's internal API as a network-accessible HTTP or WebSocket endpoint, enabling third-party applications to programmatically control EQ settings.

Use Case

Those folks developing music player apps that integrates with Roon and Plex or others. I want users to control system-wide EQ from within their app, applying the same EQ settings to all audio sources including Roon playback.

Currently, Roon's API doesn't expose DSP/EQ control, so system-wide EQ via EqMac is the ideal solution.

What I Discovered

While investigating EqMac v1.8.12 Pro, I found that:

  1. A full HTTP-style API already exists internally:

    GET /enabled, /gain, /balance, /presets, /info, /effects
    POST /open-url, /reset
    DELETE /presets, /effects
    
  2. The API uses WebViewJavascriptBridge for Swift ↔ JavaScript communication within the WKWebView-based UI.

  3. No network port is exposed - the API is only accessible from EqMac's internal web UI.

Proposed Solution

Expose the existing API on a localhost HTTP or WebSocket port (e.g., http://127.0.0.1:37765/).

Minimal Endpoints Needed:

GET  /api/enabled          → { enabled: true/false }
POST /api/enabled          ← { enabled: true/false }
GET  /api/presets          → [{ name: "flat", ... }]
POST /api/preset/:name     ← Apply preset by name
GET  /api/bands            → [{ frequency, gain, q, type }]
POST /api/bands            ← [{ frequency, gain, q, type }]

Optional: WebSocket for Real-time Updates

ws://127.0.0.1:37765/ws
→ Subscribe to EQ state changes
← Push band/preset updates

Benefits

  • Enables home automation integration (Home Assistant, etc.)
  • Allows music apps to sync EQ settings
  • Supports accessibility tools
  • Matches EqMac's roadmap goal: "API - Control all aspects of eqMac"

Alternatives Considered

  • AppleScript: EqMac is not scriptable
  • URL Scheme (eqmac://): Exists but commands are undocumented
  • CamillaDSP: Has API but complex setup vs. EqMac's simplicity

I'm Happy to Help

If the team is interested, I can:

  • Help test API implementations
  • Provide feedback on API design
  • Contribute documentation

Thank you for the amazing work on EqMac!


Environment:

  • EqMac Version: v1.8.12 Pro
  • macOS: 15.x (Sequoia)
  • Use case: Roon/Plex music player integration

Metadata

Metadata

Assignees

No one assigned

    Type

    No type

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions