Show HN: SameTunes – A Music Compatibility Platform for Spotify
sametunes.com
sametunes.com
I'm one of the developers on the SameTunes team. We've spent the whole summer working out of a house to build this platform. We're really proud of the work we've done and hope you all enjoy using it.
With SameTunes you can view interesting statistics about your taste, find your music compatibility with friends, and discover new music!
Let us know what you think
This idea was something we, a group of college students, felt was missing from our social interactions. I agree, it's a bit clunky to set this up mid conversation.
I, personally, find that this works really well with existing friends or when forming new friends online through things like Instagram or Tinder.
To your point, we're always looking to expand our use cases and reduce the first time friction.
Starting off, we focused heavily on comparisons but have branched out since. For example, the stats page you're first taken to gives you some analytical information about your own music. Strengthening out this page with things like music evolution, recommendations, rankings, &c is foremost priority.
Currently, we have friend links that deep links into creating a friendship (e.g. mine is https://smtn.es/125.ferda-bruh). Pivoting this to share your statistics and music tastes is an interesting idea -- it definitely helps introduce the platform to new users and personalise the platform for existing users.
I'll propose it to the team, thanks!
If this is prohibitively costly in your current setup, I would suggest mapping each user profile to an embedding vector and find best matches using approximate nearest neighbors, that scales really well.
When building out the platform, efficiency was a foremost consideration. Because of that, each comparison calculation flies.
That's a good implementation suggestion, it reminds me of the adjacency matrix Twitter uses for mutual friends.
I'm drafting up proposal for your idea now, it serves a really strong introduction to the platform.
Thanks!
A simple approximation of this inner product would be to generate a random (potentially sparse!) matrix S whose nonzero entries are i.i.d. Gaussian, for example, and whose number of rows is much smaller than the number of columns [1], then you can instead store and compute
(Sxᵢ) ⋅ (Sxⱼ)
which gives you an approximate overlap, whose storage and computation requirements are much smaller for each user (since Sxᵢ is much smaller in number of entries than xᵢ).-----
[0] Of course, there are many other similar methods! This is a particularly simple, but often fairly effective one.
[1] More specifically, it goes like O(log(n)/ε²) where ε is the error you wish to achieve. Often, a fairly large choice of ε actually will suffice. See https://en.wikipedia.org/wiki/Johnson–Lindenstrauss_lemma
Through the Spotify API we are given locational and positional data on some music objects. Your proposal to structure songs as vectors opens up a lot more flexibility for storing, weighting, and manipulating that data.
The way in which the overlaps are calculated is crucial to our platform, something like feeding the dot product into a weighting matrix would leverage this structure really well.
Your proposal is very similar to how comparisons are currently computed on SameTunes. But, leveraging existing mathematical theorems and restructuring the algorithm with linear algebra in mind would help a ton with some of the noise and normalisation issues we've experienced.
I really appreciate you taking the time to draft that out!
We've reached out to a lot of local artists here in Atlanta and hope to use the platform to recommend and share their content to those interested.
Hand curating playlists is also a big feature we've been toying with. That's where something like Apple Music's hand crafted playlists are usually a lot stronger than Spotify's computed playlists.
I haven't heard of Calmradio, it's exactly what I've been looking for! I've resorted to listening to music through a cheap FM radio to try and break out of the algorithm hell Spotify tends to put me in.
Thanks for sharing!
tldr; OP add SoundCloud support please!
We, SameTunes, have an advantage when it comes to calculating a user's affinity for songs, artists and albums. Last.fm ranks your music by tracking how many times you've played (or "scrobbled") a song, songs by an artist, etc. SameTunes uses additional data Spotify publishes (like position in a created playlist, occurrences in your liked music, etc) to build a more well rounded representation of your music taste in the past and present.
There are definitely features we can, and plan to, add to help better portray this data to a user.
When I first joined, the existing codebase was already built out in PHP on a LAMP stack. I was really opposed to it at first but I've learned to love it since. The safety, speed, and size of a compiled language on the web is something most modern frameworks can't compete with.
I, personally, have built a ton of in-house APIs here aiming to "modernise" php and am really proud of the outcome. It's nowhere as safe, readable, or dynamic as something like a Rust or Swift but PHP is definitely a strong competitor for the modern web (IMO).
This article https://mcfunley.com/choose-boring-technology also really helped me come around early on.