mvave-tankg-ble
Control an M-Vave Tank-G multi-effects guitar pedal over Bluetooth LE.
The pedal speaks BLE-MIDI: presets are switched with a MIDI Program Change on channel 0, over the standard BLE-MIDI characteristic. This library is the pure Bluetooth layer — discovery, the command frames, and an async device class — with no Home Assistant dependency. It powers the Home Assistant integration.
Install
pip install mvave-tankg-ble
Usage
import asyncio
from mvave_tankg_ble import TankG, discover
async def main():
devices = await discover(timeout=5.0)
if not devices:
print("No Tank-G found.")
return
async with TankG(devices[0]) as pedal:
await pedal.set_preset(12) # UI preset 1-36
asyncio.run(main())
TankG accepts a bleak BLEDevice (preferred — e.g. from Home Assistant's shared
scanner or a Bluetooth proxy) or a string MAC/UUID address.
API
| Symbol | Description |
|---|---|
TankG(device) |
Async device wrapper. Use as an async context manager. |
await pedal.set_preset(n) |
Switch to UI preset n (1–36). |
await pedal.send_program_change(program, channel=0) |
Raw MIDI Program Change. |
await discover(timeout=5.0) |
List nearby Tank-G pedals (list[BLEDevice]). |
program_change_frame(program, channel=0) |
Build the raw BLE-MIDI frame. |
preset_to_program(preset) |
UI preset (1–36) → MIDI program (0–35). |
program_to_bank_position(program) |
Program → (bank, "A"/"B"/"C"/"D"). |
CLI
mvave-tankg scan # list nearby pedals
mvave-tankg preset 12 # switch to preset 12 (scans first)
mvave-tankg preset 12 --address AA:BB:CC:DD:EE:FF
Scope & limitations
- Presets only. The pedal exposes a proprietary Cuvave service (
0xAE40) the official app uses for LED colour and other settings; that protocol is not reverse-engineered, so it isn't supported here. - No battery. The Tank-G doesn't report battery over BLE (the official app shows none) — only the physical "L"/"LO" display warning and the charge LED.
- Presets are one-way. The pedal doesn't report its current preset, so there's no read-back.
License
MIT © Hudson Brendon
Metadata
Release files for mvave-tankg-ble 0.1.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 | Provenance | Actions |
|---|---|---|---|---|
| mvave_tankg_ble-0.1.0.tar.gz | 123.8 kB | Without provenance | Details for mvave_tankg_ble-0.1.0.tar.gz |
Built distribution (wheel)
| File | Interpreter | ABI | Platform | Actions Reset |
|---|---|---|---|---|
| mvave_tankg_ble-0.1.0-py3-none-any.whl | Python 3 | none | any | Details for mvave_tankg_ble-0.1.0-py3-none-any.whl |
Total release size: 131.7 kB
Release files / mvave_tankg_ble-0.1.0.tar.gz
| Download URL | mvave_tankg_ble-0.1.0.tar.gz |
|---|---|
| Size | 123.8 kB |
| Tags | Source |
|
SHA-256 checksum How to use checksums |
09e72417113d374850faca091acaed07f5a4021ee4af970f69077f70aaf475df
|
|
BLAKE2b-256 checksum How to use checksums |
0bdabb79753cb32895f2d7c2f52168ee742801600a19b0dacf25aa4a971264d8
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
No |
| Uploaded via |
twine/6.2.0 CPython/3.13.5
|
Release files / mvave_tankg_ble-0.1.0-py3-none-any.whl
| Download URL | mvave_tankg_ble-0.1.0-py3-none-any.whl |
|---|---|
| Size | 8.0 kB |
| Tags | Python 3 |
|
SHA-256 checksum How to use checksums |
3a71bb0958d641541c722749410da173b66aee7068cb374a392c3e3933e6075d
|
|
BLAKE2b-256 checksum How to use checksums |
b27dba71de8990ebd39c163ffe40f2f1d4d42e88b9537227f357c39f610c0fd4
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
No |
| Uploaded via |
twine/6.2.0 CPython/3.13.5
|
Security for mvave-tankg-ble 0.1.0
Provenance
Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.
No provenance found
None of the files in this release were uploaded with provenance metadata.
A note on package security
PyPI is a repository for distributing packages, not a service for auditing them. While third-party security researchers and our staff do their best to detect and remove malicious packages, PyPI cannot guarantee the quality, security or suitability of any given package.
To learn more about protecting yourself from malicious actors, visit our package security documentation.