# sheeti.fyi

Turn a piano recording into sheet music, MusicXML and MIDI. Everything runs in the browser; audio is
never uploaded.

## What it does

Drop in an mp3, wav, opus, m4a or flac of solo piano, or paste a link to an audio or video file. The
page transcribes it to notes, shows them falling onto a keyboard, and engraves them as sheet music
you can read, print or download.

## How it works

Two stages, and they differ in how much you should trust them.

1. **Audio to notes** is exact. It runs Transkun, a semi-CRF piano transcription model
   (Yan, Cwitkowitz and Duan, NeurIPS 2021, MIT licence), as ONNX in WebAssembly on your own CPU.
   The output is verified note-identical to the reference PyTorch implementation.
2. **Notes to notation** is inferred. Tempo, time signature, key, note values and the split between
   hands are all guesses from the note timings, so every one of them is adjustable in the page and
   the score re-engraves as you change it.

Sheet music is engraved with Verovio (LGPL-3.0). Playback uses Strudel (AGPL-3.0) with sampled
pianos, keyboards and tuned percussion.

## Exports

- **MusicXML** for MuseScore, Sibelius, Dorico or Finale
- **MIDI** with note velocities and the sustain pedal
- **SVG** and print or PDF of the engraved score
- **WAV** rendered offline, roughly 40x faster than playing the piece
- **MP4** of the falling-note view at 720p, with the audio track

## Limits, stated plainly

- Solo piano only.
- Constant tempo, so a rubato performance gets over-notated.
- Time signature is not detected and defaults to 4/4.
- One key for the whole piece.
- Two voices per staff.

## Privacy

There is no server. The model downloads once from Hugging Face and is cached by your browser; the
audio you drop in is decoded and processed locally and never leaves the machine.

## Author

Built by nixvio64. https://sheeti.fyi
