An analog-style monosynth that runs natively inside MPC on the Akai Force.
SubForce is a VST2 instrument for MPC OS's built-in plugin host, with its own touchscreen pages and Q-Link sets. It tips its hat to a classic 37-key American paraphonic analog monosynth (the original in these docs), built on the same plugin groundwork as its sibling PolyForce. The name, DSP and presets are all SubForce's own.
Note
Preview (0.0.x). The engine, plugin, touchscreen pages and factory presets are complete and
pass the full test suite on x86 and under ARM emulation. On a Force (MPC OS 3.9) the 0.0.5 release
installs and plays, at about 3% of a block (tested.json). The parameter list may
still change before v0.1: sounds are saved by name and survive that,
but recorded automation (stored by parameter index) could then move a different control.
The FILTER page, rendered offline from the skin (on the device MPC fills in the values).
- Two oscillators with a continuously variable wave (triangle → saw → square → narrow pulse), 32' to 2', hard sync, a square sub oscillator (−1 or −2 octaves) and noise (white, pink or dark)
- Analog: one knob from ideal to a real unit's habits — drift, cycle-to-cycle jitter, slightly imperfect wave shapes, every note a little different, and every instance its own instrument
- Mixer with feedback — the mixer's output back into it, as on the original: thicker, then gritty, then the chaos of an overdriven loop — and the classic habit of overdriving the filter when the levels are high
- 4-pole transistor ladder filter: 6, 12, 18 or 24 dB, resonance self-oscillating past 70% of the knob, the ladder's bass loss, Multidrive (asymmetric, tube-like warmth to hard clipping), keyboard tracking up to 200%
- Two DAHDSR envelopes (filter, amp) with a linear or exponential attack, velocity, keyboard tracking, reset, latch, sync to MPC's tempo, and a loop that runs through the release as the original's does
- Two mod busses: eight LFO shapes, the envelopes, velocity, pressure, the key or a constant, free, locked to MPC's tempo or in Hi range up to 1 kHz (audio-rate FM, filter FM and ring modulation, worked out every sample; key-tracked for harmonic FM), to pitch, cutoff and one of 19 more destinations (the envelopes' and glide's times among them), their depth from the mod wheel, velocity and pressure
- Beat Freq: oscillator 2 detuned by up to ±3.5 Hz, beating at the same rate on every note
- Mono or Duo (each oscillator its own key: by priority, the highest and lowest, or oscillator 2 as a drone), note priority, single or multi trigger, glide (rate, time or exponential; gated or not), the bend on either oscillator
- Band-limited and oversampled: polyBLEP oscillators and the whole voice at 2× (88.2 kHz) with a halfband decimator; worst aliasing −53 dB up to C7, hard sync −65 dB
- 108 factory presets in 7 categories, level-matched, most of them for melodic techno (rolling basslines, resonant sequences, big leads, and a melodic set of plucks, stabs, arps and pads); user presets, favorites, a browser, Init and Randomize
- Light on the CPU: one voice, about 2.9% of a block on the Force (4.3% with everything on), with NEON where the work is parallel
Effects are deliberately left out: use MPC's insert effects on the track.
From source, on Linux or WSL: make demos renders every factory preset and a filter sweep through
the plugin's own entry points into build/demos-out/ (WAV, and all of them back to back as
tour.wav), the way MPC plays it — no device needed.
| Document | What's in it |
|---|---|
| User guide | The pages, the sound engine, presets, melodic techno, MIDI |
| Building | Toolchain, make targets, tests, device bench, packaging, release builds |
| Architecture | Source layout, the signal path, threads and real-time rules, saved state |
| Performance | CPU budget, measurements, the DSP's measured quality |
| Roadmap | What's done, what's next, decisions |
| Changelog | What changed in each release |
- An Akai Force. Other first-generation (32-bit ARM) MPC OS devices may work but are untested.
- Root SSH access to the device (for example through MockbaMod). Stock MPC OS has no way to install third-party plugins.
- MPC OS 3.x (tested on 3.9). Release builds use glibc symbols up to 2.27 only, but they also
need GCC 11's libstdc++ (
GLIBCXX_3.4.29), and MPC OS 2.x doesn't draw third-party plugin pages: 2.x is untested. A local build with a newer cross toolchain needs glibc 2.38 (3.x only; see Building).
Download a release package (SubForce-<version>-mpc-armv7.zip) from
Releases, or build one with make plugin-package
(see Building). Unzip it and follow the INSTALL.md inside. In short:
scp -r SubForce-<version> root@<device-ip>:/tmp/
ssh -t root@<device-ip> sh /tmp/SubForce-<version>/install.shThe installer asks for confirmation (-y skips it), stops MPC (save your project first),
copies the plugin to /sdcard/Synths/Devko - VST - SubForce/, backs up and edits MPC.settings,
and starts MPC again. Running it again upgrades in place and keeps your own presets (in
Presets/User/ inside that folder) and favorites. Then add SubForce to a track from MPC's
instrument plugins.
To uninstall, run the package's uninstall.sh the same way: it stops MPC, removes the plugin and
its MPC.settings entry (after a backup) and starts MPC again; your own presets and favorites stay
in the plugin folder (delete it to remove them too).
On Linux or WSL (developed on Ubuntu 24.04):
make test # the full test suite under ASan/UBSan
make arm-plugin # build/arm/subforce.so for the device
make plugin-package # dist/SubForce-<version>-mpc-armv7.zipRelease packages come from CI (glibc 2.31, profile-guided, checked with the plugin catalog's own checker): see Building.
| Stage | |
|---|---|
| Phases 0 and 1 — engine, plugin, pages, 57 presets, tests, package, the original's behaviour | ✅ |
| Release build in CI (glibc 2.31, profile-guided, catalog-checked) | ✅ |
On the device: installs, loads and benches (make bench-device) |
✅ |
| 0.0.2 — the first regular release (in the plugin catalog, with a download) | ✅ |
| 0.0.3 — the original's modulation: Beat Freq, Hi range, more sources and destinations, depth amounts; 71 presets | ✅ |
| 0.0.4 — the rest of the original's manual: LFO key tracking, exponential attack, latch, EG sync, osc 2's keys and drone, gated glide, Bend To; 74 presets | ✅ |
| 0.0.5 — Analog: jitter, imperfect shapes, per-note and per-unit variation | ✅ |
| 0.0.6 — a review's fixes (EG Sync, glide and EG times, latch and MPC's stop, units, Pitch Bend source) | ✅ |
| 0.0.7 — Multidrive calibrated against recordings of the original: grittier at full | ✅ |
| 0.0.8 — the melodic set: 34 presets (108 in all) | ✅ |
| On the device: play every page | 🔜 |
| v0.1 — parameter list frozen (append-only from then on) | ⬜ |
Details in the roadmap.
SubForce is released under the MIT License. Third-party components keep their own licenses (below).
- Plugin groundwork (VST2 glue, touchscreen logic, preset library, build and bench tooling): PolyForce, MIT.
- The ladder's cheap nonlinear zero-delay solution: Teemu "mystran" Voipio's "cheap non-linear zero-delay filters" (KVR forum, 2012). The decimator's structure and coefficient formulas: Laurent de Soras's HIIR (WTFPL). Pink noise: Paul Kellet's "economy" filter.
- Skin generator, previews and installer:
sd88me/mpc-vst-plugins (MIT), vendored in
third_party/mpc-vst-pluginswith a few small, marked patches. - Interface font: Titillium Web, SIL Open
Font License 1.1 (
surface/fonts/OFL.txt).
SubForce is an independent project, not affiliated with or endorsed by Moog Music, Akai Professional / inMusic or Steinberg, nor by any artist named in its documentation. Akai, Force and MPC are trademarks of inMusic Brands; VST is a trademark of Steinberg Media Technologies GmbH.
