ModalJazz

Keyboard shortcuts

These are the keyboard shortcuts of ModalJazz. In the app, ? shows the same list, and Cmd-Shift-P finds an action by name.

A count before a key command repeats it: 3w moves three measures. An operator such as d waits for a motion: dw deletes to the next measure.

Normal mode

The default mode. Key commands move the cursor and change the music. Esc always returns here.

Move

horLeftPrevious event
lorRightNext event
wNext measure
bPrevious measure
eor$Last event of the measure
0First event of the measure
ggFirst measure (or measure n)
GLast measure (or measure n)
gpLast playback position
jorDownStaff below (a step down with note focus)
korUpStaff above (a step up with note focus)
JNext lower note in the chord
KNext higher note in the chord
Ctrl-1 to Ctrl-4Voice 1 to 4
zzCenter the view on the cursor
ztScroll the cursor to the top of the view
zbScroll the cursor to the bottom of the view

Playback

SpacePlay from the cursor / stop
Shift-SpacePlay from the start
EnterPlay the event under the cursor

Edit

dDelete (a motion, or the selection)
yCopy (a motion, or the selection)
cChange (a motion, or the selection)
xDelete the event (leave a rest)
XDelete the event and close the gap
sChange the event (clear, then Replace mode)
pPaste after the event
PPaste at the cursor
.Repeat the last change
uorCmd-zUndo
Ctrl-rorCmd-Shift-zRedo
oNew measure after, then Insert mode
ONew measure before, then Insert mode
tTie to the next event
FFlip text marks and fermatas above / below the staff
Ctrl-jDraw on the staff below (cross-staff)
Ctrl-kDraw on the staff above (cross-staff)

Pitch

ra to rgReplace the pitch
=Sharp (one accidental up)
-Flat (one accidental down)
+One octave up
_One octave down
Alt-korAlt-UpOne step up
Alt-jorAlt-DownOne step down
~Respell

Duration

[One duration step shorter
]One duration step longer
Alt-1 to Alt-864th, 32nd, 16th, 8th, quarter, half, whole, breve

Mode

iInsert mode at the cursor
aInsert mode after the event
IInsert mode at the start of the measure
AInsert mode at the end of the measure
RReplace mode
vVisual mode: a range
VVisual mode: whole measures

Prompts

mMark prompt
:Command line
?Show the keys

Insert and Replace mode

Letters type notes. Insert mode pushes the music after the cursor forward; Replace mode types over it.

Move

horLeftPrevious event
lorRightNext event
Ctrl-1 to Ctrl-4Voice 1 to 4
TaborShift-TabOther staff

Edit

BackspaceDelete the previous event
tTie to the next event
Ctrl-jDraw on the staff below (cross-staff)
Ctrl-kDraw on the staff above (cross-staff)

Notes

a to gA note (the octave nearest the previous note)
rRest
sHidden rest
SpaceReplace: move on; Insert: a rest
;Tuplet prompt (3, 5:4); again to end it
/Grace notes on / off

Chord

A to GAdd this pitch above the chord
2 to 9Add an interval above (3 = a third)
Shift-2 to Shift-9Add an interval below

Pitch

=Sharp (one accidental up)
-Flat (one accidental down)
0Natural
+One octave up
_One octave down

Duration

[One duration step shorter
]One duration step longer
.Dot on / off
Alt-1 to Alt-864th, 32nd, 16th, 8th, quarter, half, whole, breve

Mode

Ctrl-tSwitch Insert / Replace
EscNormal mode

Prompts

mMark prompt

Visual mode

Motions extend the selection. The edit commands then act on all of the selection.

Move

horLeftPrevious event
lorRightNext event
wNext measure
bPrevious measure
eor$Last event of the measure
0First event of the measure
ggFirst measure (or measure n)
GLast measure (or measure n)
gpLast playback position
jorDownStaff below (a step down with note focus)
korUpStaff above (a step up with note focus)
Ctrl-1 to Ctrl-4Voice 1 to 4
oOther end of the selection

Playback

SpacePlay the selection

Edit

