X0X

ReplicantFM1

ReplicantFM1 turns the M-VAVE FM-1 into an acid/techno groovebox: a 909, a Roland SH-101, two 303s and a breakbeat player, all playing at once, in stereo. Each part can play its own pattern, you can arrange patterns into a song, record knob moves, and give single steps a sound and a chance of their own.



1Install

Try it first: the X0X emulator runs the same code in the browser, with sound, played with the mouse, a touch screen or the keyboard.

Install: open the web installer in Chrome or Edge, connect the FM-1 with a USB data cable and press Install. Don't unplug it while it's writing; when it finishes, the FM-1 restarts into X0X.

Update: the same way. An update keeps your project: the patterns, sounds, song and settings. Installing another firmware does not: it keeps its own things in the same memory, so coming back to X0X starts with an empty project. To keep it, save it to a file first (see Back up your project).

Go back: "Back to the stock firmware", at the bottom of the same page, puts M-VAVE's firmware back (download the FM-1 file from the link there, choose it, press the button; if the FM-1 doesn't take it, use the V15 file from the second link). M-VAVE's own updater, M-UPGRADE, works too. M-UPGRADE 3.11 finds this version of X0X, not older ones (it says "A USB MIDI device is present but did not answer"): use the button for those.

Installing other firmware is at your own risk. If the FM-1 ever won't start, see Recovering an FM-1 that won't start.

Install from the command line

Download the firmware file (for example x0x-1.0.fwsc) from the releases page, get the X0X source from GitHub, install Python 3 with pip3 install mido python-rtmidi, and run:

python3 tools/fm1_install.py x0x-1.0.fwsc

(The web installer on hugelton.github.io installs Felucca, not X0X.)


2Getting started

A five-minute tour, from switching on to saving your first beat. When X0X starts, the screen shows the 909 and every part is empty.

  1. Add a kick. Press black key 1 to pick the bass drum (you'll hear it), then press white keys 1, 5, 9 and 13.
  2. Press PLAY. The kick plays on every beat.
  3. Add a clap. Press black key 7, then white keys 5 and 13. While the pattern plays, picking a drum is silent, so you don't add a stray hit.
  4. Add open hats. Press black key 9, then white keys 3, 7, 11 and 15.
  5. Write a 303 line. Turn ALGORITHM two clicks clockwise to 303A and press ARP. Press OCT+: each press writes a new line. Keep going until you like one.
  6. Shape the 303. Press EDIT. The knobs are now the 303's filter: KNOB 1 opens and closes it, KNOB 2 sets the resonance.
  7. Add the break. Turn ALGORITHM two more clicks to BREAK and press all 16 white keys, so the break plays the whole bar.
  8. Mute a part. Press HOME, then black key 5 to mute the break. Press it again to bring it back.
  9. Record a filter sweep. Turn ALGORITHM back to 303A and press EDIT. Press REC, slowly turn KNOB 1 for a bar or two, then press REC again. The sweep now plays every time the pattern comes round.
  10. Save. Press PLAY to stop, then SAVE. Everything is kept when you switch off. (X0X also saves by itself a few seconds after you stop; see section 15.)

Next: section 9 shows how to make more patterns and switch between them, and section 12 how to arrange them into a song.


3Controls

The drawing at the top of the manual names every control. In more detail:

A button that opens a screen always opens the same one; press it again for that screen's next page. SEQ, EDIT and ARP show the part you choose with ALGORITHM.

ControlWhat it does
MASTERVolume.
SELECTThe previous or next page. In a list, up and down. Hold a step and turn it for the step's chance (section 11).
PRESETSThe next pattern: on a part's screen for that part only, on HOME for all five.
ALGORITHMThe part: 909, 101, 303A, 303B or BREAK. In a list, it changes the value.
OCT-, OCT+The steps, 16 at a time (1–16 … 49–64). On HOME and SONG, patterns 1–16 or 17–32. On synth keyboards, the octave. On TB-3PO, mutate the line or write a new one.
KNOB 1–4The four values at the bottom of the screen. Each click is one step, however quickly you turn a few; spin and they speed up. Hold ENV and turn one to put it back to its default.
FXThe reverb and the delay.
SELEverything on this screen as a list, including the settings on no page (see Lists). In a question, yes.
ENVHold while pressing keys: an accent. Hold and turn a knob: the knob goes back to its default.
LFOThe mixer and the master. Hold while pressing keys: a slide.
EDITThe selected part's sound. The keys still write its steps.
GLOThe settings. Press again to close.
HOMEThe pattern: all five parts, which pattern they play, mutes. Again: the song, and again back. In a list, back; in a question, no.
SAVESave everything (while playing: when you stop). Hold it to copy the pattern; then a white key pastes it.
ARPTB-3PO, the algorithmic line generator (on SH-101 and 303s).
SEQThe selected part's steps, with its LENGTH and RATE (on synths also piano roll, DIRECTION and TRANSPOSE).
PLAYStart and stop.
RECRecord on and off: drum hits, synth notes, knob moves, and on the SONG screen the song. On synths the keys become a keyboard while it's on.
White keysSteps. On HOME, patterns. On synths, white piano keys when playing/recording.
Black keysDrum tracks, or the break's slices. On HOME they mute parts; on the mixer they pick a channel; on synths, black piano keys when playing/recording.

Hold HOME for these: + REC undoes, + PLAY redoes, + SELECT sets the tempo, + SEQ tapped in time taps the tempo, + a white key picks a pattern from any screen, and + a black key mutes a drum track (on the 909 screen) or a channel (on the mixer).

The keys: white keys 1 to 16 are steps 1 to 16 (on HOME, patterns). Black keys 1 to 11 are the 909's tracks BD, SD, LT, MT, HT, RS, CP, CH, OH, CR and RD (the break's slices on BREAK, part mutes on HOME, notes on synths).
What the keys do

