This was the most important part for me; what differentiates metronome apps is mostly the UI.
Firstly, I wanted to make sure you can do everything with as few clicks as possible. This is why on the main page every button is accessible and laid out in a compact way, there is no searching through menus to find something, and furthermore, all the buttons have keyboard shortcuts bound to them, meaning you don't even have to click anything.
It was also important to me that the app could be pinned to stay on top of other windows, like a sheet music reader, for example. Doing this also changes the colour of the app border to the accent color, making it very obvious when the app is pinned.
However, when pinned, it still takes up a lot of screen space, which is why I've made it so when you resize the window, UI elements pop in and out of view, letting you only keep the controls you care about on screen. For users that want the most compact layout, the UI switches to a mini mode when resized to its smallest size.
A lot of metronome apps I've seen have the user enter time signatures as well as what note length a click is. I wanted to simplify this with my app and make it understandable to beginners. The user uses a slider from 1 to 12 to change the number of beats in a bar and checkboxes below to add accents to those beats. When the metronome is playing, the checkbox corresponding to that beat pulses, and you can update the number of beats in a bar and accents on the fly while the clicks are playing. You can see me doing this on in the video on the right.
I also wanted to make sure there were lots of ways to control the BPM: you can type it in, use a slider, or tap the BPM into a button.
I wanted to make sure the app had a wide range of sounds, from short beeps and clicks to sounds good for practicing the drums, like a hi-hat or snare. I also let the user upload their own sounds to act as a click if they like to.
I also wanted to make sure the timing of the click is extremely accurate, so the program loads the click sounds into memory and effectively counts the number of samples between each click.
On the right you can see me cropping and fading the sounds in my DAW.