Skip to content

About

Clipper: an experimental synthesizer firmware for the M-VAVE FM-1 (from SLOOP, based on Felucca)

Resources

Stars

55 stars

Watchers

2 watching

Forks

Repository files navigation

Clipper

A deep synthesizer firmware for the M-VAVE FM-1.
Free and open source (GPL-3.0). It grew out of SLOOP, and like SLOOP it is based on Felucca by Leo Kuroshita / Hügelton Instruments.

Install it from the browser · Editor · Releases · Quick start · Démarrage rapide (français) · Building · Editor protocol · SLOOP's manuals


Status: 1.1, EXPERIMENTAL. This is an early, experimental release, and there is still a huge amount of work to do (see What is left to do). It passes its whole test suite on a computer, but it has run very little on a real FM-1: expect rough edges. Install it at your own risk, and keep a backup made with the editor. You can go back to the official V15 from the installer page, or to SLOOP with its own INSTALL-SLOOP.bat.

SLOOP is a groovebox. Clipper is a synthesizer with 23 engines and 407 sounds, one instrument (two in MULTI) like the original FM-1 firmware, Felucca and Baudgirl's FM-1+VA. It has no tracks, no drum machine, no song mode and no built-in samples. It keeps SLOOP's 12 sound engines, effects, arpeggiator, step sequencer, USB audio and MIDI, and adds HYBRID: one voice built from three oscillators, two filters and a modulation matrix, with the whole patch editable in the browser.

At a glance

23 engines, 407 sounds, every one level-matched through the synth's own output chain:

Engine What it is
HYBRID The Clipper voice: three oscillators (saw, pulse, tri, sine with feedback, morph, a seven-saw supersaw, FM, hard sync, wavefolder, noise), ring, drift, drive; two filters (LP12, LP24, a Moog ladder, BP, HP, notch, peak) in series, parallel or split; two envelopes and two tempo-synced LFOs per voice, a 16-slot matrix, four macros.
FMX Six operators after the Korg opsix: each its own wave (10) and mode (PM, true FM, RING), any routing with an amount per connection, 40 templates, a pitch envelope; it also plays the DX7 voices of the bank.
FM6 DX7-style six-operator FM, 32 algorithms; loads DX7 banks (.syx) from the editor.
DIGITAL Four-operator FM, eight algorithms: electric pianos, bells, basses.
WAVE Wavetables: 16 tables of 16 frames, band-limited per octave, and your own (Serum-style WAV) in four user slots.
WSEQ Wave sequencing after the Korg Wavestation: 16 sequences of waves, pitches and levels at the song's tempo, crossfaded.
VECTOR Vector synthesis after the Prophet VS and the Wavestation's joystick: four waves at the corners, X / Y and paths that move by themselves.
JUNO The Juno-6 / 60 / 106 idea: DCO saw, pulse with PWM, sub, noise, the four-position HPF, a 24 dB ladder and the stereo BBD chorus I, II, I+II.
ANALOG Virtual analog: two band-limited oscillators, PWM, noise, drive, and eight filter models (below).
ACID A 303-style bass line: ladder, accent and its sweep, slides.
STRINGS A 1970s string machine: 16', 8', 4' registers through a three-line ensemble.
MACRO Four macro-oscillators in the spirit of Mutable Instruments Plaits: CHORD, SWARM, ADDITIVE, SPEECH, with a low-pass gate.
PHASE Phase distortion, CZ style.
VPS Vector phaseshaping (Kleimola et al., DAFx 2011): phase-distorted waves to formant sweeps, alias-free.
TERRAIN Wave terrain synthesis: an orbit over eight surfaces, slowly drifting timbres.
PHYS Physical models: plucked strings, bars and bells, drum heads, sympathetic strings (after Mutable Instruments Rings and DaisySP).
TRIO The 8-bit home computer sound chip: three oscillators, ring, sync, a multimode filter.
LOFI Chiptune: pulses, triangle, wave RAM, pitch sweeps.
WHEEL A tonewheel organ with nine drawbars.
VOICE Formant synthesis: sung vowels.
NOISE From analog hiss to metallic shift-register tones, through a resonant filter.
GRAIN / SAMPLE Granular clouds and sampled instruments: on four sources of Clipper's own (VOX, a small choir opening "oo" to "ah"; GLASS, a glass harmonica; PAD, seven saws whose filter opens; AIR, breath on the note's harmonics), synthesized, not recorded.

