
Image Credit: Shigeo Sekito
latent electone
Nov '25This project started from a single Electone recording that a friend sent me. An Electone, for context, is a family of 1970s home organs that Yamaha sold as compact consumer instruments, and the recording that made it to me was nothing dramatic. Just a short passage, no production around it, no explanation of where it came from. What held my attention was the texture of it. The way the stacked manuals sat against each other, the sharp and slightly unpolished attacks, the bright edge that stayed on sustained notes. The kind of sound you rarely hear in modern keyboard patches.
Before trying anything clever, I spent a while rebuilding it with ordinary synth programming, and the result kept coming out too clean. Three specific things seemed to be missing. The first was the analog chorus running inside those instruments, which gives the whole sound a soft constant motion. The second was envelope behavior, which on old Electones is slightly lazy or slightly early in ways a modern synth engine quietly corrects. The third was harmonic stack imperfection, the small tuning and level differences between drawbar footages that accumulate across a chord and give the stack its particular color.
At that point I switched to a different approach and trained a compact RAVEv2 model on archival Electone material. Shigeo Sekito's recordings were the main reference point, and the model learned the joint distribution of all those small imperfections together, so that they stopped needing to be modeled individually and started simply being present in any sound it generated.
The approach itself came from seeing what Neutone had done with their plugin. Watching them wrap neural audio models in something a player could actually perform with was what made me think a small RAVE model could sit inside a real workflow. Their SDK and documentation gave me a sense of what the shape of that kind of tool looks like, and the rest was figuring out how to do something analogous inside Max.
The current version runs in nn~ inside Max. The IRCAM external handles the inference and the buffer scheduling, and I expose a small set of parameters on top: how far the model is allowed to drift from the input, how aggressively the latent space is sampled, and a fader for the wet/dry balance. Drift at zero gives a fairly faithful Electone tone, drift pushed up takes the sound past anywhere the original hardware would have gone.