Hacker Read top | best | new | newcomments | leaders | about | bookmarklet login
Soundcloud for the Desktop (www.soundnodeapp.com) similar stories update story
169.0 points by somecoder | karma 1086 | avg karma 5.43 2016-01-25 02:11:28+00:00 | hide | past | favorite | 78 comments



view as:


Interesting, I had figured they had used something along the lines of http://electron.atom.io/

NW.js is very, very similar to Electron

Awesome! I'm aware that there are plugins for Chrome to capture media keys, but they never seem to work right and intercept the keys when I don't want them to. This fixes that problem of listening to my stream and having to navigate to that tab when I don't like a song.

Interesting! I've been using Soundcleod[0] for a couple years now which is basically a Fluid-style browser wrapper (with support for media keys).

[0]: http://soundcleod.com


I've also been using this for a couple years now. Using it now in fact!

Soundcloud's UI has gotten much better within the past year, enough so that it feels fine to use as a dedicated desktop app.


Works well, but I cannot figure out to browse the likes of follwers and followees, which is one of my main ways of discovery. So back to the website.

Be great if you could order artists by number of friends/followers who like them...

Hey,

How does this comply with SoundCloud's API Terms of Use? https://developers.soundcloud.com/docs/api/terms-of-use

More specifically:

> Unacceptable Use

> use of the SoundCloud® API to aggregate and stream User Content from multiple users into an on demand listening service;

I've built similar things in the past (https://github.com/MeoMix/StreamusChromeExtension), but using SoundCloud's API for such a project always seemed off-limits from a TOS perspective.


Well if it is off limits then SoundCloud should really hire this guy ASAP. As a new SC user I much prefer desktop clients to web browser applications.

Note that it's a web app using NW.js (like Electron) to turn it into a 'desktop' app.

(Which I'm personally OK with for applications like this, where native gains may not be as big)


Usually I would choose a native app over a website for the performance and better memory management, unfortunately all that is lost with node & friends.

@mondo, is the advantage really gone? Seems like cutting out the browser would eliminate a lot of overhead.

The browser isn't really cut-out, but that's not to say the the performance isn't better. In fact, with a lot of the "browser" side stuff, like bookmarks, extensions, etc. gone there is performance gains to be had using node-webkit/Electron, etc. in my experience using them. It also allows you to get around some security contexts that running untrusted code in a browser environment requires.

I'd be interested in seeing a benchmark of something like cmus or even Winamp vs something using browser-based tech like Spotify or this. My hunch is that it's a huge difference. I typically use my phone to play Spotify / SoundCloud to wireless headphones to save the CPU overhead at work.

I do wish the more mainstream companies stopped the JS-based-app trend. Spotify was snappy a few years ago and is now a resource hog. And don't even mention the Slack Mac app...

I agree with you but unfortunately that doesn't seem to be happening in a near future. With this BigData thing where companies want to keep track of your data, likes, etc web is their way. I do miss old times native and robust desktop applications.

There's no reason they couldn't collect that data on 'native' apps though; we've got Google Analytics integrated in our mobile app which sends events to the same account as the website.

I gave it a search and you're actually right[1]! I was aware of the web/android/ios analytics apis, didn't know this one.

Thanks for that! :)

Although, this even makes it more difficult to understand this path.

[1]https://developers.google.com/analytics/devguides/collection...


While I agree if they're just a JavaScript app there's no way I'm running them locally.

Lol I bet you use tons of javascript apps without knowing it.

So far all NW.js based desktops apps felt worse to me than using the website directly. They tend to use more RAM since they each need their own browser instance.

Absolutely, let's not forget that nodejs makes it easy to do the wrong thing. While it's great to lower the bar to learning to program it also often results in great ideas that are poorly executed of which I think most of the nodejs community demonstrates.

> let's not forget that nodejs makes it easy to do the wrong thing

How exactly node.js makes it easy to do the wrong thing?

> While it's great to lower the bar to learning to program it also often results in great ideas that are poorly executed of which I think most of the nodejs community demonstrates.

What makes node.js lower the bar for programming? I personally find it not easier than C#. How is it different than, say, Python, in terms of difficulty? How is node.js community showing poorly executed ideas? Any examples or are you after FUD?

Stereotyping a community is the most unconstructive thing you can ever do to for this industry.


I hear this all the time for various webapps and I'm curious about why. Is it because you want to be able to cmd/alt-tab rather than ctrl-tab to the window?

Isolating a service to a program, as well as being able to close the browser fully without closing down music. Throughout my day I open and close my browser often enough.

You could open a separate browser just for SoundCloud.

Or rather open a smaller app which has UI and behaviour built for music playback not display of html.

SoundCloud the webapp already seems to have its UI designed for music playback (it's a very slick and responsive design, by the way).

Whether the UI of the standalone app is more polished that's debatable, but as far as "isolating a service to a program" and "being able to close the browser fully without closing down music" go - in and of themselves - using another browser in paralel looks sort of equivalent to it.

I don't rule out there could be some other advantages of this solution, like smaller memory footprint etc., I addressed the specific reasons given by the parent commenter


Depending on how your OS displays tabbed browser content it can be harder to access one tab/window of many in a single application than a single unique program. It also means that it has the same volume level as the rest of your browser using system volume (if anyone but me does..)

In general I'm a user who never downloads apps on my phone (unless there's something I find unsuited to my browser) - but for a music player I want it to be quickly isolated for skipping, pause, etc etc.


