Mini Notator
Mini Notator is the built-in MML (Music Macro Language) editor for composing music compatible with the Mega Drive's sound hardware. It provides a text-based approach to music composition with real-time audio preview, syntax highlighting, and visual feedback through an oscilloscope and piano roll.
Features
- MML text editor — Full code editor with syntax highlighting, auto-completion, find/replace, and real-time compilation.
- 13-channel support — 6 FM channels, 3 FM3-extended operator channels, 3 PSG square channels, and 1 noise channel.
- Real-time preview — Hear changes as you type with WASM-based Genesis chip emulation.
- FM instrument editor — Visual algorithm diagram, feedback slider, and per-operator parameter controls.
- PSG instrument editor — Bar-based volume envelope editor.
- DAC sample support — Import WAV files for sample playback on FM channel 6.
- Piano roll — Visual note timeline color-coded by channel with playback tracking.
- Oscilloscope and level meter — Real-time audio visualization.
- Import/export — Import from Furnace, DefleMask, and FM instrument files. Export to VGM.
- Undo/redo — Full history support via the built-in code editor.
Interface Overview
Toolbar
The toolbar spans two rows at the top of the editor:
- File operations — New, Save, Load, Import (Furnace, DefleMask, FM Instruments), Export (VGM).
- Transport controls — Play (
F5), Stop (F8). - Volume slider — Adjustable from 0% to 200%.
- Progress bar — Shows playback position. Click to seek.
MML Editor
The central area is a full-featured code editor with:
- Syntax highlighting — Notes (teal), commands (green), directives (purple), channel letters (pink/bold), instrument numbers (blue).
- Real-time compilation — MML is compiled automatically as you type (300ms debounce). Errors appear as inline underlines with hover tooltips.
- Standard editor features — Undo/redo, find/replace, multi-cursor, bracket matching.
Bottom Panel
A resizable panel below the editor with four tabs:
- FM — Algorithm selector with visual routing diagram, feedback slider, and a 2x2 operator grid with sliders for all parameters.
- PSG — Bar-based volume envelope editor. Click bars to edit values.
- DAC — Load WAV files, preview waveforms, set loop points.
- Visualizer — Oscilloscope (left) and VU level meter (right), plus a piano roll showing note blocks color-coded by channel.
Channels
Mini Notator provides 16 channels mapped to the Mega Drive's sound hardware:
| Channel | Letter | Chip | Description |
|---|---|---|---|
| FM1–FM6 | A–F | YM2612 | 6 FM synthesis channels. FM6 doubles as the DAC output for sample playback. |
| PSG1–PSG3 | G–I | SN76489 | 3 PSG square wave channels. Channel I may be used for FM3 special mode. |
| Noise | J | SN76489 | 1 noise channel (white or periodic noise). |
| PCM2–PCM3 | K–L | YM2612 | PCM channels 2-3 (software mixing via MDSDRV). |
| Dummy | M–P | — | Dummy channels for macros or FM3 special mode. |
Each channel is written on its own line, prefixed by its letter. Multiple channels can share commands:
A o4 l8 c d e f g a b > c4
G o5 l16 c e g > c < g e
ABC t120 v12 ; set tempo and volume on channels A, B, C
MML Syntax
Directives
Directives configure global song properties. They start with #:
#title "My Song"
#author "Composer"
| Directive | Description |
|---|---|
#title | Song title (used in VGM metadata) |
#author | Composer name (used in VGM metadata) |
To set tempo, use the inline t command on a channel (see Tempo and Timing).
Notes
Notes are lowercase letters c d e f g a b (h is an alias for b). Accidentals use + (sharp), - (flat), and = (natural).
A c d+ e f g- a b=
| Symbol | Meaning |
|---|---|
c–b | Note names (C through B) |
h | Alias for B |
+ | Sharp |
- | Flat |
= | Natural (explicit) |
r | Rest |
Note Length
Note length is specified as a number after the note. Use l to set a default length. Append . for dotted notes (multiple dots are supported). Use :N for frame-based durations in ticks.
A l8 c d e f g4 a2. b1
A c:48 r:24 ; frame-based durations (48 and 24 ticks)
A c4.. d8. ; double-dotted quarter, dotted eighth
A l:48 c d e ; default length in ticks
| Length | Duration |
|---|---|
1 | Whole note |
2 | Half note |
4 | Quarter note |
8 | Eighth note |
16 | Sixteenth note |
32 | 32nd note |
. | Dotted (1.5x duration, stackable: .. = 1.75x) |
:N | Frame-based duration (N ticks) |
lN | Set default length to N |
l:N | Set default length to N ticks |
Octave
A o4 c d e > c < c
| Command | Meaning |
|---|---|
oN | Set octave (0–7) |
> | Octave up |
< | Octave down |
Volume
A v12 c d v8 e f
| Command | Range | Description |
|---|---|---|
vN | 0–15 | Coarse volume |
VN | 0–255 | Fine volume |
V+N / V-N | Relative fine volume adjustment | |
) / ( | Volume up / down by 1 (or )N / (N for N steps) |
Note: ) increases volume, ( decreases volume (matching ctrmml convention).
Panning (FM Only)
A p3 c d p1 e f p2 g a
| Value | Output |
|---|---|
p0 | Mute |
p1 | Right |
p2 | Left |
p3 | Center |
Ties and Slurs
A c4 ^4 ; tie: extend C by another quarter note
A c4 ^:48 ; tie: extend by 48 ticks
A c4 & d4 ; slur/legato: connect C to D without re-triggering
Quantize
Controls how much of the note length is sustained before note-off.
A Q6 c d e f ; sustain 6/8 of each note
A q2 c d e f ; early release: cut 2 ticks before end
| Command | Description |
|---|---|
QN | Quantize (1–8, note length is N/8 of full duration; Q0 resets to full) |
qN | Early release (1–8, ticks subtracted before note-off) |
Q and q are mutually exclusive — setting one resets the other.
Portamento
A G10 c e g ; slide between notes at speed 10
| Command | Description |
|---|---|
GN | Portamento speed (0 to disable) |
Detune
A K5 c d e f ; fine-tune up by 5
| Command | Description |
|---|---|
KN | Detune (-128 to +127) |
Transpose
A _12 c d e f ; transpose up 12 semitones (one octave)
| Command | Description |
|---|---|
_N or kN | Set transpose (-128 to +127) |
__N | Set relative transpose (cumulative) |
Key Signatures
A _{G} c d e f ; G major (F is sharped)
A _{a} c d e f ; A minor
A _{+fc} c d e f ; sharpen F and C
A _{-be} c d e f ; flatten B and E
Both ctrmml notation (F+, B-, E-) and standard notation (F#, Bb, Eb) are accepted.
Instruments
FM Instruments
FM instruments are defined with the @N fm directive followed by algorithm, feedback, and 4 operator rows:
@0 fm
3 5
31 10 5 7 2 25 0 1 3 0
31 12 6 7 2 28 0 2 3 0
31 5 5 7 1 35 0 1 7 0
31 8 4 7 2 30 0 1 0 0
The first line is algorithm feedback. Each operator line contains: AR DR SR RR SL TL RS ML DT SSG-EG.
| Parameter | Range | Description |
|---|---|---|
| Algorithm | 0–7 | Operator routing topology |
| Feedback | 0–7 | Self-modulation on operator 1 |
| AR | 0–31 | Attack rate |
| DR | 0–31 | Decay rate |
| SR | 0–31 | Sustain rate |
| RR | 0–15 | Release rate |
| SL | 0–15 | Sustain level |
| TL | 0–127 | Total level (0 = loudest) |
| RS | 0–3 | Rate scaling |
| ML | 0–15 | Frequency multiplier |
| DT | -7 to +7 | Detune |
| SSG-EG | 0–15 | SSG envelope mode (add 100 to enable AM) |
Use @N in a channel line to select an instrument:
A @0 o4 c d e f
The FM tab in the bottom panel provides a visual editor for these parameters. Changes sync back to the MML source automatically.
2-Operator Chord Macro
Duplicates an FM instrument with modified operator multipliers and transpose:
@24 2op 2 5 5 4 4 0
; ^ ^ ^ ^ ^ ^
; base ML1 ML2 ML3 ML4 TRS
PSG Instruments
PSG instruments define a volume envelope as a sequence of values (15 = max volume, 0 = silence):
@1 psg 1 4 6 8 10 12 13 14 15
Supports slides (>), holds (:length), sustain (/), and loop (|) markers.
The PSG tab provides a bar-based editor for the envelope.
DAC Samples
DAC samples are defined with the @N pcm directive:
@128 pcm "kick.wav" rate=18000 offset=4000
| Parameter | Description |
|---|---|
rate=N | Override sample rate (Hz) |
offset=N | Start position offset (samples) |
Envelopes
Define reusable pitch, volume, or pan envelopes with @M, @E, or @P:
@M1 -2>0:20 0 ; pitch slide from -2 semitones over 20 frames
@M2 0:20 | V0:1:5 ; vibrato with 20-frame delay
@E1 15 14 / 13>0:7 ; volume fade with sustain point
@P1 | 3 1 3 2 ; pan envelope cycling L/R
| Command | Description |
|---|---|
MN | Activate pitch envelope @M (0 = disable) |
EN | Activate volume envelope @E (0 = disable) |
PN | Activate pan envelope/macro track @P (0 = disable) |
Loops and Flow Control
Repeat Loops
A [c d e f]4 ; repeat 4 times
A [c d e f / g a]3 ; last iteration plays g a instead of looping back
Song Loop Point
The L command marks where the song loops back to in VGM export:
A o4 c d e f
A L
A g a b > c
Macros (Subroutines)
Define reusable sequences on a numbered track with *N at the start of a line, and call them with *N inline:
*32 c8 d8 e8 f8
A o4 *32 *32 g4
Drum Mode
Maps note letters to macro calls for percussion:
A D20 c d e f ; c=macro *20, d=*21, e=*22, f=*23...
A D0 ; disable drum mode
Echo
A \=2,3 c4 d \4 e \4 ; echo with 2-note delay, volume -3
| Command | Description |
|---|---|
\=N,V | Set echo delay (N notes back) and volume reduction (V). Positive N clears buffer; negative preserves it. |
\[duration] | Insert echo note with optional explicit duration |
Conditional Blocks
Apply different commands per channel when using multi-channel addressing:
ABC {c/d+/g} {d/f/a} ; A gets c,d — B gets d+,f — C gets g,a
Grace Notes and Reverse Rests
A ~c16 d4 ; grace note C before D
A c4 R8 d4 ; borrow time from C for sync
Tempo and Timing
A t150 c d e f ; set tempo to 150 BPM
A C96 c d e f ; set measure length to 96 ticks (default)
A s6 c d e f ; set shuffle offset to 6 ticks
| Command | Description |
|---|---|
tN | Set tempo in BPM (0–255) |
TN | Set tempo using native hardware timer value (0–255) |
CN | Set measure length in ticks (default 96) |
sN | Set shuffle offset in ticks (signed, alternates +/- per note) |
Platform Commands
Hardware-specific commands enclosed in apostrophes:
A 'lfo 1 5' ; set AM sensitivity 1, PM sensitivity 5
A 'lforate 3' ; set global LFO rate
A 'fm3 0011' ; enable FM3 extended mode (operators 1-2)
A 'write 0xB0 0x3A' ; direct FM register write
A 'tl1 +5' ; adjust operator 1 total level
A 'mode 1' ; PSG noise: use tone channel 3 as source
A 'pcmrate 4' ; set PCM pitch rate
A 'pcmmode 3' ; set 3-channel PCM mixing mode
A 'carry' ; macro track carry mode
| Command | Description |
|---|---|
'lfo AMS PMS' | Set per-channel AM/PM sensitivity (0–3, 0–7) |
'lforate N' | Set global LFO rate (0 = off, 1–9) |
'fm3 MASK' | FM3 extended mode (binary mask e.g. 0011, or 1111/0 to disable) |
'mode N' | PSG noise mode (0–1) |
'pcmrate N' | PCM pitch rate (1–8) |
'pcmmode N' | PCM mixing mode (2 = 2ch@17.5kHz, 3 = 3ch@13kHz) |
'write REG DATA' | Direct FM register write |
'tl1-4 [±]VAL' | Set/adjust operator total level |
'dtml1-4 VAL' | Set operator DT/MUL register |
'ksar1-4 VAL' | Set operator KS/AR register |
'amdr1-4 VAL' | Set operator AM/D1R register |
'sr1-4 VAL' | Set operator sustain rate register |
'slrr1-4 VAL' | Set operator SL/RR register |
'ssg1-4 VAL' | Set operator SSG-EG register |
'fbal VAL' | Set feedback/algorithm register |
'carry' | Macro track carry mode (don't reset on new note) |
Import and Export
Import Formats
| Format | Extensions | Description |
|---|---|---|
| MML | .mml, .txt | Direct text load |
| Furnace | .fur | Zlib-compressed tracker format. Supports Genesis 10-channel and Ext CH3 13-channel configurations. |
| DefleMask | .dmf | Zlib-compressed tracker format. Supports Genesis configurations. |
| FM Instruments | .tfi, .tyi, .y12, .opm | Individual instrument files inserted into the song. |
You can also drag and drop files onto the editor to import them.
Export Formats
| Format | Extension | Description |
|---|---|---|
| MML | .mml | Human-readable text file |
| VGM | .vgm | Video Game Music binary with GD3 metadata and loop point support |
Keyboard Shortcuts
Playback
| Shortcut | Action |
|---|---|
F5 / Ctrl+Enter | Play from start |
F8 | Stop |
Left / Right | Seek ±1 second |
Shift+Left / Shift+Right | Seek ±5 seconds |
Home | Seek to beginning |
End | Seek to end |
File
| Shortcut | Action |
|---|---|
Ctrl+N | New |
Ctrl+S | Save |
Ctrl+O | Open |
Editor
| Shortcut | Action |
|---|---|
Ctrl+Z | Undo |
Ctrl+Y | Redo |
Ctrl+C | Copy |
Ctrl+X | Cut |
Ctrl+V | Paste |
Ctrl+A | Select all |
Ctrl+F | Find |
Ctrl+H | Find and replace |
F1 / ? | Toggle shortcuts help |
Mini Notator vs. Mini Tracker
Both tools compose music for the same Mega Drive hardware, but take different approaches:
| Mini Notator | Mini Tracker | |
|---|---|---|
| Input | Text-based MML code | Grid-based pattern editor |
| Workflow | Type commands, hear changes instantly | Fill cells in a pattern grid |
| Best for | MML-experienced composers, scripted music, fine control over commands | Visual composers, tracker-style workflows |
| Instruments | Text definitions with visual editor for parameters | Full GUI editor with presets |
| Effects | Inline MML commands | Dedicated effect columns per cell |
Both share the same underlying audio engine and produce output compatible with the XGM2 sound driver.