(The SEL button is labelled SCL in Felucca.)

Lists

SEL turns the screen you're on into a list of everything on it: every knob from its pages, grouped (on the 909, for example, BD: THIS TRACK and 909: ALL TRACKS), and then MORE, the settings that are on no page. MORE is where the less used settings live, such as a drum track's DRIVE and DIST or the compressor's details.

In a list, SELECT moves, ALGORITHM changes the highlighted value, and SEL runs a row with a return arrow (an action). HOME goes back. X0X always asks before doing anything that would lose notes: SEL for yes, HOME for no.

The MIX screen as a list: LEVEL -5 dB (highlighted), PAN C, REV 0%, DLY 0%, 909 SD LEVEL 58, 909 SD PAN C. At the bottom: SELECT: MOVE, ALGO: CHANGE, HOME: BACK.
A list
A question in a box over the screen: FACTORY RESET? SOUND, PATTERNS, SONG, with SEL YES and HOME NO.
A question

Not sure what a button does? Hold it for a second on its own: a card says what it does on the screen you're on, with its combinations. Let go and nothing happens.

Undo

Hold HOME and press REC to take back your last change; the screen says what it undid, for example UNDO 909 P1. HOME + PLAY redoes it. You can go back up to 32 steps (fewer after very big changes). A step is whatever you did before pausing for a moment: a few steps tapped in a row, one turn of a knob, or a whole recording pass. Undo covers the sounds, patterns, song and knob motion, even CLEAR PATTERN and FACTORY RESET, but not the tempo or the settings. The history is cleared when you switch off.

What the key lights show

The key lights have two levels: bright for what is on or chosen, dim for what is there to choose.

ScreenBrightDim
HOMEthe pattern playing (a cued one blinks); the parts playingpatterns with notes; muted parts
SONGthe bar's pattern; the bar's partspatterns with notes; the bar's muted parts
909the track's hits; the trackthe other tracks with hits
SH-101 / 303notesties
Synths with REC onthe keys you holdthe Cs, to find your place
BREAKthe steps it playsthe slice pads 1–8
Mixer (PARTS, 909 MIX)the channel the knobs set (blinking while muted)the other channels

4The screen

The 909 screen, pattern P1 at 125 BPM, playing: a grid of 16 steps for the tracks BD to RD and the accents (AC), SD selected. The SD knobs: TUNE 64, TONE 68, SNAPPY 64, DECAY 41.
The 909

The top line shows, from left to right:

When a button does something, the top line says what for a second, for example SAVED or P1 PASTED TO P5.

The knobs sit under a tag that says whose they are: the selected track (BD), the whole machine (909 KIT), a 303's sound (303A TONE), the pattern (P3 SEQUENCE), the mixer (PARTS: 303A, 909 MIX: CP), a held 303 step on SEQ (303A STEP 5), or a p-lock (BD P-LOCK STEP 5). When a section has more than one page the tag counts them (BD (1/2)), and the dots at the end of the line are all the screen's pages, the current one lit. Settings with only a few choices show a row of small squares instead of a ring.

When you turn a knob, its value shows in large type for a second, with whose it is: a track's (BD TUNE) or a pattern's (P3 LENGTH). Settings that belong to the pattern change when the pattern does, and are copied with it; the sound stays the same whatever pattern plays.

The footer at the very bottom says what the keys do on this screen (BLACK: TRACK, WHITE: STEP). Until you first press a button it says HOLD ANY BUTTON: WHAT IT DOES.

The 909 screen while KNOB1 turns: a box over the grid says SD TUNE 70, and the TUNE knob below is highlighted at 70.
Turning a knob

5TR-909

The TR-909 drum machine has eleven tracks, one on each black key:

Key909 VoiceTypeSettings
1Bass drum (BD)Modelled analogTUNE, LEVEL, ATTACK, DECAY (page 2: TUNE DECAY)
2Snare drum (SD)Modelled analogTUNE, LEVEL, TONE, SNAPPY
3Low tom (LT)Modelled analogTUNE, LEVEL, DECAY
4Mid tom (MT)Modelled analogTUNE, LEVEL, DECAY
5High tom (HT)Modelled analogTUNE, LEVEL, DECAY
6Rim shot (RS)Modelled analogLEVEL
7Hand clap (CP)Modelled analogLEVEL, TAIL (decay)
8Closed hat (CH)6-bit SampledLEVEL, DECAY
9Open hat (OH)6-bit SampledLEVEL, DECAY
10Crash (CR)6-bit SampledLEVEL, TUNE
11Ride (RD)6-bit SampledLEVEL, TUNE

The 909's hats and cymbals are 6-bit samples (ER-99), as on the original machine; every other voice is fully synthesized analog emulation. The closed hat cuts off the open hat.

Writing a beat. Press a black key to pick a track; while the pattern is stopped you hear it too. (While it plays, picking is silent so you don't add a stray hit; GLO > KEY SOUND = ALWAYS changes that.) Then press white keys: an empty step turns on, and a tap on a step that's on turns it off. Hold ENV while pressing white keys to place accents instead; an accent makes every drum on that step louder.

A pattern can be up to 64 steps long. The white keys show 16 at a time: OCT+ moves to the next 16 and OCT- back, and the top line shows which 16 you're on.

Muting a track: hold HOME and press its black key; again to bring it back. A muted track's row turns grey. Track mutes aren't saved, and muting the whole part on HOME leaves them as they are.

The pages. EDIT shows the selected track's sound (one page, two for the 909's kick), then KIT with ACCENT, how much louder accented steps are. A track's DRIVE and DIST are in SEL's list, under MORE. SEQ has the machine's LENGTH and RATE. SWING is on HOME, because it swings every part.

