FMDj

Game Boy music programs inside the M-VAVE FM-1: LSDj, the tracker, and DMGo!, the drum machine.

LSDj

From a song, on the FM-1's emulator.

DMGo!

From an empty start: CH1's steps set with the white keys, CH3's and CH4's from DMGo's presets.

The FM-1 above shows each in turn. Click one to keep it there.

The emulator

FMDj is firmware for the FM-1. Inside it runs a Game Boy: Peanut-GB is its processor, memory and screen, minigb_apu its four sound channels. The Game Boy runs one program, LSDj or DMGo!, from your own ROM. The FM-1's keys, buttons and knobs are the Game Boy's buttons, and its screen shows the Game Boy's at 1.5x.

The sound is made as the program writes it, timed within the frame, not once per Game Boy frame: notes land on their beat. When the sound runs low, the FM-1 runs a second Game Boy frame at once, so it does not stutter. LSDj's wait loop is skipped without changing anything it does, and every second frame is drawn: that leaves the FM-1 time to spare.

The status bar (off at first, in the GLO menu) shows how it keeps up: FPS is the Game Boy's frames a second (59.7 is real time), CPU how much of the FM-1's time the Game Boy needs (under 100 % it keeps up), GAPS the seconds in which the sound ran dry.

Nothing of LSDj or DMGo is in the firmware or on this site. You bring your own ROM: the install page puts it into the firmware in your browser, and the firmware made with it is for your FM-1 alone.

LSDj

Little Sound Dj, by Johan Kotlinski, is a tracker for the Game Boy's four sound channels. A song is made of chains, a chain of phrases; instruments, tables, grooves, synths and waves shape the sound. Buy it at littlesounddj.com.

On the FM-1, the PRESETS knob and OCT- / OCT+ move between LSDj's screens. The install types in a demo song. Songs and kits go in and out over USB with the song page; a project's own kits get a kit bank on the FM-1.

DMGo!

Drum Machina Go!, by Audiowanderer, is a free drum machine for the Game Boy: four channels (CH1 and CH2 pulse, CH3 wave, CH4 noise) of 16 steps each, with their own sound settings, preset rhythms (PICK A PAT), 16 patterns and 8 save slots. Get it at audiowanderer.com.

On the FM-1, the 16 white keys are the steps of the channel shown: a key is B on its step (off, on, crossed), and the cursor stays where it is. A is D#5 and B is F#5. DMGo's whole save (32 KiB) goes in and out with the song page.

How to use it

  1. Get your ROM (.gb): LSDj is bought from littlesounddj.com, DMGo! is a free download from Audiowanderer.
  2. Try it first, if you like, in the simulator: the same firmware in the browser, behind the FM-1's panel, with your ROM. Its saves stay in that browser.
  3. Install: open the install page in Chrome or Edge and choose your ROM. The page checks that it runs. Connect the FM-1 by USB, directly to the computer, and press Install. Do not unplug it while writing. Your ROM is read by the page only: it is sent nowhere.
  4. Start: on the FM-1, PLAY starts the program. In LSDj, PLAY again plays the demo song.

One program is on the FM-1 at a time: to change, install the other one. The FM-1 keeps the other one's save in its flash, unused, until the new one saves. Back it up first on the song page.

Controls

Game BoyFM-1Simulator
◀ ▶SELECT knob; HOME / ARP buttons← →
▲ ▼ALGORITHM knob; SCL / SAVE buttons↑ ↓
ALSDj: the top F key (F5). DMGo: D#5X
BLSDj: the top G key (G5). DMGo: F#5Z
STARTPLAY (the first press starts the program)Enter
SELECTSEQShift
SELECT + ◀ ▶ ▲ ▼ (LSDj's screens)PRESETS knob; OCT+ / OCT-Shift + arrows
DMGo's steps 1 to 16the 16 white keysa click on them
the menuGLOM
save to flashREC held for a secondS held
volumeMASTER knob

Clockwise is RIGHT on the SELECT knob and DOWN on the ALGORITHM knob; a step is a press. Editing in LSDj: hold A and turn SELECT to change a value by one, ALGORITHM by an octave or 0x10. OCT- and OCT+ held together for 5 s enter UBOOT.

The GLO menu

GLO opens the menu over the lower half of the picture; GLO or B closes it. The program plays on. UP / DOWN choose a line, LEFT / RIGHT or A change it. The settings are kept in the FM-1's flash and come back at the next PLAY.

LineValues (first: as it starts)
SCREENDMG, POCKET, LIGHT, SGB, DARK: the screen's colours
STATUS BAROFF, ON: FPS, CPU and GAPS under the picture
DRAWEVERY 2ND, EVERY: every frame drawn is smoother and needs more CPU
ROM READFAST, PLAIN
WAIT LOOPSKIP, RUN: LSDj's wait loop skipped, or run instruction by instruction
SOUNDIN FRAME, PER FRAME: the sound timed within the frame, or made once per frame (notes up to 17 ms off their beat)

Saving

Hold REC for a second: SAVING, then SAVED and the size, under the picture. PLAY after power-on loads that save. The first time FMDj writes to the FM-1's flash (a save, kits or the menu's settings), Hortator's user samples (USR1 to USR3) are cleared: that part of the flash is FMDj's from then on.

Songs and saves in and out

The song page connects to the FM-1 by USB in Chrome. With LSDj it lists the songs, downloads and uploads projects and songs (.lsdprj, .lsdsng) and backs up or restores the whole save (.sav). With DMGo it backs up and restores DMGo's whole save (.sav).

If an install fails and the FM-1 no longer starts, recovering it needs a Transporter: FM-1-transporter. The author accepts no responsibility if your FM-1 is damaged or misbehaves because of this custom firmware. Use it at your own risk.

Roadmap

Done

Next

  1. The link port. The Game Boy's serial port in the emulator, clocked from the FM-1. The next two stand on it.
  2. Sync by MIDI clock. The FM-1's MIDI clock in and out driving the programs' own sync: LSDj's sync modes, DMGo's LINK IN / OUT and PULSE OUT. FMDj then plays in time with other gear, and leads it.
  3. mGB. A third program (trash80's MIDI synth, your own copy as with the others): the FM-1's keys and MIDI play the Game Boy's four channels as a chip synth.