← Back
In Development

Treble Maker

An iOS app that teaches young violinists to read music through games, not drills.

The Gap

The Suzuki method -- the dominant approach for teaching young violinists -- deliberately postpones note reading in favor of ear training. Kids learn to play by listening, not by reading a score. This works beautifully for technique, but it creates a gap: Suzuki students often cannot read the notes they are playing.

Years of Suzuki lessons for my kids have paid off in their ability to play. But now they need to learn to read sheet music. We had been drilling with flashcards, but it was a chore. We looked for an app but the offerings were pretty slim, so I realized I could just build something better.

An earlier prototype took the obvious approach: timed drills, see a note on the staff, tap the correct fingerboard position. It worked, but it was fundamentally a flashcard app with a violin skin. A kid might use it because a parent made them, not because they wanted to.

The Shift

Treble Maker replaced drills with games. The signature piece is Magical Music Forest -- a 3D endless runner where you walk through a procedurally generated forest, reach a fork in the path, and have to identify a note to choose the right branch. Wrong answer? A bear attacks. The learning is embedded in the game loop, not sitting on top of it.

Nine additional mini-games provide variety and train different skills: pattern recognition, sequence memory, speed, accuracy, spatial mapping, and competitive play. Every game feeds into the same spaced repetition engine, so weak notes surface more often regardless of which game a kid chooses to play.

Treble Maker home screen showing 10 games organized by category Magical Music Forest: a fork in the path with note choices at the bottom Note Invaders: retro arcade-style mini-game

The home screen, a Magical Music Forest fork decision, and Note Invaders.

10
Playable Games
29
Violin Notes
26K
Lines of Swift
0
Asset Bundle Cost

What's Inside

Magical Music Forest

A 3D endless runner through procedurally generated environments. Terrain, textures, trees, and lighting are all generated at runtime -- zero pre-built assets.

9 Mini-Games

Falling Notes, Note Blitz, Note Connect, Note Duel, Memory Match, Simon Says, Target Practice, Note Invaders, and a timed quiz. Each trains a different skill.

Spaced Repetition

An SM-2 algorithm tracks mastery across all games. Weak notes appear more often. The system learns what each kid struggles with and adapts accordingly.

Full First Position

All 29 notes from G3 to G#5 across four strings, with multiple fingerings, sharps, flats, and naturals. Interactive fingerboard display for left and right-handed players.

The 3D Engine

Magical Music Forest's entire environment is procedural. The terrain uses Perlin noise heightmaps, paths are custom triangle-strip meshes with organic jitter, and trees are billboard planes positioned along the path. Textures for dirt, bark, sky, and dappled sunlight are all generated at runtime. Fragment shaders combine atmospheric haze with Fresnel rim lighting. Gobo lighting projects procedural leaf shadows from a directional light.

All of that runs at 60fps on iOS with zero asset bundle overhead. Six distinct biomes are designed -- moonlit forest, dark canyon, open mountain, golden summit, waterfalls, and a sunlit meadow -- with the first fully built and playable.

The Real Test

My daughter has been playing Treble Maker on her iPad in developer mode for weeks now -- choosing it over Roblox, which is about the highest compliment a kid can give a piece of software. She has started tracking her own stats, keeping an eye on her accuracy and timing numbers, and bragging to me when they improve. The sight reading is getting better. I can hear it during practice.

The app is nearly ready for App Store submission. The gap between "my kid uses it" and "other kids can use it" is mostly polish and packaging at this point.

Built With

Swift 6 with strict concurrency. SwiftUI for menus and overlays. SceneKit with a CADisplayLink game loop for 3D. SwiftData for persistence. AVFoundation for synthesized audio. CoreHaptics for tactile feedback. GameplayKit for Perlin noise terrain. Metal/GLSL fragment shaders for environment effects.