Each track's level, pan and reverb and delay sends are on the mixer: press LFO and go to 909 MIX, which shows all eleven levels at once. The black keys pick a track and the knobs are its LEVEL, PAN, REV and DLY.


6Roland SH-101

The Roland SH-101 is a classic monophonic analog synthesizer modelled with a CEM3340 VCO, an IR3109 4-pole ZDF low-pass resonant filter, an ADSR envelope, multi-waveform LFO, VCA ENV/GATE switch, and portamento glide.

The Roland SH-101 VCO screen: OCTAVE 8', SAW 100, PULSE 50, SUB 70.
Roland SH-101 VCO

Synthesis Engine Pages

Sequencer & Live Keyboard


7303A and 303B

There are two identical 303s. Each has its own sound and its own line.

The 303A screen: the pattern's notes on a piano roll from A1 to A3, with rows for accents (AC) and slides (SL), the scale A MIN and SEED B5CD. The 303A TONE knobs: CUTOFF 48, RESO 100, ENVMOD 85, DECAY 64.
303A

Steps. Press a white key to turn that step on; tap it again to turn it off. To edit a step, press SEQ, hold the step's key and turn the knobs: KNOB 1 sets the note, KNOB 2 the gate (REST, NOTE or TIE), KNOB 3 the accent and KNOB 4 the slide. OCT- and OCT+ move the held note an octave. An empty step turns on as soon as you press it, so you can press, hold and set its note in one go. A slide glides from this step's note into the next one. (Holding a step on EDIT gives it a sound of its own instead: see P-locks in section 11.)

A tie holds the note before it through the step, so it doesn't play again. On the screen a tied note joins the note it holds in one long bar. Turning KNOB 1 on a tie makes it a note of its own.

Keyboard. Press REC and all 27 keys become a keyboard (KEYS shows on the top line). The notes you play are written: step by step while the pattern is stopped, live while it plays. OCT- and OCT+ change the octave. Play a key while still holding another and the 303 slides between them. Press REC again to go back to steps.

Free play. To play the 303 without writing anything, press SEQ, turn SELECT to the KEYS page and set FREE PLAY to ON. The keys then play the 303 on every 303 screen, stopped or playing, so you can try lines and turn EDIT's knobs as you go; the top line says FREE PLAY. Nothing is written until you press REC, which records as above. Set FREE PLAY back to OFF for the steps. Each 303 has its own, and both are off at power-on.

The pages. EDIT has TONE (CUTOFF, RESO, ENVMOD, DECAY) and VOICE (ACCENT, WAVE, saw or square, DRIVE, SLIDE time); TUNE, VOLUME, DRIVE TYPE (off, soft or RAT) and ACCENT DECAY are in SEL's list. SEQ has the line's LENGTH (1–64 steps), RATE, DIRECTION (forward, reverse, ping-pong or random) and TRANSPOSE. Each 303's level, pan and sends are on the mixer (LFO).


8TB-3PO

TB-3PO writes 303 lines for you. Pick a 303 with ALGORITHM and press ARP.

303A with TB-3PO: the generated line on the piano roll, A MIN, SEED B5CD. The P1 GENERATE knobs: DENS 70%, ACCENT 40%, SLIDE 25%, OCTS 2. At the bottom: OCT+: NEW LINE, OCT-: MUTATE.
TB-3PO

Press OCT+ to write a completely new line, or OCT- to mutate the current one (about a quarter of its steps change).

TB-3PO has two pages (press ARP again, or turn SELECT):

These knobs don't change the line you're hearing. They set up the next OCT+ or OCT-, so your line stays exactly as it is, hand edits included, until you press one. When the knobs no longer match the line, the screen shows NEW LINE with a star. The same settings and seed always give the same line, the same one Schwung's TB-3PO module writes.

To edit the line by hand, press SEQ; to shape its sound, EDIT.


9Break

The break is a drum loop cut into eight slices, which X0X rearranges as it plays.

The BREAK screen: the loop's waveform cut into 8 slices, the one playing highlighted, all 8 ON; A 909 GR, B 909 FL, PLAYING A. The P1 LOOPS knobs: LOOP A 909 GR, LOOP B 909 FL, B CHANCE 0%, PITCH 0.
The break, slice 5 playing

Steps. The white keys are the bar's 16 steps: press one to let the break play there, tap it again to stop it.

Playing slices. Hold black keys 1–8 to play those slices yourself; let go and the generator takes over again. Hold key 9 to play backwards, key 10 for half speed, key 11 to stutter.

A step's own slice. Hold a white key and press black key 1–8: that step now always plays that slice of loop A, from its start, and its box shows the slice's number. Press the same black key again (holding the step) to give it back to the generator. This way you can fix the kick and snare where you want them and let the generator play with the rest.

The generator. SEQ has its two pages, GROOVE and RETRIG:

In SEL's list: PHRASE, the length of a phrase (2, 4, 8 or 16 bars, or off), and A LENGTH and B LENGTH, how often a new slice is chosen (every 1/4 bar to every 8 bars).

The loops. EDIT has LOOP A, LOOP B, B CHANCE (the chance of switching to loop B in the last bar of a phrase; with PHRASE off, in any bar) and PITCH. Press EDIT again for FILTER and LEVEL. FILTER is one knob: OFF in the middle, turn it left for a low-pass, right for a high-pass. A high-pass leaves a loop's hats and lets the 909 play the kick and snare. Loops follow the tempo by playing faster or slower, so their pitch follows it too, as on a sampler; PITCH shifts it on top. X0X comes with two loops of its own, 909 GR and 909 FL, played by its 909; loops you upload come after them.

