Tonic solfa is the primary notation system for choirs, school music programs, and church music across much of Africa. But there has been no software for notating in tonic solfa. Prior to Solfa Streams, composers / arrangers writing solfa are stuck choosing between these options.
Writing tonic solfa score by hand (a very painful process)
Using a Word Processor or an Illustrator app (Corel Draw or Adobe Illustrator etc)
Using SIbelius Tonic Solfa tool which treats solfa as an afterthought, and appends the solfa to the staff score.
Solfa Streams exists to close that gap: treat solfa as a first-class notation. By pairing a custom, fast text syntax with real-time engraving and instant browser-based playback, it shrinks the loop from raw idea to a trusted arrangement down to minutes.
The Experience
Write: Solfa is entered in a fast editor. No dragging notes onto a staff, no mouse-driven note entry — just typing, the way a composer already thinks.
See: As you enter notes, it is being engraved in real time: proper spacing, collision handling, and print-ready layout, It does automatic engraving for you, resolving collisions and giving the right spacing etc, so you don't have to engrave manually or spend hours doing that after writing the music.
Hear: Fully synchronized multi-part audio playback tracks the cursor through the score in real time.
Import and continue — arrangers already sitting on a library of MusicXML or MIDI files can bring that material in and keep working in the same text-first flow, instead of starting from a blank page.
AutoSave: Every change autosaves locally and syncs to the cloud, removing file management from the creative workflow.
Export: You can export your score as PDF, SVG, MIDI (Full or Part by Part), and MusicXML.
Technical Architecture and Engineering Problems
Text-to-Engraving Parser: I built a custom deterministic parser that processes the text stream into a time-indexed Abstract Syntax Tree (AST). The layout engine then reads this AST and renders the score.
Engraving was a genuinely hard problem here, as I had to deal with spacing, handling collisions, and making multi parts align to beats. The engraver is a Gourlay/Renz columns-rods-springs layout where measure widths are stretchable springs, lyric/glyph clearances are inviolable rods solved by a constraint propagator with a binary-searched fallback gap, multi-part alignment comes for free from a shared beat grid, and the whole thing renders progressively so a notoriously complex score still feels instant while you type.Time-Synchronized Playback Engine; During playback, the Web Audio API clock acts as the single source of truth. We don't push timing updates from the audio thread to the UI. Instead, the visual cursor operates entirely as a passive follower. On every animation frame (
requestAnimationFrame), the UI polls the Web Audio clock, converts the current high-precision audio timestamp into our common quarter-note beat axis, and looks up the active note key in the snapshot. The visual layout engine then grabs those structural coordinates—finding the exact measure and voice on the screen—and redraws the cursor position instantly.Moveable-Do Conversion Pipeline: Converting MusicXML to Tonic Solfa is also a big translation problem, and we have to do this while accurately preserving musical meaning. For this, I built an ingestion pipeline. It preserves the order of the Music XML --> determine parts, also separate parts in closed scores --> tracks stateful attributes --> converts notes to solfa notation.
Performance Optimization: The main thread is free. The expensive computations are pushed off the main thread. Audio scheduling runs its clock in a WebWorker with a lookahead buffer, so a UI jank can't drift the beat. Layout is progressive and interruptible.
When editing, the structure is cached, so we don't linearly rescan when a change is made.
Editor state is split into narrow contexts, so always mounted surfaces don't re-render on unrelated changes.
The Intersection of Music and Software
Solfa Streams sits at a specific and under-served junction: notation systems as symbolic languages, and software's job of making symbolic languages fast to write, verify, and render. Staff notation software had decades of tooling investment because it serves a global publishing industry; tonic solfa never got that investment despite serving a huge, active community of choirs and schools.
Usage Signals & Impact
Since launch, Solfa Streams has validated the deep demand for dedicated sol-fa tooling across our target audience of church music directors, school teachers, composers, and arrangers.
Active Users: Over 150 users actively platformed.
Production Volume: More than 300 scores created.
What comes next?
Mobile Optimized Read
Improved Workflow
OMR
Collaborative Editing
