ROM-1

ROM-1 manual

ROM-1 is firmware for the M-VAVE FM-1 that makes it a sixteen-part sound module playing .sf2 files. This manual covers version 0.1.

  1. What it is
  2. Getting started
  3. The panel
  4. The screen
  5. Parts, fonts and presets
  6. The pages
  7. The buttons
  8. Your sounds
  9. MIDI
  10. The engine
  11. Troubleshooting

1What it is

ROM-1 plays sounds: sixteen parts, one for each MIDI channel, each with a preset of the fonts on the FM-1. MIDI over USB or the FM-1's TRS jack plays them all at once, as a sound module in a rack would; the FM-1's own keys play the part on the screen. Each part has its volume, pan, reverb and chorus sends, and a filter and envelope to shape its preset.

The sounds are .sf2 files (the format most sample-based instruments are shared in). The FM-1 has no room for them as they are, so they are converted to fit: on the "Your sounds" page, in the browser, or with tools/rom1_load.py. ROM-1 comes with starter sounds of its own: eighteen General MIDI instruments and a drum kit.

2Getting started

  1. Install ROM-1: the web installer for the starter sounds, or the "Your sounds" page for yours. The FM-1 starts with the piano on part 1.
  2. Play the keys. OCT− and OCT+ move them an octave.
  3. Turn PRESETS: the part's next preset. Its name fills the middle of the screen.
  4. Turn ALGORITHM: the next part. Part 10 is the drum part: play the keys for its kit.
  5. Turn knob 1: the part's volume. Knobs 2–4: pan, reverb, chorus.
  6. Press ENV: the SOUND page. Knob 1 darkens or brightens the sound (cutoff), knob 3 slows its attack.
  7. Press FX: the EFFECTS page, the reverb's kind, time and level, and the chorus.
  8. Press PLAY: a phrase on the part, to hear it while you turn the knobs. PLAY again stops it.
  9. Connect the FM-1 to a computer and play it from your music software: channel 1 plays part 1, channel 2 part 2, and so on. Program change picks a part's preset.
  10. Settings save themselves a few seconds after a change, when nothing sounds; SAVE saves at once.

Hold any button for a second and a card says what it does.

3The panel

The FM-1 running ROM-1, each control labelled with what it does
The FM-1 running ROM-1, each control labelled with what it does
ControlOn its ownWith GLO held
KeysPlay the part on the screen, F3 to G5 (velocity from the SETUP page)
OCT− / OCT+The keys down, up an octave (three each way)
ALGORITHMThe part, 1–16
PRESETSThe part's preset, within its font (round)The next font's first preset (on the drum part: its kit)
SELECTThe page: PART, SOUND, EFFECTS, SETUP, BANK
Knobs 1–4The page's four values
HOMEThe PART page
ENV, LFOThe SOUND page
FXThe EFFECTS page
SEQThe BANK page
GLOShiftHeld alone a moment: the SETUP page
PLAYA phrase on the part (a beat on a kit); again: stop
ARPHold: the sustain pedal for the part, on and off
SELThe part muted, or notSolo: the others muted (again: all back)
EDITThe part's knobs back to how they startEverything back: a General MIDI reset
RECAll notes off, every part
SAVEThe settings saved now

MASTER is the volume. OCT− and OCT+ together for five seconds: the FM-1's update mode (as with every FM-1 firmware).

4The screen

Five parts playing; the PART page
Five parts playing; the PART page
The drum part
The drum part

The screen is a module's backlit LCD, in three bands.

5Parts, fonts and presets

A part plays one preset. Part n listens to MIDI channel n; part 10 is the drum part, which plays kits (the presets a font keeps in bank 128).

A font is one .sf2 file, as it went onto the FM-1: its presets, in the bank and program numbers it gave them. The fonts are numbered in the order you gave them, from 0 (the BANK page lists them).

The BANK page: the fonts, the room they use
The BANK page: the fonts, the room they use

6The pages

PageKnob 1Knob 2Knob 3Knob 4
PARTVolumePanReverb sendChorus send
SOUNDCutoffResonanceAttackRelease
EFFECTSReverb: room, hall, large hall, plate, offReverb timeReverb levelChorus level
SETUPThe keys' velocityThe part's transpose (±24)KEYS OUT: the keys to MIDI tooThe lights: off, on, keys
BANK
The SOUND page
The SOUND page
The EFFECTS page
The EFFECTS page
The SETUP page
The SETUP page

7The buttons

A button held a second: its card
A button held a second: its card

8Your sounds

