Skip to content
@melophos

MELOPHOS

Song made visible. Open instrument learning platform: light-guided practice, note capture and practice analytics you own.
MELOPHOS

Song made visible. An open instrument learning platform.

Documentation · Roadmap · Discussions · Contributing

Why MELOPHOS

I have monocular vision, which makes judging depth and scanning across a wide 88-key keyboard harder than it looks. Light-up keyboards helped, but every one I found was locked to one brand's app, one instrument and a subscription.

MELOPHOS is the tool I wanted: lights on a single flat line right where my hands are, any instrument I own now or later and my practice data kept on my own server.

The name

The name, pronounced MEL-oh-fos, joins two Greek words:

Part Root Meaning
MELO- mélos (μέλος) song or melody, the root behind melody
-PHOS phôs (φῶς) light, the root behind photon and photograph

Together they describe what the hub does: it turns the notes of a song into light you can follow, which is where the tagline comes from: song made visible.

MELOPHOS is the sister project of PHAEMOS, named the same way. The phos in MELOPHOS and the phaen- in PHAEMOS ("to reveal, to bring to light") go back to the same ancient root, meaning "to shine". One project brings failing machines to light, the other brings music to light.

How it works

flowchart LR
    INST["Keyboard or guitar"] -- "USB-MIDI, Bluetooth MIDI,<br/>MIDI jack or audio" --> HUB["Hub<br/>ESP32-S3"]
    HUB --> LED["LED bars<br/>above keys and frets"]
    HUB -- MQTT --> SRV["Server<br/>FastAPI"]
    SRV --> DB[("Postgres and<br/>TimescaleDB")]
    SRV <-->|HTTPS and WebSocket| STUDIO["Studio<br/>browser app"]
    SRV --> INT["Spotify, WLED,<br/>Home Assistant and webhooks"]
Loading

The hub sits behind the instrument, reads every note and lights the notes to play next. It sends each practice session to a server you host yourself, where a Rust scoring engine measures accuracy and timing. Studio, the browser app, holds the song library and shows your progress. The full picture is in docs/architecture.md.

What it does

  • Light-guided practice. LEDs above each key or along a fretboard show the next notes to play. Melody waits for the right note, Rhythm holds a set tempo and Listen plays the piece through.
  • Any instrument. Notes arrive over USB-MIDI, Bluetooth MIDI, MIDI jacks or an audio input. Each instrument is described by an open profile, so a new keyboard or a guitar is a configuration change rather than a rebuild.
  • Practice you can see. Every note is logged against a session and the server turns sessions into streaks, accuracy, tempo progress and per-key heatmaps.
  • Accessible by design. Guidance sits on one flat line, colour is never the only signal and timing cues are visual as well as audible.
  • Self-hosted. One docker compose command runs the whole server stack on a home server or a small VPS.
  • Open hardware and software. CERN-OHL-S boards and AGPL code, with every design file in the open.

Where it stands

Note

MELOPHOS is in early development. The scaffold for every component builds and tests clean. I am now bringing up the LEDs and MIDI input on the bench.

Milestone What it covers
v1: works on a real piano The hub and LED bars on a real piano, USB and Bluetooth MIDI, the three practice modes, the scoring engine and the first Studio
v2: platform Remote lessons over WebRTC, audio and video song import, a Spotify learn list, room lights and one-command installs
v3: any instrument Guitars through the fret bar, a fingering coach, an optical sensor bar for acoustic pianos and a kit for other builders

The written plan, with targets for each version, is in docs/roadmap.md.

Built with

Languages

C++ Rust Python TypeScript
C++ Rust Python TypeScript

Hub and hardware

ESP32 Arduino PlatformIO FastLED KiCad
ESP32 Arduino PlatformIO FastLED KiCad

Server and data

FastAPI PostgreSQL TimescaleDB MQTT Docker
FastAPI PostgreSQL TimescaleDB MQTT Docker

Studio

Vite WebAssembly Web MIDI Web Bluetooth
Vite WebAssembly Web MIDI Web Bluetooth

Instrument profiles

JSON
JSON
Layer Stack
Hub firmware C++ on the ESP32-S3 with PlatformIO and FastLED
Hardware KiCad schematics and PCB layouts
Scoring engine Rust, compiled to WebAssembly for Studio and to a Python module for the server
Server Python and FastAPI, with Postgres, TimescaleDB and MQTT
Studio TypeScript and Vite, with WebMIDI and Web Bluetooth
Developer tools Python client and hub simulator
Instrument profiles JSON against one shared schema

Repositories

Repository What it is
melophos The monorepo where all development happens. Start here
firmware ESP32-S3 hub firmware in C++
hardware KiCad designs for the hub, octave LED bars and fret bar
core Scoring engine in Rust, for the browser and the server
server Self-hostable FastAPI server and Docker Compose stack
studio Browser app for practice, songs and hub setup
client Python client and a hub simulator
profiles Instrument profiles and their schema
docs Architecture, protocol, roadmap and guides

Every component repository is a read-only copy published from the monorepo. Issues, discussions and pull requests all go to melophos/melophos.

Get involved

Licence

The software is licensed under AGPL-3.0-or-later and the hardware designs under CERN-OHL-S-2.0. NOTICE.md explains which licence covers what.

Pinned Loading

  1. melophos melophos Public

    Open instrument learning platform: an ESP32-S3 hub lights the notes on any keyboard or guitar, logs every note and scores practice on a self-hosted server.

    Python 2 1

  2. core core Public

    Rust scoring engine for MELOPHOS: matches played notes with expected notes and scores accuracy and timing. Read-only copy published from melophos/melophos.

    Rust 1

  3. server server Public

    Self-hostable MELOPHOS server: FastAPI, Postgres with TimescaleDB, MQTT and a Docker Compose stack. Read-only copy published from melophos/melophos.

    Python 1

  4. studio studio Public

    MELOPHOS Studio: browser app for light-guided practice, the song library and hub setup over WebMIDI. Read-only copy published from melophos/melophos.

    TypeScript 1

  5. firmware firmware Public

    ESP32-S3 hub firmware for MELOPHOS: USB and Bluetooth MIDI in, per-key LED guidance out and practice sessions over MQTT. Read-only copy published from melophos/melophos.

    C++ 1

  6. hardware hardware Public

    KiCad designs for the MELOPHOS hub, octave LED bars and fret bar, under the CERN strongly reciprocal open hardware licence. Read-only copy published from melophos/melophos.

    1

Repositories

Showing 10 of 10 repositories

Top languages

Loading…

Most used topics

Loading…