mftd
A thin, adaptable API for programatically configuring Midi Fighter Twister midi controllers, and integrating them in Touch Designer projects.
Firmware support
0.3.0 and later target the 2026 firmware (build 2026-06-01 or newer — the
Midi Fighter Utility gates the same behaviour on fw_version >= 0x20230c11).
That release renumbered two enums by insertion, so running 0.3.0 against older firmware fails silently rather than loudly — the stale value selects a different, valid function:
| Value | Pre-2026 meaning | 2026 meaning |
|---|---|---|
EncoderSwitchActionType 6 |
Shift Encoder (Hold) | Encoder Fine Adjust |
SideSwitchAction 12 |
Cycle Bank | Bank 2 |
Use 0.2.0 for pre-2026 firmware. 0.3.0 also adds device config addresses
33–38 (colour map, animation channels, sleep timer and animation, bank change
animations), which older firmware does not report — get_device_config()
raises on a response missing any declared address.
Build
Generate inlined source using inline-importer:
# Prepare destination
rm -f dist/mftd.py
mkdir -p dist
# Build
inline-python -p mftd -e mftd/__init__.py -o dist/mftd.py
Touch Designer Usage
When running inside TouchDesigner the library uses a midioutCHOP named midiOut to communicate with the Midi Fighter Twister. The library will create this operator if it is missing.
Release files for mftd 0.3.0
For a detailed explanation of source distributions (sdists) and built distributions (wheels), please see the package formats documentation.
Source distribution (sdist)
| File | Size | Uploaded | |
|---|---|---|---|
| mftd-0.3.0.tar.gz | 28.9 kB | Details |
Built distribution (wheel)
| File | Interpreter | ABI | Platform | Reset |
|---|---|---|---|---|
| mftd-0.3.0-py3-none-any.whl | Python 3 | none | any | Details |
Total release size: 58.7 kB
Release files / mftd-0.3.0.tar.gz
| Download URL | mftd-0.3.0.tar.gz |
|---|---|
| Size | 28.9 kB |
| Tags | Source |
|
SHA-256 checksum How to use checksums |
a62fe924119e807964fe6ccde07ddc1eb6b2c9b31a091187e550a4a211ea677e
|
|
BLAKE2b-256 checksum How to use checksums |
966c4e37bb0fb15abe65fe14997a5104455891dc4f53299ff2bcb2b72081b94c
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
No |
| Uploaded via |
uv/0.12.17 {"installer":{"name":"uv","version":"0.12.17","subcommand":["publish"]},"python":null,"implementation":{"name":null,"version":null},"distro":{"name":"macOS","version":null,"id":null,"libc":null},"system":{"name":null,"release":null},"cpu":null,"openssl_version":null,"setuptools_version":null,"rustc_version":null,"ci":null}
|
Release files / mftd-0.3.0-py3-none-any.whl
| Download URL | mftd-0.3.0-py3-none-any.whl |
|---|---|
| Size | 29.9 kB |
| Tags | Python 3 |
|
SHA-256 checksum How to use checksums |
6a8bdea21e9bba0047082e813123913aac0796b3a237ab57f6c7770c2e1e24e6
|
|
BLAKE2b-256 checksum How to use checksums |
1404cd8cb4808c9a66930590cd2d4553f2485d9d8d0cb464c763ff27d374a95e
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
No |
| Uploaded via |
uv/0.12.17 {"installer":{"name":"uv","version":"0.12.17","subcommand":["publish"]},"python":null,"implementation":{"name":null,"version":null},"distro":{"name":"macOS","version":null,"id":null,"libc":null},"system":{"name":null,"release":null},"cpu":null,"openssl_version":null,"setuptools_version":null,"rustc_version":null,"ci":null}
|