Skip to main content
Trending Lyricist I
January 28, 2019

On the 65k limit: why do speakers index music? It just seems incredibly poor design!

  • January 28, 2019
  • 46 replies
  • 2980 views
I understand there is a limit of 65k tracks, or fewer, depending on metadata. I understand Sonos is extremely unlikely to ever overcome this, that the users who are annoyed by this are a small minority, etc.

My question is just curiosity (with little practical implication as the limit is unlikely to change): why? I understand the limit has to do with speakers indexing the music collection, but why on Earth do speakers need to index my music? Shouldn't that index reside only on the devices which control the music being played (computer, phone, tablet), rather than on the speakers, too? I see many downsides in storing a copy on the speakers, this limit being one, but I can't see many upsides. Indeed, AFAIK Sonos' competitors do not use this system and do not have this limit.
    This topic has been closed for further comments. You can use the search bar to find a similar topic, or create a new one by clicking Create Topic at the top of the page.

    46 replies

    Airgetlam
    January 28, 2019
    No. The controller is just a remote. Your TV stores the channels it gets, not the remote control. Same with Sonos. So any controller that joins your Sonos has access to all of the streaming connections that have been set up. The only thing the “other” controller doesn’t have access to is music “on this device”.

    There is effectively no data stored in the controller. Which keeps it small in size, especially on devices that have limited memory, such as phones. And remember, this system was designed in the early 2000s (company founded in 2002), and is probably some of the backbone code that runs the Sonos ecosystem. Things have changed since then, but it might be challenging to switch out the skeleton while keeping the patient alive.
    Bruce
    jgatie
    January 28, 2019
    Sonos was designed to keep playing regardless of the presence of the controller. Each player is able to access the music even if the controller that initiated the queue is turned off, leaves the home, is dropped in a fish tank, etc. That's why all service info, the index, playlists, the queue, etc. are stored on the Sonos hardware, not the controller device.

    Also, at last count a few years ago, 92% of streaming was internet based. The man hours spent recoding to put the index on multiple mobile devices that come and go on a whim for a niche subset (local libraries over 65,000 tracks) of an already dwindling number of local library users is probably not going to see much of a ROI.
    Trending Lyricist I
    January 28, 2019
    So, when I open the Sonos Android app to play, I don't know, Adele's Hello which is on my NAS, what the app is really doing is telling the speakers: this song corresponds to the unique id 123 in your library, go and play song 123, and the speakers will automatically connect to song 123 on my NAS?

    This answers "how", but doesn't answer "why": what are the advantages of this kind of set up?

    The speakers do not have and do not need to store an index for online streaming content (Spotify, Tidal, etc) - why do they need it for local files?


    You mention limited memory; back when Sonos was founded, smartphones as we know them now didn't exist. Was Sonos controlled from PCs? How much memory was really needed to store 65k songs and how much did this memory cost back then?

    Again, it's just a curiosity with no practical implications, but to my non-technical, non-developer eyes, it just seems like extremely poor design
    Trending Lyricist I
    January 28, 2019
    Also, at last count a few years ago, 92% of streaming was internet based. The man hours spent recoding to put the index on multiple mobile devices that come and go on a whim for a niche subset (local libraries over 65,000 tracks) of an already dwindling number of local library users is probably not going to see much of a ROI.

    Thank you, I know that, but that was not my question. The question was not: why does Sonos not change this? I said in my post that I fully appreciate Sonos is extremely unlikely to ever lift this limit. The question was: why did they come up with this system in the first place? And, just to be super clear, I did state it is just curiosity with no practical implications, because, regardless of whether there were some intrinsic reasons I fail to grasp, or whether it was just poor design, I fully get it's not going to change.
    jgatie
    January 28, 2019
    So, when I open the Sonos Android app to play, I don't know, Adele's Hello which is on my NAS, what the app is really doing is telling the speakers: this song corresponds to the unique id 123 in your library, go and play song 123, and the speakers will automatically connect to song 123 on my NAS?

    This answers "how", but doesn't answer "why": what are the advantages of this kind of set up?

    The speakers do not have and do not need to store an index for online streaming content (Spotify, Tidal, etc) - why do they need it for local files?



    No, it is telling Sonos to put song 123 in a queue. Then it may tell it to put song 244 in the queue. Then another device may tell it to put song 64 in a queue. Then the first device might be turned off and the second leaves the building. How is Sonos supposed to know what songs to play without access to the index?

    Online content uses a server to serve up tracks to the clients. Would you want to keep a PC running a server or set up a server on an NAS ala Squeezebox to get what you wish? If so, Plex is supported by Sonos, with all the limitations of that type of setup.


    Again, it's just a curiosity with no practical implications, but to my non-technical, non-developer eyes, it just seems like extremely poor design


    It is actually a great design, with the limitation of not being optimum for the small subset of users who have over 65K of tracks.
    Ryan S
    Retired Sonos Staff
    January 28, 2019
    Good question to ask. A big part of this design is to keep consistency across all controllers. The music index is only built the one time by players (until it's re-indexed), and then all controllers in the house show the same index. If it were stored on the controllers, they'd either have to index individually, one controller at a time, or possibly the players could make an index and then push it to the controllers, but currently, that whole process is read-only, no writing.

    In part, the answer to the question "why" really is going to come down to "when we designed it, this seemed like the best option." There are certainly going to be lots of reasons involved and I don't know all of them. Lately, Sonos devices are more Internet-connected than ever, so there's always a chance that you'll see some change in the future to indexing and local libraries.

    I can't speak to future plans that haven't been announced, but you never know what might happen. There was a time Sonos technicians manually created and curated the list of Internet radio stations that players displayed, now that's done by a music service.
    Mark good posts by pressing the like button, and select the best answer on questions you've asked to help others find solutions.
    Trending Lyricist I
    January 28, 2019

    No, it is telling Sonos to put song 123 in a queue. Then it may tell it to put song 244 in the queue. Then another device may tell it to put song 64 in a queue. Then the first device might be turned off and the second leaves the building. How is Sonos supposed to know what songs to play without access to the index?


    So the advantage is that I can set a playlist on my phone, then switch off the phone and Sonos would continue to play? Or that I can add a song to the playlist, my wife another one, then I another one etc?

    Is there any advantage other than these, which are totally irrelevant for me (but might be relevant for other people, who knows)?

    Would these advantages apply when streaming online content, too? I'd think not, but maybe I misunderstood how Sonos works? For example, if I create a Spotify or Tidal playlist on my phone, will the phone somehow send the playlist to the speakers, or do the speakers need the phone to tell them what to play next?



    Online content uses a server to serve up tracks to the clients. Would you want to keep a PC running a server or set up a server on an NAS ala Squeezebox to get what you wish? If so, Plex is supported by Sonos, with all the limitations of that type of setup.

    Plex is not an option because it is almost impossible to import existing playlists. I believe many people living in properties bigger than a 2-bedroom apartment and with large music collections have some kind of music server, whether it's a NAS or an always-on PC (which effectively acts as a server). If you have 60k songs, you're unlikely to have all of them on your phone. I have Roon running on a NAS, which I understand works with Sonos even though Sonos doesn't officially support it. But we're going off-topic!
    Trending Lyricist I
    January 28, 2019
    The music index is only built the one time by players (until it's re-indexed), and then all controllers in the house show the same index.

    So let's see if I get this right:

    Let's say I am setting up Sonos for the first time. I open the Sonos app on my Android, direct it to look for my music somewhere (a NAS, a PC, my phone, it shouldn't really matter) , then what happens?

    The Sonos app scans the folder and subfolders, creates an index of the files it finds, and sends it to all the Sonos speakers in my house?

    Then the next time I open the Sonos app, the app will read the index from the speakers?

    Or does the Sonos app store a copy of the index, too? It would be very slow and inefficient to fetch it from the speakers every time.

    What devices were used to control Sonos back when it was designed around 2003 - 2005? Only PCs and Macs? Nokia phones?
    Ryan S
    Retired Sonos Staff
    January 28, 2019


    Let's say I am setting up Sonos for the first time. I open the Sonos app on my Android, direct it to look for my music somewhere (a NAS, a PC, my phone, it shouldn't really matter) , then what happens?


    The Sonos app sends a message to your indexing player, ideally the one that it has the best connection with, and then the player contacts that network location, scans the location for all files that are readable, and builds the music index. Then, the index is distributed to all of your Sonos players.


    Then the next time I open the Sonos app, the app will read the index from the speakers?

    Correct. The app contacts the players, and pulls the index every time. It's a small html file that's text only. Because it has a size limit too, we know it's not going to ever be large enough to be slow.


    What devices were used to control Sonos back when it was designed around 2003 - 2005? Only PCs and Macs? Nokia phones?
    The first controllers were the Sonos CR100, our own device built for the purpose. Then computers were added, a new version of a Sonos Controller, and finally apps for smartphones, first iOS, then Android. And with each one of these, the music index remained stored and accessed in almost exactly the same way. Though we did manage to make the index larger a time or two.
    Mark good posts by pressing the like button, and select the best answer on questions you've asked to help others find solutions.
    chicks
    January 28, 2019
    It’s very simple to work around the 65K limit. Just use an app like Hi-Fi Cast, which can interact with the music server on your NAS (Twonky, etc), and with your Sonos speakers. Works great, no 65K limit.