Guide
How to use GhostMidi
GhostMidi is a chat-driven multi-track MIDI editor. The full loop takes about three minutes to learn. This page covers everything: how to generate tracks, how to refine them, the complexity slider, how the lock and chord labels work, how to edit notes by hand, what's different on mobile vs. desktop, and how cloud-saving and accounts work for Pro users.
1. Generating your first track
On the app page, the first track is pre-filled with an example prompt. You can change it to anything — GhostMidi accepts plain English descriptions.
Good first prompts to try:
- "dark trap chord progression in E minor, 75 bpm, 8 bars"
- "lo-fi piano chords with maj7 extensions, mellow, F# minor"
- "sad piano ballad in C minor, slow, 16 bars, holding chords"
- "upbeat house bassline in A minor, 124 bpm, 4 bars"
- "phonk bass with cowbell anchor, 140 bpm, dark, 8 bars"
- "afrobeats keys, syncopated, F# minor, warm, 8 bars"
Click Generate. GhostMidi takes 5–20 seconds. When it's done you'll see notes on a piano roll, plus chord symbols across the top showing the harmonic structure.
2. The Complexity slider
Below each track's prompt there's a Complexity slider (1–5). It controls how harmonically and rhythmically rich the generated part is, without breaking the “one part per track” rule (chord tracks stay chord tracks, even at level 5 — the part just gets richer ornamentation).
- 1 · Simple — block chords, root-position, no movement. Foundation only.
- 2 · Standard — block chords with occasional inversions, light rhythmic variation.
- 3 · Rich (default) — purposeful inversions for voice leading, inner-voice movement, suspensions resolving. Sounds like a thoughtful session player.
- 4 · Lush — secondary dominants, walking basslines, broken-chord voicings, neighbor-tone ornaments.
- 5 · Cinematic — chromatic approach chords, extended harmony (9ths/11ths/13ths), inner-voice line clichés, mordents, multi-octave broken-chord patterns.
3. Refining a track via chat
After generating, the prompt box clears so you can type what to change. GhostMidi sees the current notes and your refinement instructions. Examples that work:
- "keep bars 1-3 the same, give bars 4-6 a Latin flavor (try Phrygian), then resolve in trap style for 7-8"
- "make the second half more emotional — add a 7th to each chord"
- "humanize the timing slightly — micro-shift each note's start"
- "simplify — drop one note from each chord, keep just root + 5th + 3rd"
Hit Generate (refine this track). Repeat until the track feels right. There's no limit; each refinement replaces the track with a new version.
4. Layering more tracks
Click + Add another track at the bottom. A new empty track appears. Type what you want as a new layer:
- "a simple bassline that follows the chord roots, an octave below"
- "a melody that responds to the lead in Track 2 — call-and-response, leave space"
- "sparse pluck arpeggios using chord tones, 16th notes"
- "counter-melody in the upper register that doesn't clash with the bassline"
Every new track sees all existing tracks automatically — their notes, their chord progression. GhostMidi is instructed to fit harmonically (land on chord tones), rhythmically (complement existing onsets), and by register (bass low, chords mid, leads high). You don't have to remind it.
5. Playback, scrubbing, sounds
Each track has its own ▶ Play button. Above the tracks, ▶ Play all plays everything together.
- Click the bar ruler at the top of the piano roll to scrub the playhead to that beat. Works during playback too — instant seek.
- Mute checkbox next to each track name — uncheck to silence that track in Play All. Real-time: toggle during playback and the change is instant.
- Loop checkbox next to each Play button. Checked = repeat seamlessly until you click Stop. Available per-track AND for Play All.
- Synth dropdownpicks the sound of each track. 15 presets organized into Chords (Synth Pad, Strings, Choir, Organ), Bass (Bass, Sub, Upright Bass), Lead (Synth Lead, Square Wave, Bell, Marimba, Brass), Plucked (Pluck, Guitar), and Keys. Default is Auto — picks based on the track's name (rename a track to “Bass” → it auto-picks Bass; rename to “Chiptune” → Square Wave; rename to “Upright” or “Double Bass” → Upright Bass).
- Synth changes apply mid-playback— swap to a different sound while a loop is running and you'll hear the change on the next note (no need to stop/restart).
- The red playhead linescrubs across the piano roll during playback, and the view auto-scrolls so you can always see what's coming next.
6. Bringing your own MIDI
On Track 1 only (when empty), there's an ↑ Upload .mid button next to Generate. Pick a .mid file (up to 32 bars) you already have — from your DAW, a collaborator, or anywhere — and it loads as your starting track.
After parsing, you'll see a confirmation form with the file's detected BPM, time signature, and key. Confirm or override— these become the project's locked values. BPM gets auto-cleaned on the way in (DAWs save tempo as integer microseconds, so a file labeled 86 BPM often reads back as 86.00005160…; GhostMidi snaps it to 86 for you).
Key auto-detect: if the file doesn't include a key signature (most don't — DAWs rarely write one), GhostMidi analyzes the notes with the Krumhansl-Schmuckler profile and pre-fills the field. You can override.
7. Editing notes in the piano roll (desktop)
Once a track has notes, the piano roll is fully editable with the mouse. The cursor changes to show what each click will do. This is desktop-only — on phones and tablets the piano roll is read-only (see Mobile below).
Adding notes
- Click on empty grid space → creates a new note at default duration (8th note). Drag right while still holding to extend it before releasing.
- Notes default to velocity 90 (medium-loud) and snap to the nearest 16th note.
Moving and resizing
- Click + drag a note's body → moves it. Both pitch (vertical) and start time (horizontal) change with the mouse.
- Click + drag the right edge(~6px from the right) → resizes the note's duration.
- Click + drag the left edge → resizes from the left side (changes both start time and duration).
Deleting
- Right-click on a note → deletes it.
- Click a note to select it (turns gold), then press Delete or Backspace.
Multi-select and group operations
- Shift + click on multiple notes to add them to the selection. Selected notes show as gold.
- Drag any selected note's body → all selected notes move together (same beat + pitch delta).
- Delete with multiple selected → deletes all of them at once.
Snap to grid
- Default: every move/resize/create snaps to the nearest 16th note (1/4 of a beat).
- Hold Shift while dragging or creating to disable snap and place notes freely.
Velocity editing
- Every note's opacity reflects its velocity. Quiet notes look faded; loud notes look solid. So you can read the dynamics of a part at a glance.
- To change a note's velocity: hold Alt (Option on Mac) and drag vertically on the note. Up = louder, down = quieter. A small badge follows your cursor showing the live velocity number (1-127). Release the mouse to commit.
- To change a whole chord's velocity together (all notes sharing a start beat move proportionally): hold Alt+Shift and drag. Use this when you want to accent or soften an entire chord at once instead of one voice.
- Generated notes default to velocity 90. Pull individual notes down to 60-70 for a softer feel; push accents up to 110+. Hover any note to see its exact velocity in the tooltip.
Undo and redo
- Cmd+Z (or Ctrl+Z) undoes the last edit.
- Cmd+Shift+Z (or Cmd+Y) redoes.
- History is per-track and 50 deep. Cmd+Z applies to whichever track you most recently edited.
8. Mobile (phone / tablet)
Everything works on mobile except hand-editing notes. You can chat-generate, refine, layer, play, scrub, swap synths, change complexity, upload .mid files, and export — all from your phone. Note editing is desktop-only because mouse-precise drag interactions don't translate well to touch.
- The piano roll on mobile shows a small banner at the top: “Open this project on your computer to edit notes by hand.” Your projects sync across devices once you're signed in (see Accounts below).
- Audio works through the silent switchon iPhone — GhostMidi puts the page into media-playback mode on first tap so you don't have to flip the silent switch off to hear playback.
9. Exporting to your DAW
Two export options. Both produce standard MIDI files that work in every DAW.
- ↓ Export .mid on each track (in the track header) → downloads just that track as
<track name>.mid. Useful when you want to drop one part onto a specific instrument in your DAW. - ↓ Export all at the top (next to Play all) → downloads ONE multi-track
.midfile containing every track. Drop it into your DAW and each track lands on its own MIDI track.
Track names (click the name to edit) become both the file name and the track name embedded in the .mid. So “Lead” shows up as “Lead” in your DAW.
10. Project lock — what gets pinned
The first track with notes establishes the project's “anchor”. Once set, you'll see it in a small badge near the top: PROJECT LOCKED · 75 BPM · E minor · 4/4 · 8 bars.
Every subsequent generation — new tracks AND refinements of existing tracks — is forced to use those exact values. Even if you ask GhostMidi to change to A minor mid-prompt, the server overrides the response with the locked values.
BPM is editable inline— click the tempo number in the locked badge to change it. All existing tracks update their playback speed (notes don't move because they're stored in beats, not seconds). Hit Stop → Play if a loop is running so it re-triggers at the new tempo.
To change everything else (key, time sig, length), click Start song over in the top right. That clears all tracks and frees the anchor; your next generation establishes a new one. Key and time-signature transposition of existing tracks is on the roadmap.
11. Saving projects (Pro)
Pro accounts get a cloud project library: save any project to your account, open it from another device, edit it anywhere. Free and anonymous users keep working entirely in their browser (localStorage) — clearing your cookies clears your work.
- A Save bar appears at the top of the project (just below the locked-anchor badge) for signed-in users. Shows save state: Unsaved, Saved Xm ago, or Not saved to your account yet.
- Click Save to account to push the current state to the cloud. Click Save as new to fork — creates a separate cloud entry from this point.
- Visit your account page for the full project library. Rename inline, open in one click, delete with confirmation.
- First-time sign-in: if you have local work from before you signed up, GhostMidi auto-uploads it as your first cloud project so nothing is lost.
- Free signed-in users see an upgrade nudge where the Save bar would be. Cloud-saved projects are Pro-only.
12. Accounts and Pro
You can use GhostMidi anonymously — no signup needed. Your project saves to your browser. The free anonymous limit is 5 generations per day, after which you'll be invited to create an account.
Free account: same 5 generations per day, but tied to your email so the count follows you across devices.
Pro ($10/month): unlimited generations, unlimited cloud-saved projects, and sync across desktop and mobile. Upgrade or manage your subscription on the Account page.
Quick reference: shortcuts (desktop)
| Shortcut | Action |
|---|---|
| Cmd+Z | Undo last edit |
| Cmd+Shift+Z | Redo |
| Delete / Backspace | Delete selected note(s) |
| Shift + click | Add note to selection |
| Right-click | Delete note (no selection needed) |
| Shift + drag | Disable snap (free placement) |
| Alt + drag vertically (Option on Mac) | Change a single note's velocity |
| Alt + Shift + drag | Change a whole chord's velocity together |
| Click ruler | Scrub playhead to that beat |
Ready to make something?
Launch the app →