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.4.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.4.0.tar.gz | 30.9 kB | Details |
Built distribution (wheel)
| File | Interpreter | ABI | Platform | Reset |
|---|---|---|---|---|
| mftd-0.4.0-py3-none-any.whl | Python 3 | none | any | Details |
Total release size: 62.8 kB
Release files / mftd-0.4.0.tar.gz
| Download URL | mftd-0.4.0.tar.gz |
|---|---|
| Size | 30.9 kB |
| Tags | Source |
|
SHA-256 checksum How to use checksums |
f87c227a28a9198cefb08767b6cb17b0852b18e42cd69d7ac20fb98ea67572b5
|
|
BLAKE2b-256 checksum How to use checksums |
656978e44a0ccb51c655523836032917e7e9b5ea450c5f7251ccd25b9e645841
|
| 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.4.0-py3-none-any.whl
| Download URL | mftd-0.4.0-py3-none-any.whl |
|---|---|
| Size | 31.9 kB |
| Tags | Python 3 |
|
SHA-256 checksum How to use checksums |
581990c5a5202d9edbc18c297f3b6ffb1f6e32046a8c861cf3de64483e1c16f0
|
|
BLAKE2b-256 checksum How to use checksums |
913a12a58fda7eb4d0e837005401fac3c68e19fbba4f9cfdc310de79364c46ae
|
| 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}
|