What fits

ROM-1 has about 740 KB for sounds: about 468 KB inside the firmware and 276 KB in the FM-1's data area. A font's presets, their zones and parameters take a little; nearly all of it goes on the samples.

The converter keeps every sample at its best: 16-bit at its own rate. When that does not fit, it steps the biggest samples down first, one level at a time, until everything fits:

LevelA sampleIts size against 16-bit
16-bitAs it is in the file1
4-bit4-bit ADPCM at its own rate (up to 44.1 kHz)about 0.28
4-bit, 32 kHz... at 32 kHz at most
4-bit, 22 kHz... at 22.05 kHz
4-bit, 16 kHz... at 16 kHz
4-bit, 11 kHz... at 11.025 kHz
4-bit, 8 kHz... at 8 kHz: the last step

Lowering a sample's rate keeps its pitch and loops exact; it loses the highest frequencies. 4-bit ADPCM adds a little noise, mostly heard in quiet, pure sounds.

Roughly: game-console and chiptune fonts (SNES, GBA, Genesis, NES, Game Boy rips) are small and fit whole, often several at once; General MIDI sets of a few megabytes fit at reduced quality; from big fonts (tens or hundreds of megabytes) pick a few presets. Stereo presets take twice the room of mono ones.

The "Your sounds" page

  1. Open the page in Chrome or Edge and choose (or drop) one or more .sf2 files. They stay on your computer: the page reads them there, a piece at a time, and sends nothing to a server.
  2. Each file is a font, numbered in the order you chose them (Up and Down move them); all its presets are ticked. Untick what you don't need: the bar shows how full the FM-1 is and the line under it at what quality, as you go. If it says too much, untick more.
  3. Give the bank a name and press Convert (a second or so; big fonts longer).
  4. Try in the emulator opens ROM-1 in the browser with these sounds, to hear them first.
  5. Put on the FM-1, the FM-1 on USB: the page installs ROM-1 with the firmware's part of your sounds in it (about a minute), then writes the rest to the data area (about 34 KB a second) and checks it.

The firmware's part plays as soon as ROM-1 starts; the data area's part plays once it is written and checked. If writing it stops halfway, the presets whose samples are there stay silent (the BANK page says MISSING) until you press the button again. Fonts go in in order, so the first fonts are in the firmware as far as they fit.

From the command line

pip3 install mido python-rtmidi
python3 tools/rom1_load.py --package rom1-0.1.0.fwsc --name "My sounds" A.sf2 B.sf2@0:0,0:48,128:0

FONT.sf2@BANK:PROG,... takes only those presets (bank 128: kits). It converts, installs and writes the data area as the page does; --region-b writes the data area again on its own. build/gen/rom1conv -l FONT.sf2 lists a font's presets and their sizes.

Keeping your sounds

Your sounds are part of the firmware. Installing ROM-1 again, an update or the plain installer, brings the starter sounds back: to keep yours, put them on again from the page (with the new version). The data area is where some other firmwares keep their samples or songs: putting your sounds on replaces what was there.

9MIDI

Sixteen parts on channels 1–16, over USB and the TRS MIDI input alike.

MessageWhat it does
Note on, note offVelocity shapes the volume, and picks among a preset's layers
Program changeThe part's preset in the font picked by bank select
CC 0, CC 32Bank select: the font (from 0), the font's own bank
Pitch bend±2 semitones, or as RPN 0 sets
CC 1, channel pressureVibrato (as the preset's own)
CC 7, 11Volume, expression
CC 10Pan
CC 64Sustain pedal
CC 71, 74Resonance, cutoff (around the preset's own)
CC 72, 73Release, attack (around the preset's own)
CC 91, 93Reverb send, chorus send
CC 101, 100, then 6RPN 0 bend range, 1 fine tuning, 2 coarse tuning (data entry's coarse half)
CC 120, 123All sound off, all notes off
CC 121Reset controllers
General MIDI on, GS reset (SysEx)Every part back to how it starts

With KEYS OUT on (SETUP), the keys also go out over USB on the part's channel. The FM-1's TRS jack is an input only.

10The engine

11Troubleshooting

Recovering an FM-1 that won't start

After two failed starts the FM-1 comes up in a safe mode (USB only, no sound), and the web installer can reach it: install ROM-1 again, or the stock firmware. OCT− and OCT+ held at power-on calibrates the panel; held for five seconds, the update mode. If nothing answers at all, bash tools/fm1_rescue.sh on a Mac puts M-VAVE's stock firmware back over USB.