Show HN: SoundMoose – open source music discovery app based on Angular 2, Redux
soundmoose.comNeat! I'm usually very cynical of JavaScript based projects but a lot of my life outside of work I spend digging deep into obscure genres from strange small towns around the world, I generally find the best discovery mechanisms are last.fm (yes it's still got a fantastic recommendation engine), what.cd used to lead me to a lot of new artists / albums, digging through various forums and subreddits and pandora's music genome project has been quite useful as well (also they just finally launched their all HTML5 interface because flash.... well it's flash) and I end up posting and sharing music with friends on https://mondotunes.org because everyone knows me as the music digger and geek and asks what I'm listening to all the time, ironically for the sake of ease I generally link to poor quality YouTube clips of songs which is somewhat intentional so that if people enjoy it they might purchase the album or go to a gig etc... I currently subscribe to Pandora, Apple Music (which is improving very, very quickly), Spotify (which I might drop soon) and last.fm because I like to support their work.
Thanks for the feedback! This being Angular 2 we actually used TypeScript, with some Django on the backend (with some Node.js and Ruby for generating the waveform data using ImageMagick). We also used Three.js for the 3D visualizations -- the sphere one is especially cool. Put on on some music and check it out by clicking the menu and then the circle icon on the top left.
We also have some cool 2D visualizations in the equalizer (click the arrow on the left of the player to access).
All in all this was a very fun stack to develop on, once we had all the initial pieces in place (getting ngrx/store set up mostly) we added new features very quickly. We got to where we are right now over the course of less than 3 weeks.
This is all hosted on a tiny DigitalOcean droplet and we use external APIs with daily limits, so hoping it all stays up while it's on the front page here!
Awesome! Well done that's quite a sprint ;)
MI'm unable try it out today but can't wait to tomorrow perhaps, my personal music collection is sitting around 1.4TB and until recently I had a big wall of 1600 or so records as well as the usual obsessive compulsive hifi hardware everywhere.
I personally ensure that I dedicate at least 8 hours of uninterrupted time each week to music discovery, in reality it often ends up being a lot more than that likely often averaging around 20+ hours a week and is often just commonly limited by how many times I feel / wish to listen to a newly discovered artist or album before I sort of mentally have them etched into my mental catalog of music if that makes any sort of sense.
Music, musical discovery and interrelationships are such deeply rooted, important part of my life that when things come along that actually help that process it can have an immensely profound impact on my energy and happiness, if this tool / toolset ends up helping me I will forever be in your debt and if it doesn't I will try to hold back on logging millions of isssues against it ;)
I'm more interested in the discovery or recommendation algorithm than what language you used to develop it.
I like this, it looks like it could be useful.
However, one issue: I'm on [this screen](https://dl.dropboxusercontent.com/u/45512231/ShareX/chrome_2...) which is a track's detail page and another track has started playing, I can't seem to get to the currently playing track's detail page from this...
Also, not sure if you could fix it but Soundcloud's "Genres" is utterly broken, try it, go on Soundcloud's "Charts" page and try ANY genre from the dropdown and all the tracks are just hip-hop/trap. I don't have an issue with hip-hop/trap it's just I don't want to listen to it all the time and I might want to explore the latest indie rock tracks. Maybe you can pull that from last.fm too and fix this? That would make this a daily-use app for me!
I find it odd that you mention the web-framework as the interesting feature of a music recommendation / discovery system.
Surely, the interesting thing ought to be where you get the data and how you create recommendations.
Anyway, on Safari 9.1.1 nothing works: If you start typing in the search bar too early it doesn't search. The search icon is not clickable, ever (have to use enter). Clicking on a song takes you to a blank page, clicking the play icon does nothing, reloading pages doesn't work (takes you back to the front when it does manage to reload)
I just get a blank page with cookies disabled, it would be nice if I didn't need to offer you cookie storage but at a bare minimum if you rely on cookies: please say so when cookies are disabled.
Link to the projects github https://github.com/SoundMoose/SoundMoose
I don't get how you discover things there though, or is it to make playlists for diggers Maybe check out https://openwhyd.org as an example ?
We use the Last.fm API for music discovery through the track detail pages, you can get there by clicking the tiles or the track titles.
Openwhyd looks very cool!
How do you discover music here? I could not figure it out. Do I have to log in? Why only via Google?
I am a huge music buff so I am always interested in ways to find new stuff to listen to.
I tried almost every recommendation service I could find.
So far, my favorite source of new music is http://www.gnoosic.com
If there is a way for me to try SoundMoose without a Google account I will happily check it out.
Go to the detail page by clicking the tiles or track titles, and look at related artists/tracks :)
Spotify also has pretty good recommendations, but requires people to be authenticated to use their recommendations API. Our recommendations currently come from Last.fm.
Is there a way to add the recommendations for an artist/track to the stream playlist?
i.e. if I search for an artist and press play on one of their tracks and let the stream keep playing it goes onto other tracks by that artist, but is there a way to get it to add related tracks too? Like the old last.fm artist radios.
edit: it's now doing that for me so maybe there was just something weird about the recommendations set earlier. Unfortunately I searched for some chilled out electronic stuff and the recommendations are all aggressive hip hop but that's not your fault I guess...
Thanks, found it! It looks like these are the Last.fm recommendations?
Somehow i can't find The Creatures - Standing There It's a great song and it's being hosted onto youtube.. why can't i find it? https://www.youtube.com/watch?v=SYQqN_nVstc
We debated putting YouTube music in the search results but decided against it for now, some of the coolest features involve the built in audio player.
Youtube might be hard to autoplay.. openwhyd is having issues sometimes trying to play songs in the background (i mean by that in a not focused/ not in the foreground thumbnail in chrome)
pretty cool, like that Auth0 thing, do you pay for it or free?
random question. I've built up a playlist of almost 1,000 songs on YouTube, although I have Google Fiber for like $50.00/mo I feel bad that I use YouTube as a music player when the video for the bandwidth is mostly wasted unless I don't understand how that works.
I'm wondering how difficult it would be to scrape/bring in that to mix in with my user's playlist/favorites. Assuming the same song I'm looking for exists in your site.
To provide some insight, I could probably scrape the youtube playlist myself, and assuming perhaps you had a url-based search/submit(favorite) maybe you could automate this process. Just curious.
Free. Auth0 is definitely very cool, makes it easy to implement Github/Facebook authentication (or any other service) as well. A bit of a pain to implement in Angular 2 right now if using hashes for routing (see https://github.com/auth0/lock/pull/790#issuecomment-27426628...), so we used popups as a temporary workaround.
I don't follow with the hashes, Auth stuff is on my list to do thanks for responding and providing insight on that.
edit: unless you're talking about hash like password hashing but I don't think so?...
Not sure if you saw the rest of my comment, I edited it after regarding merging playlists from YouTube into the site. It's too bad some of the songs are only 30 seconds long (I think this was mentioned regarding using SoundCloud for example as a source of music) anyway I'll try it out, already found a new song so thanks.
In non-HTML5 browsers you need # for routing single page applications.
The 30 second tracks come from spotify. Their API doesn't provide for a way to get the full track even for authenticated users, so we use an iframe widget for that :/
I see, I'm behind in tech so I don't even know I don't develop with Angular/factored in HTML5 though from what I've seen it's pretty cool what HTML5 does and makes some jQuery things "obsolete?" like draggable for example.
Anyway thanks for the information. Cool site. The 30 second song thing sucks, songs "eratically jump" I get that it's a preview/suggestion though. Music isn't "free" haha artists have to be paid.
edit: I want to stress the 30-sec gripe isn't to you, it's not your doing but you know things aren't free haha.
Nice. Although, Angular 2 and Redux are irrelevant here.
It's hacker news, some of us are interested in the tech stack!
Great website ! Already made 5 great discovery ! Would give you a donation if a wasn't so poor
How is the discovery compared to SoundCloud?
Our top tracks come from SoundCloud and search gets tracks from the SoundCloud and Spotify APIs -- detail pages contain links to related artists and tracks.
Minor suggestion, focus the search field when it first loads so I can 'just start typing'.
(Looks slick!)
I think something's up with your genres because Lil Uzi Vert is under alternative rock...
As another commenter pointed out it's SoundCloud's genres that are at fault, they're at #9 here: https://soundcloud.com/charts/top?genre=alternativerock
I just get a never ending spinner. Not sure how long I'm supposed to wait for it to load.
Best of luck, we need more non-commercial options for fundamental things as this!
Why does title say Redux?
We used ngrx/store for state management, the main redux implementation for Angular 2. Having centralized state was very powerful, helping us implement more features in less time.
> open source music discovery app based on Angular 2, Redux
I'd be more likely to read TFA if it told me what makes it different. I don't care what it's written in.