Skip to main content

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:

ChannelLetterChipDescription
FM1–FM6A–FYM26126 FM synthesis channels. FM6 doubles as the DAC output for sample playback.
PSG1–PSG3G–ISN764893 PSG square wave channels. Channel I may be used for FM3 special mode.
NoiseJSN764891 noise channel (white or periodic noise).
PCM2–PCM3K–LYM2612PCM channels 2-3 (software mixing via MDSDRV).
DummyM–PDummy 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"
DirectiveDescription
#titleSong title (used in VGM metadata)
#authorComposer 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=
SymbolMeaning
cbNote names (C through B)
hAlias for B
+Sharp
-Flat
=Natural (explicit)
rRest

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
LengthDuration
1Whole note
2Half note
4Quarter note
8Eighth note
16Sixteenth note
3232nd note
.Dotted (1.5x duration, stackable: .. = 1.75x)
:NFrame-based duration (N ticks)
lNSet default length to N
l:NSet default length to N ticks

Octave

A o4 c d e > c < c
CommandMeaning
oNSet octave (0–7)
>Octave up
<Octave down

Volume

A v12 c d v8 e f
CommandRangeDescription
vN0–15Coarse volume
VN0–255Fine volume
V+N / V-NRelative 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
ValueOutput
p0Mute
p1Right
p2Left
p3Center

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
CommandDescription
QNQuantize (1–8, note length is N/8 of full duration; Q0 resets to full)
qNEarly 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
CommandDescription
GNPortamento speed (0 to disable)

Detune

A K5 c d e f   ; fine-tune up by 5
CommandDescription
KNDetune (-128 to +127)

Transpose

A _12 c d e f   ; transpose up 12 semitones (one octave)
CommandDescription
_N or kNSet transpose (-128 to +127)
__NSet 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.

ParameterRangeDescription
Algorithm0–7Operator routing topology
Feedback0–7Self-modulation on operator 1
AR0–31Attack rate
DR0–31Decay rate
SR0–31Sustain rate
RR0–15Release rate
SL0–15Sustain level
TL0–127Total level (0 = loudest)
RS0–3Rate scaling
ML0–15Frequency multiplier
DT-7 to +7Detune
SSG-EG0–15SSG 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
ParameterDescription
rate=NOverride sample rate (Hz)
offset=NStart 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
CommandDescription
MNActivate pitch envelope @M (0 = disable)
ENActivate volume envelope @E (0 = disable)
PNActivate 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
CommandDescription
\=N,VSet 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
CommandDescription
tNSet tempo in BPM (0–255)
TNSet tempo using native hardware timer value (0–255)
CNSet measure length in ticks (default 96)
sNSet 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
CommandDescription
'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

FormatExtensionsDescription
MML.mml, .txtDirect text load
Furnace.furZlib-compressed tracker format. Supports Genesis 10-channel and Ext CH3 13-channel configurations.
DefleMask.dmfZlib-compressed tracker format. Supports Genesis configurations.
FM Instruments.tfi, .tyi, .y12, .opmIndividual instrument files inserted into the song.

You can also drag and drop files onto the editor to import them.

Export Formats

FormatExtensionDescription
MML.mmlHuman-readable text file
VGM.vgmVideo Game Music binary with GD3 metadata and loop point support

Keyboard Shortcuts

Playback

ShortcutAction
F5 / Ctrl+EnterPlay from start
F8Stop
Left / RightSeek ±1 second
Shift+Left / Shift+RightSeek ±5 seconds
HomeSeek to beginning
EndSeek to end

File

ShortcutAction
Ctrl+NNew
Ctrl+SSave
Ctrl+OOpen

Editor

ShortcutAction
Ctrl+ZUndo
Ctrl+YRedo
Ctrl+CCopy
Ctrl+XCut
Ctrl+VPaste
Ctrl+ASelect all
Ctrl+FFind
Ctrl+HFind 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 NotatorMini Tracker
InputText-based MML codeGrid-based pattern editor
WorkflowType commands, hear changes instantlyFill cells in a pattern grid
Best forMML-experienced composers, scripted music, fine control over commandsVisual composers, tracker-style workflows
InstrumentsText definitions with visual editor for parametersFull GUI editor with presets
EffectsInline MML commandsDedicated effect columns per cell

Both share the same underlying audio engine and produce output compatible with the XGM2 sound driver.