Table of Contents
TL;DR
- Song Cage is The Notus's own songwriting app, designed and built from a blank file into one React codebase that runs on the web, iOS, Android, and inside DAWs as a plugin.
- The hard part was never the interface. It was the infrastructure underneath: offline-first sync across three platforms, a custom melody-detection pipeline, and roughly 39 music-theory modules.
- It reached 92 signups in its first month with zero ad spend, and ChatGPT, Perplexity, and Claude began citing it for its category within seven days of launch.
Song Cage is our own songwriting app, and it started as a blank file. No architecture, no melody-detection algorithm, no billing, no multi-platform plan. We built it to prove the standard we sell: that one team can design, engineer, and ship a real product, not a demo, across every surface a songwriter actually uses.
The result is one React codebase that ships to four places: the web, the iOS App Store, Google Play, and inside a digital audio workstation as a plugin. This is the story of how it got built, what holds it together, and what we would sequence differently next time. The full build lives on the Song Cage case study; this is the longer version.
Why we built it
Song Cage is where the Notus standard comes from. We wanted the tool we always wished existed for the guitar-in-hand moment: a single timeline where chord blocks, lyric blocks, melody notes, and syllable splits all sit on the same grid. A music-theory layer that suggests borrowed chords, secondary dominants, and voice leading without making the songwriter study theory first. Offline word tools that surface rhymes and associations the instant the cursor lands on a line. And one product that runs on the web, on a phone, and inside the DAW where the song actually gets recorded.
Nobody had built that, so we did, on our own money and our own deadline. Every claim we make to a client, production engineering, multi-platform shipping, and a codebase they own, got proven here first, where we could not blame anyone else.
What we built
We designed and built the entire product from that blank file. The whole thing runs from one React codebase: it renders on the web through Vite and Cloudflare, wraps into iOS and Android apps with Capacitor, and loads inside DAWs as an AU and VST3 plugin built on JUCE 8, which hosts the same React UI in a native WebView. PowerSync keeps everything in step, so the same song appears on your laptop, your phone, and your plugin without a manual save or a round trip.
The melody detection took three passes against vocal benchmarks before we were happy with it. We ended on a TypeScript port of librosa's pYIN with onset-aware segmentation and snap-to-scale. The music-theory layer runs to roughly 39 modules, and the word tools work entirely offline from data shards we built ourselves.
Under the hood
- One React codebase across web, iOS, Android, and a JUCE 8 DAW plugin (AU + VST3)
- PowerSync local-first sync: Supabase in the cloud, SQLite on device, offline on every surface
- Custom melody-detection pipeline, a TypeScript port of librosa pYIN tuned on vocal benchmarks
- ~39 music-theory modules: chord classification, key detection, borrowed chords, voice leading, capo, modulation
- Offline word tools built from CMU, WordNet 3.1, and GloVe data, working in the plugin and on a plane
- Stripe reverse-trial billing and Resend drip-email flows
What shipped
Song Cage is live at songcage.com, on the iOS App Store, and on Google Play: one codebase, three distribution surfaces, with the DAW plugin's first phase complete and the AU and VST3 release on track. In its first month, 92 people signed up, with zero ads and only light organic posting.
The AI citations followed the engineering, not a campaign. Within seven days of launch, ChatGPT began citing Song Cage when people asked for the best songwriting app, drawing on the AI-legible marketing site we shipped alongside the product. Perplexity and Claude started citing it in the same window. What makes those citations hold up is the unglamorous part: the offline-first sync, the melody pipeline that survives Safari and mobile WebKit, the offline word shards, and clean, structured markup on the marketing site. The product behind the citation is real, which is the only reason the citation lasts.
What we would do differently next time
Two things. First, the DAW plugin was the hardest surface, and we treated it as the last one. Hosting a React UI inside a JUCE WebView, across two plugin formats and two operating systems, surfaced audio-thread and lifecycle issues that a browser never shows you. If we ran it again, we would stand up a thin plugin shell in week one and keep it green the whole way, rather than proving the web app first and adapting it late.
Second, we would benchmark the melody detection earlier. Three passes was two more than we planned for, mostly because we tuned against clean audio before real vocal takes. Pointing the pipeline at messy, real-world recordings from the start would have shortened that loop. Neither slip cost us the launch, but both cost us evenings we did not need to spend. That is the same production engineering we bring when we take a stuck AI build to production for a client: the surface that looks finished is rarely the one that decides whether you ship.
Frequently asked questions
What is Song Cage?
Song Cage is The Notus's own songwriting app. It gives songwriters one timeline where chords, lyrics, melody, and syllables sit on the same grid, plus a music-theory helper and offline rhyme and word tools. It runs on the web, iOS, Android, and inside DAWs as a plugin.
Did The Notus build Song Cage for a client?
No. Song Cage is one of two products we built as our own, on our own money, alongside The Curious Thing. We built it from a blank file to prove the standard we bring to client work, not as a rescue of someone else's prototype.
How does one codebase ship to web, iOS, Android, and a DAW?
One React codebase renders on the web through Vite and Cloudflare, wraps into iOS and Android apps with Capacitor, and loads inside a JUCE 8 AU and VST3 plugin that hosts the same UI in a native WebView. PowerSync keeps the same song in sync across all of them, offline included.
How did Song Cage get cited by ChatGPT so quickly?
By shipping a real product with a clean, AI-legible marketing site, not by running a campaign. Within seven days of launch, ChatGPT, Perplexity, and Claude began citing Song Cage for its category. We do not claim a ranking; the citations come from structured, well-sourced content built the same way we build the product.