Inspiration
I was inspired by the idea of creating music that adapts to any situation or mood. As someone who loves music but lacks traditional musical skills, I wanted to make an app that's both flexible and creative. The goal was to allow anyone, regardless of their musical background, to become a music producer with just a few taps on their phone.
What it does
Muzyka is an AI-powered music generator. Users can create unique music by giving the app a text prompt or their own lyrics. They can also specify the mood they want like happy, sad, or energetic and choose from various music genres such as pop, rock, or classical.
How I built it
As a solo indie developer, I built Muzyka from the ground up. For the iOS app, I used Swift and SwiftUI, which allowed me to create a smooth and responsive user interface. The backend, which handles the complex task of music generation, is built with Python and FastAPI. I chose these because they're efficient and scalable. For data storage, I'm using a MySQL database. I'll admit, the backend was challenging as I'm primarily an iOS developer. To overcome this, I leveraged AI to help me understand and build the Python backend. This process was a fantastic learning experience, allowing me to expand my skills beyond mobile development.
Challenges I ran into
The biggest hurdle I faced was the long generation time for the music. It takes about 3 to 4 minutes to create each piece, which is an eternity in app time! I knew users wouldn't want to stare at a loading screen for that long. To solve this, I implemented a two-part solution: First, I integrated Firebase Push Notifications. Now, users can start a music generation request and then freely use other parts of the app or even close it entirely. The app sends a single notification when at least one of the two music pieces is ready to listen to. This way, users don't have to keep checking back – they're promptly informed when there's something new to explore. Second, I created a progress tracking system in the library section of the app. Users can see the status of their music requests, watching them move from "Preparing" to "Processing" and finally to "Completed". This gives users a sense of progress without needing to stare at a loading screen. An interesting aspect of my app is that each request generates two different music pieces. These don't usually finish at the same time. To make the waiting experience better, I made it so that as soon as one piece is ready, users can start listening. The app sends the notification at this point, so users can enjoy the first piece while the second one continues processing in the background. Through these features, I've tried to balance the unavoidable wait time with a user-friendly experience. Users can set their music to generate and go about their day, knowing they'll be notified as soon as there's something new to listen to. It's turned the wait into an anticipation, rather than a frustration.
Accomplishments that we're proud of
I'm incredibly proud of creating an AI-powered music generation app that's accessible to everyone. One of my biggest achievements was developing a clever solution to the long processing time, implementing a notification system and progress tracking that turns a potential frustration into an engaging feature.
What I learned
Developing Muzyka taught me a lot, but the most eye-opening lesson was how to effectively use AI as a learning and development tool. Even though I started with limited knowledge of Python and backend development, I managed to build a functional backend with the help of AI. This wasn't just about getting code written for me - it became an interactive learning experience. I learned to ask AI the right questions, breaking down complex problems into smaller, manageable parts. When I didn't understand something, I'd ask for explanations in simpler terms. The AI would provide code suggestions, but I made sure to understand each line before implementing it. This approach helped me grasp key concepts in backend development and Python programming.
What's next for Muzyka
Muzyka has a lot of potential for growth! My immediate plans include optimizing the Library screen to provide more details about music lyrics and adding features for downloading and sharing created music. The big upcoming feature is playlists. I want to create a community aspect where users can make their music public, add songs to playlists, and share them with others. This will transform Muzyka from just a music creation app into a full-fledged music sharing platform.
Log in or sign up for Devpost to join the conversation.