Developer Corné Driesprong has released a polyrhythmic drum sequencer called Polybeat. It’s a flexible drum and percussion sequencer that is able to generate complex polyrhythmic and polymetric rhythmic patterns.
Corné sat down with us to share lots of great advice…
WHAT WAS YOUR INSPIRATION FOR MAKING THE APP?
Around the time I got the idea for polybeat, I was listening to a lot of Second Woman, who have these amazingly complex and freeform rhythmic structures in their music. Since electronic music is so often very much stuck on a rhythmic grid, I found this very refreshing and I wanted to make a sequencer that could generate these very flexible and complex patterns.
Of course, one thing you can do to make things sound less quantized is to manually shift pulses off-grid–J Dilla-style–but something about this doesn’t sit right with me: a big part of the appeal of electronic music for me is how it can be extremely detailed and precise, and just randomly shifting pulses off-grid kind of pushes against that. So wanted to find a way to program rhythms that sound more complex and interesting than just straight 4th, 8th, or 16th notes, which led me to polyrhythm and polymeter.
Actually, while building polybeat I learned that J Dilla’s beats often aren’t just randomly off-grid, but use techniques like quintuplet-swing, which you can also do with polybeat, so that was a nice coincidence. Also, the feature set of polybeat was heavily inspired by the Elektron sequencer workflow.
WHAT DID YOU LEARN FROM MAKING THE APP?
A ton! First, that I’m terrible at estimating timelines. I originally envisioned polybeat as part of a suite of MIDI-tools (à la Bram Bos’ Rozeta but soon enough I realized that just making the drum sequencer would already be a significant project on its own. It’s fairly easy to quickly bang out a prototype for an app – especially since I could re-use some of the code that I’d already written for my other app, cykle – but polishing it up to be a product that you can actually release is a different story, so it took a while to actually finish it.
Technically there were also some interesting problems to solve: I had to rack my brain to come up with the MIDI timing calculations that would allow the sequencer tracks to play at independent playback speeds, and I built an inter-thread communication system to pass the sequencer data from the UI (written in Swift) to the sequencer (written in C++), which was a challenge to get right because you end up having to manage state in two different places. This was the cause of some bugs in the initial release, but it seems the kinks have been ironed out now.
ANY ADVICE FOR WOULD-BE MUSIC APP DEVELOPERS?
Keep at it! Making music apps is hard work, but also a lot of fun! It involves a variety of skills, from user interface design and implementation to lower-level (DSP) coding. And since, technically, it’s kind of a niche subject, it’s hard to find good code examples; I’ve done a lot of spelunking through half-abandoned Github-repositories to find examples of how to implement certain things (the abysmal state Apple’s official documentation surely doesn’t help, either).
Actually, AudioKit was pretty helpful here in terms of example code, and I did take some cues from AudioKit’s internal MIDI sequencer but ended up implementing my own since I needed a lot of custom functionality (the ability to play back sequencer tracks different timing, etc). So to sum up, it can be hard, but also extremely gratifying when you see other people being able to creatively express themselves using something that you’ve created.
WHAT’S NEXT FOR YOU?
I’m currently finishing up some long overdue updates to my other MIDI sequencer cykle, which I sadly neglected while working on polybeat. After that, I have a ton of half-unfinished projects and even more ideas that I want to work on, among them a live-coding language for MIDI patterns. I’ve been wanting to implement my own (domain-specific) programming language interpreter for a while, so that would be a nice use-case.
I’d also like to create an app that actually produces sound (as opposed to just MIDI), like a synth or drum machine. I figured making MIDI-sequencers would be easier, saving me from having to code the nasty DSP stuff, but at this point, I’m not sure if it’s actually that much easier. Anyway, plenty of stuff to explore!
Keep up the great work, Corné!
Download Polybeat in the App Store:
Learn more about Polybeat at cp3.io/polybeat.html