All of these, the steps, slices and loops, are saved with the pattern. The break's level, pan and sends are on the mixer's PARTS page (LFO, black key 5).

Your own breaks

Load your own loops with the break loops page, in Chrome or Edge with the FM-1 connected. They appear after X0X's own loops as BR1, BR2 and so on. There's room for about 21 seconds in all: around nine one-bar loops.

From the command line

With the FM-1 connected, run:

python3 tools/upload_breaks.py --bars amen.wav think.wav funky.wav ...

--bars keeps one bar of each file; without it, each file is sent whole. This replaces all your loops. --dry-run FOLDER shows what would fit without the FM-1. If you have schwung-breakbeat next to X0X, --bbgen sends BB Gen's classic breaks. To build loops into the firmware itself, see BUILDING.md.


10Patterns

HOME, pattern P1 at 125 BPM: a row of pattern slots, then a line of steps for each part: 909, 101, 303A, 303B and BRK. The PERFORM knobs: TEMPO 125 bpm, SWING 50%, FILTER OFF, PUMP 4.0 dB.
HOME

There are 32 patterns. A pattern holds each part's steps, length and rate, the break's settings, the swing, and any knob motion, p-locks and probabilities. Sounds, effects and master settings are not part of a pattern and don't change when the pattern does.

Each part plays its own pattern, so the 303s can play pattern 3 while the drums play pattern 7.

HOME shows patterns 1–16 as boxes, one per white key; OCT+ shows 17–32 (P17-32 appears under the boxes) and OCT- goes back. Every fourth box is numbered. In each box, a line for each part with notes in that pattern: bright where that part is playing it now, dim otherwise.

Choosing patterns

While playing, the new pattern starts when the current bar ends; stopped, it takes over at once. A part that changes pattern starts again from step 1; the others carry on.

Copy and paste. Hold SAVE: the top line says P1 COPIED. Press a white key to paste onto that pattern (P1 PASTED TO P2): all five parts, as they're playing now. If the pattern you paste onto has notes, X0X asks first. While holding SAVE, OCT- and OCT+ switch between patterns 1–16 and 17–32.

Clearing. Hold SAVE and press REC to clear the selected part in its pattern. GLO > CLEAR PATTERN clears all five.

Muting. On HOME, black keys 1–5 mute and unmute the parts. Mutes aren't saved, except inside a song.

Lengths and swing. Parts can have different lengths, so they drift against each other. The 909's length sets the length of a bar, and the 909's pattern holds the swing, which applies to every part. Swing delays every second 16th note: 50% is straight, 75% the most.

HOME's knobs are for playing live: TEMPO, SWING, and the master's FILTER and PUMP.

Tap tempo. Hold HOME and tap SEQ in time with the beat, from any screen, playing or stopped. From the third tap in a row it sets the tempo; keep tapping and it follows the last four. One or two taps change nothing, so a stray press does no harm. A pause of two seconds starts over. While playing, from the third tap on, each tap also puts the beat on your tap: every part jumps to the nearest quarter note and plays on from there. A tap a little late goes back to the beat just passed; a tap a little early skips ahead to the coming one, and just before the bar line the bar ends on your tap, bringing in the next pattern or the song's next bar. The TEMPO readout shows the result. While X0X follows an external MIDI clock, the clock sets the tempo and tapping does nothing.


11Recording

Press REC to turn recording on, and again to turn it off.


12Knob motion, p-locks and probability

All three give steps values of their own, and all three are saved with the pattern.

Knob motion

The 303A screen playing a recorded cutoff sweep: a dot beside CUTOFF marks its motion, and it reads 18; RESO 100, ENVMOD 85, DECAY 64.
A recorded cutoff sweep playing

Turn on REC, press PLAY and turn any sound knob. X0X records the knob on the steps where you moved it, fills in short pauses so a slow sweep has no gaps, and on playback glides from step to step.

P-locks

A step can have a sound of its own: a higher tune on one kick, an open filter on one 303 note, the break pitched up for one step.

Probability

Hold a step (on SEQ or EDIT) and turn SELECT to set the chance it plays, from 100% down to 5% in steps of 5; the top line shows it (STEP 5: 50%). The dice are rolled every time the step comes round, so 50% plays about every other pass.

Keep turning past 5% for cycles: 1:2, 2:2, 1:3 and so on up to 8:8. A step at 1:4 plays on the first of every four times round its part's pattern, 2:4 on the second; nothing random about it. Each part counts its own passes, from 1 again whenever you press PLAY or it changes pattern.

Good to know


13Song

The SONG screen, song S3 at 120 BPM: bar 1 plays P1 on all five parts, bar 2 P2 (303B P5), bar 3 P1 with the 101 silent, and bar 4 is END; bar 3 is playing. The BAR knobs: BAR 1, 303B P1, BREAK P1, REPEAT x1.
SONG

A song is a list of up to 192 bars. Each bar says which pattern each part plays and which parts are muted. To open the song, press HOME twice (HOME again comes back to the pattern).

Press SEL on the SONG screen for LENGTH, INSERT BAR, DELETE BAR and CLEAR SONG.


14Effects

The FX screen: REVERB and DELAY sends for 909, 101, 303A, 303B and BRK as bars; DELAY 1/8. TAPE, FEEDBACK 40%, REVERB 57. The REVERB knobs: DECAY 73, TONE 57.
FX

There is one reverb and one delay, and every part can send to both: each part's sends are on the mixer's PARTS page (LFO), each drum track's on 909 MIX. FX shows how much every part sends, and has two pages:

