← back

kai-rem
Jan 12, 2026

kai-rem

Lately I have been working on kai-rem, a realtime synth engine with a minimalist UI. The goal this week: add more sound engines, bolt on per-channel FX, and keep the interface simple enough to play without a manual.

Below is a quick, casual tour of what I changed, what worked, and a few gotchas I tripped over.

The short version

The original synth had the basics (subtractive, wavetable, FM, pulse, noise). Great for testing, but I wanted more contrast:

The nice part about these is that they share a lot of code. Once the oscillator and filter plumbing is in place, new engines are mostly different signal paths.

Per-channel FX

I went with a single FX slot per channel:

UI tweaks: small but important

The channel rack now shows:

I nudged the left column width to make room. The big UX improvement was simple: keyboard notes now go to the selected channel, not just channel 1. That makes testing per-channel FX feel immediate.

Implementation notes

A few things worth mentioning:

cargo run --release -- --poly 8 --mode supersaw --midi virtual

And yes, you can play notes with the keyboard when you do not have MIDI.