Home

Behind the scenes of Rytmium

Analyst’s Diary

The story of Rytmium — from a simple metronome to a practice app.

I only wanted a metronome

I play drums and bass, and I use various tools in my daily practice. A metronome here, a drum machine there, song tempos written down somewhere, and exercises somewhere else again. At some point, I thought: what if I could have all of that in one place?

I wanted to create an app that would let me practise drums with a metronome, then pick up my bass and play along to a drum backing track I had made myself. Without constantly switching between programs and searching for whatever I needed at the time.

Of course, I know there are plenty of similar apps out there, both free and paid. I wasn't trying to reinvent the wheel or prove I could make something better than everyone else.

I simply wanted to create something of my own. A tool tailored to my needs that I could develop, change and improve as new ideas came along.

And if Rytmium happened to appeal to someone else and turn out to be useful to other musicians too? All the better!

It was meant to be simple. A metronome, a few useful features, and that would be it.

At least, that was what I thought at the time.

How many time signatures does one person need?

The first question came up when I was choosing time signatures. You could build a metronome that lets users define almost any time signature, but I started wondering how many of those options I would actually use in everyday practice. I didn't want to fill the interface with settings I would probably never touch.

In the end, I kept five basic options: 2/4, 3/4, 4/4, 5/4 and 7/8. They cover my needs, and if someone needs another time signature, they can write to me — I'll add it. Right at the start of the project, I realised that not everything needs to be implemented straight away.

A metronome that remembers for you

The same problem keeps coming up at band rehearsals: we play one song at 120 BPM, another at 95, a third has a different time signature, and for the next one we have to remember the right tempo again. You can write it all down, but you still have to find your notes and adjust the metronome by hand.

So I thought of a simple, programmable playlist where each song has its own tempo and time signature. I select a song, start the metronome and play, without trying to remember which BPM we used at the last rehearsal. It seemed like an obvious idea, but that was exactly the convenience I needed. And the metronome had its first extra feature.

How about exercises, too?

Once I had the metronome and playlist, I started thinking about creating my own exercises. At first, it looked fairly simple: a rhythm grid, a few drum instruments and a way to mark where the kick, snare or hi-hat should play. Add a repeat count, and you're ready to go.

But I soon started adding more options: groups, subgroups, copying, moving things around and further levels of organisation. Using it became more complicated, and I was spending more and more time arranging everything in the interface. The whole point was to make practice easier, so I had to think again about what I actually needed.

A song is more than a collection of loops

While writing out songs, I realised that you can't reduce everything to identical four- or eight-bar sections. There are intros, verses, choruses, bridges, fills, accents and changes in instrumentation. The first chorus might differ from the second, the last bar of a verse might have a tom fill, and a single crash might appear in just one place.

I didn't want to build another DAW, but I needed some freedom to arrange those details. I decided to separate rhythmic patterns from their playback sequence. First, I create a pattern of the length I need. Then I decide where it should play and how many times it should repeat.

I can copy and reuse finished patterns, so I don't have to program every section of a song from scratch. I can also change the order or number of repeats without editing the rhythm itself. At last, I had a way to put together a whole song comfortably.

All that fuss over one crash

For one exercise, I needed a four-bar pattern to repeat several times, with a crash only at the very beginning. I could have made one version with the cymbal and another without it, but that would mean an extra pattern and another sequence entry just for one hit.

So I added an option to play a single crash at the start, right on beat one. After that, the rhythm carries on as usual. It's a small detail, but it makes the exercise quicker to prepare and its structure easier to follow later.

Not everything needs to sound like drums

Not every exercise needs a drum backing track. Sometimes I just want to move between quarter notes, eighth notes, eighth-note triplets, sixteenth notes and sixteenth-note triplets. Plain clicks based on the selected note value are enough, without choosing instruments or samples.

I added a way to build exercises from those subdivisions. For example, I can start with quarter notes, move to eighth notes, then sixteenth notes and eighth-note triplets. Each section has its own repeat count, and the whole thing plays as a single exercise. I don't have to mark every hit on the grid by hand, so preparing a set like that takes much less time.

If I can save an exercise…

Preparing a more involved exercise takes some work, and I didn't want to repeat that work before every session. I needed a library where I could save an exercise under my own name for it and play it again whenever I felt like coming back to it.

That got me thinking that other people could use ready-made exercises too. Someone might make a funk groove, someone else a jazz exercise, and a beginner drummer could find a set for learning rhythmic subdivisions. That's how publishing exercises for other users came about, alongside saving them just for myself.

How much do I actually practise?

People often say that practising consistently matters more than how long you practise. Fair enough, but how much do I actually practise? I think everyone should ask themselves that question well before asking, “Why am I not seeing any progress?” :D

So I decided to record the time I spend playing: with a playlist at rehearsal, with plain metronome clicks, and on specific exercises. The next time I wonder why my foot won't cooperate during linear fills, I'll first check whether I'm practising them at all. And if I am, how often, and how many minutes I actually spend on them.

For that, I needed statistics close at hand. With one click, I can check which exercises I've done and how much time I've spent on them. That makes it easier to see whether I've really been practising regularly and can expect some progress, or whether I should put in a bit more playing time first. :D

Not everything is for everyone

Sharing exercises is useful, but I didn't want to publish everything. I have my own backing tracks for songs I play with the band, and I'm happy to send them to the guys without making our work-in-progress versions available to every Rytmium user.

