I've always been fond of having some coding time apart from a job.
I worked on various pet projects whenever I had some free time, and some of them even got to a semi-complete state, like this implementation of a cool board game - Codenames (serverless and in Ukrainian). Most projects involved 3D graphics, which I'm a fan of. Like this 3D-snake game, or this, uh, homage to Monty Python.
All those projects were a mere attempt to have fun while keeping my coding skills afloat and my love for my occupation in general. But I always wanted to do something really cool, so cool so other people would be willing to pay money for it. Now that turned out to be a challenge.
The goal was clear to me but not a way to achieve it. After years of observations and pondering, I was sure that making a paid iOS app would be the best way to do that. And being a guitar player and Logic Pro user, I was leaning into working on a music-creation app.
Once I tried Moog Model 15 iOS app, I became fixated on a music app idea. Yet 5 more years passed until the first commit was pushed into the Percussive Synth repo. The biggest inspiration for the concept behind Percussive Synth happened when I discovered Moog DFAM on youtube. Have you heard of it? Or, better, just it?
I've been already very familiar with the Moog sound at that moment. Not only thanks to the Model 15 app but also due to already owning a particular specimen - Subsequent 37.
But this beast, DFAM, was another level of awesomeness. It had not only the famous distinctive sound of the Moog synthesizer but also new approaches to controlling and producing this sound, making it a percussive instrument. DFAM is so good that I won't be surprised if someone will create a hit music album made entirely by a sole Moog DFAM.
I instantly wanted to buy it, and then I thought, hey, if the Model 15 app is so good that it's on par with a real thing - the same is possible for DFAM - a virtual implementation!
So a "percussive synth app inspired by hardware Moog synth" it is.
A search for programming tools began.
One thing I used to direct my searching efforts was oversampling. I've overheard it in a video about the creation of the Model 15 app.
Heavily over-sampled (audio) to get that beautiful sound out of it (the Moog Model 15 app)
I started with iPlug 2 but quickly discovered why JUCE is the leader among audio frameworks - documentation. Also, a quick search in Upwork showed many people specializing in JUCE development, knowing JUCE being their main thing, which says a lot.
The learning curve is impressive, especially considering we're talking about C++ . The tutorials and the forum add to a very comfortable experience. And cross-platform support allowed me to debug the app in macOS and export it as a mobile project later. The development experience was also enjoyable and rewarding.
I started working on the core of the app alongside going through relevant tutorials. When I finished the DSP section, the app's core was already there - multiple wavetable oscillators employed in the synthesizer model, passing through a low-pass filter. Soon the filter implementation was replaced with a replica of Moog's ladder filter. Many features, upgrades, and changes were added each time I worked on the app. Such is an easy and smooth experience of working with the JUCE framework.
At that time, a lot of effort was spent developing the interface. The most important idea is that the app must be usable on mobile phones, ideally even in one-handed mode. I think the resulting UX is satisfactory, even though the interface is not instantly obvious because the sequencer is split into two parts - navigator and workspace components.
It is an unusual solution, but definitely a solution that makes sense on a small hand-held device. As far as I know, this is the only part of the UI users were confused about. I intend to add an Appcues-style startup wizard in future. But for now, I just added a message "use workspace below to enter notes", showing when a user tries to tap too many times on the same part of the navigator.
I hope this helps.
Initially, a user could set pitch only globally on each one of the four synths tracks. But with v1.2, it's possible to change the pitch and velocity for each note. The synth was intended to be akin to a drum machine, but like DFAM - it's something in-between. And to emphasize this other-worldliness - a knob is used to dial in pitches instead of a piano roll.
The app ended up being versatile, and I'm surprised that I managed to bring it to such a high level of completion so that people are actually willing to pay money for it. This fact, combined with some overwhelmingly positive reviews from users of the Audiobus forum, makes this project a huge success by my standards 🥳.
My initial goal was to buy the actual Moog DFAM on money earned from selling the app, and it had already earned enough money. Still, I decided to do it later and maybe donate more money to the Ukrainian army. Because if not for them - I wouldn't have the ability to work on a pet project in such a calm and peaceful way as I can now, being in Western Ukraine, a thousand kilometers away from Russian occupiers, thanks to the Armed Forces of Ukraine.
If you want to support this project, please consider donating some money to the come back alive fund or directly to the Ukrainian Army. Donating to the army is way more effective than helping Ukrainian refugees because the stronger the Ukrainian army is, the fewer refugees there will be.