Back

Orfeo

macOS

The party picks the music. The app mixes it.

Participative auto-DJ — guests propose and vote from their phones, an autonomous brain decides what to play and when.

SwiftSwiftUIMusicKitSupabaseNext.jsTypeScript

About

The party decides, the app executes

Orfeo — after Monteverdi's L'Orfeo — is a participative auto-DJ. Guests at a party propose and vote on tracks from their phones, without installing any app, and an autonomous brain decides what to play and when, mixing on its own when the stream of suggestions dries up.

The constraint that defines the project: the app is the DJ. It schedules and drives playback in real time, while the curation logic stays entirely platform-agnostic.

Three layers, one golden rule

On the guest side, a web app (Next.js) serves catalog search, voting and dedications. On the host side, a native macOS app (SwiftUI + MusicKit) subscribes to live state and drives ApplicationMusicPlayer. Between them, Supabase is the source of truth — every track is keyed by its ISRC, never a native URI.

The golden rule: the brain (CurationEngine) never knows the playback platform. It receives a snapshot of live state and emits an ordered plan of tracks. Only the adapters touch Apple Music. All business logic lives in pure, testable units — never in a SwiftUI View or a React component.

The brain

The CurationEngine scores each candidate — log-normalized votes, energy/mood fit, party-phase fit, dedication bonus, anti-repetition penalties on artist and genre — and produces an ordered queue, deterministic aside from injected jitter. When proposals run dry, auto-continue asks a local LLM for tracks, resolves names to ISRCs, and keeps the floor alive with a per-phase fallback.

Why

Orfeo started from a concrete need: run the music for a real party — a birthday, then a wedding — without anyone glued to the speakers all night. v1 targets those two events; what follows explores a self-serve service so anyone can do the same.

Roadmap

  1. v1 — End-to-end live party

    In progress

    Guest web app (propose/vote/mood/dedication), a macOS host driving Apple Music, a platform-agnostic curation brain, and auto-continue when the pool runs dry. Target: a birthday in beta on August 14, a wedding in production.

  2. v2 — Self-serve service

    Planned

    iOS host, hosted LLM inference (dropping the local Ollama dependency), Stripe billing + self-serve accounts, and the legal compliance of a paid service.

  3. vNext — Sharpening & openness

    Planned

    Spotify adapter (the brain stays agnostic), a post-event souvenir playlist, and scoring refinements (velocity, era, transitions).

  4. Pure, testable curation brain

    Shipped2026-06

    Deterministic scoring (log-normalized votes, energy/mood/phase fit, anti-repetition penalties) fully isolated from any playback platform.

  5. Real-time playback via Apple Music

    Shipped2026-06

    The macOS host resolves ISRCs and reconciles the ApplicationMusicPlayer queue, synced in real time through Supabase.

  6. No-install guest web app

    Shipped2026-06

    Catalog search, proposing, upvoting, mood and dedications from the browser — nothing to install.

More from patolabs