The M-VAVE/CUVAVE Looper Pro (also branded by Lekato) is an affordable looper pedal for guitar. I got mine on AliExpress for $30.
It supports 9 loop slots, up to a total of 40 minutes of recording, and a maximum of 10 minutes per slot. It also has a USB port, which can be used to upload, download, or delete loop slots. Communication with the device is done over MIDI through the exchange of System Exclusive messages.
This document aims to describe the protocol based on dumps of messages exchanged between the device and the official CubeSuite software.
In general, SysEx messages begin with F0 and end with F7, with any number of bytes less than 0x80 in between.
Protocol messages are wrapped in a SysEx message by considering it as one large little-endian number, and representing it as base-128. Each base-128 digit goes into its own byte. For example, consider the message [12 34 AB CD].
[12 34 AB CD]
0xCDAB3412
11001101101010110011010000010010
1100 1101101 0101100 1101000 0010010
0x0C 0x6D 0x2C 0x68 0x12
[F0 12 68 2C 6D 0C F7]
In general, messages have the following format:
| 0:1 | 0x00 0x59 | | 2 | Command (query=0x11, read=0x23, clear=0x21) | | 3:5 | Payload length | | 6:6+len(payload) | Payload | | 6+len(payload)+1 | Checksum (bitwise negation of sum of payload bytes) |
Payload format:
| 0 | Flash type (0x01) | | 1:4 | Address |
The block at the given address is cleared, setting each byte to 0xFF.
Payload format:
| 0 | Flash type (0x01) | | 1:4 | Address (little endian) | | 5:7 | Length |
It seems that the flash type is always 1.
info page: 0x294 * 2 + 8 = 0x530 = 0x3f1 + 0x1f3
first byte - some kind of chain? multiply by 0xba