Shaping the sound (every engine): a twelve-slot modulation matrix (LFO 1, 2 and 3, ENV 1 and 2, velocity, key, mod wheel, aftertouch, random, MPE slide, the MOD SEQ's four lanes, the four macros) onto pitch, cutoff, shape, amp, pan, LFO 2's rate and the engine's own eight values; LFO 2, LFO 3, ENV 2 (one-shot or looping); four MACROS (BRITE, TIMBR, MOTN, SPACE) on CC 16 to 19; SPREAD, each voice its own place in the stereo field; the MOD SEQ, a four-lane modulation sequencer; eight filter models on ANALOG, WAVE and VECTOR (SVF, Moog ladder, MS-20, diode ladder, SEM, notch, band-pass, high-pass); VINTAGE (each voice drifts and differs, like an analog poly); an INSERT effect per sound (SOFT, HARD, FOLD, FUZZ, CRUSH, PHASER, FLANGER, CHORUS, and the JUNO chorus).

Effects: distortion, stereo chorus, a tempo-synced delay (MONO, PING-PONG, TAPE), four reverbs (ROOM, PLATE and HALL after Dattorro, SHIMMER an octave up), a DJ filter, a master three-band EQ, a bus compressor and a look-ahead limiter. Changes glide instead of clicking.

Tuning: the reference A4 from 400 to 480 Hz (432, 415, 442...), and equal, just, Pythagorean, meantone, Werckmeister III, Kirnberger III, the maqams Rast and Bayati, slendro, pelog, 19 / 24 / 31-EDO, and any Scala .scl scale from the editor.

Playing: 8 voices (12 or 16 as a build option, on both processor cores); POLY, MONO, LEGATO, UNISON and poly unison (2 or 4 voices a note), glide; LAYER, SPLIT and MULTI (two parts on two MIDI channels); an arpeggiator with 15 modes, a Turing machine (TURNG) among them, and SPICE / DICE variations; a step sequencer with chords and recording; scales and chords on the keys, KBD HOLD; MPE; MIDI over USB and TRS (pitch bend with its range, mod wheel, expression, sustain, channel and polyphonic aftertouch, macros on CC 16 to 19, program changes and banks, the channel mode messages, local control, CC out: docs/midi.md); the FM-1 is a USB audio interface too.

Working: UNDO and COMPARE on the FM-1, favourites, MORPH between two versions of a sound, a randomizer by section, user presets and projects that keep everything above.

The web editor (Chrome or Edge, nothing to install): every parameter live; a pro step sequencer (tools, generators, velocity lanes, a pattern library); the whole HYBRID and FMX patches; the MOD SEQ's lanes; the tuning and .scl files; DX7 banks; your own wavetables; a sound library, undo / compare / A-B / randomize tools; backups of the whole FM-1.

New in 1.1 (experimental): ultra-compatible MIDI, the SLOOP 2.7.2 sequencer, and a clean reverb

  • Fixed: the crackle on the left channel with the reverb on (heard by several players, not on the original firmware). PLATE, HALL and SHIMMER read one of their left output taps 1417 samples back on a 1334-sample line: out of the line, 83 samples old or in the line before it, a click every 60 ms on the left only (the right's taps were all inside). ROOM did not have it. A second case is fixed too: the room reverb overflowed with DAMP turned down (under ~35) and a loud sound (LEVEL and REV up, a chord), its loop's 32-bit products wrapped and the tail turned into a full-scale crackle that went on after the notes. 1.1 also bounds the part and master stages the same way, and moves the room reverb's lines out of the SRAM next to the second core's stacks into the main pool. Every other effect was checked the same way (tests/fx_sweep_test.c: a sine through every reverb type, delay MODE and TIME, the chorus, the swept INSERTs, the JUNO chorus and the master at their extremes, also under AddressSanitizer): none had the bug; two engines got a guard against reading out of their tables (LOFI's arp, WAVE's frame). If a noise remains, the tests that tell where it comes from are in QUICKSTART.md (A noise on one side?).
  • Made for MIDI controllers and DAWs (the whole list: docs/midi.md): program changes load the sounds (with bank select, CC 0: program p of bank b is the list's sound b × 128 + p; GLO > MIDI 2 > PROG turns them off); CC 11 expression is the sound's volume; CC 120 / 123 stop every note (a DAW's panic button), CC 121 resets the controllers; the pitch bend range is GLO > MIDI > BEND (AUTO, or 1 to 24 semitones) and RPN 0 sets it; LOCAL OFF (and CC 122) for a DAW that sends the track back; CC 76 / 77 / 78 the LFO's rate, vibrato and fade; GLO > MIDI 2 > SEND CC: the knobs send their CCs, a DAW records and plays back the moves; GLO > MIDI 2 > EWI: a breath controller (CC 2) plays the volume, and with V+AT the aftertouch too (the cutoff follows the breath; asked for by an EWI player); Clipper answers the MIDI identity request. The knobs no longer miss steps when turned fast (SLOOP 2.7.2's encoder).
  • A MIDI channel for the synth (GLO > MIDI, a setting of the FM-1): IN CH OMNI as before, or 1 to 16, so a KeyStep Pro's other tracks or a DAW's other channels no longer play Clipper; OUT the channel its keys, arp and sequencer send on. (Asked for in a comment.)
  • The sequencer of SLOOP 2.7.2 on the FM-1: SEQ tapped is the NOTES page, a piano roll of the pattern where each note is edited (KNOB 1 the note, a chord's one by one; 2 the pitch; 3 the length; 4 the force, GHOST to HARD and ACC; PRESETS the zoom, 8 to 64 steps) and OCT+ held opens its sheet (SLIDE, NUDGE, FILL, MOVE, COPY, DELETE); EDIT tapped deletes the note. The keys and a MIDI keyboard write the step under edit (MENU > SEQ > STEP ADVANCE OFF: the cursor stays, for trying a chord again). EDIT, ARP and GLO are layers again when held: EDIT erases a note from the pattern (as it plays, or all of it stopped) and turns SHIFT, LENGTH x2 / half, TRANSPOSE, with undo / redo on OCT- / OCT+; ARP repeats a key on the grid (note repeat, recorded as ratchets); GLO calls a fill (key 9 held, key 10 the next bar), taps the tempo (key 16) and sets the level (KNOB 1). SEQ + a step held + KNOB 2 sets its velocity. Recording: several notes held each go on until their own key is let go, and on a MONO or LEGATO sound a note played over the one before is recorded and played back legato (no new attack). A MIDI clock master's tempo reads steady (140 stays 140). FX and SAVE held still let the keys play.
  • A pro sequencer in the web editor (Sequencer tab, works with the FM-1's step sequencer as it is): undo / redo (Ctrl+Z / Ctrl+Shift+Z, 64 steps, edits by hand too); a range (shift-click on the grid) for every tool; transpose (±1, ±12), shift round, reverse (chords keep their length), double the length, copy / paste (Ctrl+C / Ctrl+V), clear; chords from each step's note (maj, min, 7, m7, sus, add9... or the key's own triads and sevenths), accents and slides on a range; generators: Euclidean rhythms, random melodies in the key (density, leaps, ties, accents, slides, chords, a seed to get one back), 22 ready-made patterns (acid, octave, offbeat and rolling basses, arpeggios, Berlin school, chord stabs and progressions, gates) and a pattern text to write your own (1 3 5 8', 1+3+5>, - tie, . rest), humanize (velocity and nudge); lanes to draw velocity, nudge, ratchet (x1 to x4) and level (GHOST to HARD), and ratchet / level columns in the step list; a pattern library: a bank in the browser, .clipper-pattern.json files (notes, ties, accents, slides, velocities, ratchets, levels, nudges, fills, locks, length).
  • The PRESETS page filters by engine (SAVE > PRESETS, KNOB 2: ALL, one engine, or USER): KNOB 1 and the PRESETS knob then go through that engine's sounds only, and the list shows only them, with their count (before, KNOB 2 only jumped to the next engine's first sound). (Asked for in a comment.)
  • The factory sounds load dry: no delay and no reverb send (users asked for it); FX > DLY / REV, or the SPACE macro, add them, and your user presets keep what you saved.
  • A4 in Hz (GLO → TUNING → A4, 400 to 480 Hz, and in the editor's Tuning card): 432, 415 (baroque), 442 / 443 (orchestras)... under every tuning system, kept with the settings. (Asked for in a comment on the launch video.)

New in 1.0 (experimental): a stereo voice, a deeper modulation, four macros, a hall and a shimmer

  • SPREAD (VOICE 3 → SPRED, every engine): each voice gets its own place between left and right (the outer voices first, the next ones between), so a chord opens across the stereo field and the voices of UNI2 / UNI4 fan out. The middle stays what it was (left + right is the sound without SPREAD, bit for bit at 0), and the side goes through the same DIST / INSERT level and track FILTER. The pads and the unison sounds come with a little of it (48).
  • The matrix has 12 slots (MATRIX 1 .. 12, on the FM-1 and in the editor), and new sources: LFO 3 (LFO 3 page: RATE, WAVE, MODE FREE / KEY) and the four macros MAC1 .. MAC4.
  • ENV 2 LOOP (ENV 2 LOOP page): ONE as before, or LOOP: past its decay it starts its attack again, as long as the note is held: an envelope that cycles, a rhythmic modulator in the matrix.
  • Four MACROS on every engine (EDIT → MACROS; MIDI CC 16 .. 19; HYBRID keeps its own M1..M4): BRITE (the cutoff, ±2.5 octaves), TIMBR (the engine's shape), MOTN (a vibrato and LFO 3 on the cutoff: motion), SPACE (more reverb, delay and SPREAD). They are matrix sources too.
  • HALL and SHIMMER (REVERB → TYPE): HALL is the plate's tank made a room of stone (a longer decay, a pre-delay, a darker top); SHIMMER feeds it an octave up, the pitched tail of the ambient records. A change of TYPE fades the old tail out (no click).
  • The delay has a MODE (DLY 2 → MODE): MONO as before, PING (the first echo left at TIME, the next right at twice TIME, back and forth), TAPE (wow and flutter swing the echoes; the repeats saturate as they pile up). A change of MODE cross-fades.
  • Kept with the sound: user presets keep every 1.0 value in a tail after the bank (SLOOP and older Clipper versions read the bank as before and never see it); projects keep them in track 3's nudges while track 3 has no steps (a project whose track 3 has steps loads them at their defaults).
  • Fixed: the arp turning itself on while browsing. Four sounds bring an arp with them (8BIT ARP, ACID ARP, ARP PLUCK, TURING JUNO), and since 0.7 a running arp went on through sound changes, so passing one of them left the arp on for every sound after it. Now an arp a sound brings goes off with the next sound; only an arp you turn on (or change) yourself runs on.
  • Fixed: the user presets' 1.0 values (SPREAD, LFO 3, the macros, slots 7 to 12...) were not read back after the FM-1 was switched off, and the boot wrote past the end of their table (a slip in 1.0's first build).
  • Fixed: the JUNO chorus (CHOR I / II / I+II, and the INSERT's JUNO types) cracked on a loud chord of many voices (its arithmetic wrapped round past 16 bits; now 64-bit products, and the line keeps an eighth of the sound instead of a quarter: no clipping either).
  • Simpler: no PROJECT page on the FM-1 any more (Clipper is one instrument: the autosave keeps what you are playing, the user presets keep your sounds); SAMPLE and GRAIN play Clipper's four built-in sources only (USER SMP and USER GRAIN are gone: 407 sounds); in the editor the Samples tab became Wavetables (WAVE's USR1..USR4) and the Projects tab Backup.
  • Changed: the undo history moved out of the 96 KB RAM region (the new buffers needed the room).
  • The web editor: the new pages (VOICE 3, LFO 3, ENV 2 LOOP, MACROS, DLY 2) and the matrix's 12 slots, with Clipper 1.0's layout (126 values, P_E0 118; still protocol 14). A 0.9 sound file loads into 1.0 with the new values left as they are.

New in 0.9: filter models, VINTAGE, microtuning, a Turing machine, and a clean sound

  • Filter models (FILTER → MODL, on ANALOG, WAVE and VECTOR; HYBRID keeps its own two filters): SVF (12 dB, as before), MOOG (the 24 dB ladder), MS20 (2-pole Sallen-Key style with the diode clipping in the feedback: it screams at high RES and stays stable), DIODE (the 4-pole diode ladder of the TB-303 / EMS family: rubbery, less bass loss), SEM (Oberheim's 12 dB state variable, gentle resonance), NOTCH, BP and HP. Zero-delay-feedback models, integer DSP; each costs between 0.6 and 1.4 times the old filter. A model changed under a held note dips and comes back (no click).
  • VINTAGE (VOICE 2 → VINTG, every engine): the voices of an analog poly are never quite alike. Each voice gets its own small tuning error and filter offset (its "voice card", fixed), a slow random drift of its pitch, and each note a little of its own. At 127: the card ±6 cents, the drift ±5, the note ±2, the cutoff ±1.5 steps. 0: bit for bit as before.
  • TUNING (GLO → TUNING, for every sound, kept with the settings): EQUAL, JUST (5-limit), PYTHAgorean, MEANTone (1/4 comma), WERCKmeister III, KIRNBerger III, the maqams RAST and BAYATi (neutral thirds), the gamelan's SLENDro and PELOG, 19, 24 and 31-EDO, and USER: any Scala .scl scale (up to 48 notes per period, any period: Bohlen-Pierce's tritave too) sent from the web editor. ROOT sets the tonic. A glide moves through the scale.
  • TURNG, a Turing machine in the arpeggiator (ARP MODE → TURNG, after Music Thing's Turing Machine): a looping shift register picks among the held notes. On the SPICE page, MUTAT is how often a bit flips (0 locked, 127 random), SEED another pattern, LOOP its length (1..16). LOOP also sets how many notes SPICE / DICE vary before repeating.
  • A clean sound, no clicks (a new test, 46 cases, renders every change and checks that no sample jumps): the master limiter's gain now moves on an S-curve; the sends (CHOR / DLY / REV) and the INSERT's DIST glide instead of jumping; the delay's TIME cross-fades the old and new tap; the chorus DEPTH glides; the master FILT goes through the middle when it crosses from LP to HP; FLANG / CHOR in the INSERT wait for their line to fill; a WAVE table, an FMX patch or a filter model changed under a held note dips and comes back.
  • GRAIN and SAMPLE play out of the box: four sources of Clipper's own, synthesized (no recording, 25 KB of flash): VOX (a small choir, "oo" opening to "ah": GRAIN's POS scans the vowel), GLASS (a glass harmonica), PAD (seven saws, the filter opening), AIR (breath on the note's harmonics). Ten GRAIN sounds (VOX CLOUD, VOWEL DRIFT, ANGEL HALO, GLASS RAIN, CRYSTAL SWELL, FROZEN PAD, DARK DRONE, SCAN PAD, WIND CHOIR, BREATH GRAIN) and four SAMPLE ones (SAMPLE CHOIR, GLASS HARP, SAW ENSEMBLE, AIR FLUTE). SET / SRC 0..3 are still your slots USR1..USR4; the sources come after.
  • 17 new sounds (those, TURING JUNO, MS20 VECTOR, DIODE VS BASS), and VINTAGE on a few JUNO pads. 409 sounds, 23 engines.
  • A sound pass over every preset (each one rendered, measured and its spectrum looked at): DIGITAL's FM no longer folds back as noise on high notes (its index held under the Nyquist limit, and gliding through each block: no step when a mono bass retriggers); CLAV less harsh; the master EQ's shelves glide their corners too.
  • A new logo: a clipper under sail, in the line of SLOOP's (its one sail becomes four, one per track colour), on the boot screen, the installer, the editor and here.
  • Fixed: a SLOOP 2.6 project loaded on Clipper read its MOD SEQ / SPICE values from past the end of its INSERT's (now their defaults).
  • The web editor (protocol 14): a Tuning card (system, root, load a .scl), and the new knobs (VINTG, LOOP, MODL's models, TURNG).

New in 0.8: JUNO and its chorus, VECTOR, a modulation sequencer, SPICE / DICE

  • JUNO, the poly synth of the Roland Juno-6 / 60 / 106 (the idea, none of Roland's code): one DCO per voice with a saw, a pulse whose width the LFO sweeps (PWM: LFO DEST SHP, the wheel, the matrix's SHAPE) or both together (S+P, the 106's two buttons), a sub square an octave down and noise; the HPF in the 106's four positions (0 a little bass boost, 1 flat, 2 and 3 thinner), the 24 dB resonant ladder (keyboard tracking, its envelope), and the chorus: I (0.5 Hz, wide), II (0.8 Hz, deeper), I+II (8 Hz, shallow, the 60's two buttons together): a stereo BBD chorus, two taps of one line swept in opposite directions, darkened like the bucket brigade, left = dry + one, right = dry + the other. A mode changed under a held chord fades (no click). EDIT: WAVE PW SUB NOIS / HPF CUT RES CHOR. 16 sounds (pads, brass, strings, bass, keys, synthwave lead, a hoover).
  • The JUNO chorus on any sound: the INSERT has three more types, JUNO1, JUNO2, JUN12 (A WIDTH, B TONE, C NOISE: the BBD's hiss, MIX the wet).
  • VECTOR, vector synthesis after the Sequential Prophet VS and the Wavestation's joystick: four waves at the corners of a square (A B C D, 16 of Clipper's own: SINE TRI SAW SQR PLS25 PLS10 ORGAN VOX A VOX O BELL HOLLW BRASS RESO DIGI STRNG METAL, each in three band-limited copies), a point in it (X, Y) mixes them, and MOVE sends the point round a path by itself from each note's start: CIRC, 8, SWEEP (from A to the point: the VS's mix envelope), LOOP (A B D C), RND, each slow or fast (+). SHAPE moves X; the matrix moves X and Y by name. Then a 12 dB low-pass. EDIT: A B C D / X Y MOVE CUT. 16 sounds.
  • MOD SEQ, a modulation sequencer in every sound (LFO → MOD SEQ, MOD SEQ 2): four lanes of 16 steps (-8..7) that step at RATE (1/32 .. 2 bars, the song's tempo), over LEN steps, each lane gliding (SMTH), from each first key (START KEY) or on the song's grid (SYNC). The matrix reads them as four more sources, SEQ1..SEQ4: a lane to the cutoff, another to the pitch, a rhythm to the level, any EDIT value by name. On the FM-1: LANE STEP VALUE and SHAPE (RAMP+ RAMP- TRI SINE SQR RND FLAT INVRT SHIFT: scroll it to audition), the lane drawn big, the step playing lit, the four lanes small below. A sound loaded brings four shapes to start from (a ramp, a triangle, a rhythm, a random line). Kept with the sound: UNDO, COMPARE, the layer's SWAP, user presets, projects.
  • SPICE / DICE (ARP → SPICE, after the Arturia MicroFreak): the arpeggiator's notes and the sequencer's steps vary as much as SPICE says: some rest, some jump an octave, the velocities and the gates move; the same way each time round (16 notes, or the pattern's steps), until DICE is turned (another variation). What is recorded is never changed. SPICE 0: as before, note for note.
  • The web editor (protocol 13): a MOD SEQ card (the four lanes as bars to drag, the shapes, LIVE), the new pages (MOD SEQ 2, SPICE, the INSERT's JUNO types), JUNO and VECTOR.
  • Both new engines run on both cores (bit for bit, as the others). 392 sounds, 23 engines.
  • Fixed: a user preset sent from the web editor was written in SLOOP's layout over Clipper's record (its LFO 2, ENV 2, matrix and INSERT lost, and a few bytes past the record).

New in 0.7: both cores, a history of the sound, and SLOOP 2.7's best

  • The FM-1's second processor core renders half the voices. After SLOOP 2.7 (the second core's start-up is X0X's, Charles Vestal, after Melodee; the HAL came to SLOOP through Andre Rezemini's dualcore branch, 2.7.1's safe hold included). SLOOP splits by track; Clipper plays one sound, so it splits a sound's voices: this core works out every voice's modulation, hands the second half of the voices to core 1, renders the first half, waits, adds. Bit for bit the same sound whoever renders what (the host tests prove it for every preset, one core or two, a slow second core, a lost job, under ThreadSanitizer). Engines that may split: HYBRID, FMX, WAVE, ANALOG, FM6, VPS, TERRAIN, WSEQ, MACRO, STRINGS, TRIO, PHASE, DIGITAL, LOFI (0.8: and ACID, JUNO, VECTOR; the others stay on one core). MENU → SYS → 2ND CORE ON / OFF; ABOUT says 2 CORES or 1 CORE. This is what should make 12 or 16 voices possible: measure with GLO → SYSTEM (CPU, LATE, PEAK).
  • UNDO and COMPARE on the FM-1 (EDIT → UNDO): every change of the sound becomes a step once it rests (a knob sweep is one step), a sound loaded too; KNOB 1 goes back (left) and forward (right) through up to 16 steps, the page lists them ("-1 CUT RES", "-2 MOOG BASS"); FMX's patch goes with them. KNOB 2 CMP: ORIG plays the sound as it was loaded, EDIT your edits again. HOME says EDITED when the sound differs from what was loaded, and loading another sound never loses your edits: UNDO brings them back.
  • RANDOM by section: WHAT now also offers ENV, MOD (LFOs, matrix amounts), FX (and the INSERT's values) and OPS: on FMX, the operators themselves (musical ratios, the modulators' levels, envelopes, now and then a wave, the routing's amounts), as the opsix's randomizer.
  • Favourites: PRESETS page, KNOB 4 right puts the sound at the top of the list (up to 16), left takes it out; kept with the FM-1's settings.
  • SLOOP 2.7's gifts: KBD HOLD (ARP 2 → HOLD ON with the arp OFF: the notes go on sounding, the next chord replaces them; HOME shows HOLD), 15 arp modes (REPEAT, DNUP, UP+8, CONV, DIVG, PINKY, THUMB, WALK, CHORD after UP DN UPDN RND ORD), ARP SWG works stopped too (#52), a sound loaded while the arp runs keeps the arp and its notes, CC 74 sweeps the engine's own cutoff or brightness, REC QUANT OFF (KNOB 4 of the REC screen: your timing kept as nudges), overdub over held notes, knob acceleration that grows with the speed of the turn (MENU → SCREEN → KNOB ACCEL), LEVEL and PAN glide (no zipper), user samples that loop while held (LOOP, LOOP+TAIL), USB RATE (AUTO, 44.1, 48 kHz: MENU → AUDIO), MIDI CLOCK OUT on USB (MENU → MIDI), the crash screen with the stack, 10 s.
  • The web editor: a Sound tools card: Undo / Redo (Ctrl+Z, Ctrl+Shift+Z), Compare with loaded, Store A / Store B / Toggle A / B, a randomizer by section with an amount, what changed since loaded (a table), and the envelope drawn (ENV, and ENV 2 dashed). The Samples page sets each file's loop (ONE SHOT, LOOP, LOOP+TAIL with its points on zero crossings, a WAV's own loop read from its smpl chunk). The editor finds the FM-1 under any of its port names (a port kept from another firmware, e.g. "X0X FM-1").

New in 0.6: two parts, an insert per sound, FMX and wave sequencing

  • MULTI (bi-timbral): EDIT → LAYER → MODE has a fourth choice, MULTI: the layer's sound becomes a part of its own, on its own MIDI channel (CH, on the knob SPLIT has in the other modes; 2 by default), with its own pitch bend, mod wheel, pressure and sustain pedal; every other channel, the keys, the sequencer and the arpeggiator play the main sound. The voices are shared (8, or 12 / 16 with INSTALL-CLIPPER.bat 12 / 16). LAYER and SPLIT as before.
  • An INSERT effect per sound (FX → INSERT, INSERT 2), SLOOP 2.6's: TYPE OFF, SOFT, HARD, FOLD, FUZZ (DRIVE TONE LEVEL), CRUSH (BITS RATE LPF), PHASR, FLANG, CHOR (RATE DEPTH FDBK), and MIX. After the sound's drive, before its filter and the sends; the main sound and the layer each their own; kept with the sound (presets, user presets, projects). OFF or MIX 0: the sound bit for bit as before. A SLOOP 2.6 sound or project brings its INSERT along.
  • FMX, a six-operator engine after the Korg opsix: each operator its own wave (SINE TRI SAW SQR HALF ABS QUART PULSE SIN8 NOISE, the bright ones band-limited) and its own mode: PM (the DX7's "FM"), FM (true, linear, through-zero frequency modulation) or RING; a ratio (x0.5 .. x31, FINE) or a fixed frequency; level, ADSR, velocity, key scaling, detune. Any routing: any operator into any other, each connection its own amount, an operator into itself its feedback, any operator to the output. 40 templates (ALG: the DX7's 32, then CASCADE, 2 STACKS, STAR, 2 x 2>1, RING 3, LOOP, Y, 1 > 5) to start from; change any connection after. A pitch envelope (PEG). EDIT 1 / 2: PTCH ALG MOD FB / TIME DTN VEL KTRK (macros on the patch); on FMX six more EDIT pages edit the patch itself: OP (OP WAVE MODE RATIO), OP 2 (FINE LEVEL VEL KSC), OP ENV, ROUTE (TO FROM AMT OUT, with the routing drawn as a grid), FMX (DTN FIX PEG PTIM) and STORE (into the bank, B1..B27, the song stopped). The bank is FM6's: a slot holds an FMX patch or a DX7 voice, and FMX plays a DX7 voice converted. In the editor: the whole patch, the routing drawn, templates, LIVE, STORE, files (.clipper-fmx.json). 16 sounds. A voice costs about what a HYBRID voice does.
  • WSEQ, wave sequencing after the Korg Wavestation: each note plays a sequence of steps, each its own wave, pitch and level, at the song's tempo, the next one fading in over the end of the one before. SEQ (16 sequences: STEPS RHYTHM SWEEP FIFTHS MINOR MAJOR OCTAVE GATE BELLS 8BIT MORPH VOX NOISY DUB DORIAN PING), RATE (1/32 .. a bar), XFADE, LOOP (FWD BACK PING ONCE), START, PITCH (how wide the steps' intervals: 0 none, 127 twice), CUT, RES. 16 sounds; light (a third of HYBRID).
  • 360 sounds, 21 engines. The web editor knows the new pages (INSERT, and FMX's patch).

New in 0.5.1: an audio timing readout (the crackle hunt)

GLO > SYSTEM, the CPU column now turns every 1.5 s: CPU (or the USB status), LATE (audio buffers rendered too late since power-on: each one a click) and PEAK (the slowest buffer of the last few seconds, % of the time it has; over 100 means late). If you hear crackles, note whether LATE climbs while they happen.

New in 0.5: two more engines, VPS and TERRAIN

Both suggested in the Felucca discussions (#145, #146) as light ways to sounds no oscillator makes; both cost about what ANALOG costs (a third of HYBRID).

  • VPS, vector phaseshaping (after Kleimola, Lazzarini, Timoney and Välimäki, DAFx 2011): a sine read through a bent phase. The bend is one point, D (where in the period) and V (how many cycles by then). V under 1: phase-distorted waves, CZ style; V above 1: V cycles squeezed into the first part of the period, a formant at V × the note, as a hard sync or a vowel sweep. Whole cycles only (V between two integers crossfades them): no spike, no aliasing. VENV sweeps V with the envelope at each note, OSC2 adds a second one with D mirrored and detuned (DTN), SUB a sine an octave down, then CUT and RES. SHAPE modulation (LFO, envelope, wheel, matrix) moves D. EDIT: D V VENV OSC2 / CUT RES DTN SUB. 10 sounds.
  • TERRAIN, wave terrain synthesis, lite: an orbit circles over a surface and the surface's height under it is the sound. One turn is one period, so it is pitched; where the orbit lies (X, Y) and how wide it is (RAD) choose the harmonics; ORB squeezes it flat or turns it into a figure eight; DRIFT moves it slowly, each note its own way, for timbres that keep evolving. Eight surfaces of 32 × 32 (TERR: WAVES, RIPPLE, CRYSTAL, BUMPS, SADDLE, FOLDS, TWIST, CHAOS), periodic in both directions and band-limited; the orbit narrows on high notes. EDIT: TERR RAD X Y / ORB DRIFT CUT RES. 10 sounds.
  • 328 sounds, 19 engines. Every EDIT value of both is a matrix destination (X and Y moved by LFO 2 or the keys, say).

New in 0.4.1: SLOOP 2.6's fixes, and living next to SLOOP 2.6

  • A cleaner output: the master limiter looks one block (0.7 ms) ahead, so a loud attack is already turned down when it comes instead of its first samples going through the output's soft clipper (a crackle with MASTER up, in headphones most); a held loud bass keeps one gain (no whistle). After SLOOP 2.6.
  • No click when a filter starts to close: the sound's FILTER and the master FILT start their low-pass where the signal is (it started from silence under the sound: a crack).
  • FM6: a sound changed under held notes fades them out with their own patch; the new patch comes after (they took it at once: a click).
  • Arpeggiator (#191, after Felucca 1.5): a latched arp follows TRN, ROOT, SCALE and QNT changed after its keys were pressed.
  • A project load or NEW puts the pitch wheel back to the middle, the pressure to 0 and the sustain pedal up (its notes let go); MPE's per-note bends too.
  • Web editor: a value set again (the same value on another sound, or after a knob moved it on the FM-1) is sent again (it was skipped for good); a sound file from another version loads by layout; a backup with projects newer than the firmware reads stops before writing anything.
  • Installer: an FM-1 running SLOOP is found (going from SLOOP to CLIPPER no longer stops at FM-1 not found); when none is, the message lists the MIDI ports it saw.
  • Going between SLOOP 2.6 and CLIPPER on the same FM-1: CLIPPER reads SLOOP 2.6's projects (they were shown as empty slots, and saving there wrote over them); it keeps SLOOP 2.6's MIDI settings and MIDI LEARN in the settings, and SLOOP's SYN kits; its MPE setting no longer sits where SLOOP 2.6 keeps GLO > SYSTEM > IN. User presets are one bank again for both (192-byte records: 0.4's first build made them 232, which SLOOP read as empty; they are converted at power-on): the matrix, LFO 2 and ENV 2 ride in the record's spare values, SLOOP sees the sound as it is. A project keeps LFO 2, ENV 2 and the matrix in track 3's free lock slots, which SLOOP passes over (0.4's first build put them in tracks 3 and 4's own values; still read).

New in 0.4: a modulation matrix on every engine, and MPE

  • MATRIX (LFO → MATRIX), on every engine: six slots, each a SOURCE → DESTINATION × AMOUNT (±). SLOT chooses the slot the other three knobs edit; the screen lists all six. Sources: LFO1, LFO2, ENV1 (the amplitude envelope), ENV2, VEL, KEY (the note, around C4), MW, AT (channel or polyphonic), RAND (a new random value at each note), SLIDE (MPE). Destinations: PITCH (up to ±24 semitones, finer near 0), CUT, SHAPE, AMP, PAN, LFO2 (its rate), and any of the engine's eight EDIT values by name (ANALOG's CUT, WAVE's POS, FM6's ratios...), per note. A slot at 0 costs nothing and changes nothing, bit for bit.
  • LFO 2 (LFO → LFO 2): RATE, WAVE (SIN TRI SAW SQR S&H), MODE: FREE (one for the sound) or KEY (each note its own, restarted at the note).
  • ENV 2 (ENV → ENV 2): a second ADSR, for the matrix.
  • MPE (HOME held → SYSTEM → MPE): OFF, or the member channels' bend range (48 ST, the MPE standard, or 2, 12, 24, 96). For Expressive E Osmose, ROLI, LinnStrument, Sensel and the rest: channel 1 is the master channel (the bend, wheel and pedal of every note), channels 2 to 16 each carry one note with its own pitch bend, its own pressure (the AT source and MOD AT>) and its own slide (CC 74: the SLIDE source; with no slot using it, it opens the note's filter).
  • Kept with the sound: projects keep LFO 2, ENV 2 and the matrix of both sounds (the layer too) in room the synth never used (0.4.1: track 3's free lock slots); a project keeps its size, older ones load with the matrix empty. User presets keep them too (0.4.1: in the record SLOOP reads). RANDOM ALL also moves LFO 2, ENV 2 and the amounts of the slots in use; MORPH moves every one of them.

New in 0.3: playing it like a big synth

  • Master EQ and compressor: FX → EQ+COMP: LOW (a shelf at 150 Hz), MID (a peak at 1 kHz), HIGH (a shelf at 5 kHz), each ±12 dB (MID ±10) in 1 dB steps, and COMP, a stereo bus compressor (the "glue": one knob lowers the threshold from -6 to -30 dB and raises the ratio from 2:1 to 4:1, with automatic make-up gain). Flat and at 0 they are bypassed, bit for bit; every change glides, no click.
  • Layer and split: EDIT → LAYER: MODE (OFF / LAYER / SPLIT), SOUND (any of the 308 sounds or your presets as the second sound), SPLIT (the split note: the layer below, the main sound from it up), LEVEL; LAYER 2: OCT (the layer -2..+2 octaves), PAN, FILT and SWAP (the two sounds trade places: every page then edits the other one; SWAP again to go back). Keys, MIDI, the sequencer and the arpeggiator all play both; a note always ends where it started.
  • Poly unison on every engine: EDIT → VOICE: UNI2 and UNI4 stack 2 or 4 detuned voices on each note (DTUNE on VOICE 2), in POLY. (UNI is still the 8-voice mono stack.)
  • Morph and randomizer: EDIT → MORPH: SET A, SET B, then MORPH moves the whole sound between them (every continuous value; the switches change half way; MIDI CC 20). EDIT → RANDOM: AMT, WHAT (EDIT: the engine's 8 values, +ENV: and the envelopes, ALL: and the LFO and the sends), RAND, and BACK to undo.
  • Modulation: LFO → MOD: VEL>F (velocity to the cutoff, ±), MW> and AT> (the mod wheel and aftertouch, channel or polyphonic) to VIB (a 5.5 Hz vibrato), CUT, SHP (the engine's shape), WAH (the sound's LFO on the cutoff) or TREM. Every engine (HYBRID keeps its own matrix).
  • Smooth sound changes: a preset, an engine, a user preset, SWAP, RAND or BACK changed under ringing notes fades them out over 6 ms with their own values (no click); notes played meanwhile wait for the new sound.
  • WAVE loads 6x faster: a table's band-limited copies come from an inverse FFT instead of additive sums (the same samples within 2 steps of 32767), four frames per pass of the main loop: a new table is ready in four passes.
  • No full-screen visualiser (its code and 5.5 KB of RAM go to the synth); HOME keeps its scope.
  • 308 sounds: 99 new ones across every engine (Juno, OB, Taurus, Prophet, DX, CZ, SID, B3, bowed and plucked models, 303s, string machines, chords, swarms, speech...), each level-matched through the synth's own output chain.

New in 0.2: the sound

  • MOOG ladder: a 24 dB four-pole ladder with zero-delay feedback (after Vadim Zavalishin) and a tanh at its input: it drives warm, its resonance saturates softly, and it self-oscillates on pitch. A filter type in HYBRID; on ANALOG, FX → FILTER → MODL chooses SVF (12 dB) or MOOG (24 dB).
  • Soft resonance: HYBRID's state-variable filters saturate softly instead of clipping.
  • Anti-aliasing: triangles are band-limited (polyBLAMP), the hard sync gets a BLEP at each reset, and FM, sine feedback and the wavefolder are held below 20 kHz on high notes. Measured by tests/alias_test.c: folded partials stay under -40 dB (triangles -62 dB, the folder -66 dB), against -7 dB before for a full fold.
  • Plate reverb (after Jon Dattorro): FX → REVERB has TYPE (ROOM / PLATE), SIZE, DAMP and PRE (pre-delay, ms). The chorus moved to its own CHORUS page.
  • WAVE, wavetables: 16 tables of 16 frames (classic shapes, PWM, sync, FM, fold, formants, PPG-style sweeps, organ, chip, comb...), POS morphs through them (the envelope and the LFO move it through ENV DEST / LFO DEST SHP), DTN adds a second oscillator, SUB a sine an octave down, then ANALOG's filter (SVF or MOOG) and drive. The tables are stored as spectra and band-limited per octave in RAM, read with a cubic: aliasing stays below -60 dBFS at 2.4 kHz (tests/wave_test.c). Your own tables (a Serum-style WAV) go to a user slot from the editor's Wavetables tab; TABL = USR1..USR4 plays them.
  • ACID: a 303-style bass line engine, one voice. Saw or square (45 %) into the ladder, a one-pole high-pass and DIST. The filter envelope (ENV, DEC), the accent (a note at velocity 120 and up, the sequencer's ACCENT steps: louder, the envelope shorter and deeper) and its sweep (SWP: a run of accents charges a capacitor that pushes the cutoff further up, the squelch), and slides: a SLIDE step, or legato with GLIDE in TIME mode, glides without restarting the envelopes. EDIT: WAVE CUT RES ENV / DEC ACC DIST SWP.
  • STRINGS: a 1970s string machine (Solina, ARP, Elka). Divide-down registers 16', 8' and 4' locked on one phase, saw towards square (SHP), three ensemble lines moved by a slow sweep (~0.6 Hz) and a fast shimmer (~6 Hz) 120 degrees apart (ENS, RATE), a key-tracked 12 dB low-pass. EDIT: 16' 8' 4' ENS / CUT RATE SHP RES.
  • MACRO: four macro-oscillator models in the spirit of Mutable Instruments Plaits (the ideas, not the code), on three knobs HARM, TIMB, MORPH: CHORD (OCT 5TH SUS4 m m7 m9 m11 6/9 M9 M7 M, inversions, saw to square), SWARM (eight oscillators spread up to a semitone, each drifting), ADDTV (harmonics 1..16 under a moving bump, odd to even, nothing above 0.45 FS), SPEECH (a glottal source through three formants gliding along a word: AI AU OI UA WOW YEAH AEIOU MAMA, held or spoken). Then a low-pass and a low-pass gate (DEC, LPG). EDIT: MODL HARM TIMB MRPH / CUT RES DEC LPG.
  • No built-in samples: 300 KB of flash go to synthesis. SAMPLE and GRAIN play your own samples (the editor's Samples tab, four slots). 209 factory sounds in 0.2 (308 in 0.3): five new ones on the ladder (MOOG BASS, MOOG LEAD, LADDER PAD, MINI BASS, MINI LEAD), sixteen on WAVE, eight on ACID, eight on STRINGS, twelve on MACRO. 17 engines.

What is left to do

Clipper 1.1 is experimental. What it needs most, roughly in order:

  • Testing on the device. Everything new in 1.0 and 1.1 was measured on a computer only. The CPU load on the FM-1 (SPREAD, SHIMMER, 8 voices on both cores; 12 and 16 voices), the flash and RAM of the real build, clicks or crackles that only the hardware shows, the storage of user presets after a power cut: all of it has to be checked on real units.
  • More room for your own sounds. The FM6 / FMX patch bank holds 27 patches, not even one whole DX7 bank (32 voices). The flash freed by the samples and the projects (about 300 KB) could hold 32 banks of 32 voices; the format, the editor page and the way to pick them on the FM-1 are still to be built.
  • The sounds. The factory presets barely use what 1.0 added (the macros, LFO 3, ENV 2 LOOP, slots 7 to 12, PING / TAPE, HALL / SHIMMER). A sound-design pass on all 407 is due, and the macros should be tuned per engine.
  • The editor. It shows every parameter, but some things deserve a page of their own (a visual modulation matrix, a bank manager for SysEx). It has been used much less with 1.0's layout than with 0.9's.
  • Documentation. A real manual (each page of the FM-1, each engine), screenshots, short videos; the French and Japanese texts are incomplete.
  • Storage edges. A project's 1.0 values are kept only while its track 3 has no steps (the format is full); older sounds load with the 1.0 values at their defaults.
  • Feedback. Bugs, crashes (photograph the FELUCCA CRASH screen: it stays 10 s), stuck notes, sounds that are too loud or too quiet, controllers that behave oddly (MPE, CC 16 to 19): please report them in the Issues.

On the FM-1

HOME The synth screen: the sound's name, its family, its number in the list, the engine and a live scope. The four knobs play the sound's main controls (for HYBRID: CUT, RES, M1, M2).
PRESETS Every sound, one by one, factory and user presets. On the SAVE > PRESETS page, KNOB 2 filters the list by engine (ALL, an engine, USER).
FX pages FX (sends), FILTER (the sound's DJ filter and MODL, the filter model), INSERT, DLY, REVERB, CHORUS, EQ+COMP.
GLO pages GLOBAL (tempo, swing, CLICK the metronome, fine tune), MASTER (DUST, the master FILT), TUNING (the system and its root, for every sound), SYSTEM (MIDI, sync, and the CPU / LATE / PEAK readout).
ALGORITHM Jumps to the next family: PAD, BASS, LEAD, PLCK, KEYS, STAB, FX and the rest.
FX, SAVE A tap opens the pages. While one of them is held, the keys still play.
SEQ, SEL, EDIT, ARP, GLO Held, they are the sequencer's layers, as on SLOOP 2.7.2: SEQ the 16 steps on the keys (a step held: KNOB 1 its note, 2 its velocity, 3 ratchet, 4 nudge, PRESETS a lock), SEL the key and the chords, EDIT erase (a key: that note out of the pattern) with SHIFT, LENGTH x2 / half and TRANSPOSE on the knobs and OCT- / OCT+ undo / redo, ARP note repeat on the grid, GLO a fill (key 9 held), a fill bar (key 10), tap tempo (key 16) and the level. A tap opens their pages.
SEQ tapped: NOTES The pattern as a piano roll: KNOB 1 walks the notes (a chord's one by one), KNOB 2 the pitch, KNOB 3 the length, KNOB 4 the force (GHOST, SOFT, NORM, HARD, ACC); PRESETS zooms (8 to 64 steps); the keys or a MIDI keyboard write the step; EDIT tapped deletes the note; OCT+ held opens its sheet (SLIDE, NUDGE, FILL, MOVE, COPY, DELETE). MENU > SEQ > STEP ADVANCE OFF keeps the cursor where it is.
REC Records what you play into the pattern. Hold REC to clear the pattern.
MIDI GLO > MIDI: IN CH OMNI (every channel plays the synth, the default) or one channel, 1 to 16 (a KeyStep Pro or a DAW driving other gear on the other channels); OUT the channel the keys, arp and sequencer go out on; BEND the pitch bend range (AUTO, 1..24); LOCAL ON / OFF. GLO > MIDI 2: PROG (program changes load sounds), SEND (OFF, or CC: the knobs send their CCs), EWI (OFF, VOL: CC 2 breath is the volume, V+AT: and the aftertouch). With MPE on, every channel plays it; in MULTI, the layer keeps its own channel. Every message: docs/midi.md.

A SLOOP project loads with only its first track playing. The four-track groovebox is still in the code: building with CLIPPER_SYNTH=0 gives it back, and the tests use it.

HYBRID, the Clipper voice

3 oscillators Each one is SAW, PULSE (width), TRI, SINE (with feedback), MORPH (sine → tri → saw → square), SUPER (seven detuned saws), FM (phase-modulated by the oscillator before it), SYNC (hard sync to osc 1), FOLD (wavefolder) or NOISE (with colour). Each has coarse ±48 semitones, fine, level and shape, and can restart at each note or keep a fixed pitch.
Mix Ring modulation of osc 1 × osc 2, analog drift (per voice and per oscillator), drive.
2 filters LP12, LP24, BP, HP, NOTCH, PEAK. They run in series, in parallel (with a balance) or split (osc 1 into F1, osc 2 and 3 into F2). Each has an envelope amount, keyboard tracking and velocity.
Modulation Per voice: ENV2 and ENV3 (ADSR) and LFO2 and LFO3 (6 waves, free or key-synced, tempo-synced from 1/32 to 8 bars, fade-in), on top of the sound's amplitude ADSR and LFO1.
Matrix 16 slots of source × via × amount → destination. Sources: ENV2, ENV3, AENV, LFO1-3, velocity, key, mod wheel, aftertouch (channel or per note), bend, expression, a random value per note, the macros M1-M4. Destinations: pitch (all or per oscillator), shapes, levels, ring, cutoff (both or each), resonances, drive, amplitude, the LFO rates, filter balance.
On the FM-1 EDIT shows CUT, RES and FENV (offsets on both filters), PTCH (the factory patch), and M1-M4: four macros whose effect each patch decides.
In the editor Every value above, live while you play. Patches export and import as .clipper.json.
27 factory patches, 32 sounds CLIPPER, POLY PAD, STRINGS, ACID, SYNC LEAD, FM BELL, FM KEYS, WOBBLE, REESE, HOOVER, BRASS, VOX, PLUCK, RISER, METAL, FOLD BASS, CHIP LEAD, GLASS PAD, DRONE, 808 SUB, TRANCE, SAW PLUCK, SPACE BEL, INIT, MOOG BASS, MOOG LEAD, LADDER PAD; five more sounds play them with their own macros (CLIP WIDE, DARK PAD, ACID HARD, BRIGHT BEL, SOFT SYNC). They are level-matched with every other sound and sorted into the PRESETS list by kind.

Playing it from a controller (new in Clipper, every engine)

Pitch bend (±2 semitones, or the HYBRID patch's own range up to ±24), mod wheel (CC 1), expression (CC 11), sustain pedal (CC 64), channel and polyphonic aftertouch, and the macros on CC 16-19 (HYBRID: M1-M4; every other engine: BRITE, TIMBR, MOTN, SPACE). SLOOP's CC map (7, 10, 71-75, 91, 93, 94) still works.

Install and test

Without building anything: open the installer page in Chrome or Edge with the FM-1 on USB, make a backup with the editor first, then click Install. The firmware package is also attached to each release.

From the source: on Windows, see QUICKSTART.md (in French: DEMARRAGE-RAPIDE-FR.md): INSTALL-CLIPPER.bat builds the firmware and opens the installer at http://localhost:8767 (SLOOP uses 8766, so the two never get mixed up). Elsewhere, see BUILDING.md.

Projects, user presets, samples and settings stay in the same flash places as SLOOP's. Going from SLOOP to Clipper keeps them; a sound on HYBRID plays another engine if you go back to SLOOP.

Polyphony

The voices are a build option: 8 (the default, as SLOOP), 12 or 16 (INSTALL-CLIPPER.bat 12). Since 0.7 the second core renders half of a sound's voices (MENU → SYS → 2ND CORE), which is what 12 or 16 voices need. The host measurements put a typical HYBRID voice at about 2.5 % of the FM-1's CPU and the heaviest factory patch (CLIPPER, two SUPERs) at about 6.6 %. GLO → SYSTEM → CPU shows the real load on the device: those readings decide the default.

Tests

HOST_ONLY=1 tests/run_tests.sh runs everything that does not need the JieLi toolchain (1.1: the SLOOP 2.7.2 sequencer, every MIDI message, the effects sweep (a sine through every effect at its extremes); 1.0: SPREAD, the 12 slots, LFO 3, ENV 2 LOOP, the macros, HALL / SHIMMER, PING / TAPE, the stores' tail, the voices on both cores with SPREAD, and the click test of 55 cases; 0.9: the filter models, VINTAGE, the TUNING, TURNG; 0.8: JUNO and its chorus, VECTOR, the MOD SEQ, SPICE / DICE, their pages; 0.7: the voices on both cores in every mode of the host double of core 1, and under ThreadSanitizer; UNDO, COMPARE, FAV, KBD HOLD): the synth mode (HOME, presets, keys, pages, one instrument, MIDI omni), the HYBRID tests (the pitch of every oscillator, the filters, the matrix, the controllers, 300 random patches, the cost per voice), the editor's commands, golden renders of every sound, ASan and UBSan, a soak test, and the web pages.

Credits

  • Felucca by Leo Kuroshita (@kurogedelic) / Hügelton Instruments: the platform, the engines, the editor and the installer.
  • The second core (0.7): its HAL (firmware/hal/fm1_cpu1.{h,S}) is Charles Vestal's (X0X), after Kerem Kilic's Melodee; brought to SLOOP by Andre Rezemini (sloop-lab, cpu1.c, tests/cpu1_host.c); 2.7.1's hold with the bus traps off after Felucca 1.6.1. Clipper's voice split is its own.
  • Knob acceleration, LEVEL / PAN glide (0.7): after JIANT FM by juanjiant-bit, through SLOOP 2.7.
  • SLOOP by 3dSam: everything Clipper starts from. Its manuals are in docs/sloop.
  • Ideas, not code: the JUNO after Roland's Juno-6 / 60 / 106, VECTOR after the Sequential Prophet VS and the Korg Wavestation, FMX after the Korg opsix, WSEQ after the Wavestation, MACRO after Mutable Instruments Plaits, the filter models after the Korg MS-20, the Oberheim SEM and the diode ladders, TURNG after Music Thing Modular's Turing Machine, SPICE / DICE after the Arturia MicroFreak; .scl is Manuel Op de Coul's Scala format. All of it is Clipper's own code.
  • The supersaw follows Adam Szabo's analysis of the JP-8000. The FM6 engine is msfa (Dexed), and PHYS comes from DaisySP and Mutable Instruments Rings: see LICENSING.md.

M-VAVE, FM-1 and the other product names in this file are trademarks of their respective owners. Clipper is not affiliated with them.

About

Clipper: an experimental synthesizer firmware for the M-VAVE FM-1 (from SLOOP, based on Felucca)

Resources

Stars

55 stars

Watchers

2 watching

Forks

Releases

Packages

Contributors

Languages