Inspiration
I came across a post where someone was showing off physical music visualizer and it immediately reminded me of the time when I used to work at my desk with Winamp playing in the background, complete with different skins and visualizations.
At the same time, I was looking for an idea to build for Shipaton. That memory gave me an idea: what if I could bring that feeling back, but build it natively for the iPhone?
And that became ThunderBars.
What I learned
This project pushed me to dig much deeper into Apple's audio-related SDKs and explore how to combine them into a real-time visualization experience.
I also worked with Swift Metal for the first time, using it to create the visualizations, and explored how to synchronize lyrics with the audio experience.
It was a great opportunity to learn how low-level audio processing and GPU-powered rendering can work together in a real consumer app.
How I built it
I have been developing for iOS for about 15 years, so building ThunderBars as a native iOS app was the natural choice.
I already knew about the ShazamKit SDK and had wanted to find a project where I could put it to practical use. It became an important part of the experience, allowing ThunderBars to identify what is playing and connect the visualization with the song.
For the first version, I focused on iOS and native Apple technologies. Eventually, I would like to bring ThunderBars to Android as well — and with modern AI-assisted development, building and maintaining a second platform is becoming much more accessible.
Challenges
One of the biggest challenges was figuring out how to break the audio signal down into meaningful components that could drive the visualizations.
It wasn't immediately obvious how to map the different parts of the frequency spectrum to the animation in a way that actually looked good.
Another challenge was normalizing the audio channels and frequency ranges so that the visualization could use the entire screen instead of concentrating in only a small part of it.
I had to experiment with how to balance frequencies from bass to treble and turn raw audio data into something that feels smooth, dynamic, and visually satisfying.
Accomplishments that we're proud of
I built an app that I genuinely enjoy using — and now I actually use it myself.
When I'm listening to music, I put my iPhone on a stand next to my laptop and watch ThunderBars visualize the music in real time.
For me, that's one of the most satisfying parts of the project: I built something that I wanted to have myself.
Now I hope the idea resonates with other people too and that ThunderBars can find many more users who enjoy visualizing their music as much as I do.
What we learned
I learned a lot about working with audio and Swift Metal, but also about the creative side of building visual experiences.
Unlike many product features, visualizations don't always have a clear design guideline or an obvious "right" way to build them. You have to experiment, try different approaches, and figure out what actually looks and feels good.
That creative process turned out to be one of the most interesting parts of the project.
What's next for ThunderBars
First of all, I want to add more visualizations and keep expanding the experience.
I also want to get ThunderBars in front of as many users as possible and see how people actually use it and what they enjoy the most.
And I already have more interesting ideas in the pipeline.
So... stay tuned!
Built With
- metal
- musickit
- revenuecat
- shazamkit
- storekit
- swift
- swiftui
- tuist
Log in or sign up for Devpost to join the conversation.