
Show HN: SoundMoose – open source music discovery app based on Angular 2, Redux - stefan_r
http://www.soundmoose.com
======
mrmondo
Neat! 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](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.

~~~
stefan_r
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!

~~~
mrmondo
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 ;)

------
earthly10x
I'm more interested in the discovery or recommendation algorithm than what
language you used to develop it.

------
southclaw
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...](https://dl.dropboxusercontent.com/u/45512231/ShareX/chrome_2017-01-26_08-24-04.png))
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!

------
wodenokoto
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)

------
sleepychu
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.

------
ZoeZoeBee
Link to the projects github
[https://github.com/SoundMoose/SoundMoose](https://github.com/SoundMoose/SoundMoose)

------
Marinlemaignan
I don't get how you discover things there though, or is it to make playlists
for diggers Maybe check out [https://openwhyd.org](https://openwhyd.org) as an
example ?

~~~
stefan_r
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!

------
NewGier
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](http://www.gnoosic.com)

If there is a way for me to try SoundMoose without a Google account I will
happily check it out.

~~~
stefan_r
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.

~~~
coroxout
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...

------
Marinlemaignan
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](https://www.youtube.com/watch?v=SYQqN_nVstc)

~~~
stefan_r
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.

~~~
Marinlemaignan
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)

------
ge96
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.

~~~
stefan_r
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...](https://github.com/auth0/lock/pull/790#issuecomment-274266282)),
so we used popups as a temporary workaround.

~~~
ge96
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.

~~~
stefan_r
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 :/

~~~
ge96
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.

------
lessclue
Nice. Although, Angular 2 and Redux are irrelevant here.

~~~
allover
It's hacker news, some of us are interested in the tech stack!

------
BuenosAir
Great website ! Already made 5 great discovery ! Would give you a donation if
a wasn't so poor

------
eknight15
How is the discovery compared to SoundCloud?

~~~
stefan_r
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.

------
allover
Minor suggestion, focus the search field when it first loads so I can 'just
start typing'.

(Looks slick!)

------
katrinaspice
I think something's up with your genres because Lil Uzi Vert is under
alternative rock...

~~~
allover
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](https://soundcloud.com/charts/top?genre=alternativerock)

------
muloka
I just get a never ending spinner. Not sure how long I'm supposed to wait for
it to load.

------
mxuribe
Best of luck, we need more non-commercial options for fundamental things as
this!

------
igor_filippov
Why does title say Redux?

~~~
stefan_r
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.

------
brangalina4eva
> 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.

