Appendix F: Audio Universe (Shop Manual)

Status: v1.0 submitted to App Store APR 25 2026 (submission ID 964e4428), awaiting review. GPL v3. Public repo at github.com/fluhartyml/Audio-Universe. Build-Along chapter: Part VII Build-Along 04. Audio Universe by Claude is a four-tab audio utility that puts four different Apple audio frameworks behind four self-contained surfaces. Each tab is a single-session tool — nothing is stored, nothing syncs, nothing has history. Output flows to other apps (Notes, Files, Messages, Mail) via the system share sheet.

What it is

One app, four feature tabs, each owning exactly one Apple audio kit:

  1. Stream — pick an Apple Music song, hear it play. Playback only, no output. (MusicKit.)
  2. Record — capture a short clip to temp storage, play it back, share the file. (AVFoundation.)
  3. Identify — tap Listen, ShazamKit matches the song, the match auto-adds to the user's "My Shazam Tracks" library, tapping the match opens it in Apple Music or the iTunes Store. (ShazamKit.)
  4. Transcribe — tap Start, talk, tap Stop, share the resulting text. (Speech framework.)

Plus an Under the Hood tab that lets the user browse every source file of the app inside the app. Five tabs total.

Architecture overview

SwiftUI plus four Apple audio frameworks. No SwiftData, no CloudKit, no custom networking. Each tab owns its kit and nothing else.

The four kits, side by side

The teaching value of this app is that all four audio frameworks live in one project. Each *View.swift file is a complete, runnable example of its kit:

Reading the four files in order gives a working knowledge of where each kit fits in the system.

Permissions matrix

Three of the four tabs need microphone permission; one of those also needs speech-recognition permission. The Info.plist carries the matching strings:

Each tab requests its permission on first use, not at launch. If the user denies a permission, the tab shows a "this needs X permission" inline state with a button that deep-links to Settings.

Session-only design

Nothing in this app persists across launches. A recorded clip lives in temp storage, gets played back if the user wants, gets shared if the user wants, and disappears when the tab is left or the app is quit. A transcribed conversation exists only as the in-memory string until the user shares it. A Shazam match goes into the user's system "My Shazam Tracks" library (an Apple service, not this app's storage); the in-app view of the match disappears on tab change.

That choice keeps the app's data surface near zero. There's no privacy policy to write about user data — there isn't any user data to write about. The share sheet is the explicit, user-driven hand-off to anywhere the user actually wants to keep something.

Build + deployment

Known gotchas

Sources