Functional system · Active development2026

PLUTO Piano Brain

Interactive MIDI learning and visualization system

Role

Product Design · Hardware · Firmware · Backend · UI

01

Project overview

I transformed a Roland digital piano into a networked learning and visualization instrument using a Raspberry Pi, ESP32, touch display and a calibrated LED system mapped to all 88 keys.

Live USB MIDI is processed by a Python service and distributed over WebSockets. Played notes illuminate immediately, while MIDI playback visualizes upcoming notes across the keyboard for a piano-roll-style learning experience.

The system runs independently without a laptop. A dedicated touch interface provides the MIDI library, search, playback controls and system status, while the wider RediON²⁶ platform can monitor and control it.

02

Real project media

Real photographs and screenshots for this project will be added here.

03

System architecture

Roland Digital Piano

USB MIDI source

Raspberry Pi

Python MIDI · Library · WebSocket API

ESP32 · 196 LEDs

Low-latency calibrated lighting

7-inch Touch UI · RediON²⁶

Control and visualization

04

Project status

Built

  • USB MIDI capture from Roland
  • Raspberry Pi Python service
  • Real-time WebSocket communication
  • Precise 88-key LED mapping
  • MIDI search and playback
  • Chromium kiosk interface
  • Automatic startup with systemd

In active development

  • Interactive lesson scenes
  • Improved sheet-music interface
  • Home Assistant entities
  • Expanded piano-library controls

Planned

  • Piano learning games
  • Adaptive AI lessons
  • Wall-mounted EQ visualizer
  • Family and multiplayer profiles

05

Engineering decisions

Why Raspberry Pi instead of only ESP32?

The Roland needs a real USB-MIDI host, ALSA support, persistent services, local storage and HDMI output—responsibilities better suited to Linux.

Why a separate LED controller?

The ESP32 provides predictable low-latency LED updates while the Pi remains focused on MIDI processing, library management and orchestration.

Why WebSockets?

One real-time event stream can drive the LED controller, touch interface, RediON²⁶ dashboard and future visualizers without duplicating protocols.

06

Challenges solved

  • 01Keeping MIDI playback alive when the UI refreshes
  • 02Physically calibrating LEDs to all 88 keys
  • 03Powering the LED system separately and safely
  • 04Starting all services reliably with systemd
  • 05Keeping frontend builds away from the limited Raspberry Pi
  • 06Using one real-time protocol across multiple consumers

07

Technology stack

Hardware

  • Roland Piano
  • Raspberry Pi
  • ESP32
  • 196 WS2812 LEDs
  • 7-inch HDMI Touch Display

Firmware

  • C++
  • PlatformIO
  • FastLED
  • Arduino-ESP32

Backend & services

  • Python
  • ALSA MIDI
  • python-rtmidi
  • asyncio
  • WebSockets
  • systemd

Interface

  • Next.js
  • TypeScript
  • Chromium Kiosk

08

What it demonstrates

PLUTO Piano Brain demonstrates my ability to engineer a complete embedded product across hardware, firmware, Linux services, networking, real-time protocols and user-interface development.