There is a YouTube toy where the number keys are a sax. I wanted that as a real instrument: install it, play it fullscreen, keep the sounds on this machine.
So I built KeySax.
Play it: https://emmi-dev12.github.io/KeySax/
Source: github.com/emmi-dev12/KeySax · MIT
No account. No cloud. No licensed samples. Every tone is synthesized in the browser with the Web Audio API. Preferences live in localStorage.
Install it like an app
- Chrome / Edge — Install app
- Safari on Mac — File → Add to Dock
- iPhone / iPad — Share → Add to Home Screen
After that it is just KeySax in the dock or on the home screen. Reload with ⌘R if you ever need a fresh copy.
How it plays
Four letter rows, a numpad, and space. Each row has its own instrument, octave, and transpose.
| Row | Default |
|---|---|
` 1–0 - = |
Alto sax |
Q W E R T Y U I O P [ ] \\ |
Kalimba |
A S D F G H J K L ; ' |
Piano |
Z X C V B N M , . / |
Guitar |
| Numpad | Drums |
| Space | Bass thump |
Pick a different voice on any row: tenor, bari, YouTube sax, Rhodes, crystal glass, chimes, music box, a pad. Two sax engines — classic additive harmonics, or a reed waveguide.
The default scale is the YouTube one (C D E F G A B♭). Major, minor, pentatonic, blues, mixolydian, dorian, and chromatic are in settings. Shift types uppercase and ! @ # into the letter video.
Hit Record. Letters fall, a sentence forms, and when you stop you can download the letter clip, a video of the whole app, or just the WAV.
Twenty seconds, Happy Birthday
YouTube scale, root C, home row:
A A S A F D
A A S A G F
A A K H F D S
J J H F G F
What I refused to add
A login. A sample pack. A server.
KeySax is the page you install. If it is in front, it plays. That is the whole product.
If you like taking things apart
It is a static PWA on GitHub Pages. Service worker, Web Audio graph, MediaRecorder on a canvas stream, MIDI out if you have a destination. No build step you have to care about — the docs/ folder is the app.
Clone it, break the reed, add a voice, send a PR.
Open it, press 1, and do not be surprised when a saxophone answers.
Top comments (0)