So I needed a way to choose a specific person. Now I can prepare a backing track, save it in the library and decide whether to keep it to myself, publish it or share it with a chosen user. From the user's perspective, it's a small change, but it had to be accounted for when designing the library.

What if there are more than five of us one day?

As the library started coming together, I had to think about finding exercises. With a few saved items, it's easy enough, but eventually someone will want a simple rock groove while someone else is looking for funk, jazz or blues. So I added musical styles and library filters.

I still don't know whether Rytmium will have five users, fifty or five thousand. But I like the idea that someone I've never met might create a rhythm and another person might use it in their practice. I want it to be easy both to share something like that and to find it afterwards.

Why is there no internet here?!

An outdoor gig, no internet, or airplane mode switched on — now what? I don't want the metronome to need a network connection just when I'm about to play. And airplane mode can come in handy, because Mum might choose the middle of the gig to call and ask what I'm doing and why I never phone her. :D

The metronome can now be used offline. Before the gig, while you still have internet access, switch on “Offline metronome” and wait for the app to confirm it's ready. Your playlist is saved locally, and you can play without a connection. When the internet comes back, Rytmium syncs with the server and sends your recorded practice sessions to the statistics. ;)

The never-ending list

I decided to write out the structure of a whole song: intro, verses, choruses, fills, bridge and more choruses. The patterns themselves came together quite quickly, and copying them and setting repeats worked well, but the sequence list became really long.

I started considering grouping, tags, automatic section detection and collapsible groups. Every idea needed more decisions: how to copy patterns, what to do with repeated verses, how to preserve the order and whether users would have to assign labels themselves. Before I knew it, I was planning an entire extra system whose main job would be to shorten a list.

Eventually, I opened Rytmium on my phone to see what it was actually like to use. The list had its own scrolling area, and I could select entries comfortably by tapping anywhere on a tile. It worked quite well. So I kept the existing layout instead of adding features I didn't need yet.

In search of the right sound

From the beginning, I wanted to create drum backing tracks in Rytmium that I could pick up my bass and simply play along to. They would also come in handy at rehearsal when the drummer couldn't make it.

The mechanism already works: I can create rhythm patterns, arrange them into sequences and prepare backing tracks for entire songs.

But one important question remained — the sound of the instruments.

After plenty of searching and browsing through the available sound libraries, I came across MuldjordKit, a collection of acoustic drum samples shared through the FreePats project.

I decided to use it as the basis for Rytmium's drum sound.

The samples still needed some preparation for use in a web application. I chose to convert them to MP3 to reduce the amount of data downloaded and make the sounds load faster.

And that's how Rytmium got its first set of drum sounds.

Is that the end of the search? Not necessarily.

I still have this idea of heading to the rehearsal room one day, setting up microphones and recording samples of my own drums.

But that's something for the next stage of Rytmium's development.

Controlled chaos

Today I practised rhythmic subdivisions: eighth notes, triplets, sixteenth notes and sixteenth-note triplets. Four patterns played one after another and everything worked, but after ten minutes I'd had enough. I already knew the order and exactly what I was about to play. I thought it might be more interesting to randomise it.

The first pattern starts as usual. As soon as it begins, Rytmium picks the next entry from the exercise structure and shows its name, giving me time to prepare for the change. When that pattern starts playing, the next one is drawn. Each entry keeps its length and repeat count, and practice continues until I stop it or the set time runs out. With looping enabled, I play until I press Stop.

I wanted the draw to allow repeats. The same eighth notes might come up four times in a row before sixteenth-note triplets appear. I don't want to predict the order from what I've already played. I want to practise reacting to changes, keeping the pulse and moving smoothly between subdivisions. That's what this mode is for.

What if I could practise with backing tracks? 🥁

So far, so good: we have a metronome and exercises, but playing to a click is still not the same as playing with a band, or even with a backing track. Music changes everything. You need to feel the rhythm, the dynamics, and find your way through the whole song.

So I thought it would be nice to pick any MP3 file in Rytmium and just start playing. And that is how another module came about! 😁

You can practise with your favourite songs, ideally drumless versions, and slow them down without changing the pitch. The metronome can play along with the backing track to help you keep time, and your practice time goes into the statistics, of course.

MP3 files stay on your device and are not uploaded to the server. Everyone uses their own recordings, with no option to share them through the app.

And just like that, Rytmium got another feature I had never planned in the first place. All because, once again, I found something missing while practising. 😂

Controlled chaos found its voice! 🎙️🥁

Randomising patterns in Rytmium worked brilliantly. There was just one problem — I had to keep glancing at the screen to know what I was about to play. And I don't always have my phone or monitor in front of me.

So I thought: what if Rytmium could tell me what was coming next?

And that is how the voice assistant came about! 😁

Each pattern has a name, and the assistant announces the upcoming change and counts “1, 2, 3, 4” so I can start the next section right on the “one”. AI generates the voice samples as soon as I save the exercise, provided voice cues are enabled.

But now that Rytmium had learned to speak, it would be a shame to limit it to exercises!

So the playlist got a song structure. In a simple editor, I can lay out successive phrases, such as “Intro”, “Verse” or “Transition from Intro”, and assign a count to each one. The assistant announces both the phrase that has just started and the one coming up next.

Now I can focus on playing instead of watching the screen.

I started with a simple metronome, and now it talks to me too. 😂