Linux desktop app for the Casio WU-BT10 Bluetooth MIDI adapter. It talks to the piano with the same private SysEx that Casio MUSIC SPACE uses, so you can start the metronome, change tones, and tweak effects without the phone app.
It was tested only with a Casio Privia PX-S1100 (WU-BT10 MIDI at 50:5E:5C:AD:54:3B). Other Privia / CDP / AP models that use MUSIC SPACE may work, but that has not been tried.
Connection
- Connects to WU-BT10 MIDI (BLE MIDI). That is a different Bluetooth address from WU-BT10 AUDIO (A2DP).
- Auto-connects on launch if the adapter is already on ALSA or the MIDI device is advertising.
- Connect WU-BT10 scans and connects if the piano was off when the app started.
Metronome
- Start / stop. Space toggles while the window is focused.
- Tempo 20–255 BPM (reset 120).
- Beat 0–9 (default 4).
- Volume 0–42 (reset 25 on the PX-S1100 that was used for capture).
Tone (Upper 1)
- The 17 full-keyboard tones on the PX-S1100 sheet: Grand Piano Concert through Elec. Organ 2.
- Bass (Lower only) is not on this list. Layer and split were not captured.
Effects
- Hall on/off, type (Standard / Opera / Berlin / British Stadium), depth 0–42 (reset 21).
- Surround on/off and type 1–2.
- Chorus: Off plus Chorus 1–4.
- Brilliance −3…+3 (reset 0).
The window keeps Connect and status at the top. Metronome, Tone, and Effects sit below and scroll if needed.
- Piano powered on, WU-BT10 plugged in.
- MUSIC SPACE closed. It holds BLE MIDI exclusively. If the phone app is connected, this app cannot send, and if this app holds MIDI, MUSIC SPACE can freeze.
- Linux with Qt 6 (Widgets + DBus), ALSA sequencer, and BlueZ.
- PipeWire / WirePlumber BLE MIDI so the ALSA port
WU-BT10 MIDI Bluetoothappears after a Bluetooth connect.
A standalone Linux build (Qt bundled) is on the GitHub releases page as piano-controls-*-x86_64.AppImage. Make it executable and run it; ALSA and BlueZ still come from the system.
cmake -S . -B build -DCMAKE_BUILD_TYPE=Release
cmake --build build
./build/piano-controlsOmarchy is Arch-based, so this ships as a normal Arch package (PKGBUILD in this repo).
makepkg -siThat installs /usr/bin/piano-controls, a desktop entry, and an icon.
Runtime depends: qt6-base, alsa-lib, bluez. PipeWire / WirePlumber is needed for the BLE MIDI ALSA port.
Commands are Casio’s 17-byte SysEx frame, not standard CC/PC. Encoding lives in src/CasioProtocol.cpp. Byte-level tables and captures are in data/COMMANDS.md.
MIT. See LICENSE.
