It’s a virtual analog synthesizer with a sequencer. If I had to describe the rough idea, I’d say it’s something like a child of a Moog and a Pocket Operator. I started working on it about four years ago, mostly out of boredom. I was tired of building similar client-server apps that, in the end, were mostly different ways of displaying lists. I wanted to build something self-contained.
The first version of Digitron was pretty simple: a 16-step sequencer and a monophonic synth with two oscillators and cross-modulation. I wrote the first audio engine in Kotlin. As long as it was rendering WAV files offline, everything sounded fine. But the first time I tried running it in real time on Android, the popcorn noises made it pretty obvious that this wasn’t going to work. So I rewrote the entire engine in C++, and along the way got much more familiar with real-time audio, DSP, optimization, and aliasing than I had originally planned. Over the next few years Digitron grew quite a bit: I added a patchbay, a more capable sequencer with patterns and parameter locks, 8 independent engines, a mixer, effects, polyphony, and a recorder, and I’ve surely forgotten something.
The result is a fairly monstrous thing with a steep learning curve. But if you’re familiar with modular synths, it should be possible to find your way around it. The current Digitron stack is Kotlin Multiplatform for the application layer, backed by a cross-platform C++ audio engine. On Android it talks to the native layer through JNI, while on iOS I use Swift wrappers around the same C++ backend.
The work on Digitron’s audio engine also eventually led to a new open-source project called PatchCore — a redesigned, more general-purpose modular audio engine: https://github.com/SillyDevices/PatchCore
After about four years of working on it, it feels pretty strange to finally see Digitron in the App Store. I'd love to hear what you think about the synth.