Muziqi ✻ Introduction


I have been working on a new music player for iOS, tentatively named Muziqi.

It is getting closer to becoming a reality, and I wanted to start a devlog to track my progress.

Motivation🔗

This project falls in the "scratching my itch" category. As someone who listens to a fair bit of music and other forms of audio, I have wanted an app that

  • lets me bring in my own music library. Having tried Spotify and Apple Music for a few years, I am convinced that owning my own music is better for my listening pleasure and for my wallet. Plus, I want to listen to long-playing content like audiobooks or lecture series as a unit.
  • has well-considered design. Listening to music is an emotional activity, and a confusing navigation or off-centered UI elements take away from that pleasure.
  • is feature-full. I want a graphic equalizer, a visualizer, bookmarks, playing loops, a sleep timer, and quite a bit more. Apparently the more features you want, the less you get on the design front.

The current offering fit into these broad categories:

Streaming music providers: Spotify seems to be the most popular. Apple's Music app lets you import your own collection, but the constant upsell and cross connections with the Apple Music service is confusing and onerous.

Apple Music frontends: There is a lot here. Musens, Song Owl, and Soor are some of the ones that I have enjoyed.

Bring your own library: Doppler is a great app. It lets you bring in any downloaded Apple Music, which is a nice bonus. There are also a plethora of generic audio players in this category. Invariably, you either get features or good design. I am also ruling out expensive solutions like Roon.

After wrestling with all that the App Store had to offer, I decided to throw my hat in the ring. After a few months of work, I am getting close to what I wanted. Muziqi is one of my most used apps now, even though I am a bit far from a public release.

As an iOS engineer, the app has become my technology playground as well: exploring new iOS APIs, choosing the right app architecture, and technical deep dives are rarely possible in the day job. Muziqi is a SwiftUI app, uses the AVAudioEngine thoroughly, has a few fancy Metal fragment shaders, and there are several iOS 17 only features in the pipeline.

Process🔗

It has been slow going, with a few stolen hours on nights and weekends. But it is a long-term project, and the goal till now has been to have fun and to make the app functional.

The process has been iterative: work on a new feature, fix the new bugs, and then refine the UX & UI. After every few of these feature cycles, comes a full-app overhaul where I realize that the app's flow, the color scheme, or the UI components need to be redone. Working on a slow-burn project without an eye on a release date has been pretty satisfactory.

Features🔗

Here is a sneak peek at what the app looks like. Most of the heavy lifting is done, but the app is intentionally "undesigned" for now.

Import🔗

You can either import from the Files app, over Wifi via a browser, or the local Apple Music catalog.

Playback🔗

Fairly straightforward interface, but a lot of the app's features are housed here. One thing I really wanted was a seek bar similar to Castro's.

Waveform🔗

Segments🔗

I have been learning Hindustani Classical Music, and I often want to mark off a segment that can be labeled, and played in a loop.

Bookmarks🔗

Equalizer🔗

Visualizer🔗

Starting with a few simple visualizers, I want to bring the fun back to listening music.

Ongoing🔗

I am hoping to keep a weekly log of the development. Currently I am inching towards a potential 1.0 at the end of the year, and an App Store release early next year.