That's also another factor, in-browser stability is subject to each individual end user. A native client helps improve stability in the overall browser.

As a person consistently dealing with lots of tabs (50+) having another tab for solely playing the music is not welcomed. Tab pinning helps, but not much.

I use Chrome's Add to Desktop feature for SoundCloud and other webapps, which adds a shortcut to launch the webpage in a dedicated window (without the browser chrome, etc.) The window is managed separately from your normal browser windows (if any) and acts like a first-class native app.

Nice one, news to me. Ensure "Open as window" is checked for it to open without chrome.

Why not prefer native apps to webapps? Better performance, a better fit into the OS's look-and-feel, and ability to interface with other OS-wide features such as accessibility and automation etcetera.

Although, Soundnode doesn't seem to be a true native app, as others have pointed out.


I doubt the better performance is true since it's essentially the same technology that would be used on the web. One performance hit you take is loading the resources once.. but you also need to download the app.

But you don't need a web browser...

I'm pretty sure this app is basically a browser though -- it looks like it's using Electron or nw.js to wrap HTML in a Webkit view.

Ideally web app and its data is instantly accessible anywhere, not just on your desktop. They bypass any possible install restriction (or AppStore restriction, which is why Apple is deliberately keeping Safari in 2010).

The look & feel argument is total bullshit at least for me. Every native app I am using is completely different. The only consistent look & feel is with ms office apps like excel, word and powerpoint.

Performance is also a lot about how and who wrote the app rather than if the app is native. It's just harder and requires a lot of knowledge to make javascript app perform well, but it's not some impossibility.

And yes, standards are still creating too high level APIs and it takes forever to gain more and more access to the same things native apps have. But that will get better due to extensible web manifesto.


> Ideally web app and its data is instantly accessible anywhere, not just on your desktop.

Where the data resides is not a distinction between web apps and native apps. See Apple's bundled apps, like Notes, Contacts, etc.: you can access the same data via a website or through native iOS/OS X apps.

However, one advantage that native apps have when it comes to accessing cloud data, is that you can still access and update that data even when you have no connection to the internet.

> which is why Apple is deliberately keeping Safari in 2010

What do you mean with this?

> The only consistent look & feel is with ms office apps like excel, word and powerpoint.

This sounds like you are primarily a Windows user, where indeed, MS Office apps seem to be the only ones that share a consistent look-&-feel among them. Even Windows' own applets vary wildly in how they present basic UI elements (like toolbars and Control Panels.)

The overall situation, while with its own unique flaws, is much more coherent on OS X, across all vendors.

> Performance is also a lot about how and who wrote the app rather than if the app is native.

True, but web apps will always be removed from the underlying OS's "metal" by at least one degree, no?


> Where the data resides is not a distinction between web apps and native apps.

Huh? The data is only accessible to native app after you have installed the app on a device. If you only ever use your own one desktop, then it's probably hard for you to see this. Can you even try to imagine that you cannot just install arbitrary native app on let's say, your friend's device to access your data? But you can easily "install" a web app, since technically it's just a website like this one.

> What do you mean with this?

http://nolanlawson.com/2015/06/30/safari-is-the-new-ie/

> However, one advantage that native apps have when it comes to accessing cloud data, is that you can still access and update that data even when you have no connection to the internet.

https://developers.google.com/web/updates/2015/12/background...

> True, but web apps will always be removed from the underlying OS's "metal" by at least one degree, no?

