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.