YAML-based live configuration of MicroFreak datyoma.tngl.io/mfctl
microfreak

Files
README.md

mfctl #

Like kubectl but for your MicroFreak synth.

Usage #

Live state editing #

  • mfctl get dumps your live controls as a YAML file
  • mfctl apply <yaml> applies it to the live state

The YAML has an optional metadata section and equally optional apiVersion/kind just for fun; spec, however, is mandatory. Here's a basic example:

metadata:
  name: MyAwesomePatch
spec:
  oscillator:
    type: Modal
    decay: 30
  filter:
    cutoffHz: 1000
    resonance: 40

mfctl apply translates this patch into sysex incantations that are specific to firmware v5 - hence apiVersion: microfreak/v5 is the only acceptable one, and you might want to add it to the top.

mfctl get does not read your current preset - it reads the live values; hence it won't tell you the preset name nor the sequence tracks (metadata will be empty), but the whole control panel is covered.

Format conversion #

mfctl can also convert back and forth between YAML and .mbp (Arturia) formats

  • mfctl import <file.mbp> outputs YAML to stdout
  • mfctl export <file.yaml> outputs .mbp (Boost serialization format) to stdout

Miscellaneous #

  • mfctl schema dumps a JSON schema that you can use e.g. for autocompletion with yaml-language-server
  • mfctl validate <file.yaml> validates the patch without applying it

Acknowledgements #

Elektroid is an excellent tool for preset/wavetable management. It uses a completely different set of sysex opcodes that deals with permanent storage. Its existence is why mfctl scope can stay deliberately small.

Ghidra, Unicorn and, for SysEx parser, also angr are the tools that were used to decipher the firmware - by LLMs of course, which have become amazing at this recently.

License #

This project is MIT-licensed - just like the Plaits oscillator engines' code.

If you want to express your gratitude, https://ko-fi.com/datyoma is the right address.