Releases: little-scale/smsggdj
v0.29
Small release.
Fixed
- INSTR TYPE and noise RATE now adjust both ways. Holding 2 and tapping Left/Right (or Up/Down) on the instrument TYPE row, or a noise instrument's RATE row, only ever cycled forward — both now step back with 2+Left/Down and forward with 2+Right/Up, like every other field.
Download smsggdj_v0_29.sms (Master System) or smsggdj_v0_29.gg (Game Gear), flash to a cart or open in an emulator.
v0.28
SMSGGDJ v0.28 — release notes
A focused round of WAV-instrument fixes — and the YM2413 FM Sound Unit is now confirmed on real hardware.
Changed
- WAV note length now follows HLD. A wavetable used to trail on at full level through its hidden (uneditable) decay, so HLD barely changed the length. A WAV now plays for exactly the hold then cuts — HLD
1–Eset the length,Frings. New WAV instruments default to HLD 6.
Fixed
- WAV instruments no longer mute the noise channel. A wavetable on a tone channel used to silence the noise voice for as long as it played; now noise plays alongside a wave (as it already did with samples), so you can layer a WAV lead/pad with a noise hat/snare. Pitched (rate-3) noise still falls back to a fixed rate while the wave's DAC owns tone 3.
Hardware
- The full YM2413 FM stack — melodic FM, FMDRM drums, custom presets, and the
X/Y/table commands — is now verified on a PAL SMS1 + FM Sound Unit.
Save format unchanged (SMDJ3), compatible with v0.26/v0.27 songs. SMS + Game Gear.
v0.27
SMSGGDJ v0.27 — release notes
The headline: H (hop) is now per-channel. Ending a phrase early with H used to cut every track short because the row counter was shared across the whole engine. Each track now keeps its own phrase-row position, so H ends only the phrase it's written on — tracks can run independent phrase lengths against the shared tempo/groove. (Tempo T, groove G and wait W stay global.)
Changed
- LIVE chain swaps quantize to the next bar. Queueing a chain on the SONG screen in LIVE mode now lands on the next 16-row phrase boundary, regardless of the current chain's length (no more waiting for the whole chain to finish). Tracks keep their row counters running while silent, so a chain queued onto a stopped track starts bar-aligned with the playing tracks.
- LIVE mode starts silent. Triggering from a stopped state in LIVE no longer fires the whole song — the clock starts with every track silent and only the cell you trigger plays, so you build the mix one track at a time.
- Version-stamped builds. Release ROMs are named
smsggdj_<ver>.sms/.gg, and the boot splash now shows the git build hash beneath the version, so a stale flash is obvious at a glance.
Fixed
H(hop) is per-channel (see above).
Save format unchanged (SMDJ3), fully compatible with v0.26 songs. SMS + Game Gear.
v0.26
SMSGGDJ v0.26 — release notes
The headline: YM2413 FM Sound Unit support (SMS only, optional, off by default — it sounds alongside the PSG on the built-in/FM-unit hardware and SMSPlus). A whole second timbral palette.
Added — FM (YM2413)
- FM synthesis — a new FM instrument type plays the chip's 15 ROM patches. Pick a PROG (1–15) and VOL; notes play in tune from a region F-number table. HLD sets note length (
F= ring,1–E= auto key-off). Enable via OPTIONS → FM (persisted). - FM tables, transpose, and commands — FM instruments honour TBL/TBS tables (volume column re-levels live, pitch column arps), TSP transpose, the
Xper-note volume command, and a newYcommand to set a note's FM program. - FM drums (FMDRM) — the YM2413's rhythm mode as a kit: one instrument, the note picks the drum (BD/SD/TT/TC/HH, C/C♯/D/D♯/E in any octave). Rides on spare FM voices, so it costs none of the 4 tracks.
- FM custom presets — a PRST field selects one of 8 ROM-baked custom timbres (LEAD, EPNO, SBASS, BELL, BRASS, PAD, PLUCK, SINE) loaded into the YM2413 user patch. (One custom timbre at a time — the chip has a single user patch.)
- FM preset editor (
tools/fmpatch.html) — a single-file, offline browser tool to edit the 8 presets (per-operator MUL/AR/DR/SL/RR/KSL/TL, feedback, waveforms, names) and audition them through a JS port of the emu2413 YM2413 core. Download a patched ROM. No toolchain.
Changed
- PHRASE column spacing —
NOTE I CMDwith room to breathe (SMS + Game Gear).
Fixed
- WAV instruments: HLD is editable again (the cursor was skipping the field).
FM instruments and tracks persist to SRAM like any other; the format stays SMDJ3, fully backward-compatible. SMS save/SRAM hardware-verified; FM-unit and Game Gear hardware still want a check.
v0.25
SMSGGDJ v0.25 — release notes
Added
- X command — per-note volume. Xxx sets a triggered note's volume (0–F); the per-note accent that went
missing when E became ATK/DCY. - VIDEO override in OPTIONS (SMS). VID is now editable — AUTO / PAL / NTSC — and persists in SRAM,
re-tuning note tables + sample feed live. - Note-advanced tables. TBS 0 (shown N) steps a table one row per played note (persists across notes,
H-aware) → arpeggios and polymeter against the phrase. - SMP transpose. TSP is back on sample instruments — +1/+2/+3 auditions adjacent samples in a bank.
- Ableton → song converter (tools/als2smdj.html). Drop a Live Set; the first 3 MIDI tracks' Session
clips become phrases/chains (16th grid, long clips spill, phrase de-dup, octave-fold, optional
velocity→X). Loads via savetool.html.
Changed
- Saved colour scheme applies before the boot splash (no default flash).
Fixed
- Game Gear PHRASE/CHAIN headers now show correctly, and the NOTE/I/CMD columns are spaced out.
- Persisted sync mode no longer clobbered at boot.
v0.24
SMSGGDJ v0.24
AHD instrument envelopes. Instruments now use a single attack / hold / decay volume envelope, replacing
the old ENV/SPD/LEN controls:
- VOL is the peak/hold level; ATK, HLD, DCY are all nibbles.
- ATK / DCY are ramp rates (ticks per volume step; 0 = instant). A full ramp = VOL × rate.
- HLD: 0 = no hold, 1–E = ×2 ticks, F = hold forever (sustain).
- E xy re-slopes the ramps live (ATK = x, DCY = y); K still hard-cuts.
- New instruments default to ATK 0 / HLD 1 / DCY 3. WAV uses HLD as its note length; SMP unaffected.
Sync to Ableton Link. A new companion bridge — smsggdj-link-esp32
(https://github.com/little-scale/smsggdj-link-esp32), an ESP32-C3 — joins a Link session over WiFi and
drives SYNC: IN, so the tracker follows Ableton Live's tempo and transport. Verified on real hardware
(wiring in HARDWARE.md).
SYNC: IN stays beat-aligned. While following an external clock the engine locks to a flat groove 6 (24
PPQN) and ignores the song's stored groove and the W command, so any song lines up with the master at
any tempo. Non-destructive — your groove returns when you leave SYNC: IN.
v0.23
SMSGGDJ v0.23
Saves
- 32 KB SRAM → 6 save slots (auto-detected; falls back to 3/1). Verified on a Master Everdrive X7.
- OPTIONS persist — your colour palette + sync mode survive power-off.
Look
- 8 UI palettes are now user-recolourable (numbered 0–7) via the new browser tool palette.html → patch + download a ROM, no rebuild.
Sequencing
- I command now masks by a per-phrase play count, so one phrase varies across its repeats (no cloning).
Tools
- savetool.html: 8/16/32 KB cart-size selector + a song viewer (decodes a slot to song/phrases/instruments).
Housekeeping
- ROMs renamed to smsggdj.sms / smsggdj.gg.
Binaries: smsggdj.sms (Master System) + smsggdj.gg (Game Gear).
v0.22
Added 4x sample playback mode. Cleaned up sample playback routine. Removed attract demo mode pipeline; demo is retained inside of ROM binary and can be packaged with build as included song/demo.smdj.
v0.21
Small changes and cleanups around WAVE and SMP instruments as well as changing the I command to a bitmask of n reps.
v0.2
Binaries are tested on hardware and emulation. The "demo" versions will automatically load and play a simply demo.