Show HN: Teach your kids perfect pitch
Summary
BSharp is an open-source Android app that trains perfect pitch in young children using Eguchi's chord identification method, with adaptive learning and multiple user profiles.
View Cached Full Text
Cached at: 06/22/26, 01:34 AM
paytonjjones/bsharp
Source: https://github.com/paytonjjones/bsharp
BSharp: Perfect Pitch Trainer
Young children can acquire absolute (perfect) pitch — but adults cannot. The window closes around age 6. BSharp helps develop this ability using Eguchi’s chord identification method.
How it Works
Children listen to piano chords and learn to identify each one by its color. Start with two chords (red and yellow) and gradually introduce new ones as your child masters each level. Practice 5 times a day for 2–3 minutes each session — about 20–25 identifications.
About the Eguchi Method
Eguchi’s chord identification method was documented in research published in Psychology of Music. Children associate chords with colors (red, yellow, blue, black, green, orange, purple, pink, brown) and progress through levels. New chords should be introduced no sooner than every 2 weeks, and only after the child can identify all current chords with 100% accuracy.
Based on the open-source CIM Trainer by Paul Ganssle.
Using BSharp
Children listen to a chord and tap the matching colored flag. The app tracks accuracy, adjusts chord frequency using an adaptive weighting algorithm (presenting harder chords more often), and supports multiple user profiles.
Chord progression:
| Level | Color | Chord |
|---|---|---|
| 1 | Yellow | F/C |
| 2 | Blue | G/B |
| 3 | Black | F/A |
| 4 | Green | G/D |
| 5 | Orange | C/E |
| 6 | Purple | F |
| 7 | Pink | G |
| 8 | Brown | C/G |
After mastering the 9 white-key chords, 5 black-key chords are introduced (Gray, Tan, Light Green, Light Purple, Sky Blue).
Developer
Building
Requires Node.js.
npm install
make build
This produces dist/ with the bundled app.
Android
make android-deploy
Then open android/ in Android Studio, sync Gradle, and run on a device or emulator.
Attribution
Derived from pganssle/cim by Paul Ganssle. Rebuilt as a separate tool with a distinct name at his request. Licensed under the Apache License 2.0. See NOTICE for details.
Similar Articles
Under the Hood: Building a Real-Time Chord Recognizer
This article explains the technical architecture of a real-time chord recognizer, detailing a four-stage pipeline using pitch-class bitmasks, candidate generation, score normalization, and musical heuristics.
Guitar tuner that uses phone accelerometer
A web-based guitar tuner that utilizes the phone's accelerometer to detect string vibrations and calculate pitch.
Turn your singing voice into printable notes (in the browser)
A browser-based tool that converts singing voice into printable musical notation, with adjustable parameters for pitch tolerance, noise gate, and note splitting sensitivity.
Show HN: Live breath detection and biofeedback from a phone microphone
An open-source project that uses a phone microphone for live breath detection and biofeedback, processing audio on-device to enhance self-awareness without wearables or cloud uploads.
Show HN: Wyrm – Solve algebra by touch, built on an open-source soundness engine
Wyrm is an open-source symbolic algebra engine in TypeScript that powers a gesture-based algebra app for iOS and Android. It guarantees soundness by construction through conditional rewrite rules, allowing users to solve equations by touch.