Not always now that Web Assembly will be implemented by browsers. (Not to be confused with "asm.js", see https://en.wikipedia.org/wiki/WebAssembly)


genuine question - why do you not listen to music on your phone ? you get to know when you have a call coming in and not miss it..plus most phones have better audio chips than the desktops.

you can obviously connect a usb cable to your computer to keep charging the phone.


I'll answer my perspective as I use Spotify and prefer to use the desktop app when working than my phone. The reasons are:

- I use headphones, and I use Skype, so I wont use two pairs or swap them when Skyping. Skype for Desktop is easier to use than the phone (i.e. screen sharing, sharing links, etc).

- It is far easier to skip a track or pause it using a mouse when you're already using the mouse, than to take your hand away and use the phone.

- I can't watch YouTube movies on my PC when my headphones are in my phone.


Because why fill my table with devices when everything I want to do can be done on my laptop with one cable (headphones)

> you get to know when you have a call coming in and not miss it

People still get phone calls?


I'm the opposite. I don't have to trust that a website won't enable my mic or camera without permission. Won't read my location. Won't read my contact list or .ssh folder etc... Won't have some remote explioit.

For me the less native apps the better


You got the source code, dude.. https://github.com/Soundnode/soundnode-app

Sorry to be a pedant, but that doesn't mean the supplied binaries have been built with the exact source provided :^)

Also, the binaries are being offered for download over HTTP with no signatures.


Checkout the source code (over HTTPS) and compile it yourself then?

I know a couple of websites which provide music on demand and they pull their data off of soundcloud. Seeing as how successful they are, they must have grabbed Soundcloud's attention. Yet, after all these years it seems no consequences occurred.

Anyone know if there's something like this for Bandcamp?

Nope, unless there's an underground trade in API keys. [1]

Wonder what happened.

[1]: https://bandcamp.com/developer


Can't someone just steal the API key in a currently authorized app?

Indeed you can, and preferably you'd use the key of an official phone app from them, so that they can't just invalidate it without releasing a new one.

Looks great! Out of interest, does this take advantage of any native features via node or could it also be a website?

I'm curious if the motivation of making a desktop app was just for the "installed app user experience" or because it was needed to access some API.


Can't open osx version

No problem on my system - Air, 2012, OSX latest

For me, the main allure of the a desktop app is the support for media keys.

For those interested, there is a Mac app called BeardedSpice that maps the media keys to a variety of websites (Youtube, SoundCloud, BandCamp, etc).

https://github.com/beardedspice/beardedspice


There's also a chrome extension "Media Keys by Sway.fm"[1]. It can scrobble to last.fm and pause videos/music in other tabs when you start playing something else.

[1] https://chrome.google.com/webstore/detail/media-keys-by-sway...


Or Keysocket which is FOSS (Apache license).

https://github.com/borismus/keysocket


We are also doing a spec so that it works in all browsers:

https://mediasession.spec.whatwg.org/


Is anybody aware of plans for a web API to allow reassignment of media keys? Clearly it would require strict permissions so as not to be abused, but it could be really useful.

Does it use SC API's ( guess not )

or does it scrap / manipulate the sound cloud client ?

is it allowed ?


Why do you guess not? It says it uses Souncloud API in the first paragraph on GitHub's readme. [1]

[1]: https://github.com/Soundnode/soundnode-app


I have waited so long for Spotify to add a feature where you can add a Soundcloud track to a playlist. I guess i have to use this until (if) that happens.

You could download the Soundcloud tracks into a directory and add the directory to Spotify.

I haven't checked Soundnode App yet, but any attempt to sanitize the way you interact with SoundCloud should be appreciated, because SC web UX is bad.

Soundnode App UI looks nice. I'd add screenshot for each main view on app's home page, even if they're all similar, though. UX remains to be tested.

The only (apparent?) downside is that this app seems to be a bundled web app with web browser. I'm not that fond of such solutions. But. If it wasn't open source and GitHub page wasn't shown there, then there is a high chance I would not notice that it's built like that, at least from screenshot alone.

Writing SoundCloud client is on my ToDo list, as it would be a good way to brush up and enhance my Qt skills. Maybe I'd finally embrace QML along the way, as I'm postponing QML tinkering for far too long I guess. I'm also considering fiddling with PyQt5, as it could possibly quicken prototyping, but I'm not sure about it in my case, as I have only minor Python experience and no PyQt experience at all (well, it's like incentive to change that). There is also SoundCloud python package, so going python way is quite tempting, but I always prefer native compiled apps over scripted ones.


What do you find so bad about UX of the SoundCloud web app?

Allow me to answer by pointing to what I wrote some time ago:

https://news.ycombinator.com/item?id=7854080

(Oh, it's already ~2 years since I first thought about writing my own SC API front-end. Time sure flies...)


Okay, so I ran it with my backup account that I'm using to download stuff for free (those songs that require you to follow certain people on SoundCloud to get access to the download link), and I noticed something strange: apparently, I'm following the SoundCloud user named Flying Spaghetti Monster.

I then went to SoundCloud, logged in with the same account, opened up the list of the users I'm following, loaded until the end of the list, pressed Ctrl+F, typed in "fly", and no matches were found. I then went ahead and typed "spa", again, no matches were found. Then, I have started to be a bit suspicious about the app. Then, I started typing "Flying Spaghetti Monster" in the search bar on SoundCloud and immediately realized that I am indeed following a user named "Flying Spaghetti Monster", even though I absolutely don't see it through the list of the people I am following.

Talk about a bad user experience. I'm definitely not going to use their official website again.


The app starts by showing the login and therefore requires to be registered first. However, on the official website I can listen without registering. An API requirement I guess. A regular user will probably be registered anyway.

But the login looks exactly like the official page. So is this just a wrapper for the website or do they actually add value ?


I’ve hoped for a long time that SoundCloud would release an alternative to iTunes to capitalize on the many podcasts on their platform. iTunes is such a goddamn POS, and I wish a private company would take up the challenge, at least when it comes to podcasts.

I'm hoping it works natively with an xbox controller. Until now I've used Kodi's soundcloud app for my HTPC, but I'd prefer a proper app.

If you are on windows and want a native app:

https://www.microsoft.com/de-de/store/apps/clouder/9wzdncrfj...

Used it for some time and is very nice.


Legal | privacy