SongScript works out the notes in the audio and writes them as MIDI. The
listening happens in this tab, on your machine. Nothing is uploaded, no
account exists, and no model is asked anything.
One file, no installer. Drop audio on it, drop a folder on it, or double-click it
and paste a path. It writes the .mid next to your audio and never
opens a socket.
:: one file
SongScript.exe take.mp3
:: a whole take folder, guitar preset, plus JSON
SongScript.exe D:\rough-mixes\ --instrument guitar --json
:: one output path
SongScript.exe demo.mp3 -o demo-section.mid
:: everything it can do
SongScript.exe --help
What it is doing, in plain words
Listening
The audio is cut into overlapping windows of about ninety milliseconds and each
window is turned into a spectrum. The broad shape of the spectrum is subtracted
away, which is what makes a loud bass and a soft guitar comparable, and what is
left is the fine structure of peaks.
Voices
A pitched note is a stack of evenly spaced peaks. The strongest stack in each
window is measured, that stack is cancelled out of the picture, and the next one
is measured. Repeat until the windows stop offering anything convincing. When the
winner has nothing at its own fundamental it was somebody else's overtone, and it
gets demoted.
Continuity
Peaks are matched from window to window so a held note becomes one long note and a
struck note becomes its own. Short flickers, duplicate detections and leakage a
semitone beside a real note are dropped.
Grid and key
The attack curve gives a tempo estimate every few bars. A dynamic-programming pass
then picks the beats that best explain the attacks while paying for any straying
from that local estimate, so a verse at 90 and a chorus at 140 each keep their own
grid. The tempo map those beats produce goes into the MIDI, and notes are snapped
to the grid where they actually sit. Key comes from a Pearson profile of the twelve
pitch classes.
There is no model here to charge you for. The MIDI is what signal analysis can
honestly see: clean single-instrument recordings come out close, dense mixes come
out partial, and anything with heavy reverb or a drum kit needs tidying. The exe
and this page run the same engine - the page compiles it to a 132 kB WebAssembly
module, the exe is the same code native.