ModalJazz

Type music like a power user.

ModalJazz is a music notation app for the Mac. You write with the keyboard, not the mouse. Modes and short key commands, as in vim, put each note and mark exactly in place.

All features are free with no time limit. A license removes the reminders and includes 2 years of updates. For macOS 13 (Ventura) or later.

  1. iInsert mode at the cursor
  2. Alt-4Eighth notes from here on
  3. cdefgFive notes, each in the octave nearest the last
  4. 3Add a third above the last note
  5. EscBack to Normal mode
  6. :key EbKey signature from this measure
  7. SpacePlay from the cursor
The first measures of Gymnopédie No. 1 by Erik Satie, engraved by ModalJazz

Erik Satie, Gymnopédie No. 1, opening. ModalJazz engraved this page with its own layout engine and the Leland music font.

Gymnopédie No. 1, typed in ModalJazz

A real session, recorded with the engine of the app: the keystrokes that typed the sample page.

0 keystrokes

Work with an AI agent

ModalJazz has a built-in MCP server. Ask an agent, such as Claude Code, to enter a piece from a PDF, a scan, or a photo of handwritten music. Ask it to transpose or invert a passage, to add or change marks, or to analyze the form of a piece. Talk to the agent as you talk to another musician. The agent edits the open score, and you see each change in the window.

  • Each agent request is one undo step. u or Cmd-Z takes it back.
  • The agent reads and writes the music as compact score text: the same text as you and your scripts.
  • You decide: :set agent on lets an agent connect. The app listens only on your Mac, with no network port.
Set up an agent

Compact score text: measure 5 of the sample score

% m5 is the measure, P1.1 the right hand.
m5 P1.1: r:q ( F#5:q A5:q
m5 P1.2: G2:q B3+D4+F#4:h

One line for each measure and staff. An agent reads it with read_measures and writes it with write_measures. You can use it too, with mj read and mj write.

An agent enters Gymnopédie No. 1

The tool calls, the replies, and the pages are real: we recorded them from the MCP server of the app. The chat text is an example.

Scripts and automation

The mj command does the work of the app with no window: it runs : commands, reads and writes compact score text, and exports files. Use it in a shell script, a build, or a batch job.

Run commands

A measure range comes first.

mj run prelude.mj ":5-8 transpose +P8"

Read and write the music

Compact score text, one line for each measure and staff.

mj read prelude.mj 1-8
mj write prelude.mj 5 "m5 P1.1: C5:q D5:q E5:h"

Export

PDF, SVG, MusicXML, and the native format: plain JSON text that you can track in any version control system (like git) and back up wherever you see fit.

mj export prelude.mj --to musicxml

Built for the keyboard

Modal editing

Normal, Insert, Replace, and Visual mode. Counts, motions, operators, and . to repeat the last change.

A clean engraved page

Correct beams, spacing, slurs, ties, and cross-staff notes. Fonts: Leland and Bravura.

Piano first, then more

Piano scores with pedal marks. Templates for orchestra, band, choir, jazz band, and more, with parts.

Hear what you write

Playback from the cursor, with solo, mute, loop, and speed.

Works with other apps

MusicXML import and export. PDF and SVG export, and printing.

Learn the key commands in the app

A tutorial (:tutor) with lessons that check your work, a command palette, and a list of the keyboard shortcuts.