Partimento
A piano teacher over MIDI, in Rust and , that listens, engraves the score and aims at beauty judged by ear.
In progressIn developmentWhat it is
Partimento is a web application, for phone, tablet or computer, that I connect to my piano by MIDI. It teaches me from the geography of the keyboard to live composition, without my touching the screen: it listens, engraves the score of what it asks and of what I have played, and prepares each session from my own history. I wrote it for my own use and it is in development.
How it works
The engine is in Rust compiled to WebAssembly: musical model, evaluation of playing, student model and a director that composes the session. The interface is in React, with the ink drawn on a canvas and engraving left to Verovio. A Node server keeps the history of each session.
At breaks, a language model plays the role of teacher through a single server call, and a coach written in Rust takes over if it is unavailable. Facts of theory, cadences, schemata, figured bass and rule of the octave, come only from a deterministic core, checked against music21 and expert-annotated corpora. The screen marks the notes of a take in colour on the score, and the tempo is analysed live.
Why it exists
A teacher who aims at a success rate ends up producing music that is correct and dull, and a language model talks about theory with ease without our being able to check it. So I wanted the opposite: a teacher whose goal is beautiful music, judged by my ear, and whose musical claims are all verifiable. My tastes serve as the reward, through choices between two versions made at the piano. Each piece of advice is checked on my next take rather than on the exercise, and a simulated learner proves only the mechanics, beauty remaining my judgement.