LOOM LINK DEMO SUBMISSION: https://www.loom.com/share/92113e98a8c644778ddb9be9688c10f1

Inspiration

Hi, I'm Rhea, and I play the ukulele.

I've learned a lot of songs from scratch, and I've had plenty of spontaneous jam sessions with friends. Along the way I kept running into the same frictions. Looking up the chords for a song. Finding the chords in a key that actually suits my voice, or my friends' voices. Learning new chord shapes mid-song because the diagrams are stuck at the top of the page. And, in a jam, getting everyone on the same page with the lyrics while we crowd around one small screen.

When Apple announced iPhone Duo, I wanted to build for a use case I personally resonate with, not a hypothetical one. A phone that opens like a book and stands up on its own felt like it could finally be the music stand, chord sheet, and shared lyric screen I'd been missing. That's why I built Key: Open it to learn. Stand it up to jam.

What it does

  • Learn (book pose): lyrics with color-coded chord letters on one page; a carousel of chord shapes on the other, with the current chord highlighted.
  • Jam (L-pose): fold it into an L on a table and the layout rearranges itself: lyrics on the upright half where you glance, chords and controls on the flat half where you tap.
  • Jam display (closed): close the phone and the outer screen becomes a lyric display for everyone around the table.
  • Easy key: one tap moves the song to the key with the fewest hard chords.
  • One color per chord, in every song, so your eyes learn the shapes over time.
  • Session log: songs played and sections you replayed, with room for your own notes.

How I built it

I built Key solo in Bitrig with SwiftUI, using the iPhone Duo simulator in the Xcode 27.1 beta, since the hardware doesn't ship until October 23.

  • Hinge API (onHingeChange) switches between Learn and Jam based on how the phone is folded.
  • ArrangementView gives one two-pane layout that sits side by side in book pose and stacks in the L-pose, instead of a hand-built layout per pose.
  • The system toolbar follows Apple's iPhone Duo guidelines: vertical on the side in landscape, horizontal in portrait, with playback controls given the highest visibility priority.
  • Song packages: each song is a JSON file with lyrics, chord positions, and a verified chord map and finger shapes for every key it supports. The app never invents a chord; if one is missing, it shows the name without a diagram rather than guessing.

Challenges I ran into

  • The outer display is locked to camera apps (for now). My original Jam idea put lyrics on the outer screen for friends while I played from the inner one. Apple currently only allows the outer display during inner-display use through CameraCaptureAccessory, which requires an active camera session. I decided a lyrics app shouldn't switch on your camera just to unlock a screen, so I shipped a closed-phone jam display instead and kept the dual-screen version as a design for the future.
  • Scope, solo, in four hours. I started with a voice assistant, microphone-based follow-along, and practice analytics. I cut each one to protect the core experience, and kept listening-based scrolling on the roadmap.
  • Trusting generated code. AI-assisted building was fast, but I hit compile errors from APIs that don't exist (like a made-up ScrollBounceBehavior option) and switches missing enum cases. I learned to fix one error at a time and keep the build green before adding anything new.
  • Designing without the device. Every pose had to be reasoned out on paper and in the simulator, down to which half of the phone faces your friends when it stands up.

What I learned

  • The best foldable features change the interaction, not just the screen size. The fold itself became the main control, which matters when your hands are on an instrument.
  • Apple's iPhone Duo guidelines saved me time: two layouts instead of one per pose, glanceable content on top and controls on the bottom in tabletop poses, and nothing on the fold.
  • Verified data beats clever inference for beginners: a wrong chord shape is worse than no shape.
  • Knowing the platform's limits is part of the design. Choosing not to misuse the camera API made for a better, more honest product.

What's next

  • Scrolling that follows your voice using on-device speech recognition.
  • Outer-display lyrics while playing, as soon as the platform allows it beyond camera apps.
  • A library of song packages published by teachers and creators.

Built With

  • bitrig
  • claude
  • claudecode
  • claudedesign
  • ukelele
Share this project:

Updates

Submission history