Inspiration
I sing a cappella — in that scene people know me as Pinatsu. Layering your own voice is the cheapest way to hear a chord you actually wrote, and the most annoying. You sing along to earbuds, the phone records what the microphone hears, and the take lands 90 to 120 ms late. Every app I tried told me to drag the waveform until it sounded right. After I left my job I decided to build the one thing I actually wanted: a phone that measures its own lag once, lines up every take for you, and lets you make a video of it without leaving the app.
What it does
DuetMot (デュエモ) is a multitrack a cappella studio for iPhone, shipped on the Japanese App Store on September 24, 2026.
- Sing every part yourself. Record part 1, then record part 2 while listening to part 1, and so on — up to 6 parts free, 12 with Pro — in 62 split-screen layouts.
- Sing over a video you love. Import any video from Photos or Files and record your voice (or guitar, or piano) on top of it. The result is a collab video you can post anywhere.
- Collab with friends far away. Send a link; the other person records their part on their phone without creating an account.
- Every take lands in time, on the wireless earbuds you already own. Multitrack singing has long meant plugging in wired earphones, because Bluetooth adds 90 to 120 ms of delay that drifts from session to session. DuetMot measures that delay in a sound check before you start, then re-corrects every take from the click that leaks into the mic. Wired or wireless, you just sing.
- Make it look like a video, not a screen recording. Lyrics and captions by finger on a timeline, filters, blur/glow effects, and face effects that track you (a cat, a mask), so you can stay off camera and still be the one singing.
- Make it sound like a record. Voice presets (vocal, chorus, bass, vocal percussion), reverb, EQ, a built-in de-esser, mastering, and stem export.
- Post anywhere. One export, one caption, then straight to TikTok, Instagram, or YouTube.
How we built it
- Swift, SwiftUI, AVFoundation, AVAudioEngine, Core Image, Vision, Accelerate, Metal, Core Text.
- Latency correction is our own, and it is what makes Bluetooth earbuds usable: a two-pass sound check measures playback-to-mic delay (median of passes, typically 96–112 ms, and it moves ±15 ms within one session, so it has to be measured rather than assumed), plus a per-take correction from the click that leaks into the microphone.
- Pitch detection is a hand-written YIN with Viterbi smoothing; pitch shifting uses Signalsmith Stretch through an Objective-C++ wrapper with formant preservation.
- Face effects run on Vision face landmarks + Core Image, anchored on the pupil midpoint; the character artwork is generated transparent PNG art rather than hand-coded vector shapes.
- The de-esser is a custom AudioUnit. Captions use Core Text with Apple-hosted downloadable fonts so the binary doesn't grow.
- Backend: Cloudflare Workers + D1 + KV + R2 (collab links, public pages, cloud backup, support page), written in TypeScript.
- Monetization: RevenueCat SDK with a single entitlement, a 7-day free trial, and a paywall that lists exactly what Pro adds.
Challenges we ran into
- iOS 26 changed how the reverb bus accepts sends; our mix went silent until we rebuilt the chain.
- Vision's
leftEyeis the subject's left, which is image-right — the cat ears were upside down for a day. UIGraphicsImageRendererdraws at 3x by default, so a 600 pt sticker became 1800 px and the cat stopped following faces.- Simulator cannot run Vision face detection, so we built a deterministic self-test that renders one frame with a forced face rectangle.
- Making a face effect look good: code-drawn shapes looked cheap next to a real face, so we switched to generated artwork and a jaw rig driven by the mouth-open ratio.
Accomplishments that we're proud of
- The lag correction works: on a 78-second real vocal, the median deviation from the nearest semitone after correction dropped from 19.6 to 8.9 cents in our pitch pipeline tests, and takes line up without dragging.
- Shipped 1.0 to the App Store during the Shipaton window with subscriptions approved, and kept shipping: 1.0.1 fixed import, 1.0.2 adds the rebuilt face effects, an effects layer, downloadable caption fonts, and full English localization.
- Validation harnesses: 173 pitch tests, 74 timing tests, 42 watermark tests, all green.
What we learned
- Measure, don't guess. Every "the cat doesn't follow my face" bug had a number behind it.
- A solo developer can ship a real audio app on iOS if the preview and the export share one code path — the same
applyfunction renders what you see and what you post. - Judges and users don't care about the DSP; they care that it sounds right and looks fun.
What's next
- Note-level pitch editing (Melodyne-style) is built and in TestFlight — timing correction, reference ghosts of other parts, split/merge — and will ship when it feels right.
- Feed and discovery, open calls for collaborators, and more languages (Chinese and Spanish are next).
How RevenueCat is used
- RevenueCat SDK (Swift) with one entitlement,
duet_mot_pro, mapped to a monthly plan (¥480, 7-day free trial) and a yearly plan (¥4,800, 7-day free trial). - The paywall is our own SwiftUI view fed by RevenueCat offerings; it lists the six things Pro adds (7–12 parts and every layout, no logo and high-res export, longer first takes, all fonts and per-part fine tuning, stem export, cloud backup).
- Purchases, restores, and trial state come from RevenueCat's customer info; the app never reads receipts itself. A debug override exists only in Debug builds for testing.
Monetization design
- Free must be fun. Beauty, whitening, slimming, the cute filter, up to six parts, most face characters, captions, filters, and effects are free. The free tier is the product, not a demo.
- Pro is for going further, not for removing pain: more parts, longer takes, stems, cloud, every font.
- The watermark is a badge, not a punishment. A free export carries the DuetMot mark. Pro users can choose to keep it. And once pitch correction ships, any work that used correction loses the mark — so the mark quietly means "sung as is". We think that turns the usual "pay to remove the logo" into something people might want to keep.
- 7-day free trial on both plans; no ads.
Design
DuetMot commits to one visual world: young leaf green and off-white, a single accent, and typography that stays out of the way of faces. The timeline, the 62-layout picker, the Melodyne-style note roll with six 44 pt handles on the selected note, and the numeric value following your fingertip are all drawn to the same grid. The face effects are a deliberate exception to "draw it in code": the cat and mask artwork is generated as transparent PNG art and anchored to the Vision pupil midpoint, because hand-coded vector shapes looked cheap next to a real face — and looking good on camera is the whole reason someone presses record.
Log in or sign up for Devpost to join the conversation.