Skip to content

Releases: joakimeriksson/fm1-emu

fm1-emu 0.2.0

Choose a tag to compare

@github-actions github-actions released this 19 Oct 13:12
7856393

The first release of the whole emulator: the instrument plugin (AU, VST3, CLAP) as before,
and now also fm1-live, which plays a firmware in a window on your computer, for macOS and
Linux. The page, joakimeriksson.github.io/fm1-emu,
needs no download and is always the latest.

Downloads

File For
fm1-plugin-0.2.0-macos-arm64.zip The plugin: Macs with Apple silicon, macOS 11 or later. Its INSTALL.txt says where each file goes.
fm1-emu-0.2.0-macos-arm64.tar.gz fm1-live and fm1-emu, Macs with Apple silicon (with the JIT: the FM-1's real 240 MHz)
fm1-emu-0.2.0-linux-arm64.tar.gz fm1-live and fm1-emu, 64-bit ARM Linux (with the JIT, new in this release)
fm1-emu-0.2.0-linux-x86_64.tar.gz fm1-live and fm1-emu, x86-64 Linux (no JIT yet: interpreted, so the heavier firmwares may not keep real time; --mhz lowers the clock)

Windows, and a JIT for x86-64, are planned for the next release.

fm1-live plays a firmware package: ./fm1-live --fwsc felucca.fwsc. The packages: the
community firmwares on the FM-1 Firmware Hub (and the list on
the page, with each author's link), or M-VAVE's own FM-1.fwsc. The computer keyboard plays
the keys, and so does every MIDI input. On Linux it needs ALSA and X11:
sudo apt install libasound2 libx11-6 libxkbcommon0 libxcursor1 libxrandr2 libxi6 (Ubuntu 24.04
and later: libasound2t64 in place of libasound2). Each archive's README.txt has the rest.

Not signed: macOS blocks the downloads until you allow them. For the plugin, after copying
it (as INSTALL.txt says):

xattr -dr com.apple.quarantine ~/Library/Audio/Plug-Ins/Components/FM-1.component ~/Library/Audio/Plug-Ins/VST3/FM-1.vst3 ~/Library/Audio/Plug-Ins/CLAP/FM-1.clap

and for fm1-live, in its folder: xattr -d com.apple.quarantine fm1-live fm1-emu.

What's new since the plugin's 0.1.0

  • The plugin: a CPU clock setting (240 MHz by default; 120 to 400), and firmware saves that
    move between the plugin and the page (export one, load it in the other).
  • The page: it keeps your firmware and its flash between visits, with portable save backups;
    a new layout.
  • Sound fixes: FM-106's and DUELL's sound was wrong under the JIT (a carry bug; now the same as
    the interpreter's), and
    four instruction decoding fixes found by checking the decoder against the vendor's own
    disassembler (a wrong pointer step in word loads and stores, which Felucca, DUELL, JIANT and
    others contain; a wrong register in a byte load from the stack; a pre- / post-increment mix-up;
    a crash).
  • Faster: the Mac JIT chains code running from RAM, and the page's WebAssembly JIT compiles
    if/else blocks (X0X +46%).
  • For firmware authors: --flaky-core1 RATE makes the second core misread memory now and
    then, as on some units, to test a firmware's fallback to one core.

What's Changed

  • Decoder: 64-bit multiply-subtract fe e1/f1 at any operands; pair-op fallback heads by @fisherro in #5
  • Persist browser firmware and flash; add portable save backups by @joakimeriksson in #9
  • Load and export portable firmware saves in AU, VST3 and CLAP by @joakimeriksson in #10
  • Boot timeout test: wait for the hung boot's own timer by @joakimeriksson in #11
  • Page: a site header with the GitHub link, the synth beside its controls, a footer by @joakimeriksson in #12
  • Plugin: a CPU clock setting (240 MHz by default; 120 to 400) by @joakimeriksson in #13
  • A flaky core 1 (--flaky-core1 RATE --seed N), for testing single-core fallbacks by @fisherro in #6
  • JIT: keep an add careful when a later instruction reads its carry (fixes FM-106 audio) by @joakimeriksson in #14
  • Catalog: our own firmware list, appended to the Hub's by @joakimeriksson in #17
  • Decoder: fuzzed against the vendor objdump (#16); four decode fixes by @joakimeriksson in #18
  • JIT on 64-bit ARM Linux too by @joakimeriksson in #19
  • Release 0.2.0: one version and one release for the whole emulator by @joakimeriksson in #20

New Contributors

Full Changelog: plugin-v0.1.0...v0.2.0

FM-1 plugin 0.1.0 (AU, VST3, CLAP)

Choose a tag to compare

@github-actions github-actions released this 15 Oct 13:00

The M-VAVE FM-1 emulator as an instrument plugin: AU (Logic, GarageBand), VST3
(Ableton Live, Cubase, FL Studio, Reaper, Bitwig, Studio One…) and CLAP.

  • Load firmware… loads any .fwsc: the community firmwares
    (the list) or M-VAVE's own. An SMK-37 package
    gets the SMK-37's panel.
  • MIDI from the DAW plays it; the panel plays with the mouse. Master can be automated, and
    MIDI channel moves notes to one channel (M-VAVE's firmware listens on 2).
  • The project keeps the firmware and the patches it saves.
  • The emulator's lead over the DAW is reported as latency, so notes land where they were placed.

Download: fm1-plugin-0.1.0-macos-arm64.zip, for Macs with Apple silicon (macOS 11 or later). Its INSTALL.txt
says where each file goes.

This build is not signed with an Apple Developer ID, so macOS blocks it until it is
allowed. After copying the plug-ins, run once in Terminal:

xattr -dr com.apple.quarantine ~/Library/Audio/Plug-Ins/Components/FM-1.component ~/Library/Audio/Plug-Ins/VST3/FM-1.vst3 ~/Library/Audio/Plug-Ins/CLAP/FM-1.clap

It passes Apple's AU validator and Steinberg's VST3 validator. It has been tried in GarageBand
and Steinberg's VST3 test host. Problems with other DAWs:
issues.

MIT licensed, like everything it builds with (nih-plug, clap-wrapper, the CLAP, AudioUnit and
VST3 SDKs). The firmwares are their authors'.