{
  "minVersion": "0.4",
  "headerImage": "https://tweaks.carterware.net/depictions/cartereq-header.png",
  "tintColor": "#E4002B",
  "tabs": [
    {
      "class": "DepictionStackView",
      "tabname": "Details",
      "views": [
        {
          "class": "DepictionScreenshotsView",
          "itemCornerRadius": 12,
          "itemSize": "{160, 346}",
          "screenshots": [
            {
              "url": "https://tweaks.carterware.net/depictions/screenshots/cartereq-panel-14PM.jpg",
              "accessibilityText": "Floating EQ chip and overlay panel",
              "fullSizeURL": "https://tweaks.carterware.net/depictions/screenshots/cartereq-panel-14PM.jpg"
            },
            {
              "url": "https://tweaks.carterware.net/depictions/screenshots/cartereq-app.jpg",
              "accessibilityText": "CarterEQ 10-band equalizer",
              "fullSizeURL": "https://tweaks.carterware.net/depictions/screenshots/cartereq-app.jpg"
            }
          ]
        },
        {
          "class": "DepictionMarkdownView",
          "markdown": "**CarterEQ** — a system-wide equalizer for every app: music, video, TikTok and games, on the speaker or headphones.\n\n### What you get\n- 10-band graphic EQ with preamp and Band Q\n- Compressor, crossfeed for headphones, and a clean 0 dB limiter\n- Floating EQ chip and panel on the Home Screen with a volume slider and live output meters\n- iPhone 15 Pro and later: hold the Action button to turn EQ on or off\n- Presets, the CarterEQ app, a Settings pane and a `cartereq` command-line tool\n\n### Works with video\nThe audio thread only does DSP and a flat curve passes audio through untouched, so video and TikTok stay smooth with EQ on. On an iPhone 15 Pro (iOS 17.1), screen recordings with EQ on and off showed the same 60 fps capture, the same video cadence and no audio dropouts.\n\n### Setup\n- **iOS 17+:** EQ starts on its own after install. If **EQ Status** doesn't show `path=ioproc`, play some audio and use **Tools → Enable System EQ**.\n- **iOS 14–16:** EQ starts with mediaserverd. Use **Restart mediaserverd** if it ever sticks.\n\n$0.99, or included with the CarterWare Tweak Pass.",
          "useSpacing": true
        }
      ]
    },
    {
      "class": "DepictionStackView",
      "tabname": "Changelog",
      "views": [
        {
          "class": "DepictionSubheaderView",
          "title": "1.8.55",
          "useBoldText": true
        },
        {
          "class": "DepictionMarkdownView",
          "markdown": "- iOS 17: EQ keeps working when audio moves to a different output. It used to stop processing silently after some audio changes until audiomxd restarted.\n- iOS 17: EQ Status now shows which audio devices are active and why buffers are skipped.",
          "useSpacing": true
        },
        {
          "class": "DepictionSubheaderView",
          "title": "1.8.54",
          "useBoldText": true
        },
        {
          "class": "DepictionMarkdownView",
          "markdown": "- New Volume slider in the floating EQ panel. It follows the hardware buttons live.\n- iPhone 15 Pro and later: press and hold the Action button to turn EQ on or off (Settings › CarterEQ › Hold to Toggle EQ). A small pill under the Dynamic Island shows EQ On / EQ Off.\n- New EQ switch in the panel; the chip light is red when EQ is on and gray when it's off.\n- Settings switches now take effect immediately (they were sometimes ignored).\n- Panel saves and meter reads moved off the main thread, so dragging sliders no longer hitches the Home Screen.\n- Upgrades no longer reset a preamp above ±12 dB.\n- `cartereq toggle` flips EQ with the same on-screen pill.",
          "useSpacing": true
        },
        {
          "class": "DepictionSubheaderView",
          "title": "1.8.53",
          "useBoldText": true
        },
        {
          "class": "DepictionMarkdownView",
          "markdown": "- Fixes video and TikTok lag while EQ is on. The audio thread now only does DSP; settings, meters and logs moved to a background thread.\n- A flat curve passes audio through untouched.\n- The microphone is never EQd, so recordings stay clean.\n- iOS 16: EQ runs once at the final output stage instead of stacking on every audio unit.",
          "useSpacing": true
        },
        {
          "class": "DepictionSubheaderView",
          "title": "1.8.27",
          "useBoldText": true
        },
        {
          "class": "DepictionMarkdownView",
          "markdown": "- **15PM HAL fix:** per-device `CreateIOProcID` wrap (global client overwrite left `io↑ eng=0`)\n- Aggressive HAL buffer/ASBD inference + float↔int32 retry so `hal/ioproc` feeds eng\n- Noise (`aufx/*`) still never latched; rejects counted in status (`noise=` / `topnoise=`)",
          "useSpacing": true
        },
        {
          "class": "DepictionSubheaderView",
          "title": "1.8.26",
          "useBoldText": true
        },
        {
          "class": "DepictionMarkdownView",
          "markdown": "- **15PM latch:** never track/rank/latch any `aufx/*` (sila no longer tops discover)\n- Discover ranks **Output/Mixer** (`auou/*`, `aumx/*`); protect their track slots\n- Fix RemoteIO subtype `rioc`; lower Output latch thresholds; HAL `hal/ioproc` when eng feeds",
          "useSpacing": true
        },
        {
          "class": "DepictionSubheaderView",
          "title": "1.8.25",
          "useBoldText": true
        },
        {
          "class": "DepictionMarkdownView",
          "markdown": "- **15PM audiomxd:** stop latching/EQ’ing wet-only `aufx/sila` (eng climbed, audible mix untouched)\n- Full-strength taps: **Output / Mixer / HAL only**; drop weak effect latches\n- Hook `AudioDeviceCreateIOProcIDWithReference` for HAL path on iOS 17+",
          "useSpacing": true
        },
        {
          "class": "DepictionSubheaderView",
          "title": "1.8.3",
          "useBoldText": true
        },
        {
          "class": "DepictionMarkdownView",
          "markdown": "- **Unified** package for iOS 14–17+ (mediaserverd + audiomxd)\n- Floating EQ chip fixed (SpringBoard host window + makeKeyAndVisible)\n- audiomxd keeps discovering until music plays (no permanent path-off)\n- Soft-migrate: Replaces/Conflicts legacy package",
          "useSpacing": true
        },
        {
          "class": "DepictionSubheaderView",
          "title": "1.7.x",
          "useBoldText": true
        },
        {
          "class": "DepictionMarkdownView",
          "markdown": "- Split Legacy package for iOS 14–16; prefs poll fix for mediaserverd",
          "useSpacing": true
        }
      ]
    },
    {
      "class": "DepictionStackView",
      "tabname": "Info",
      "views": [
        {
          "class": "DepictionTableTextView",
          "title": "Developer",
          "text": "CarterWare"
        },
        {
          "class": "DepictionTableTextView",
          "title": "Works on",
          "text": "iOS 14.0+ · Dopamine rootless · tested on iOS 17.1"
        },
        {
          "class": "DepictionTableTextView",
          "title": "Package ID",
          "text": "com.carterware.cartereq"
        },
        {
          "class": "DepictionTableTextView",
          "title": "Repo",
          "text": "tweaks.carterware.net"
        }
      ]
    }
  ],
  "class": "DepictionTabView"
}
