Sometimes the breakthrough is not the thing you were trying to build.
I started with a little idea for Mississippi.
Everybody knows Mississippi is one of those words you learn by rhythm:
M I S S I S S I P P I
So Blue, Codex and I built MissiSup, a BluSup app that spells Mississippi while the letters move on the screen.
Try MissiSup
It started out as a song.
That was our first mistake.
We had music, a voice, visual timing, pauses, replay buttons and all sorts of things trying to stay synchronized with one another. We kept fixing one thing and disturbing another.
Then we tried three voices:
Delta Woman
Mississippi Man
Playful Woman
That was fun.
Then we added Random, so the voice could change while Mississippi was being spelled.
That was even more fun.
But the important discovery came when we stopped treating the voice recording as the clock.
We chopped the spelling into individual sounds and let the computer control the timing.
At first we used:
M — I — double S — I — double S — I — double P — I
Better, but the word double created its own timing problems.
So we killed that too.
Now MissiSup is nothing more complicated than eleven individual letters:
M · I · S · S · I · S · S · I · P · P · I
Each letter owns one fixed 0.800-second time slot.
The voice does not have to fill the slot. It says the letter naturally and then waits for the next beat.
That means an I can take 0.4 seconds, an S can take 0.43 seconds, and a longer spoken letter can use more of its allotted time.
But the next letter still begins exactly 0.800 seconds later.
Suddenly everything became simple.
The Sound and the Letter Share the Same Clock
There was one more nasty problem.
If the browser had been sitting quietly for a while, I could press Play and watch the M and sometimes even the I animate before my speakers woke up and produced the sound.
The program was on time.
The speaker wasn't.
So we changed clocks.
The new engine uses the browser's Web Audio clock as the master. When playback begins, it silently gives the audio system 0.300 seconds to wake up.
Nothing is played during that time.
Then every letter sound is scheduled at an exact future audio time.
The corresponding visual letter is scheduled for the expected moment that sound reaches the output device.
So we are no longer saying:
Play a sound now and animate a letter now and hope they happen together.
We're saying:
At this exact future moment, say this letter and show this letter.
Much better.
Then I Realized We Had Built the Wrong App
Or maybe the right app by accident.
There is nothing about this new engine that requires the word to be Mississippi.
Give it:
TENNESSEE
and it can spell Tennessee.
Give it:
MASSACHUSETTS
and it can spell Massachusetts.
Give it:
PHOTOSYNTHESIS
and it can spell that too.
All we need is the alphabet.
So while I am writing this, Codex is building our next BluSup app:
Spell
Spell will contain all 26 letters of the English alphabet, recorded in all three voices.
That's:
26 letters × 3 voices = 78 individual voice files.
Each one gets the same 0.800-second slot.
Spell will accept a word as an option and generate the word on the screen, with every physical letter independently animated.
Then it will spell it.
You will still be able to choose:
Delta Woman
Mississippi Man
Playful Woman
Random
Clicking a voice will start the spelling.
Change voices while it is spelling and the next available letter can use the new voice.
Random can mix the voices letter by letter.
And Then There Are Lists
This may be my favorite part.
Spell will also accept a simple text file containing words.
One word or term per line.
So I can make:
us-states.txt
and Spell becomes a U.S. state spelling trainer.
Or:
astronomy.txt
and it becomes an astronomy spelling trainer.
Or:
medical.txt
computer-terms.txt
fifth-grade-words.txt
words-I-can-never-spell.txt
The application doesn't have to know what any of those subjects are.
It just knows letters.
Choose a word from the list and Spell builds the visual word, creates its timing sequence, and spells it.
No new application code required.
Mississippi Gets to Stay
I'm not getting rid of MissiSup.
MissiSup earned its place.
It is our laboratory—the little Mississippi spelling toy that forced us to solve voice generation, browser audio latency, animation synchronization, fixed timing, Random voices, and finally the idea of treating every letter as an independent reusable object.
Try MissiSup:
And now it has produced something larger than itself.
Spell
Coming soon to BluSup.
Codex is building it while I write this.
Bluooom. 🔵

This shared post is read-only. Sign in as owner to comment.