Firmware

synthesthetic

Loud86/100

Turns the M-VAVE FM-1 and SMK-37 into an audio/video synth. It's the first firmware for them that sends video over USB, so the instrument shows up as a camera in OBS, Zoom and FaceTime.

synthesthetic is custom firmware for the M-VAVE FM-1, by @michaeljsmalley. Open source under GPL-3.0, 2 stars on GitHub.

forM-VAVE FM-1·by@michaeljsmalley

Unclaimed. Is this yours? Sign in with GitHub as @michaeljsmalley to claim it.

Downloads
0
Stars
2
Fork
1
Commits
76
Last commit
Download v0.3-beta

Betasynthesthetic-0.3.fwsc· 596 KB· +4 files

GPL-3.0· michaeljsmalley/synthesthetic·michaeljsmalley.github.io/synthesthetic/·downloads come from the creator’s GitHub releases

70
Commits
3
Releases
70 commits and 3 releases in the last year
Activity · last 12 months

Synthesthetic

Synthesthetic

Synthesthetic turns the M-VAVE FM-1 and the M-Vave SMK-37 into an audio/video synth. It's the first firmware for them that sends video to a computer over USB. Plug the instrument in, choose it from the camera list in OBS, Zoom, FaceTime or another video app, and you'll see 30 visualizers that react to your music. There's no camera in either. It's in that list because a USB camera is the standard way to get video onto a computer, so you don't need a driver or capture card. The video is UVC, MJPEG, 320 × 240 at 30 fps.

The FM-1 is still the same four-track groovebox, with its synth engines, sequencer and drum machine, and the visuals play on its own screen too. On the SMK-37 the same groovebox gets the keyboard's velocity, pads, faders and wheels, with a VISUAL fader bank for the visualizer; SMK37.md has the controls. MIDI, audio and video share the one USB cable, and firmware updates still go over USB-MIDI.

Synthesthetic is based on SLOOP 2.8.3 by isod89, which is based on Felucca by Leo Kuroshita of Hügelton Instruments. It's licensed under the GPL-3.0-only (see LICENSING.md). The instrument itself, meaning the engines, sequencer, drums and web editor, comes from SLOOP. The visualizers, USB video and the video core are new in Synthesthetic.

Features

  • 31 visual modes, all drawn from the sound by the FM-1's second core. There are classic scopes and spectrum displays (WAVE, BARS, HEAT, XY, METERS), geometric patterns (RING, SPIRAL, GRID, TUNNEL, MIRROR, STARS, ORBITS, MOIRE), drum-reactive shapes (KIT, SQUARES, SHARDS), and 14 procedural modes built on a Milkdrop-style feedback engine and demoscene effects (WARP, VORTEX, RIPPLE, KALEIDO, MELT, SMOKE, WORMHOLE, PLASMA, FIRE, RIDGES, LAVA, CELLS, WIREFRAME, FRESNEL).
  • SCREEN mode, which sends the FM-1's own display as the video so you can stream a set or a tutorial.
  • Nine palettes with color cycling, and a short fade between modes.
  • An autopilot that picks a new mode, variation and palette every 4, 8, 16 or 32 bars.
  • Controls modeled on the Critter & Guitari EYESY. SELECT picks the mode, PRESETS the palette and ALGORITHM the autopilot, and knobs 1 to 4 are AMOUNT, RATE, TRAILS and COLOR. Tap HOME on the TRACKS screen to open the visualizer. The video shows the same picture either way, and attract mode opens the visualizer after a minute without input.
  • USB-MIDI on endpoint 1, a 16-bit 44.1 kHz stereo audio input on endpoint 3, and 320 × 240 MJPEG video at 30 fps on endpoint 4, all on one cable. The camera's brightness, saturation, contrast and hue controls work as the four knobs, an overlay can show the tempo, the bar and a title, and the visuals have their own MIDI channel.
  • A VJ page in the web editor for every visual setting, and a title overlay setting on the installer page.

Installing

The easiest way is the web installer in Chrome or Edge. To install from a terminal on an FM-1 running official V15, Dinghy or SLOOP, download the .fwsc file from the releases page and run python3 tools/fm1_install.py synthesthetic-0.2.fwsc. If the FM-1 runs any other firmware, go back to official V15 with M-UPGRADE first, as with every Felucca-based firmware.

If something goes wrong, hold OCT− while switching on to open the USB rescue updater. It also opens by itself after two crashes at startup. The handbook's Recovery and safety section has the full recovery steps, and DEVELOPMENT.md lists the rules to follow before you change USB, flash or boot code.

M-Vave SMK-37: see SMK-37 instructions.

Building

AC79_SDK=$PWD/vendor/ac79-sdk-min JIELI_TOOLCHAIN=$HOME/.jieli/toolchain FELUCCA_UVC=1 sh build.sh
BOARD=smk37 MODEL=elite FELUCCA_UVC=1 sh build.sh     # the SMK-37 (MODEL pro, elite or mke): build/felucca-smk37-elite.fwsc

The JieLi toolchain runs in Docker (linux/amd64). FELUCCA_UVC=1 adds USB video. Without it you get the audio-only build, the same as SLOOP. Run sh tests/run_tests.sh to test the instrument and sh tests/run_video_tests.sh to test the JPEG encoder, the visualizer and the UVC function. DEVELOPMENT.md describes the tools in tools/ and how the firmware works.

Documentation

  • HANDBOOK.md covers installing and using Synthesthetic. It's also on the website.
  • DEVELOPMENT.md covers how it works inside, building and testing.
  • docs/upstream-sloop/GUIDE.md is SLOOP's manual. It covers the instrument, although its visualizer section no longer applies.
  • UPSTREAM.md lists what's different from SLOOP, file by file.