dorxDelete (a motion, or the selection)
yCopy (a motion, or the selection)
cChange (a motion, or the selection)
porPPaste over the selection
tTie to the next event
FFlip text marks and fermatas above / below the staff

Pitch

=Sharp (one accidental up)
-Flat (one accidental down)
+One octave up
_One octave down
Alt-korAlt-UpOne step up
Alt-jorAlt-DownOne step down
~Respell

Duration

[One duration step shorter
]One duration step longer
Alt-1 to Alt-864th, 32nd, 16th, 8th, quarter, half, whole, breve

Mode

EscNormal mode

Prompts

mMark prompt
:Command line

Command line

Type :, then the command, then Enter. Tab completes the name.

CommandWhat it does
:timeTime signature from this measure: 3/4, 6/8, C, C|, 7/8 2+2+3
:pickupMake the first measure a pickup of this length: 1/4
:keyKey signature from this measure: Eb, Cm, F#m
:clefClef change at the cursor: treble, bass, alto, tenor
:barsMeasures: +4 (add at the end), insert 2 (before this measure), insert 2 after, delete
:barlineBarline after this measure: ||, |., |, dashed, none
:repeatRepeat barlines: start, end [times], or both around the selection; off, start off, end off remove them
:voltaEnding bracket over the selected measures: 1, 2, 1,2
:segnoSegno sign at this measure
:codaCoda sign at this measure
:tocoda"To Coda" at the end of this measure
:fine"Fine" at the end of this measure
:dcD.C. at the end of this measure: dc, dc al fine, dc al coda
:dsD.S. at the end of this measure: ds, ds al fine, ds al coda
:rehearsalBoxed rehearsal mark at this measure (the next letter if empty)
:sectionNew section at this measure: a new system, numbers from 1, an optional heading ("II."); off removes it
:breakSystem break after this measure: on, off (no argument switches it)
:pagebreakPage break after this measure: on, off (no argument switches it)
:numbersMeasure numbers: print none|line-start|all, hint none|all (hints show only on screen)
:hideHide the rest under the cursor, or the rests in the selection
:showShow hidden rests again (under the cursor, or in the selection)
:transposeTranspose the selection or the score: +M2, -P4
:tempoTempo mark: q=72, "Andante" q=72, "Swing" q=178 swing, straight, q=q.
:titleScore title (| starts a new line; {italic} or {small} styles a line)
:subtitleScore subtitle (| starts a new line; {italic} or {small} styles a line)
:composerComposer (| starts a new line; {italic} or {small} styles a line)
:lyricistLyricist (at the left, on the line of the composer; | starts a new line; {italic} styles a line)
:arrangerArranger (printed as "arr. ..."; | starts a new line; {italic} styles a line)
:copyrightCopyright footer, printed as typed with no prefix: type "© 2026 ..." (| starts a new, smaller line; {italic}, {small} or {full} styles a line)
:creditsText under the last system: left|right "Text: ...|Music: ..."; small lines above the title: top "..." (| starts a new line; {italic} styles a line)
:coverPage of text before the music, with no page number: add "<text>" [title|large|normal|small] [italic] [tight] (| starts a new line; tight: no blank line above), title (the score title), footer on|off (the copyright), clear
:newNew score from a template: piano, string-orchestra, full-orchestra, concert-band, jazz-band, choir, choir-piano, woodwind-quintet
:instrumentInstruments of the cursor's part (or :P3 instrument ... for part 3): add viola (below the part), remove, move up|down, rename "Violin I" "Vln. I" (| starts a new line: "S|A"), brace on|off, barlines split|join|auto, hideempty on|off (off: :set hideempty keeps this part), systemmarks on|off (tempo and rehearsal marks above this part too), group "Choir" "Ch." (name the bracket)
:wSave
:eOpen a file (native or MusicXML)
:qClose
:wqSave and close
:exportExport: pdf, parts (a PDF of the score and of each part), musicxml, svg, session (the session history, for a bug report)
:partShow the part of one instrument: a part name or number
:scoreShow the full score again (after :part)
:setSettings: one setting and its value, from the table of settings (Tab lists them)
:speedPlayback speed: 80%
:soloPlay one hand or one part only: rh, lh, a part, off
:muteSilence a part: a part name or number, off
:unmutePlay a muted part again: a part name or number
:loopPlay the selection again and again
:chordsChord symbol entry from the cursor: Space goes to the next beat
:notationNotation of this staff: slash (slashes with no stems), standard
:noteheadNotehead of the selection or this chord: slash (rhythm slashes), normal, x, diamond
:slurSide of the slurs that start at this chord or in the selection: above, below, auto
:articSide of the staccatos, tenutos, accents, and marcatos on this chord or in the selection: above, below, auto
:bowBow mark on this chord or on the chords in the selection: down, up, off
:ornamentMordent or turn on this chord or the selection: mord, imord (short trill), turn, iturn, dturn (after the note), none; then the small accidentals, above/below: :ornament turn #/b, :ornament mord /#
:tupletSide of the number and bracket of the tuplets on this chord or in the selection: above, below, auto
:cueMake the selection or this event cue notes: small, and not played; off makes them normal
:tremoloTremolo on this chord or on the chords in the selection: 1 to 4 (slashes), z (buzz roll), pair (with the next chord; pair 2 for two beams), off
:hairpinSide of the hairpins that start at this chord or in the selection: above (on the line of the dynamics above), below, auto
:textOrder of the texts at the cursor's time: up (the bottom line goes up one line), down (the top line goes down), up 3 or down 2 (line 1 is the top)
:lyricsLyric entry from the cursor: 1 (the first verse), 2, 3; then above or below the staff; then italic or roman
:tutorThe tutorial: resume, a lesson number, next, previous, restart