In SEL's list, under MORE: each effect's low cut and return level, and PING WIDTH, which bounces the echoes between left and right: 0 is off, 127 puts them hard left and right, and between, closer together. A new project starts at 20, a narrow bounce.


15Mix and master

The MIX screen with the compressor pumping: the output's waveform, a gain reduction meter (GR), COMP -14dB, PUMP 11.5dB, AUDIO LOAD 0%. The MASTER knobs: DRIVE 41, COMP 78%, PUMP 11.5 dB, FILTER OFF.
MIX, with the compressor pumping

Press LFO to open the mixer; press it again (or turn SELECT) for its pages. The red bar on the right is the compressor's gain reduction.

On PARTS and 909 MIX, hold HOME and press a black key to mute or unmute that channel (a part on PARTS, a track on the drum page). The key lights show it: the channel the knobs set is bright (blinking while muted), the others dim, muted ones dark.

Turning ALGORITHM on the mixer goes to that part's page: 909 MIX for the drum machine, PARTS (with the part picked) for the synths and the break.

MASTERWhat it does
DRIVESaturates the whole mix (the 909's drive stage).
COMPOne knob for the compressor: 0 is off; turning up lowers its threshold, raises its ratio and adds makeup gain together. Three quarters is the factory's hard squeeze (4:1 from -24 dB, +16 dB).
PUMPLowers the whole mix each time the kick plays, by up to 24 dB, and lets it swell back up: the big-beat breathing. Accented kicks pump harder. It works even with COMP at 0, and even when the kick is muted, so a silent kick can drive it. Driven by the 909 kick drum.
FILTEROne knob: in the middle it's off; to the left a low-pass closes down, to the right a high-pass opens up.

FILTER and PUMP are also on HOME's PERFORM page, for playing live.

The factory mix is set up for big beat: the break up front with the 909 kick under it, the 303s through RAT distortion into a tape delay, reverb on the clap. For a clean mix, set COMP and PUMP to 0.

The master in detail

In SEL's list, under MORE: the compressor's THRESH (-48 to 0 dB), RATIO (1:1 to 20:1 and INF), ATTACK (0.1 to 100 ms), RELEASE (10 to 1500 ms), MAKEUP (0 to 24 dB) and MIX (dry to fully compressed, for parallel compression); the filter's RESO; LIMIT, which prevents clipping (leave it on); and the drive stage's DIST type, its GLUE compressor and VOLUME. Turning COMP or FILTER sets their details again.


16Settings and saving

The GLOBAL list: CLOCK OUT ON (highlighted), NOTES OUT OFF, 909 MIDI CH 10, 101 MIDI CH 1, 303A MIDI CH 2, 303B MIDI CH 3.
GLOBAL

Press GLO for these settings, in five sections (MIDI, AUDIO, KEYS AND SCREEN, PROJECT, SYSTEM):

SettingWhat it does
CLOCK OUTSends MIDI clock and start/stop messages.
NOTES OUTSends the patterns out as MIDI notes.
909 … BREAK MIDI CHEach part's MIDI channel, for notes and CCs in and out: 1–16, or OFF to ignore incoming notes and CCs for that part (and send none).
CC OUTOFF (the default): X0X sends no CCs. KNOBS: the knobs you turn go out as CCs. ALL: what knob motion and p-locks play goes out too. For details, see section 17.
MIX MIDI CHThe channel for the mixer's levels, the effects and the master: 1 (the default) to 16, or OFF.
OUTPUTNORMAL, or LOUD: 6 dB more at the headphones and line out (and USB audio), for headphones that need it. The master's LIMIT (on by default) keeps it from clipping.
USB AUDIOFOLLOWS KNOB (the default): USB audio is as loud as the FM-1, MASTER knob and all. FULL: USB audio stays at full level whatever the knob says, so you can record over the cable with the speaker turned down.
LIGHTSON: the key lights show the steps, and the unlit buttons glow dimly so they can be read. KEYS: the key lights only. OFF: neither.
KEY SOUNDSTOPPED (the default): picking a drum or editing a synth step is silent while the pattern plays, unless REC is on. ALWAYS: you always hear it. Synth keyboards always play either way.
THEMEThe screen colour: green, amber, cyan, red or mono.
SAVE PROJECTSaves everything.
AUTOSAVEON (the default): while the pattern is stopped, changes are saved by themselves once nothing has been touched for four seconds. OFF: only SAVE saves.
CLEAR PATTERNClears all five parts of the current pattern.
FACTORY RESETGoes back to the factory sounds and empty patterns, with no song and no knob motion. Your saved project is kept until you save over it.
PERFORMANCEOpens the performance page (below).
2ND COREON (the default): ReplicantFM1 uses both of the FM-1's processor cores. OFF: one core. Takes effect the next time you switch on. ReplicantFM1 sets it to OFF by itself if it crashes with two cores (see the performance page, below).
ABOUT X0XShows the version, how full the memory for patterns is (MEM), and the audio load.
BATTERYThe battery's charge: FULL, 2/3, 1/3 or EMPTY; USB POWER while a computer powers the FM-1. Read only.

Saving

SAVE saves the sounds, all 32 patterns, the song, the knob motion, the tempo and the settings. A small grey dot at the top right of the screen means there are unsaved changes, and anything unsaved is lost when you switch off.

With AUTOSAVE on (the default) you'll rarely need SAVE: whenever the pattern is stopped and nothing has been touched for four seconds, ReplicantFM1 saves and says AUTOSAVED.

ReplicantFM1 never saves while playing. Saving pauses the sound for a moment (the FM-1 plays from the same memory it saves to), so a SAVE pressed while playing says SAVES WHEN STOPPED and saves when you stop.

How much fits

ReplicantFM1 packs the patterns, the song and the knob motion to fit them in the FM-1's memory; empty steps take almost no room, so a typical project uses a small part of it (GLO > ABOUT X0X shows how much, as MEM). If a project ever grows too big to fit, the screen says MEMORY FULL: NOT SAVED and keeps what was saved before; clearing patterns you don't need makes room.

Performance: how hard the FM-1 is working

GLO > PERFORMANCE shows how hard the FM-1 is working, updated every second: the audio load and its peak, any dropouts, and how much of the processor each part is using.

For a proper measurement, press SEL and choose RUN PERF TEST. ReplicantFM1 plays three patterns of its own for about 15 seconds, from a simple loop up to everything as busy as it gets, then puts your project back exactly as it was and shows the results. HOME or PLAY stops the test early.

ReplicantFM1 uses both of the FM-1's processor cores: the Roland SH-101 and the break run on Core 2, while the 909, dual 303s, Master bus, FX and mixer run on Core 1. This balances CPU load under 70% across both cores even during peak dense playback.

The top right of the performance page says 2 CORES. On some FM-1s the second core reads its work wrongly; ReplicantFM1 notices the first time and carries on with one core, and the page says 1 CORE: BAD READS in red. Everything still works, but the busiest patterns may drop out.

If ReplicantFM1 crashes while both cores are running, it restarts with one core and sets GLO > 2ND CORE to OFF, so it doesn't crash again; the page then says 1 CORE (GLO). To try two cores again, set 2ND CORE to ON and switch the FM-1 off and on. After a crash while starting, ReplicantFM1 also starts on one core, once.

Under the cores, the page shows the voltages ReplicantFM1 runs the processor's two supplies at: 1.38 / 1.60V, the same as M-VAVE's own firmware. The FM-1's boot loader starts them lower, at 1.26 / 1.40V; at those voltages some FM-1s misread their memory when both cores are busy.

When the FM-1 gets close to its limit, ReplicantFM1 lightens the load by itself instead of dropping out: the 303s stop oversampling (bright, resonant notes get a touch grittier). While this is happening, GUARD lights up in amber next to the audio load; it switches off again after three quiet seconds. The performance page counts how often it has kicked in (GUARD 3x).

If X0X drops out on one of your patterns, a photo of the test results and of the pattern is the most useful thing you can send.

If X0X crashes, it shows a red screen for a few seconds and starts again. Until you switch the FM-1 off, the performance page keeps that crash's numbers in red at the bottom (CRASH PC … RA …, EMU … DBG …). A photo of them is the most useful thing to send with a crash report.

KNOB 1 turns on some extra counters (STALLS). They're experimental: if the FM-1 acts up with them on, switch it off and on again.

Back up your project

X0X keeps one project. To keep more, or to keep yours while you try other firmware, save it to a file on your computer and load it back later. Open the backup page in Chrome or Edge, with the FM-1 connected by USB.

Back up: press Back up. The project goes to an .x0b file in your downloads: the sounds, all 32 patterns, the song, the knob motion, the tempo and the settings. X0X can keep playing, but changes it hasn't saved yet go in the file only when it's stopped.

Restore: stop X0X, choose a backup and press Restore. X0X checks the whole file before anything changes. Then its screen asks RESTORE FROM USB? Press SEL to restore, or HOME to keep what you have. The backup replaces the project on the FM-1, and X0X loads it at once.

A backup doesn't hold your break loops. Keep their WAV files, and load them again on the break loops page. A backup made with an earlier version of X0X restores in a later one.

From the command line

With the FM-1 connected, run:

python3 tools/x0x_backup.py backup my-song.x0b
python3 tools/x0x_backup.py restore my-song.x0b

python3 tools/x0x_backup.py info my-song.x0b shows what a backup holds. The files are the same as the backup page's.


17MIDI and USB audio

When connected over USB, the FM-1 shows up as a MIDI device called "X0X FM-1".

X0X takes MIDI from USB and from the FM-1's TRS MIDI IN jack, both the same way. Each part listens on its own channel; these are the defaults:

InputWhat it plays
Channel 10The 909, with General MIDI drum notes: 36 kick, 38 snare, 41, 45 and 50 toms, 37 rim, 39 clap, 42 closed hat, 46 open hat, 49 crash, 51 ride.
Channel 1The Roland SH-101. Overlapping notes slide (legato glide), and a velocity of 100 or more plays an accent.
Channel 2303A. Overlapping notes slide, and a velocity of 100 or more plays an accent.
Channel 3303B, in the same way.
Channel 4Notes 36–43 play break slices 1–8.
ClockFollows incoming MIDI clock automatically, and returns to internal tempo half a second after clock stops. Start, Stop and Continue start and stop the patterns.

GLO sets each part's channel (909 MIDI CH and so on), or OFF to ignore its notes, for example when another box sends you its clock with notes on the same channels. ReplicantFM1 can also send MIDI: clock and start/stop when CLOCK OUT is on, and the patterns as notes on each part's channel when NOTES OUT is on.

While following an external clock, the tempo on the top line is averaged over about a second, so it doesn't flicker with every clock.

MIDI CC

A controller can turn knobs with MIDI CCs. Each part takes its CCs on its own channel, the same one as its notes, and MIX MIDI CH takes the mixer, the effects and the master. A CC sets its knob just as turning it would, whatever page is showing. While REC is on during playback, it records knob motion. Otherwise it sets the knob, and if the knob has motion in the pattern, the CC wins over it for one pass. A sweep of CCs is one undo step. The map is fixed: there is no MIDI learn.

On the Roland SH-101 channel (Channel 1 by default):

CCParameterCCParameter
74CUTOFF85OCTAVE (16', 8', 4', 2')
71RESONANCE86PWM SOURCE (MAN, LFO, ENV)
77ENV MOD87PULSE WIDTH (PW)
90KEYBOARD TRACK (KYBD)88PWM AMOUNT
14VCF MOD (LFO)15VCA MODE (ENV, GATE)
81SAW LEVEL76LFO RATE
80PULSE LEVEL28LFO WAVE (TRI, SQR, RND, NOI)
82SUB LEVEL5GLIDE / PORTAMENTO TIME
84SUB TYPE65GLIDE MODE (AUTO, ON, OFF)
83NOISE LEVEL29ACCENT
73ATTACK78DRIVE
75DECAY31VOLUME
79SUSTAIN30TUNE
72RELEASE10PAN
7LEVEL91, 93REVERB SEND, DELAY SEND

On the other parts' channels:

CC303A and 303B (CH 2, 3)909 (CH 10)Break (CH 4)
7, 10, 91, 93Part level, pan, reverb send and delay sendThe sameThe same
16–19CUTOFF, RESO, ENVMOD, DECAY16 FILTER, 17 LEVEL, 18 PITCH
20–23ACCENT, WAVE, DRIVE, SLIDE20–30: TUNE of tracks 1–11
24–27TUNE, VOLUME, DRVTYP, ACCDEC
74, 71, 75CUTOFF, RESO, DECAY aliases74: FILTER alias
70–80DECAY of tracks 1–11
102–112LEVEL of tracks 1–11
12Kit ACCENT

The drum tracks count in screen order: BD, SD, LT, MT, HT, RS, CP, CH, OH, CR, RD. The 909 clap's DECAY is its TAIL, and the 909 rimshot has no DECAY, so CC 75 does nothing on channel 10.

On MIX MIDI CH:

CCWhat it sets
16–19The MASTER page: DRIVE, COMP, PUMP, FILTER (64 is off)
74, 71The master's FILTER again, and its RESO
20, 21The reverb's DECAY and TONE
22–25The delay's TIME, FEEDBACK, TONE and TAPE
102–106The level of the 909, 101, 303A, 303B and break

A switch such as WAVE changes at 64. CC 120 (all sound off) and CC 123 (all notes off) on a part's channel let go of the notes that MIDI holds there.

X0X sends CCs when CC OUT (GLO) is on. KNOBS sends a knob's CC each time you change it by hand, with a knob, a row in a SEL list, or ENV and a knob. A CC that came in is never sent back, so a DAW that echoes MIDI doesn't loop. A part's level goes out twice, as CC 7 on the part's channel and as 102–106 on MIX MIDI CH. ALL also sends what knob motion and p-locks play, for driving other synths with X0X's lanes. The lanes send at most 4 CCs every 6 ms, and only while there is room left for the notes, so a busy pattern never loses a note to its CCs. In ALL, a CC that comes back with the value a lane just sent is ignored.

When a project loads, and after an undo or a redo, X0X sends every knob on the map once, so a controller with LED rings shows the values as they are.

USB audio

Over the same USB cable, the FM-1 also shows up on a computer as an audio input called "X0X FM-1": two channels at 44.1 kHz, with no driver to install. It carries what the headphones hear, after VOLUME, in stereo.

Record it in any audio app, or monitor it live through one. The FM-1 keeps its USB audio in step with the computer's clock, so live monitoring doesn't drift or drop out. The first moment after an app opens the input can click while the FM-1 settles.

Screen reader

X0X can tell a screen reader what its screen shows. Connect the FM-1 by USB, open the FM-1 Screen Reader in Chrome or Edge, and click Connect. It reads out the page you're on and its knobs, a knob's value as you turn it, list rows with their place ("clock out on, 1 of 22"), help cards, questions, steps you put on or off, play and stop, and every message, in words: "bass drum tune 37", not "BD TUNE 37".

The page can speak with its own voice, at the speed and pitch you choose, or pass everything to your own screen reader (VoiceOver, NVDA, JAWS, TalkBack). Press W to hear the whole screen again. The FM-1 says nothing until the page connects, so a DAW on the same cable never sees it.


18Troubleshooting

Update mode: hold OCT- and OCT+ together for five seconds. A countdown appears; let go before it ends to cancel.

Calibration: if a button or knob does the wrong thing, hold OCT- and OCT+ while you switch the FM-1 on. The screen then asks you to press each button and turn each knob in turn.

After a crash: X0X shows a red CRASH screen and restarts by itself a few seconds later. The next start shows RESTARTED AFTER A CRASH and an address (PC ...) for a moment. If you report the problem, include that address and what you were doing.

Safe mode: if X0X crashes twice in a row while starting, it starts in SAFE MODE instead. There's no sound, but USB works, so the web installer can reach it: reinstall X0X, or put the stock firmware back from the same page. Press PLAY to try starting X0X normally again. If even safe mode fails twice, the FM-1 drops into the chip's own update mode, and only the rescue below can reach it.

Stuck on the start screen after changing BRIGHTNESS (0.9-beta and earlier)

Versions up to 0.9-beta had a brightness setting that could freeze the FM-1, and because the setting was saved, it stayed frozen at every start, even after reinstalling. Install 0.10-beta or later from the web installer: the setting is gone, the saved value is ignored, and the FM-1 starts normally.

Recovering an FM-1 that won't start

Since 0.5-beta, an FM-1 that keeps crashing starts in safe mode (above), where the web installer can fix it. Older versions instead dropped into the chip's own update mode after two crashes (0.2- beta did this: the X0X screen, a red X0X CRASH screen, then a blank screen). An install cut short (the cable pulled, the computer asleep) can leave it there too: a blank screen, and only the red charging light. Neither the web installer nor M-VAVE's updater can see an FM-1 in that state, but a script can put M-VAVE's firmware back, on a Mac, with the USB cable you already have:

Open Terminal, paste this line and press Return:

bash -c "$(curl -fsSL https://raw.githubusercontent.com/charlesvestal/fm1-x0x/main/tools/fm1_rescue.sh)"
  1. If a window asks to install the command line developer tools, click Install. When it has finished, paste the line again.
  2. If it asks for a password, type your Mac password (nothing shows as you type) and press Return.
  3. When it says it's waiting, plug the FM-1 in and switch it on. It crashes and goes blank, and the script catches it. It checks the chip, saves a backup of the FM-1's memory in the fm1-rescue folder in your home folder, and asks before it writes anything.
  4. Type yes and press Return. Don't unplug anything until it says it's restarting the FM-1. The FM-1 then starts into its original firmware, and you can install X0X again from there.

The script downloads M-VAVE's FM-1 firmware (V16, and V15 from the Internet Archive) and JieLi's flash loader, and checks them against known fingerprints. It puts back the version whose bootloader the FM-1 already has; to go from V15 to V16 after that, use M-VAVE's M-UPGRADE. It writes only the firmware area of the memory, never the bootloader or the FM-1's own settings, and checks everything it writes. Running it again is always safe. If it fails, copy everything in the Terminal window and open an issue. If the FM-1 never shows up at all, Felucca's FM-1-transporter (a small RP2040 board wired to the USB lines) can still reach it.


19Parameters

Drum settings range from 0 to 127. DIST, the distortion type, can be DIODE, CLIP, SAT, BFZ, PDIST, FOLD or CRUSH. PAN goes from L64 through C (the middle) to R63.

Each track's Level, Pan, Rev and Dly are on the mixer (909 MIX); its Drive and Dist are in SEL's list; the rest are its sound pages.

909 tracks
909 trackSettings
BDTune, Attack, Decay, Level, Pitch depth, Pitch, Drive, Dist, Rev, Dly, Pan
SDTune, Tone, Snappy, Decay, Level, Drive, Dist, Rev, Dly, Pan
LT, MT, HTTune, Decay, Level, Attack, Drive, Dist, Rev, Dly, Pan
RSLevel, Tune, Drive, Dist, Rev, Dly, Pan
CPLevel, Tune, Tail, Drive, Dist, Rev, Dly, Pan
CH, OHDecay, Level, Tune, Drive, Dist, Rev, Dly, Pan
CR, RDTune, Level, Decay, Drive, Dist, Rev, Dly, Pan
KITAccent (how much louder accented steps are)
Roland SH-101
SH-101 SectionParameters
VCOOctave (16', 8', 4', 2'), Saw Level (0–127), Pulse Level (0–127), Sub Level (0–127)
PULSEPulse Width (PW, 0–127), PWM Source (MAN, LFO, ENV), PWM Amount (0–127), Noise Level (0–127)
VCFCutoff Frequency (0–127), Resonance (0–127), Env Mod (0–127), Keyboard Tracking (0–100%)
ENVAttack, Decay, Sustain, Release (0–127)
MODLFO Rate (0–127), LFO Wave (TRI, SQR, RND, NOI), VCF Mod (0–127), VCA Mode (ENV, GATE)
VOICEGlide Time (0–127), Glide Mode (AUTO, ON, OFF), Sub Type (-1 Oct Sqr, -2 Oct Sqr, -2 Oct Pls), Volume (0–127)
MORE (SEL)Tune (±100 cents), Accent (0–127), Drive (0–127), Pan (L64 .. C .. R63)
303
303 settingRange
Cutoff, Reso, EnvMod0–127
Decay200–2000 ms
Accent0–127
WaveSaw or square
TuneA from 400 to 480 Hz; the middle is 440 Hz
Volume0–127
Drive, Drive typeOff, soft or RAT
Slide2–360 ms
Accent decay30–3000 ms
Break
Break settingRange
Complexity, Anchor, Roll, Fill0–100
Retrig 2x, 3x, 4x, 8x0–100
PhraseOff, 2, 4, 8 or 16 bars
B chance0–100
A length, B length1/4, 1/2, 1, 2, 4 or 8 bars
Level0–127
Pitch-12 to +12 semitones
FilterLP 100%–1%, OFF, HP 1%–100%
Effects and master
Effect pageSettings
REVERBDecay, Tone; in the list: low cut, return level
DELAYTime (1/32, 1/16T, 1/16, 1/8T, 1/16., 1/8, 1/4T, 1/8., 1/4, 1/2T, 1/4., 1/2, 1/2.), Feedback, Tone, Tape (DIGI, then tape and its wear); in the list: low cut, return level, ping width (0 = off)
MASTERDrive, Comp, Pump, Filter; in the list: the compressor's details, pump by, resonance, limiter, the drive's type, glue and volume

The delay follows the tempo, including an external MIDI clock. A delay longer than two seconds (1/2. below 90 BPM, 1/2 below 60) plays at half that length, which still lands on the beat. With PING on, the echoes bounce from left to right, one delay time apart; delays longer than one second play in the middle instead.


20Credits

ReplicantFM1 is free software under the GNU General Public License, version 3. If you share the firmware, you must also share its source code.

M-VAVE and FM-1 are trademarks of their owners, and TR-909, SH-101 and TB-303 are Roland trademarks. ReplicantFM1 is not connected with M-VAVE, Roland or Hügelton Instruments.