{"id":50812175,"url":"https://github.com/barrybarrywu/tutti","last_synced_at":"2026-07-06T12:00:20.824Z","repository":{"id":361057585,"uuid":"1247359535","full_name":"BarryBarrywu/tutti","owner":"BarryBarrywu","description":"Aggregate audio output across multiple Mac speakers — one sound, every speaker.","archived":false,"fork":false,"pushed_at":"2026-07-04T10:43:36.000Z","size":5589,"stargazers_count":22,"open_issues_count":0,"forks_count":1,"subscribers_count":1,"default_branch":"main","last_synced_at":"2026-07-04T11:14:06.292Z","etag":null,"topics":["audio","audio-routing","audio-utility","bluetooth","equalizer","macos","macos-app","menubar","menubar-app","multi-room-audio","now-playing","per-app-volume","source-available","stereo-split","swift","swiftui","volume-control"],"latest_commit_sha":null,"homepage":"https://tutti.barrybarrywu.com","language":"Swift","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"other","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/BarryBarrywu.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":"LICENSE","code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null,"zenodo":null,"notice":null,"maintainers":null,"copyright":null,"agents":null,"dco":null,"cla":null}},"created_at":"2026-05-23T07:52:04.000Z","updated_at":"2026-07-04T10:43:39.000Z","dependencies_parsed_at":null,"dependency_job_id":null,"html_url":"https://github.com/BarryBarrywu/tutti","commit_stats":null,"previous_names":["barrybarrywu/tutti"],"tags_count":13,"template":false,"template_full_name":null,"purl":"pkg:github/BarryBarrywu/tutti","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/BarryBarrywu%2Ftutti","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/BarryBarrywu%2Ftutti/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/BarryBarrywu%2Ftutti/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/BarryBarrywu%2Ftutti/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/BarryBarrywu","download_url":"https://codeload.github.com/BarryBarrywu/tutti/tar.gz/refs/heads/main","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/BarryBarrywu%2Ftutti/sbom","scorecard":null,"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":286080680,"owners_count":35189713,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2026-05-26T15:22:16.424Z","status":"online","status_checked_at":"2026-07-06T02:00:07.184Z","response_time":106,"last_error":null,"robots_txt_status":"success","robots_txt_updated_at":"2025-07-24T06:49:26.215Z","robots_txt_url":"https://github.com/robots.txt","online":true,"can_crawl_api":true,"host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":["audio","audio-routing","audio-utility","bluetooth","equalizer","macos","macos-app","menubar","menubar-app","multi-room-audio","now-playing","per-app-volume","source-available","stereo-split","swift","swiftui","volume-control"],"created_at":"2026-06-13T06:01:00.586Z","updated_at":"2026-07-06T12:00:20.807Z","avatar_url":"https://github.com/BarryBarrywu.png","language":"Swift","funding_links":[],"categories":[],"sub_categories":[],"readme":"\u003cp align=\"right\"\u003eEnglish · \u003ca href=\"README.zh.md\"\u003e中文\u003c/a\u003e\u003c/p\u003e\n\n\u003cp align=\"center\"\u003e\n  \u003cimg src=\"docs/screenshots/icon.png\" alt=\"Tutti app icon\" width=\"128\" height=\"128\"\u003e\n\u003c/p\u003e\n\n\u003ch1 align=\"center\"\u003eTutti\u003c/h1\u003e\n\n\u003cp align=\"center\"\u003e\u003cem\u003eOne sound, every speaker.\u003c/em\u003e\u003c/p\u003e\n\n\u003cp align=\"center\"\u003eThe menu bar audio control center macOS never shipped —\u003cbr\u003emulti-output, per-app volume \u0026amp; EQ, Now Playing, and (soon) an iPhone remote.\u003c/p\u003e\n\n\u003cp align=\"center\"\u003e\n  \u003ca href=\"https://github.com/BarryBarrywu/tutti/releases/latest/download/Tutti.dmg\"\u003e\u003cstrong\u003e⬇︎ Download for macOS\u003c/strong\u003e\u003c/a\u003e\n  ·\n  \u003ca href=\"https://tutti.barrybarrywu.com\"\u003eWebsite\u003c/a\u003e\n  ·\n  \u003ca href=\"https://github.com/BarryBarrywu/tutti/releases\"\u003eReleases\u003c/a\u003e\n\u003c/p\u003e\n\n\u003cp align=\"center\"\u003e\n  \u003cimg src=\"https://img.shields.io/github/v/release/BarryBarrywu/tutti?style=flat-square\u0026color=blue\u0026label=release\" alt=\"Release\"\u003e\n  \u003cimg src=\"https://img.shields.io/badge/macOS-13.0+-000000?style=flat-square\u0026logo=apple\u0026logoColor=white\" alt=\"macOS 13+\"\u003e\n  \u003cimg src=\"https://img.shields.io/github/downloads/BarryBarrywu/tutti/total?style=flat-square\u0026color=orange\u0026label=downloads\" alt=\"Downloads\"\u003e\n  \u003cimg src=\"https://img.shields.io/badge/Pro-$7.99_one--time-38bdf8?style=flat-square\" alt=\"Pro $7.99 one-time\"\u003e\n\u003c/p\u003e\n\n\u003cp align=\"center\"\u003e\n  \u003cimg src=\"docs/screenshots/panel.webp\" alt=\"Tutti menu bar panel in light and dark\" width=\"720\"\u003e\n\u003c/p\u003e\n\n\u003cp align=\"center\"\u003e\u003csub\u003e\u003cstrong\u003eNo virtual driver · no system extension · no telemetry · no account.\u003c/strong\u003e Notarized by Apple. Quit Tutti and your audio setup is exactly as it was.\u003c/sub\u003e\u003c/p\u003e\n\n## Why Tutti\n\nmacOS gives you a volume slider, a device list, and a tiny speaker glyph — and that's it. You can't play to two speakers at once, can't set a different volume per app, can't EQ one app without touching the rest. Tutti is the control center that fills the gap: one panel for every output, every app, and every level — riding Apple's own audio frameworks, with nothing installed into your system.\n\n## ✨ Coming in v1.6.0\n\n**Tutti Remote — control your Mac's audio from your iPhone.** Sit on the couch and switch presets, pick output speakers, set per-device and per-app volume, and drive playback from an iPod-style click wheel. Pairs over your local network; the Mac stays in charge.\n\n\u003cp align=\"center\"\u003e\n  \u003cimg src=\"docs/screenshots/ios-now-playing.png\" alt=\"Tutti Remote — Now Playing\" width=\"240\"\u003e\n  \u0026nbsp;\u0026nbsp;\n  \u003cimg src=\"docs/screenshots/ios-devices.png\" alt=\"Tutti Remote — Devices and presets\" width=\"240\"\u003e\n  \u0026nbsp;\u0026nbsp;\n  \u003cimg src=\"docs/screenshots/ios-app-volume.png\" alt=\"Tutti Remote — per-app volume\" width=\"240\"\u003e\n\u003c/p\u003e\n\n**Raycast extension** — mute, set the volume, or switch presets straight from Raycast, without opening Tutti.\n\n## Features\n\n### Multi-device output\n- **Play to every speaker at once** — tick multiple outputs and Tutti builds a CoreAudio Aggregate Device on the fly, keeping them clock-synced.\n- **Or just one** — pick a single device and Tutti switches the system default directly, no aggregate created.\n- **Master + per-device volume \u0026 mute** — one slider for everything, plus an individual slider and mute for each output.\n- **Three-state status** — playing on all, partially muted, or all muted, with a matching color dot.\n- **Hot-swap without a gap** — add or remove a speaker mid-playback without cutting the sound.\n\n### Per-app audio control \u0026nbsp;`macOS 14.4+`\n- **Per-app volume \u0026 Turbo** \u0026nbsp;`Free` — give each app its own level; Turbo adds a 2× boost. Driver-free, via a native audio tap.\n- **Per-app equalizer** \u0026nbsp;`Free` — a draggable 6-band EQ curve for any app, or a built-in preset.\n- **Per-app output** \u0026nbsp;`Pro` — send different apps to different speakers; keep a call on the laptop while music fills the room.\n- **See where sound goes** — output devices show small badges of the apps routed to them.\n- **Ignore apps you don't manage** — right-click any app to tuck it out of the list.\n\n### Pro power tools\n- **Presets** \u0026nbsp;`Pro` — save device + volume + per-app combos and switch with one click; each gets its own emoji.\n- **Global keyboard shortcuts** \u0026nbsp;`Pro` — hotkeys to open the panel, mute, switch preset, or nudge an app's volume from inside any app.\n- **Stereo pairing across devices** \u0026nbsp;`Pro` — send the left channel to one speaker and the right to another — two speakers, one stereo pair.\n- **Per-speaker left-right balance** \u0026nbsp;`Pro` — lean any speaker's sound toward one side when it sits off-center.\n- **Per-device latency tuning** \u0026nbsp;`Pro` — dial in a small delay, by ear, for a Bluetooth speaker that trails the others.\n- **Desktop widgets** \u0026nbsp;`Pro` — status, devices, volume, and presets on your desktop, no app open.\n\n### Now Playing \u0026 media\n- **Now Playing card** — song, artwork, and play/pause/skip for Spotify or Apple Music, right in the panel.\n- **Steps aside for calls \u0026 video** \u0026nbsp;`Free` — fades and pauses your music when a call or video plays, then fades back at the same volume.\n- **Microphone input card** — pick the input device, adjust its level, or mute it from the panel.\n\n### Bluetooth \u0026 sync\n- **Reconnects on its own** — a grouped Bluetooth speaker that briefly drops out rejoins when it reconnects, no interruption.\n- **Headphone battery** — shown next to the device name when reported; AirPods get their own icon.\n- **Keeps headphones crisp after calls** — uses the built-in mic on calls so your headset doesn't stay stuck at muffled call quality.\n- **Stays in sync** — clock-drift correction keeps wired and Bluetooth speakers aligned instead of drifting apart.\n\n### Menu bar, shortcuts \u0026 the little things\n- **Menu bar quick menu** — device toggles, preset switching, and mute-all without opening the panel.\n- **Volume takeover** — keyboard volume keys and the scroll wheel drive the aggregate output globally.\n- **Shortcuts, Siri \u0026 Spotlight** — switch presets, mute, or set the volume from your automations.\n- **Scroll where you point** — hover a device, app, or the mic and the wheel adjusts just that one.\n- **Pick your menu bar icon** — classic sound waves or one of ten instruments; the icon fills as volume rises.\n- **Sleep timer · gentle fades · Light / Dark / System · launch at login · automatic updates** — the conveniences you'd expect.\n\n### On the way\n- **iPhone remote** \u0026nbsp;`Coming in v1.6.0` — see [Coming in v1.6.0](#-coming-in-v160).\n- **Raycast extension** \u0026nbsp;`Coming in v1.6.0` — mute, set volume, and switch presets from Raycast.\n\n## Free vs Pro\n\nEvery feature above without a tag is **free, forever**. Every new install also gets a **7-day Pro trial** on first launch — no key required. When it ends, all free features keep working without limits.\n\n**Pro unlocks:**\n\n| | |\n|---|---|\n| **Presets** | one-tap device + volume + per-app combos |\n| **Global keyboard shortcuts** | control Tutti from inside any app |\n| **Stereo pairing \u0026 L/R balance** | split channels across separate speakers |\n| **Per-device latency tuning** | align a trailing Bluetooth speaker by ear |\n| **Per-app output routing** | send different apps to different speakers |\n| **Desktop widgets** | status and control on your desktop |\n\n- **$7.99 one-time — no subscription.** All future Pro features included at no extra cost.\n- **Up to 2 Macs** per license. Activate and deactivate from Settings › License.\n- **14-day refund**, no questions asked — just email support@barrybarrywu.com.\n\n\u003cp align=\"center\"\u003e\n  \u003ca href=\"https://checkout.dodopayments.com/buy/pdt_0NfolyiommnaLUYQ5aPqn\"\u003e\u003cstrong\u003eUnlock Tutti Pro — $7.99\u003c/strong\u003e\u003c/a\u003e\n\u003c/p\u003e\n\n## How Tutti compares\n\nOther great Mac audio tools each solve a piece of this. Here's where Tutti stands.\n\n| | Tutti | Background Music | FineTune | SoundSource | Audio Hijack |\n|---|:---:|:---:|:---:|:---:|:---:|\n| Same sound to many outputs at once | ✓ | — | ✓ | — | ✓ |\n| Per-app volume \u0026 EQ | ✓¹ | ✓ | ✓ | ✓ | ✓ |\n| Per-app output routing | ✓¹ | — | ✓ | ✓ | ✓ |\n| One-tap device presets | ✓ | — | — | — | — |\n| **Stereo pairing across devices** | ✓ | — | — | — | — |\n| **Per-device Bluetooth latency tuning** | ✓ | — | — | — | — |\n| **Now Playing controls** (play / pause / skip) | ✓ | — | — | — | — |\n| **iPhone remote** | ✓ *(v1.6.0)* | — | — | — | — |\n| No virtual driver or system extension | ✓² | — | ✓ | — | — |\n| Free to use | ✓ | ✓ | ✓ | — | — |\n\n¹ Per-app features use a native macOS audio tap; requires macOS 14.4 or later.\n² Multi-output uses CoreAudio's Aggregate Device and per-app rides the native tap — nothing is installed into your system. Background Music installs a virtual audio device; SoundSource and Audio Hijack install a system extension.\n\n## Use cases\n\n- **Shared listening** — living room speaker and Bluetooth headphones at the same time; play out loud while a friend wears headphones.\n- **Streaming \u0026 recording** — monitor through headphones while broadcasting to an audience or a capture card.\n- **Multi-room playback** — drive wired speakers in the living room and another pair in the bedroom from one Mac.\n- **Couch control** — switch presets and pick speakers from your iPhone without getting up *(v1.6.0)*.\n- **Teaching** — the teacher hears prompts in headphones while the classroom speaker plays for students.\n\n## AirPlay \u0026 known limitations\n\n- **AirPlay can't join a group** — macOS won't let AirPlay receivers (HomePod, Apple TV, AirPlay speakers) play in a multi-output group, and only first-party apps can start an AirPlay route. Tutti can use an AirPlay device on its own once macOS has routed to it. See [Roadmap](#roadmap).\n- **Per-app features need macOS 14.4+** — per-app volume, Turbo, EQ, and routing rely on the Core Audio process tap added in 14.4. On macOS 13–14.3 everything else works.\n- **Bluetooth battery depends on the device** — the level appears only for headsets that report it to macOS.\n\n## Roadmap\n\n- **AirPlay routing inside Tutti** — picking and switching AirPlay receivers straight from the panel, without going to Control Center first. macOS keeps AirPlay discovery on a first-party-only track today; the moment that opens up, Tutti will too.\n\n## Requirements\n\n- macOS 13.0 or later\n- Accessibility permission only for the keyboard volume-key takeover (the scroll path doesn't need it)\n\n## Localization\n\nSimplified Chinese · Traditional Chinese · English · Japanese · Korean · French · German · Italian · Spanish.\n\n## Source code\n\nAs of July 2026, Tutti's source is no longer published. This repository is the home for downloads, releases, the appcast that powers automatic updates, and issue reports. Binaries are distributed under the [EULA](https://tutti.barrybarrywu.com/terms).\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fbarrybarrywu%2Ftutti","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fbarrybarrywu%2Ftutti","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fbarrybarrywu%2Ftutti/lists"}