BeatTree 🎶🌳

Inspiration

Beatmatching is a crucial skill for DJs, allowing them to sync the tempos of two tracks for seamless transitions. By aligning the beats, DJs can ensure smoother, more fluid mixes, which is why many prefer to transition between songs with similar BPMs (beats per minute). However, finding tracks with matching BPMs can be time-consuming and challenging. Even after locating two songs that match tempo-wise, there's no guarantee that their genres will blend well. To simplify this process, we developed BeatTree, a tool designed to simplify the background tasks of music production and make beatmatching easier for DJs.

What it does

BeatTree is a mobile app designed to recommend songs based on BPM. Our Figma prototype showcases a fully developed UI, featuring a user-friendly interface for collaboration, streaming, and intelligent song recommendations. When you select a track, BeatTree generates a tree of songs with similar tempos, making it easier than ever to curate playlists ("Song Logs") or create seamless DJ transitions.

BeatTree also offers an AI Transition Sample Generator. After the desired match is chosen, users are presented an option to hear a preview of a possible transition between the two tracks. This feature uses concepts of AI and machine learning to generate sample transitions, giving users a clear idea of how the songs will sound together before committing to a purchase. This helps music personnel save both time and money, ensuring they invest in tracks that blend well together.

BeatTree's final signature feature includes a community aspect, The Grove, where DJs, song-editors, and producers are able to upload their work and engage with others. This social media-style feature fosters an environment which encourages collaboration, provides opportunities for feedback, and artists share their creations with a wider audience.

Our Swift prototype, built during the hackathon, currently supports:

  • Song search by artist, title, and tempo
  • A CSV-powered database with tracks from 125 different genres
  • BPM-based song recommendations for effortless playlist building
  • The ability to add songs to your "Song Log" for future mixing and playback

How we built it

We used:

  • Figma for the UI/UX prototype
  • SwiftUI in Xcode for the mobile app development
  • A CSV dataset from Kaggle to populate the song database

Challenges we ran into

Time constraints turned out to be a pretty big challenge. We were able to fully develop the Figma prototype, but translating the visual aspects and more complicated features into SwiftUI proved to be a hurdle due to our limited time as well as our inexperience translating Figma to code. Additionally, we had only made basic one-page apps in SwiftUI before, so learning to do more complicated things like search and navigate between pages was a challenge.

Accomplishments that we're proud of

  • A fully developed Figma prototype showcasing a sleek, user-friendly UI
  • Successfully implementing CSV-based song search in our Swift prototype
  • Creating a unique concept that blends AI, tempo-based recommendations, and intuitive UX
  • Learning SwiftUI and data handling under intense time pressure

What we learned

  • UI/UX design in Figma and its importance in product development
  • SwiftUI fundamentals, including handling CSV data, implementing search features, going between pages making/displaying lists, and more
  • Ways AI and machine learning could potentially be integrated into an app like this
  • The power of efficient collaboration under hackathon constraints (since this was our first hackathon)

What's next for BeatTree

We plan to continue developing BeatTree into a fully functional app with:

  • A refined SwiftUI interface that matches our Figma prototype
  • Full functionality in all elements including the AI transition samples
  • More opportunities for collaboration!

BeatTree was built in just two days, but we see massive potential in expanding its capabilities. We’re excited to keep improving it and bringing our vision to life! 🌳🎧✨

Built With

Share this project:

Updates