However Spotify doesn't agree. If this is based on librespot its using stuff Spotify doesn't support and could easily shut down for unauthorized clients any time.
Their supported paths are iOS and Android SDKs for mobile, and the Web Playback SDK for desktop [1]. I've been using the web SDK in anger to build a jukebox app [2] and its only so-so.
First, you're under the confines of a web browser which has some pretty big tradeoffs over the experience and system integrations you can build.
Next, song playback works as advertised but there are many things you can't do like introspect the queue or prevent Spotify Radio from kicking in.
The latter is downright hostile to controlling exactly what songs you hear. I assume that always going into auto-recommendation mode is intentional to juice playback stats.
Kudos to spotifyd for offering total control over how and where you stream music you're paying for.
1. https://developer.spotify.com/documentation/web-playback-sdk...
For example, if I tweet a link to my own song (hosted on spotify) not only will Twitter potentially block people from seeing the link, their URL shortener may break the link to Spotify (Because the CEO doesn't want traffic leaving Twitter) and then even if the link goes to Spotify, they do a ton of things to siphon listeners that came for my music away from listening to my music, including NOT playing more of my music after the intended song plays. The net result is that hours of promotion as an artist only generates a few leads that often get ushered away from your content... It happens in many other ways for creators, artists, and even businesses without anyone being able to know that it's happening.
The future of being an independent entrepreneur is totally disrupted by social media as it slowly creates a stranglehold on the Internet. If we all don't start acknowledging this and calling out anti competitive practices and platform scams, we'll all be weeded out from being able to make our own living and we'll be forced to work for employers for minimum wages... The Future of the Internet looks grim from where I see it.
I understand the criticism that it's hard for you to get an audience to notice you. But once somebody has listened to a tune of yours and then doesn't actively seek out more of it ... could it be that they just prefer to listen to something else instead? Competition is toughand it may feel easy to blame it on big tech, but sometimes peoples taste is just not something you can legislate..
If always playing songs from the same artists is what people wanted (e.g. lead to more overall listening time), Spotify would 100% do that. You can't pick what a radio station plays next after starting one of your songs, likewise Spotify gets to pick what their users prefer (visibly: not always songs from the exact same artist).
There's a huge element of luck too, who happens to hear you, whether or not you strike some chord with the public in some way. But mainly, it's just hard work. Many artists took a very long time, playing shows in small venues for years, building up local fanbases... and then eventually saw some small measure of success. Many more saw nothing.
I'm hesitant to blame the internet for this. Sure there are some artists who seemed to get plucked from nowhere, and were catapulted to international success overnight. But most, most just worked hard, and got there eventually.
To be entirely fair at least for me in lot of cases I end up adding maybe 2 songs of an artist total to my playlist. Assuming random passerby is going to like rest of your stuff just because they liked one song is a stretch.
If the problem is serious enough, the capitalist solution would be to develop a platform that solves the problem for independent artists. However, as others have pointed out, the real customers for Spotify are not indie artists but rather paying users, and established artists.
While it is tempting to blame platforms for commercial failure. One has two recognize the truth of the business: making music follows a long-tailed distribution, and ultimately the listeners decide who rips those benefits.
My naive assumption is that Spotify would love to, but the record labels don't agree.
When Spotify was young they were extremely developer and ecosystem friendly. It gets progressively worse and worse over time.
The biggest change I personally suffered from is when they pulled out of their integration with Djay, a DJ app. This integration was amazing for bedroom DJs like myself, being able to use Spotify to organize DJ music and DJ directly from it. Then they sunset the entire integration.
Now Djay and even bigger apps like Pioneer Rekordbox integrate with Tidal... Do the labels prefer Tidal over Spotify for some reason? Or did Spotify decide to get out of this game for reasons of their own?
Remember when Netflix first started they had amazing API's and all kinds of cool things where built off them, then one day they got big enough and shut them all down, of course they claim it was the "evil industry" that made them do it, but I simply do not believe them, nor do I believe spotify.
This pattern has been repeated over and over since the dawn of the internet, Early Platform is open, and dev focused to bring people in, then over time they wall off the garden to only their apps...
Google, Netflix, Twitter, Facebook, and countless others all follow this pattern.
Roon will index either or both of them with your local mp3 library. It decorates with third-party metadata services, and will stream hi-res to almost any hardware device you can throw at it.
The problem is that middleman owns near-everything your users want.
They hold all the cards, they can just say "hey, either you do X or you don't get our music library" and now your customers don't have ~95% music library they wanted.
I'd wager Spotify's reluctance to "just let you listen to fucking music" might be related to that, if it was just API you could integrate with any player you could make indie-only Spotify equivalent that just... uses Spotify API to play whatever is not on it.
That’s one of my favorite features, sometimes I’m too distracted driving or doing something else to manage Spotify, but that doesn’t mean I want the background music to stop entirely.
But for a developer building a custom listening experience it needs to be completely optional.
Right now you literally can't build an experience that plays just one song and stops after because "radio" automatically kicks in. You need to do crazy hacks to pause the current song before it ends or enqueue a silent track and intercept that, if you don't want to occasionally hear a small bit of an unwanted radio song before correcting.
It's built on RSpotify, which describes itself as:
> RSpotify is a wrapper for the Spotify Web API, inspired by spotipy. It includes support for all the authorization flows, and helper functions for all endpoints.
Librespot is the a level playback client that reverse engineered what the native Spotify desktop apps do to get, decode and play a music stream as a connected device.
RSpotify is a high level client that uses the Spotify Web API which can control what is playing on any connected device.
Neither of which should be confused with the Spotify Web Playback SDK which turns your browser into a connected device provided it supports the right DRM bits.
https://developer.spotify.com/documentation/web-playback-sdk...
Maybe this is just me, but I take an issue with projects that use GitHub's community features but don't publish their source code. Feels somewhat unfair.
What's wrong with using GH community features?
It's a side / passion project so no time or budget to build any support or community stuff. I considered GitHub, Reddit and Discord and all have pros/cons.
Greed is possibly the most common human emotion in the world.
1) Pi-zero running shairport-sync (couldn't get them, got orange-pi zero 2 which works great) https://github.com/mikebrady/shairport-sync. I have a few of these.
2) Class D amp, Aiyima, Fosi, Loxjie etc Aliexpress is one place to get these. I've used and like Aiyima A03 and their ali store delivers fast.
3) Some nice, high-quality, 2nd hand speakers you like. Wharfedale, JBL, B&W, Acoustic Research, Yamaha. (Or get some active speakers you like and skip #2, eg B&O beolab 6000)
4) owntone (formerly known as forked-daapd) https://owntone.github.io/owntone-server/
5) configure owntone with your spotify premium, takes less than a minute. (And with your music that you own - takes longer because you take more care).
You now have a multiroom setup with fantastic sound that you can control with http://owntone.local:3689/ including with your phone. And/or you can use the "Retune" app on droid and apple's "itunes remote" app on ios. Better sound than most alternatives for less dollars.
All integrates well with Homeasistant because of course it does.
I really like how mine turned out. Having half a dozen sets of speakers all playing the same music in perfect sync as you move from one room to another while doing chores on the weekend fills me with more joy that I would have guessed. YMMV.
Btw what is the additional value of owntone if you’re already running airplay? Doesn’t AirPlay2 already do multiroom?
Owntone on your local network gives a nice persisten connection to whichever speakers you decided to switch on. The music signal is not being relayed from your phone to the speakers so it doesn't degrade as you move about doing your thing.
You control owntone and tell owntone, enable the speakers in the bedroom, livingroom and deck setting each volume separately and play this m3u playlist of your music, or this album, or this spotify playlist or podcast or whatever to all of them at the same time, synchronized.
Owntone does the job of the apple music/itunes software on a mac (ie the software that ships with a mac laptop to play mp3 files), which does multiroom to airplay 1 speakers. Iphones don't do this and don't do it with spotify. I mean not even an iphone to an appleTV plugged into an amp does spotify reliably. Apple's phone controlling an appleTV box requires constant reboots to function which is enough to stop anybody from using spotify with that setup. Is that intentional? Spotify clearly think so. Doesn't look good but I don't have deeper evidence than these observations of what works and what does not.
Owntone development isn't being controlled by apple for their business interests, eg it does spotify, lastfm and works like apple doesn't in my experience of it with the stuff the devs wanted to work (get involved and hack it to your needs if you have more?) - whatever you think is the reason the apple software not working, it clearly doesn't and owntone does. It works controlled from android, or your laptop, or your desktop, or tablet with the music you want not what apple "allows" or "cares enough to not have be broken" or insert some other excuse (maybe there's a convincing one but I can't think of it).
Eg plug the pi into power and the amp, plug the amp into power and the speakers. No other wires.
They all synchronise perfectly over wifi or ethernet, which is the point of shairport-sync. They identify themselves on your network as AirPlay 1 speakers. Note that they actually work with the spotify app directly in a reliable way just like AppleTV doesn't - your AppleTV will require a reboot every time you want it to be the output of spotify. So either I'm a better engineer with off the shelf parts and open source software than apple's full time paid professional engineers or maybe Spotify has a point when complaining about Apple non-competitive behaviour? I wish it were the former but somehow doubt it.
- Raspberry Pi with Max2Play [0] and optional HiFiBerry DAC
- running the LMS squeezebox server (still supported by the community after Logitech discontinued it)
- which supports multi-room audio and AirPlay
- controlled from my phone with iPeng [1]
- with a pair of JBL LSR305 active speakers (and a Mackie Big Knob passive to control the volume and allow for a second source).
Laughs in Lidarr
I rip my own songs, but I want something that's better than Spotify to listen to it. Then again, I listen to music on my Alexa too, so I think it would be hard for something to interface with that.
Note that to get it to support Spotify Free, you need to compile a custom librespot with this part of the code commented out, that checks for Spotify Premium: https://github.com/librespot-org/librespot/blob/6dc7a11b09b5...
And then use this with spotifyd instead of the original.
I think there's an unofficial understanding that if someone puts out a way to access Spotify Free that removes or bypasses the limitations and constraints that Spotify imposes on free accounts, they would summon the lawyers.
For example you can set up your spotifyd daemon on a raspberry and have it always connected to speakers.
Now when someone is in your local network they can choose your spotifyd daemon and play spotify over the speakers without connecting to the speakers directly via bluetooth etc.
[0] https://spotifyd.github.io/spotifyd/config/File.html (after the configuration file example)
"Hey Mycroft, play songs about better software integrations"
And now they've also "improved" their default interface with ultra-skinny fonts. Granted, I have a ridiculously bad 1080p laptop screen, but the font is so skinny that I only see colored pixels instead of white.
We recently cut a new release for the first time in over a year, which is very exciting for all of us (and I'm guessing why the project has been submitted here now :D)
Also, any plans to add the ability to save the tracks that are streamed? (for e.g. offline playback or for exporting to mp3 etc.)
Definitely no plans for saving tracks.
I hope not. Sounds like a great way to provoke Spotify into a breaking API change.
If you have a PC with the Spotify app running, that appears as a remote play device to other clients.
Otherwise I found ncspot to be more reliable than spotifyd: https://github.com/hrkfdn/ncspot/
The issue I've found with the PC setup, which I've been using after being somewhat unconvinced by Volumio, is that for dynamic playlists, the clients don't seem to agree on the contents. I have to manually go load the playlist on the player PC so that when the songs advance I can see it on my local computer. The player PC only does that, so I never interact with it.
https://gist.github.com/wandernauta/6800547
It’s nowhere near a fully featured Spotify client, but for little scripts or UI things where I just want to see the current song it’s pretty lightweight and already works with the Spotify app I have installed (obviously this means it has a different end goal in mind than Spotifyd).
I was always interested in their techstack, and how everything works on their end, but unfortunately I'm not into Java, which is the reason I never applied for a job there.
this is why:
> Spotifyd requires a Spotify Premium account
which is actually not true. you can change some code in the source, to allow playback on free accounts. Spotify hunts down anyone who posts code like that though
What's the rationale for not building homebrew media players instead of railing against Spotify...?
This would work if you almost never venture outside of your existing music catalog. If that's you, it's probably also a better financial decision to just purchase your own music in stead of 'renting' it.
According to my 'Wrapped' I listened to 4600 different songs this year, from 3000 artists. Most of them I discovered because of Spotify. So for me, Spotify is very much worth it and I would not be able to self host anything to give me near the value that Spotify adds. And I can't even contemplate pirating all these songs, since I find that morally wrong because the paid services (for music) are decently affordable and provide good value.
Aye, aye.
> Then I need to spend time on other web sites for music discovery?
One cost of cultivating tastes, as opposed to being fed by a recommendation algorithm, is the risk of possibly hearing music you might not like, as well as the time required spent doing so.
There are open-source music recommendation algorithms but having survived radio payola I consider that approach a step backward.
> This would work if you almost never venture outside of your existing music catalog.
I favor bulk music downloads (more than I could ever listen to) and randomized playlists, but then, I may have a higher tolerance for my tastes not being pandered to.
> I can't even contemplate pirating all these songs,
Seems to me that you are doing precisely that.
> since I find that morally wrong because the paid services (for music) are decently affordable and provide good value.
Wait, you find it morally wrong to infringe copyright (a specious proposition in any case) because the paid services are affordable? What is the price point that makes piracy moral, then?
And especially Spotify does this extremely well.
Yea it's tied somewhat to Google, but it's a simple easy to deploy puck that just works.
Not to suggest the hard work that's gone into this isn't awesome, because it is!
Actually, I have this on my TODO list for a long time, maybe someday I'll finally implement it.
[^1]: https://developer.spotify.com/documentation/web-api/referenc...
You might have to copy all your liked/favorites to a regular playlist for it to show up.
I gave up on 3rd party things. My automation VM includes a GUI environment, and I run the official Linux Spotify client. The only way my setup can break is if Spotify gives on Linux entirely.
Snapcast[1] transmits two streams to 7 different speaker setups:
* Music + text to speech
* Just text to speech
When TTS plays on the first stream, music volume is ducked for the duration. That setup is all pulseaudio junk. I could actually play any system audio to my entire house, or even provide an 3.5mm aux input near the VM host, although in practice I stick to Spotify for convenience and the ability to use the clients on any machine to control everything.Speakers in some rooms turn on/off completely with the room, while others stay on but toggle between music and text-to-speech, to make sure I hear those notices (which are like doors opening, washer is done, etc).
My main work setup has a snapcast client, so I hear TTS events even with noise canceling headphones on. Some snapcast clients are placed on existing machines (i.e. TV computer), while a few are dedicated Raspberry Pis.
The appeal of spotifyd from an end-user perspective is that anyone on the network can control it.
I keep an old raspberry pi with rAudio-1 running under my desk, with a nice 60 dollar DAC HAT, that runs into a small amp with 2 rca cables, and then into speakers.
Generally I keep it playing a private shoutcast running music from my nas, but having spotifyd means I can interrupt it with anything I was just listening to on my phone - in the car, mowing the lawn, etc.
The continuity without the hassle is the kind of thing tech promised long ago. If it could make it one more step, the gap would be gone ... I should be able to just have all this software talking to each other, and knowing where I am, and playing automatically to whatever seems best, but the interoperability between them keeps it 1 foot from perfection.
I suppose its cool if you run a riced nix environment, and you only want command-line tools. Or its cool for people who don't want to run the dedicated app or browser version.
In my experience, having tried a few different clients in the past, they sometimes fail due to changes on Spotify's side. I don't know if that situation has changed in the past few years.
Unfortunately the MPRIS interface works weird. For example it didn't let me change the volume.
On top of that spotifyd seems to sometimes get "split brain" where it continues playing but I can't control it from my phone (Spotify Connect). My phone instead wants to play locally. Which is weird because Spotify normally only lets you play only from one device at the same time.
I've been struggling with Spotify's messed up developer experience for years. They deprecated libspotify years ago without an alternative, promised an upcoming alternative for years, and they eventually pulled the plug last year without even bothering to provide an alternative.
I've tested Librespot in the meantime, but it proved too cumbersome to configure and use as a non-standalone executable.
In the meantime mopidy-spotify (the project I've used for years on my RPis) has gone all the way to adding a Docker image just to support Librespot and the whole Rust environment that is required to build it. And, of course, it's not guaranteed that these projects will survive - Spotify can easily snap their fingers, change their API in a breaking way, and we're forced to play a catch-up game again. They have already done so in the past.
I therefore decided that a company that doesn't value my consumption use-cases, doesn't bother for the time I waste to adapt to their changes, and has a bad record of developer experience, is not worth my money. I wish the best of luck to the guys behind spotifyd, but I'm personally done after 10 years of chasing Spotify.
I've moved to Tidal in the meantime. It's still far from perfect, it still lacks an official Linux client and it's more buggy than Spotify. But at least there's a reversed engineered web API that so far they haven't bothered to fight nor change. And that's really all I need to build my music experience.
Has anyone produced similar (and working) alternatives for Tidal (or Sonos S1/S2)?
I must have tried it a dozen times by now, but never once gotten it to work.
> Common issues
> The device name cannot contain spaces
That's interesting. I wonder why this would be causing an issueWe now have a few years of experience with music streaming. And what we've learned is that -- sure, it's convenient -- but honestly hasn't much improved the lot of artists and musicians. It's a new exploitative system that's perhaps slightly better than the old exploitative system.
We can do better. Literally, locally, and for friends. I used to do MPD, but now I'm glad for things like mstream that make this sort of thing even easier. I hope funkwhale and other federated things do better as well.
They can't, major record labels and major artists are working with Spotify to fuck everyone else.
As a consumer of music, why is this my problem?
If you consume music then surely, you want the artists and musicians you support to be paid fairly for their work.