AI MIDI Generator

// what it does and why

A browser tool that turns a genre, a key and a tempo into real MIDI files you can drag straight into your DAW. It is the thing on this site I use the most.

Open it →
31Genres
35Scales
100Bars max
0Keys on my server

What it does

You choose what you want written: a full song starter, a melody, a bassline, a chord progression, a drum pattern, a description of your own, or I'm Feeling Lucky, which picks a genre for you. Then set the length, tempo, key and scale, and a groove if you want swing or a pushed feel. Press Generate and a piano roll appears.

A song starter comes back as four separate layers, drums, bass, chords and melody, written together so they agree rather than one at a time. Each layer gets its own mute, solo, regenerate button and MIDI download. You can also drag a layer's title bar straight into your DAW, though some hosts make you drop it on the desktop first.

Your key never touches my server

The tool talks to Google's model directly from your browser, using a key you supply. That key is saved in your own browser storage and nowhere else. It is not sent to jeremiahfisher.net, it is not in any database of mine, and I could not read it if I wanted to. There is no account, no sign in and no server behind this page at all.

A free key from Google AI Studio takes about a minute to create, and clearing your browser data removes it. The flip side is honest: the usage is billed to you, not to me. I am not reselling anything and there is no quota I can quietly cut off.

Why it exists

I get stuck at the empty project. Not at mixing, not at arranging, at the first idea. A generated four bar loop is almost never good, and that is fine, because it was never meant to be the song. It is something to react to, and fixing a bad idea is much easier than starting from nothing.

It outputs MIDI rather than audio on purpose. MIDI is just notes, so your instruments, your sounds and your mix stay yours. Nothing about the result decides what it ends up sounding like.

You can edit it without leaving the page

The piano roll is not a picture of the result. Drag a note to move it, drag its right edge to change its length, double click empty space to add one, right click to delete one. Undo and redo cover all of it.

The part I use every session: drag across a few bars to select them, and the layer's regenerate button changes from All to Section. Only those bars get rewritten, and the surrounding track goes along so they fit what is already there. Before that, fixing four bad bars meant rerolling everything and losing the parts that worked.

The preview sound is deliberately plain

Press play and you get sine tones for the pitched parts and short bursts of noise for the drums. It sounds cheap and it is supposed to. The preview only has to answer one question, which is whether the notes are right. Making it sound good would have meant shipping sample files, and it would have tempted me to judge an idea here instead of in the DAW it is going to anyway.

What still bites

The model does not reliably respect the bar count you asked for. Every note that comes back is checked against the requested length, a valid pitch range and a sane velocity, and anything outside is thrown away rather than drawn. Notes that overhang the end get trimmed. It also returns slightly malformed data often enough to matter, so there is a repair pass before anything is read.

Drum patterns arrive as General MIDI numbers, relabelled as Kick, Snare and so on. Ask for something the map has no name for and you get the bare number instead.

What it taught me: assume the model will hand you something almost right, and build for that. The quiet pass that discards out of range notes does more for how this tool feels than any wording I tried in the prompt.

Built with

React and Tailwind, a MIDI writing library, the Web Audio API for the preview, and Google's Gemini for the notes. It is a single page with no build step, which is the main reason it keeps working.