Reference

Help

Doodlesynth draws continuous pitch curves instead of entering MIDI notes. Below are the keys the editor listens for, the vocabulary it uses, and where each surface lives.

Transport

Space
Play / pause
⌘/.
Stop and return to start
Home
Go to project start
End
Go to last content

Tools

A
Select tool
P
Pen / draw tool
E
Eraser
S
Split curve
H
Pan

Edit

⌘Z
Undo
⌘⇧Z
Redo
⌘C
Copy selection
⌘V
Paste at playhead
⌘D
Duplicate selection
Del
Delete selection
Esc
Cancel current action

View

G
Toggle snap
Z
Zoom to selection
⇧Z
Zoom to project
M
Switch Piano / Frequency map
I
Toggle inspector

Tracks

Tab
Next track
⇧Tab
Previous track
⌘T
New track

Points

N
Snap selected points to actual note Hz
←
Nudge point earlier
→
Nudge point later
↑
Nudge point up in pitch
↓
Nudge point down in pitch

Modifier conventions in the editor: hold Ctrl / Cmd to bypass snapping for one gesture, Shift to constrain movement, and Alt / Option for fine adjustment. Arrow keys nudge the selected points; Shift makes the nudge larger and Alt makes it finer.

A voice is a curve, not a note
The primitive is a voice path: a piecewise curve through editable control points. Time runs across, frequency runs up, and the curve can pass through any frequency in range. Nothing forces you onto a semitone.
Beats, never seconds
Positions are stored in beats. Tempo converts beats to seconds at play time, so changing the tempo changes how long the music lasts without moving a single point.
Hz, never MIDI note numbers
Pitch is stored as a frequency in hertz. Note names, cents and scale degrees are derived for display and snapping. Drawing between C5 and C#5 can settle on 552.17 Hz with no resistance.
Piano Map vs Frequency Map
Piano Map is the composition view: octave bands, note lanes, active scale degrees, root emphasis. Frequency Map is the precision view: raw Hz labels with a logarithmic or linear-Hz projection and an optional reference-only piano overlay. Both project the same continuous data, so switching maps never changes a curve.
Static JI vs Dynamic JI
In Static JI every scale degree resolves to a rational interval from the master root, so 5/4 is always a major third above it. In Dynamic JI the same ratios attach to an explicit intonation anchor instead, so when the harmonic context moves the ratio targets move with it while an absolute-Hz voice stays exactly where it was drawn.
Absolute Hz vs scale-relative
A track is either literal or scale-relative. Absolute-Hz points are never rewritten by root, scale or tuning changes. Scale-relative points remember their degree, octave and cent offset, so they re-resolve when the Musical State changes.
Snapping only decides where a gesture lands
Snap never rewrites existing curve data, and moving the playhead across a scale-change keyframe never retunes anything. Only the explicit Retune to Current Scale command rewrites scale-relative pitches.
Undo is per edit
Every operation is a command with an undo and a redo, and a continuous drag commits once on release rather than once per pointer move. Undo is available for essentially every editing operation.