Settings

:set takes one of these settings. | separates the choices, and N is a number.

SettingWhat it does
:set follow|nofollowThe view follows the playback line (app window only)
:set sound|nosoundA note sounds when you write it, change its pitch, or move to it (app window only)
:set minimap|nominimapA small map of the pages in a corner of the window (app window only)
:set speed NPlayback speed in percent of the tempo, 10 to 400: speed 80% (app window only)
:set pedal bracket|mixed|text|open|plainThe style of new pedal marks: a bracket line, "Ped." then a line (the default), "Ped." and "*", a line that resumes after a notch, a plain line (app window only)
:set view page|scrollPages, or one long line of music (app window only)
:set pages column|pairsThe page view shows the pages in one column, or in pairs side by side as in a book (app window only)
:set firstpage left|rightThe side of page 1 in a book; each page number is at the outer edge of its page
:set font bravura|lelandThe music font (default leland)
:set staffsize N|defaultStaff space in mm, 0.8 to 3 (default 1.82); with no value, the message shows the value
:set staffdistance N|defaultSmallest distance between the staves of a system, in staff spaces (default 7)
:set systemdistance N|defaultSmallest distance between systems, in staff spaces (default 8)
:set hairpin N|defaultHeight of the open end of a hairpin, in staff spaces (default 1.5)
:set fingering sans|glyphs|italicThe look of the fingerings
:set names full|short|noneThe part names at the systems: full then short names, short names only, or none
:set chords maj7|M7|Δ|m|mi|-|standardThe spelling of the chord-symbol suffixes: a major-seventh sign, a minor sign, or standard
:set keynaturals all|fewThe naturals at a key change: for each dropped accidental, or only for a change to C major or A minor
:set copyright all|first|lastThe pages that show the copyright footer
:set paper letter|a4|tabloid|a3The paper size
:set mmrest|nommrestMultimeasure rests for runs of empty measures
:set octavecourtesy|nooctavecourtesyA courtesy accidental after the same letter in another octave
:set brackets|nobracketsThe group brackets across parts
:set hideempty|nohideemptyEach system after the first leaves out the staves that have nothing in it
:set repeatwings|norepeatwingsWings on the repeat bar lines
:set concert|noconcertConcert pitch, or written pitch, for transposing parts
:set splash|nosplashThe splash screen at startup (app window only)
:set agent on|offAgents can change the open scores through the agent socket (app window only)