Skip to content

Instantly share code, notes, and snippets.

@michaelforney
Created February 23, 2024 07:38
Show Gist options
  • Save michaelforney/d3a2790bb5f8cbcb1c931eabb50b5f20 to your computer and use it in GitHub Desktop.
Save michaelforney/d3a2790bb5f8cbcb1c931eabb50b5f20 to your computer and use it in GitHub Desktop.

Overview

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.

MIDI System Exclusive packet format

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]

Protocol message format

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) |

Flash clear block (0x21)

Payload format:

| 0 | Flash type (0x01) | | 1:4 | Address |

The block at the given address is cleared, setting each byte to 0xFF.

Flash read (0x23)

Payload format:

| 0 | Flash type (0x01) | | 1:4 | Address (little endian) | | 5:7 | Length |

It seems that the flash type is always 1.

Flash layout

info page: 0x294 * 2 + 8 = 0x530 = 0x3f1 + 0x1f3

first byte - some kind of chain? multiply by 0xba

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment