<?xml version="1.0" encoding="utf-8"?><feed xmlns="http://www.w3.org/2005/Atom"
    xmlns:fh="http://purl.org/syndication/history/1.0"
    xmlns:at="http://purl.org/atompub/tombstones/1.0">

    <title>Sockpuppet: Blog</title>
    
    <subtitle><![CDATA[Updates, articles, and behind-the-scenes content.]]></subtitle>
    
    <link href="https://sockpuppet.band/blog/feed?id=2251&amp;tag=streaming" rel="self" />
    
    <link href="https://sockpuppet.band/blog/feed?tag=streaming" rel="current" />
    <fh:archive/>
    

    <link href="https://busybee.superfeedr.com" rel="hub" />
    
    
    <link href="https://sockpuppet.band/blog/" />
    <id>tag:sockpuppet.band,2026-05-14:blog</id>
    <updated>2026-05-27T23:45:59+00:00</updated>

    

    <entry>
        
        <title>Where&#39;d your music go?!</title>
        <link href="https://sockpuppet.band/blog/2156-Where-d-your-music-go" rel="alternate" type="text/html" />
        <published>2025-10-02T18:48:22-07:00</published>
        <updated>2025-10-02T18:48:22-07:00</updated>
        <id>urn:uuid:c47916bc-18db-5fe2-bef6-4fe2391a1de3</id>
        <author><name>fluffy</name></author>
        <summary type="html"><![CDATA[<p>Today I removed all my music, except <a href="https://sockpuppet.band/track/the-war-machine">The War Machine</a>, from Spotify, for the reasons explained in that song (and also <a href="https://sockpuppet.band/blog/121-On-Spotify-and-listening-to-and-collecting-music">in this lengthy diatribe</a>)​.</p>]]></summary>
        <content type="html"><![CDATA[

		

        



        <p>Today I removed all my music, except <a href="https://sockpuppet.band/track/the-war-machine">The War Machine</a>, from Spotify, for the reasons explained in that song (and also <a href="https://sockpuppet.band/blog/121-On-Spotify-and-listening-to-and-collecting-music">in this lengthy diatribe</a>)<sup id="r_e2156_fn1"><a href="https://sockpuppet.band/blog/2156-Where-d-your-music-go#d_e2156_fn1" rel="footnote">1</a></sup>.</p><p>But doing so also required, for very annoying reasons, removing it from all other streaming platforms as well, because the distributor I was working with, TooLost, had no option for removing music from <em>just</em> one platform without deleting and re-uploading everything<sup id="r_e2156_fn2"><a href="https://sockpuppet.band/blog/2156-Where-d-your-music-go#d_e2156_fn2" rel="footnote">2</a></sup>.</p><p>So, when is my music going to get back onto the other streaming platforms? <a href="https://sockpuppet.band/blog/2388-Please-do-not-ask-me-about-streaming-distribution">Ehhh</a>.</p>

        
            <h3 id="2156_h3_1_Why-we-re-at-this-point">Why we&rsquo;re at this point<a href="https://sockpuppet.band/blog/2156-Where-d-your-music-go#2156_h3_1_Why-we-re-at-this-point" class="toc_link"></a></h3><p>The state of affairs for independent music distribution is a horror show. Every distributor I&rsquo;ve used has been a nightmare to work with in some way, and has ended up costing me far more in my dealings with them than I&rsquo;ve ever made back. I&rsquo;ve made probably around $100<sup id="r_e2156_fn3"><a href="https://sockpuppet.band/blog/2156-Where-d-your-music-go#d_e2156_fn3" rel="footnote">3</a></sup> in total over the past 20 years from streaming. It has cost me a <em>lot</em> more than $100 to make my music available on streaming<sup id="r_e2156_fn4"><a href="https://sockpuppet.band/blog/2156-Where-d-your-music-go#d_e2156_fn4" rel="footnote">4</a></sup>.</p><p>Meanwhile, the &ldquo;best&rdquo; month I&rsquo;ve ever had on streaming was the month after <a href="https://sockpuppet.band/blog/3123-Furality-is-gonna-be-amazing">Furality Somna</a>, where I got a brief surge of interest on Spotify, but not enough of one to actually get any of the sustainable characteristics that one would expect. The people who listened to my stuff didn&rsquo;t <em>keep</em> listening to it, my work never ended up in any recommendation feeds or popular playlists, and even with the amount of direct interest I got, I only ended up making around $7, which isn&rsquo;t even enough to receive a payment from my distributor. And it only pays for about two months of distribution fees anyway.</p><p>I&rsquo;ve also written extensively about <a href="https://sockpuppet.band/blog/121-On-Spotify-and-listening-to-and-collecting-music">the problems with streaming platforms and Spotify in particular</a>, and that&rsquo;s not an industry I really want to support right now. In addition to Spotify&rsquo;s issues, I&rsquo;ve also learned of reasons to distrust Apple Music and Tidal, for example their <a href="https://tidal.com/partners/pioneerdj">partnerships</a> with <a href="https://rekordbox.com/en/2025/03/apple-music-support/">Rekordbox</a> which makes it so that DJs can stream artists&#39; music into their mixes without materially supporting said artists beyond &ldquo;exposure.&rdquo;</p><p>I&rsquo;ve also had great difficulty with getting my music onto streaming platforms to begin with these days. In addition to costing considerably more to get distribution than I can ever expect to receive in return, every distributor has succumbed to the problems with a glut of AI submissions, where they have lost all trust in musicians who haven&rsquo;t already made it big, and provide Kafka-esque hoops to jump through to prove that my music was made by me. This isn&rsquo;t <em>entirely</em> the fault of the distributors, but it <em>is</em> a symptom of a deeply broken industry.</p><p>I have also applied to many record labels but they only want to sign up-and-coming musicians, not ones with a deep catalog of what they see as unsuccessful releases, or they want people with a much larger social media presence and a fanbase which would be large enough for me to not need a label to begin with. I am not a social media darling (nor do I want to be), and I just plain don&rsquo;t have it in me to try to get what they want of me.</p><p>So I&rsquo;m focusing on what I have control over.</p><h3 id="2156_h3_2_Where-we-are-right-now">Where we are right now<a href="https://sockpuppet.band/blog/2156-Where-d-your-music-go#2156_h3_2_Where-we-are-right-now" class="toc_link"></a></h3><p>At the moment, my plan is to do the following:</p>
<ul>
<li>Continue to focus on <a href="https://sockpuppet.band/bandcamp">Bandcamp</a>, <a href="https://sockpuppet.band/mirlo">Mirlo</a>, <a href="https://sockpuppet.band/itch">itch.io</a>, and the other storefronts that value creators <em>and</em> listeners, and evangelizing a return to people <a href="https://sockpuppet.band/blog/121-On-Spotify-and-listening-to-and-collecting-music#own-your-collection">owning their own collections</a></li>
<li>Switch to fully-self-managing the releases on my <a href="https://sockpuppet.band/youtube">YouTube</a> and <a href="https://sockpuppet.band/peertube">Peertube</a> channels, and hopefully at least keep my stuff available through YouTube Music in that way</li>
<li>Focus on building my audience through <a href="https://sockpuppet.band/live">live performances</a> and <a href="https://sockpuppet.band/commissions">commissions</a></li>
<li>Continue to work towards a <a href="https://beesbuzz.biz/blog/11155-A-fair-independent-streaming-platform">fair streaming future</a> and other grassroots efforts like <a href="https://kvrradio.com/">KVRR</a> and <a href="https://theindiebeat.fm/">TheIndieBeat</a></li>
</ul>
<h3 id="2156_h3_3_This-isn-t-permanent">This isn&rsquo;t permanent<a href="https://sockpuppet.band/blog/2156-Where-d-your-music-go#2156_h3_3_This-isn-t-permanent" class="toc_link"></a></h3><p>If someone can point me to a fair, ethically-managed distributor that <em>supports</em> independent musicians (rather than using the promise of winning the lottery to keep us constantly buying tickets), I would certainly consider reuploading my catalog somewhere.</p><p>What do I think counts as ethical in this case?</p>
<ul>
<li>Charging an affordable, sustainable amount for the distribution and maintenance of the catalog (even if this means both an annual fee and a royalty cut)</li>
<li>Providing reasonable tools for bulk import/upload of releases (rather than everything being an accessibility nightmare)</li>
<li>Providing <em>actual support</em> to artists who need it, not copy-pasted brush-off responses</li>
<li>Timely distribution of royalty payments, with regular (e.g. annual) lump-sum payments irrespective of minimum thresholds</li>
<li>The ability to pick and choose which streaming platforms works go onto, and the ability to change this later (with takedowns and redistributions on a per-platform basis)</li>
<li>Actually investigating claims of playlist fraud instead of categorically taking down entire catalogs based on a mere suspicion from a platform (and in the meantime, at most only suspending the suspected works on the suspected platforms, <em>not</em> a full takedown from every service)</li>
</ul>
<p>None of these feel very likely to happen in the foreseeable future. But also, the entire streaming music industry needs to change for me to want to really participate in it, and I don&rsquo;t see <em>that</em> happening either. Too much about how the industry works is based around the demands of the major labels in order to keep the major-label content available, even though their requirements ultimately end up working against <em>their</em> interests as well!</p><p>Alternately, if any of the streaming platforms were to allow artists to directly upload and self-distribute to them while still earning royalties<sup id="r_e2156_fn5"><a href="https://sockpuppet.band/blog/2156-Where-d-your-music-go#d_e2156_fn5" rel="footnote">5</a></sup>, that would be peachy.</p><h3 id="2156_h3_4_One-size-does-not-fit-all">One size does not fit all<a href="https://sockpuppet.band/blog/2156-Where-d-your-music-go#2156_h3_4_One-size-does-not-fit-all" class="toc_link"></a></h3><p>I know many musicians for whom this path would not make any sense. Last night at an open mic I was talking about this with a friend, and he was very surprised to hear about my experiences with streaming vs. sales; he makes <em>substantial</em> amounts of money from streaming, and very little from Bandcamp (and what he pays to get his stuff on Bandcamp hasn&rsquo;t paid for his Bandcamp earnings).</p><p>A big part of that is that he primarily records and releases covers of popular music. As a result, he ends up getting his audience from people looking for popular songs, and this led to a level of sustainability that works in his favor. This is also why Bandcamp has been a money pit for him, because mechanical licenses for purchase are significantly more expensive than those for streaming.</p><p>But by the same token, what works for other musicians has not worked for me. Why should I keep playing the game when I have 20+ years of experience telling me that it just plain isn&rsquo;t worthwhile for me to do so?</p><p>Anyway. I do not need streaming in order to <a href="https://sockpuppet.band/blog/2700-On-success">feel successful</a>. So for now I&rsquo;m opting out.</p><p>Maybe in the future this will change. But dealing with the stresses and frustration of streaming is the least important thing to me right now with everything else going on in my life.</p>
            
                <hr/><ol><li id="d_e2156_fn1"><p>Yes, I realize Daniel Ek &ldquo;stepped down&rdquo; as CEO, but only by becoming the chairman of the board. He is now essentially the CEO&rsquo;s <em>boss</em>, and still the majority shareholder, so this doesn&rsquo;t actually change anything vis-a-vis my issues with Spotify.&nbsp;<a href="/blog/2156-Where-d-your-music-go#r_e2156_fn1" rev="footnote">↩</a></p></li><li id="d_e2156_fn2"><p>I also had to pay $3 to do it because TooLost was holding my catalog hostage, but that&rsquo;s just pocket change in the grand scheme of things.&nbsp;<a href="/blog/2156-Where-d-your-music-go#r_e2156_fn2" rev="footnote">↩</a></p></li><li id="d_e2156_fn3"><p>Or rather, I&rsquo;ve had numbers in a database totalling around that amount, but I can&rsquo;t even withdraw a bunch of it because it&rsquo;s all in little pieces that are below their respective distributors&#39; payout thresholds, where they will sit forever.&nbsp;<a href="/blog/2156-Where-d-your-music-go#r_e2156_fn3" rev="footnote">↩</a></p></li><li id="d_e2156_fn4"><p>It&rsquo;s hard to put an actual number on it, but I do know I&rsquo;ve spent at least this much:&nbsp;<a href="/blog/2156-Where-d-your-music-go#r_e2156_fn4" rev="footnote">↩</a></p>
<ul>
<li>$225 for two albums distributed via CDBaby in the early days</li>
<li>$125 for an album distributed via TuneCore in the early days</li>
<li>At least $275 for the years I subscribed to DistroKid and TooLost</li>
<li>A few hundred bucks on SoundCloud Pro</li>
<li>A lot of time and effort and energy spent dealing with all this nonsense, and that isn&rsquo;t free and has probably taken years off my life with the stress</li>
</ul>
</li><li id="d_e2156_fn5"><p><a href="https://support.tidal.com/hc/en-us/articles/26542012438673-TIDAL-Upload">Tidal Upload</a>, sadly, <a href="https://support.tidal.com/hc/en-us/articles/26542012438673-TIDAL-Upload#h_01JRD4Y1E3FNVRJETXP7D9DDPQ">does not count</a>:&nbsp;<a href="/blog/2156-Where-d-your-music-go#r_e2156_fn5" rev="footnote">↩</a></p>
<blockquote>
<p><strong>Does the music that I upload earn royalties on TIDAL?</strong></p><p>No, your uploaded files do not earn royalties.</p></blockquote>
</li></ol>
            

            

        
        <a rel="tag" href="https://sockpuppet.band/blog/?tag=streaming">#Streaming</a>
        
        <a rel="tag" href="https://sockpuppet.band/blog/?tag=Spotify">#Spotify</a>
        
        <a rel="tag" href="https://sockpuppet.band/blog/?tag=business">#Business</a>
        

        ]]>



        </content>
        <category term="Blog" label="Blog" />
        
        
        <category term="Streaming" label="streaming" />
        
        <category term="Spotify" label="Spotify" />
        
        <category term="Business" label="business" />
        

        

    </entry>
    <entry>
        
        <title>Self-hosted streaming CDN</title>
        <link href="https://sockpuppet.band/blog/2089-Self-hosted-streaming-CDN" rel="alternate" type="text/html" />
        <published>2025-09-26T20:22:51-07:00</published>
        <updated>2025-09-26T20:22:51-07:00</updated>
        <id>urn:uuid:2a025873-f8cb-59b0-a816-98cf02912659</id>
        <author><name>fluffy</name></author>
        <summary type="html"><![CDATA[<p>Performers who do streaming-based performances on VRChat and other places have a few options for actually providing their stream. Once upon a time it was preetty common for people to use Twitch or YouTube Live, but those are now being locked down due to advertising considerations. So, many people currently use <a href="https://vrcdn.live/">VRCDN</a>, an inexpensive but limited hosted service that you have to pay monthly for. But for folks with a bit more technical acumen, there&rsquo;s another choice, <a href="https://owncast.online/">Owncast</a>, which is basically a self-hosted Twitch-like.</p>]]></summary>
        <content type="html"><![CDATA[

		

        



        <p>Performers who do streaming-based performances on VRChat and other places have a few options for actually providing their stream. Once upon a time it was preetty common for people to use Twitch or YouTube Live, but those are now being locked down due to advertising considerations. So, many people currently use <a href="https://vrcdn.live/">VRCDN</a>, an inexpensive but limited hosted service that you have to pay monthly for. But for folks with a bit more technical acumen, there&rsquo;s another choice, <a href="https://owncast.online/">Owncast</a>, which is basically a self-hosted Twitch-like.</p><p>Here&rsquo;s how I have mine set up and how I run it for (basically<sup id="r_e2089_fn1"><a href="https://sockpuppet.band/blog/2089-Self-hosted-streaming-CDN#d_e2089_fn1" rel="footnote">1</a></sup>) free.</p>

        
            <h3 id="2089_h3_1_Local-server-origin">Local server (origin)<a href="https://sockpuppet.band/blog/2089-Self-hosted-streaming-CDN#2089_h3_1_Local-server-origin" class="toc_link"></a></h3><p>First off, I have an Intel NUC running Linux<sup id="r_e2089_fn2"><a href="https://sockpuppet.band/blog/2089-Self-hosted-streaming-CDN#d_e2089_fn2" rel="footnote">2</a></sup> on my home network. This computer runs a bunch of my home services but mostly sits idle. Its CPU is a 2.7GHz i7-8559U, which is sufficient to transcode my stream to a number of bitrates and resolutions simultaneously. I currently have the following bitrates configured:</p>
<ul>
<li>Original/raw stream (as configured in OBS; usually 1080p60 @ 6000 Kbps)</li>
<li>1080p60 @ 4500 Kbps</li>
<li>720p30 @ 2000 Kbps</li>
<li>360p24 @ 1000 Kbps</li>
<li>180p24 @ 500 Kbps</li>
</ul>
<p>In theory I should also be able to configure it to use Intel Quick Sync for a bit lower CPU utilization, although I haven&rsquo;t gone through the rigmarole to make that happen, as it hasn&rsquo;t been necessary.</p><p>Anyway, Owncast is running on its own user account, creatively called <code>owncast</code>. To make the server automatically start up, I have the following systemd unit file:</p><figure class="blockcode"><figcaption>/home/owncast/.config/system/user/owncast.service</figcaption><pre class="highlight" data-language="systemd" data-line-numbers><span class="line" id="e2089cb1L1"><a class="line-number" href="https://sockpuppet.band/blog/2089-Self-hosted-streaming-CDN#e2089cb1L1"></a><span class="line-content"><span class="k">[Unit]</span></span></span>
<span class="line" id="e2089cb1L2"><a class="line-number" href="https://sockpuppet.band/blog/2089-Self-hosted-streaming-CDN#e2089cb1L2"></a><span class="line-content"><span class="na">Description</span><span class="o">=</span><span class="s">Owncast Service</span></span></span>
<span class="line" id="e2089cb1L3"><a class="line-number" href="https://sockpuppet.band/blog/2089-Self-hosted-streaming-CDN#e2089cb1L3"></a><span class="line-content"></span></span>
<span class="line" id="e2089cb1L4"><a class="line-number" href="https://sockpuppet.band/blog/2089-Self-hosted-streaming-CDN#e2089cb1L4"></a><span class="line-content"><span class="k">[Service]</span></span></span>
<span class="line" id="e2089cb1L5"><a class="line-number" href="https://sockpuppet.band/blog/2089-Self-hosted-streaming-CDN#e2089cb1L5"></a><span class="line-content"><span class="na">WorkingDirectory</span><span class="o">=</span><span class="s">/home/owncast/owncast</span></span></span>
<span class="line" id="e2089cb1L6"><a class="line-number" href="https://sockpuppet.band/blog/2089-Self-hosted-streaming-CDN#e2089cb1L6"></a><span class="line-content"><span class="na">ExecStart</span><span class="o">=</span><span class="s">/home/owncast/owncast/owncast</span></span></span>
<span class="line" id="e2089cb1L7"><a class="line-number" href="https://sockpuppet.band/blog/2089-Self-hosted-streaming-CDN#e2089cb1L7"></a><span class="line-content"><span class="na">Restart</span><span class="o">=</span><span class="s">always</span></span></span>
<span class="line" id="e2089cb1L8"><a class="line-number" href="https://sockpuppet.band/blog/2089-Self-hosted-streaming-CDN#e2089cb1L8"></a><span class="line-content"><span class="na">RestartSec</span><span class="o">=</span><span class="s">5</span></span></span>
<span class="line" id="e2089cb1L9"><a class="line-number" href="https://sockpuppet.band/blog/2089-Self-hosted-streaming-CDN#e2089cb1L9"></a><span class="line-content"></span></span>
<span class="line" id="e2089cb1L10"><a class="line-number" href="https://sockpuppet.band/blog/2089-Self-hosted-streaming-CDN#e2089cb1L10"></a><span class="line-content"><span class="k">[Install]</span></span></span>
<span class="line" id="e2089cb1L11"><a class="line-number" href="https://sockpuppet.band/blog/2089-Self-hosted-streaming-CDN#e2089cb1L11"></a><span class="line-content"><span class="na">WantedBy</span><span class="o">=</span><span class="s">default.target</span></span></span>
</pre></figure><p>To make this run, I had to enable lingering for the account, with <code>sudo loginctl enable-linger owncast</code> from an administrative user, and <code>systemctl --user enable owncast.service</code> from the owncast account.</p><h3 id="2089_h3_2_Proxy-server">Proxy server<a href="https://sockpuppet.band/blog/2089-Self-hosted-streaming-CDN#2089_h3_2_Proxy-server" class="toc_link"></a></h3><p>The next thing to do was to expose this server to the greater Internet. There&rsquo;s a few ways you can go about doing this. The most straightforward, if you have an ISP that allows it, is to set up your home router to forward a particular port to the Owncast instance. However, many ISPs do not allow you to run servers this way, and even though mine does, I wasn&rsquo;t super comfortable with the idea of exposing a network port to the wider Internet or with having my home IP address be part of any public Internet service.</p><p>However, I already have a VPS with <a href="https://linode.com/">Akamai Cloud</a> which I use to run all of my websites. So, I set up an ssh tunnel (specifically using <a href="https://www.harding.motd.ca/autossh/">autossh</a> to automatically restart the connection if it drops). To that end, I made a second systemd unit:</p><figure class="blockcode"><figcaption>/home/owncast/.config/systemd/user/owncast-tunnel.service</figcaption><pre class="highlight" data-language="systemd" data-line-numbers><span class="line" id="e2089cb2L1"><a class="line-number" href="https://sockpuppet.band/blog/2089-Self-hosted-streaming-CDN#e2089cb2L1"></a><span class="line-content"><span class="k">[Unit]</span></span></span>
<span class="line" id="e2089cb2L2"><a class="line-number" href="https://sockpuppet.band/blog/2089-Self-hosted-streaming-CDN#e2089cb2L2"></a><span class="line-content"><span class="na">Description</span><span class="o">=</span><span class="s">Owncast ssh tunnel</span></span></span>
<span class="line" id="e2089cb2L3"><a class="line-number" href="https://sockpuppet.band/blog/2089-Self-hosted-streaming-CDN#e2089cb2L3"></a><span class="line-content"></span></span>
<span class="line" id="e2089cb2L4"><a class="line-number" href="https://sockpuppet.band/blog/2089-Self-hosted-streaming-CDN#e2089cb2L4"></a><span class="line-content"><span class="k">[Service]</span></span></span>
<span class="line" id="e2089cb2L5"><a class="line-number" href="https://sockpuppet.band/blog/2089-Self-hosted-streaming-CDN#e2089cb2L5"></a><span class="line-content"><span class="na">ExecStart</span><span class="o">=</span><span class="s">autossh -NT -R 29929:localhost:8080 MYSERVER.example.com</span></span></span>
<span class="line" id="e2089cb2L6"><a class="line-number" href="https://sockpuppet.band/blog/2089-Self-hosted-streaming-CDN#e2089cb2L6"></a><span class="line-content"><span class="na">Restart</span><span class="o">=</span><span class="s">always</span></span></span>
<span class="line" id="e2089cb2L7"><a class="line-number" href="https://sockpuppet.band/blog/2089-Self-hosted-streaming-CDN#e2089cb2L7"></a><span class="line-content"><span class="na">RestartSec</span><span class="o">=</span><span class="s">5</span></span></span>
<span class="line" id="e2089cb2L8"><a class="line-number" href="https://sockpuppet.band/blog/2089-Self-hosted-streaming-CDN#e2089cb2L8"></a><span class="line-content"></span></span>
<span class="line" id="e2089cb2L9"><a class="line-number" href="https://sockpuppet.band/blog/2089-Self-hosted-streaming-CDN#e2089cb2L9"></a><span class="line-content"><span class="k">[Install]</span></span></span>
<span class="line" id="e2089cb2L10"><a class="line-number" href="https://sockpuppet.band/blog/2089-Self-hosted-streaming-CDN#e2089cb2L10"></a><span class="line-content"><span class="na">WantedBy</span><span class="o">=</span><span class="s">default.target</span></span></span>
</pre></figure><p>where <code>MYSERVER.example.com</code> is the actual hostname of my VPS. I enabled this service with <code>systemctl --user enable owncast-tunnel.service</code> and now localhost connections to 29929 on my VPS connect to port 8080 on my NUC. (No need for Tailscale!)</p><p>Finally, I set up a caching reverse proxy for <a href="https://live.sockpuppet.band">my owncast server</a>. This is how I did it in nginx:</p><figure class="blockcode"><figcaption>/etc/nginx/vhosts-enabled/live.sockpuppet.band</figcaption><pre class="highlight" data-language="nginx" data-line-numbers><span class="line" id="e2089cb3L1"><a class="line-number" href="https://sockpuppet.band/blog/2089-Self-hosted-streaming-CDN#e2089cb3L1"></a><span class="line-content"><span class="k">server</span><span class="w"> </span><span class="p">{</span></span></span>
<span class="line" id="e2089cb3L2"><a class="line-number" href="https://sockpuppet.band/blog/2089-Self-hosted-streaming-CDN#e2089cb3L2"></a><span class="line-content"><span class="w">    </span><span class="kn">listen</span><span class="w"> </span><span class="mi">80</span><span class="p">;</span></span></span>
<span class="line" id="e2089cb3L3"><a class="line-number" href="https://sockpuppet.band/blog/2089-Self-hosted-streaming-CDN#e2089cb3L3"></a><span class="line-content"><span class="w">    </span><span class="kn">listen</span><span class="w"> </span><span class="s">[::]:80</span><span class="p">;</span></span></span>
<span class="line" id="e2089cb3L4"><a class="line-number" href="https://sockpuppet.band/blog/2089-Self-hosted-streaming-CDN#e2089cb3L4"></a><span class="line-content"><span class="w">    </span><span class="kn">server_name</span><span class="w"> </span><span class="s">live.sockpuppet.band</span><span class="p">;</span></span></span>
<span class="line" id="e2089cb3L5"><a class="line-number" href="https://sockpuppet.band/blog/2089-Self-hosted-streaming-CDN#e2089cb3L5"></a><span class="line-content"><span class="w">    </span><span class="kn">return</span><span class="w"> </span><span class="mi">301</span><span class="w"> </span><span class="s">https://</span><span class="nv">$host$request_uri</span><span class="p">;</span></span></span>
<span class="line" id="e2089cb3L6"><a class="line-number" href="https://sockpuppet.band/blog/2089-Self-hosted-streaming-CDN#e2089cb3L6"></a><span class="line-content"><span class="p">}</span></span></span>
<span class="line" id="e2089cb3L7"><a class="line-number" href="https://sockpuppet.band/blog/2089-Self-hosted-streaming-CDN#e2089cb3L7"></a><span class="line-content"></span></span>
<span class="line" id="e2089cb3L8"><a class="line-number" href="https://sockpuppet.band/blog/2089-Self-hosted-streaming-CDN#e2089cb3L8"></a><span class="line-content"><span class="k">proxy_cache_path</span><span class="w"> </span><span class="s">/var/tmp/live_sockpuppet</span><span class="w"> </span><span class="s">levels=1:2</span><span class="w"> </span><span class="s">keys_zone=live_sockpuppet:10m</span><span class="w"> </span><span class="s">max_size=10g</span></span></span>
<span class="line" id="e2089cb3L9"><a class="line-number" href="https://sockpuppet.band/blog/2089-Self-hosted-streaming-CDN#e2089cb3L9"></a><span class="line-content"><span class="w">                 </span><span class="s">inactive=60m</span><span class="w"> </span><span class="s">use_temp_path=off</span><span class="p">;</span></span></span>
<span class="line" id="e2089cb3L10"><a class="line-number" href="https://sockpuppet.band/blog/2089-Self-hosted-streaming-CDN#e2089cb3L10"></a><span class="line-content"></span></span>
<span class="line" id="e2089cb3L11"><a class="line-number" href="https://sockpuppet.band/blog/2089-Self-hosted-streaming-CDN#e2089cb3L11"></a><span class="line-content"><span class="k">server</span><span class="w"> </span><span class="p">{</span></span></span>
<span class="line" id="e2089cb3L12"><a class="line-number" href="https://sockpuppet.band/blog/2089-Self-hosted-streaming-CDN#e2089cb3L12"></a><span class="line-content"><span class="w">    </span><span class="kn">server_name</span><span class="w"> </span><span class="s">live.sockpuppet.band</span><span class="p">;</span></span></span>
<span class="line" id="e2089cb3L13"><a class="line-number" href="https://sockpuppet.band/blog/2089-Self-hosted-streaming-CDN#e2089cb3L13"></a><span class="line-content"><span class="w">    </span><span class="kn">listen</span><span class="w"> </span><span class="mi">443</span><span class="w"> </span><span class="s">ssl</span><span class="p">;</span></span></span>
<span class="line" id="e2089cb3L14"><a class="line-number" href="https://sockpuppet.band/blog/2089-Self-hosted-streaming-CDN#e2089cb3L14"></a><span class="line-content"><span class="w">    </span><span class="kn">ssl_certificate</span><span class="w"> </span><span class="s">/path/to/sockpuppet.band.crt</span><span class="p">;</span></span></span>
<span class="line" id="e2089cb3L15"><a class="line-number" href="https://sockpuppet.band/blog/2089-Self-hosted-streaming-CDN#e2089cb3L15"></a><span class="line-content"><span class="w">    </span><span class="kn">ssl_certificate_key</span><span class="w"> </span><span class="s">/path/to/sockpuppet.band.key</span><span class="p">;</span></span></span>
<span class="line" id="e2089cb3L16"><a class="line-number" href="https://sockpuppet.band/blog/2089-Self-hosted-streaming-CDN#e2089cb3L16"></a><span class="line-content"></span></span>
<span class="line" id="e2089cb3L17"><a class="line-number" href="https://sockpuppet.band/blog/2089-Self-hosted-streaming-CDN#e2089cb3L17"></a><span class="line-content"><span class="w">    </span><span class="kn">location</span><span class="w"> </span><span class="s">/</span><span class="w"> </span><span class="p">{</span></span></span>
<span class="line" id="e2089cb3L18"><a class="line-number" href="https://sockpuppet.band/blog/2089-Self-hosted-streaming-CDN#e2089cb3L18"></a><span class="line-content"><span class="w">        </span><span class="kn">proxy_set_header</span><span class="w"> </span><span class="s">Host</span><span class="w"> </span><span class="nv">$host</span><span class="p">;</span></span></span>
<span class="line" id="e2089cb3L19"><a class="line-number" href="https://sockpuppet.band/blog/2089-Self-hosted-streaming-CDN#e2089cb3L19"></a><span class="line-content"><span class="w">        </span><span class="kn">proxy_set_header</span><span class="w"> </span><span class="s">X-Forwarded-Host</span><span class="w"> </span><span class="nv">$host</span><span class="p">;</span></span></span>
<span class="line" id="e2089cb3L20"><a class="line-number" href="https://sockpuppet.band/blog/2089-Self-hosted-streaming-CDN#e2089cb3L20"></a><span class="line-content"><span class="w">        </span><span class="kn">proxy_set_header</span><span class="w"> </span><span class="s">X-Forwarded-Server</span><span class="w"> </span><span class="nv">$host</span><span class="p">;</span></span></span>
<span class="line" id="e2089cb3L21"><a class="line-number" href="https://sockpuppet.band/blog/2089-Self-hosted-streaming-CDN#e2089cb3L21"></a><span class="line-content"><span class="w">        </span><span class="kn">proxy_set_header</span><span class="w"> </span><span class="s">X-Forwarded-Proto</span><span class="w"> </span><span class="nv">$scheme</span><span class="p">;</span></span></span>
<span class="line" id="e2089cb3L22"><a class="line-number" href="https://sockpuppet.band/blog/2089-Self-hosted-streaming-CDN#e2089cb3L22"></a><span class="line-content"><span class="w">        </span><span class="kn">proxy_set_header</span><span class="w"> </span><span class="s">X-Real-IP</span><span class="w"> </span><span class="nv">$remote_addr</span><span class="p">;</span></span></span>
<span class="line" id="e2089cb3L23"><a class="line-number" href="https://sockpuppet.band/blog/2089-Self-hosted-streaming-CDN#e2089cb3L23"></a><span class="line-content"><span class="w">        </span><span class="kn">proxy_set_header</span><span class="w"> </span><span class="s">X-Forwarded-For</span><span class="w"> </span><span class="nv">$proxy_add_x_forwarded_for</span><span class="p">;</span></span></span>
<span class="line" id="e2089cb3L24"><a class="line-number" href="https://sockpuppet.band/blog/2089-Self-hosted-streaming-CDN#e2089cb3L24"></a><span class="line-content"><span class="w">        </span><span class="kn">proxy_http_version</span><span class="w"> </span><span class="mi">1</span><span class="s">.1</span><span class="p">;</span></span></span>
<span class="line" id="e2089cb3L25"><a class="line-number" href="https://sockpuppet.band/blog/2089-Self-hosted-streaming-CDN#e2089cb3L25"></a><span class="line-content"><span class="w">        </span><span class="kn">proxy_set_header</span><span class="w"> </span><span class="s">Upgrade</span><span class="w"> </span><span class="nv">$http_upgrade</span><span class="p">;</span></span></span>
<span class="line" id="e2089cb3L26"><a class="line-number" href="https://sockpuppet.band/blog/2089-Self-hosted-streaming-CDN#e2089cb3L26"></a><span class="line-content"><span class="w">        </span><span class="kn">proxy_set_header</span><span class="w"> </span><span class="s">Connection</span><span class="w"> </span><span class="nv">$connection_upgrade</span><span class="p">;</span></span></span>
<span class="line" id="e2089cb3L27"><a class="line-number" href="https://sockpuppet.band/blog/2089-Self-hosted-streaming-CDN#e2089cb3L27"></a><span class="line-content"><span class="w">        </span><span class="kn">proxy_pass</span><span class="w"> </span><span class="s">http://127.0.0.1:29929</span><span class="p">;</span></span></span>
<span class="line" id="e2089cb3L28"><a class="line-number" href="https://sockpuppet.band/blog/2089-Self-hosted-streaming-CDN#e2089cb3L28"></a><span class="line-content"><span class="w">        </span><span class="kn">proxy_cache</span><span class="w"> </span><span class="s">live_sockpuppet</span><span class="p">;</span></span></span>
<span class="line" id="e2089cb3L29"><a class="line-number" href="https://sockpuppet.band/blog/2089-Self-hosted-streaming-CDN#e2089cb3L29"></a><span class="line-content"><span class="w">    </span><span class="p">}</span></span></span>
<span class="line" id="e2089cb3L30"><a class="line-number" href="https://sockpuppet.band/blog/2089-Self-hosted-streaming-CDN#e2089cb3L30"></a><span class="line-content"><span class="p">}</span></span></span>
</pre></figure><p>This caching configuration means that this edge server only needs to proxy each HLS segment from my home network once, so in theory I can get a full gigabit of upstream from my VPS without overly burdening my home connection (although my home connection has plenty of bandwidth to spare, all the same).</p><h3 id="2089_h3_3_Wider-distribution-with-a-CDN">Wider distribution with a CDN<a href="https://sockpuppet.band/blog/2089-Self-hosted-streaming-CDN#2089_h3_3_Wider-distribution-with-a-CDN" class="toc_link"></a></h3><p>This is optional, but I also use <a href="https://cloudflare.com/">Cloudflare CDN</a> for DDOS and bot mitigation, as well as better caching performance worldwide. So far I&rsquo;ve never come even <em>remotely</em> close to exceeding the bandwidth capacity of my VPS (which should theoretically be able to serve around 200 simultaneous viewers), but Cloudflare&rsquo;s free tier means I don&rsquo;t have to worry about scaling at all.</p><p>I&rsquo;m not a huge fan of Cloudflare for a number of reasons, but it&rsquo;s made it a lot easier for me to deal with the constant deluge of AI bot traffic that&rsquo;s been causing me so much stress lately, and having a proper geographically-distributed CDN is a nice bonus.</p><p>In theory, if your ISP allows running servers, you could also configure Cloudflare to talk directly to your home router, although I believe doing arbitrary port forwards requires a paid plan.</p><h3 id="2089_h3_4_Finally-streaming">Finally, streaming!<a href="https://sockpuppet.band/blog/2089-Self-hosted-streaming-CDN#2089_h3_4_Finally-streaming" class="toc_link"></a></h3><p>To send a stream out, instead of using the public-facing hostname (live.sockpuppet.band), I connect OBS to the local IP address, so that I don&rsquo;t have to go out to the public Internet just to be routed back home. This way I also don&rsquo;t have to expose Owncast&rsquo;s RTMP port to the public Internet, which gives me better security. On the minus side, this means I cannot easily share my server with others to allow others to stream with my infrastructure, but that&rsquo;s never come up. If I ever wanted to do a cooperative stream with someone, I could use a WebRTC proxy such as <a href="https://vdo.ninja/">VDO.ninja</a>, but setting that up is outside the scope of this blog post.</p><p>Anyway, when someone connects to <a href="https://live.sockpuppet.band">my owncast</a> they are viewing it through Cloudflare, which pulls the data from my VPS, which in turn proxies it over the SSH tunnel to the Owncast instance running on my device at home. The raw stream (used, for example, by a VRChat in-world player) is available at <code>https://live.sockpuppet.band/hls/stream.m3u8</code>.</p><h3 id="2089_h3_5_How-to-roll-your-own-streaming-C">How to roll your own streaming CDN<a href="https://sockpuppet.band/blog/2089-Self-hosted-streaming-CDN#2089_h3_5_How-to-roll-your-own-streaming-C" class="toc_link"></a></h3><p>Okay so let&rsquo;s say you just want to roll your own VRCDN-like thing, and don&rsquo;t care about having your streaming box be directly on your local network. Here&rsquo;s what I&rsquo;d do for that:</p>
<ol>
<li>Set up a VPS of some sort, even one which only runs when you need it to (which both DigitalOcean and Linode/Akamai support)</li>
<li>Install <a href="https://owncast.online/">owncast</a> on it</li>
<li>Install nginx or apache as a fronting webserver, and have it just reverse proxy into Owncast (so you can run Owncast on port 80/443 without having to run Owncast itself as root)</li>
<li>Front the server with Cloudflare, and have it cache aggressively</li>
</ol>
<p>For streaming you&rsquo;ll need to connect directly to the server by IP address (or by having a hostname that&rsquo;s <em>not</em> Cloudflare-proxied), but otherwise you&rsquo;re good to go from here.</p><p>In such a setup you&rsquo;ll probably need to limit the bitrates that you provide.</p><p>Anyway, a suitably-capable VPS will cost around 5.4¢/hour while it&rsquo;s running, and theoretically be able to support hundreds, if not thousands, of simultaneous viewers.</p>
            
                <hr/><ol><li id="d_e2089_fn1"><p>It&rsquo;s only basically free because I already have a public Internet server I run my websites on and a local computer I can use for Owncast. If you don&rsquo;t already have a VPS of some sort, my particular setup won&rsquo;t work for you.&nbsp;<a href="/blog/2089-Self-hosted-streaming-CDN#r_e2089_fn1" rev="footnote">↩</a></p></li><li id="d_e2089_fn2"><p>All of this could also be run on Windows or macOS, but setting up a persistent server and ssh tunnel on those platforms is not something I&rsquo;ve had to internalize.&nbsp;<a href="/blog/2089-Self-hosted-streaming-CDN#r_e2089_fn2" rev="footnote">↩</a></p></li></ol>
            

            

        
        <a rel="tag" href="https://sockpuppet.band/blog/?tag=technology">#Technology</a>
        
        <a rel="tag" href="https://sockpuppet.band/blog/?tag=owncast">#Owncast</a>
        
        <a rel="tag" href="https://sockpuppet.band/blog/?tag=streaming">#Streaming</a>
        
        <a rel="tag" href="https://sockpuppet.band/blog/?tag=VRChat">#VRChat</a>
        

        ]]>



        </content>
        <category term="Blog" label="Blog" />
        
        
        <category term="Technology" label="technology" />
        
        <category term="Owncast" label="owncast" />
        
        <category term="Streaming" label="streaming" />
        
        <category term="VRChat" label="VRChat" />
        

        

    </entry>
    <entry>
        
        <title>Please do not ask me about streaming distribution</title>
        <link href="https://sockpuppet.band/blog/2388-Please-do-not-ask-me-about-streaming-distribution" rel="alternate" type="text/html" />
        <published>2025-08-19T16:13:40-07:00</published>
        <updated>2025-08-19T16:13:40-07:00</updated>
        <id>urn:uuid:b01c0a0e-3bb6-527d-a31b-64de7807c566</id>
        <author><name>fluffy</name></author>
        <summary type="html"><![CDATA[<p>Quite some time ago I posted <a href="https://sockpuppet.band/blog/289-Some-recommendations-for-digital-distribution">my recommendations for streaming distributors</a> but things have all changed in a very bad way since then.</p>]]></summary>
        <content type="html"><![CDATA[

		

        



        <p>Quite some time ago I posted <a href="https://sockpuppet.band/blog/289-Some-recommendations-for-digital-distribution">my recommendations for streaming distributors</a> but things have all changed in a very bad way since then.</p>

        
            <p>TooLost (my previous top recommendation) has gotten incredibly difficult to deal with when it comes to copyright-related things. They now have a hair trigger for deciding that a song &ldquo;needs documentation&rdquo; regarding its legality, but won&rsquo;t provide <em>any</em> useful information about what they think the problem is. On <a href="https://sockpuppet.band/track/the-war-machine">my most recent track</a> they seem to think that it violates someone&rsquo;s copyright but they won&rsquo;t tell me whose, and apparently they&rsquo;re putting the burden on me to just plain guess what their issue is, while taking a week to get back to me on every single question.</p><p>The best advice I&rsquo;ve gotten from anyone is to spend a crapton <em>more</em> money on a copyright registration service with the hopes that it&rsquo;ll convince them that I own the copyright to my own words, and even then there&rsquo;s still the chance that it won&rsquo;t actually help anything.</p><p>Then, for individual tracks that required licensing, I was recommending Soundrop, but they&rsquo;ve raised their price <em>and</em> their cut, and apparently have similar support issues today.</p><p>The other distributors are just as bad. And the streaming environment is <em>also</em> bad.</p><p>In the past year I&rsquo;ve made approximately $5 on streaming services. $5. Total. For a whole year&rsquo;s worth of music.</p><p>Why should I continue to pay into a broken system that isn&rsquo;t going to serve me?</p><p>Y&#39;all can find my music on <a href="https://sockpuppet.band/bandcamp">Bandcamp</a> and <a href="https://sockpuppet.band/mirlo">Mirlo</a> and (eventually) Subvert. And my current stuff will stay up on streaming as long as TooLost decides not to take it down after I stop paying, but I&rsquo;m not going to go out of my way to put more stuff up through them.</p><p>Fuck streaming.</p><p><a href="https://sockpuppet.band/blog/121-On-Spotify-and-listening-to-and-collecting-music">There are better ways</a>.</p>
            

            

        
        <a rel="tag" href="https://sockpuppet.band/blog/?tag=business">#Business</a>
        
        <a rel="tag" href="https://sockpuppet.band/blog/?tag=streaming">#Streaming</a>
        
        <a rel="tag" href="https://sockpuppet.band/blog/?tag=distribution">#Distribution</a>
        
        <a rel="tag" href="https://sockpuppet.band/blog/?tag=TooLost">#TooLost</a>
        

        ]]>



        </content>
        <category term="Blog" label="Blog" />
        
        
        <category term="Business" label="business" />
        
        <category term="Streaming" label="streaming" />
        
        <category term="Distribution" label="distribution" />
        
        <category term="TooLost" label="TooLost" />
        

        

    </entry>
    <entry>
        
        <title>On Spotify, and listening to and collecting music</title>
        <link href="https://sockpuppet.band/blog/121-On-Spotify-and-listening-to-and-collecting-music" rel="alternate" type="text/html" />
        <published>2025-07-15T17:18:54-07:00</published>
        <updated>2026-05-27T23:45:59+00:00</updated>
        <id>urn:uuid:1a1c5f3b-37e2-5984-8fd6-be5b3fe04bd0</id>
        <author><name>fluffy</name></author>
        <summary type="html"><![CDATA[<p>As a musician, I am often asked where people can listen to my music, and people express confusion about why my music isn&rsquo;t on Spotify (aside from <a href="https://sockpuppet.band/track/the-war-machine">The War Machine</a>, which is about why my music isn&rsquo;t on Spotify).</p>]]></summary>
        <content type="html"><![CDATA[

		

        



        <p>As a musician, I am often asked where people can listen to my music, and people express confusion about why my music isn&rsquo;t on Spotify (aside from <a href="https://sockpuppet.band/track/the-war-machine">The War Machine</a>, which is about why my music isn&rsquo;t on Spotify).</p><p>I wrote this as an explanation of why I don&rsquo;t support Spotify and why I ask listeners to return to buying and collecting music or, at the very least, moving to other streaming services.</p><p>Also, see <a href="https://rmr.media">Jeremy Blake</a>&rsquo;s <a href="https://www.youtube.com/watch?v=LQRtKD4gx1k">very good video on this topic</a>.</p><p><strong>tl;dr summary</strong>: If you are able to, buy your music, ideally from <a href="https://mirlo.space/">Mirlo</a> or <a href="https://bandcamp.com/">Bandcamp</a>. If you are going to pay to stream, use <a href="https://qobuz.com/">Qobuz</a> or <a href="https://tidal.com/">Tidal</a>, and if you want to stream for free (and I totally get it! times are tough!), use <a href="https://music.youtube.com/">YouTube Music</a> or <a href="https://pandora.com/">Pandora</a>.</p>

        
            <h3 id="121_h3_1_Ranking-the-services">Ranking the services<a href="https://sockpuppet.band/blog/121-On-Spotify-and-listening-to-and-collecting-music#121_h3_1_Ranking-the-services" class="toc_link"></a></h3><p>Here is my personal ranking of the best ways to get and/or listen to music, ordered from best to worst.</p><p>All per-stream prices are an estimate and based on my most recent available earnings data at the time of this writing, and based on the US market. They are definitely subject to change based on a number of factors that are difficult to predict.</p><h4 id="121_h4_2_From-the-band-s-own-website">From the band&rsquo;s own website<a href="https://sockpuppet.band/blog/121-On-Spotify-and-listening-to-and-collecting-music#121_h4_2_From-the-band-s-own-website" class="toc_link"></a></h4><p>If the band has their own website<sup id="r_e121_fn1"><a href="https://sockpuppet.band/blog/121-On-Spotify-and-listening-to-and-collecting-music#d_e121_fn1" rel="footnote">1</a></sup>, they&rsquo;ll probably display their preference for how you get their music. Above all else, that should be your top consideration.</p><p>Note that listening to a band&rsquo;s music on their own website typically does not give them any revenue; listening on a band&rsquo;s website is generally offered as a means of doing a &ldquo;try before you buy.&rdquo; If you like what you hear on a band&rsquo;s website, <em>please</em> follow the respective purchase or streaming links for your actual collecting/listening.</p><h4 id="121_h4_3_Mirlo"><a href="https://sockpuppet.band/mirlo">Mirlo</a><a href="https://sockpuppet.band/blog/121-On-Spotify-and-listening-to-and-collecting-music#121_h4_3_Mirlo" class="toc_link"></a></h4><p><a href="https://mirlo.space/">Mirlo</a> is an independent online music store run as a cooperative. The audio quality is great and musicians are in complete control of how much money they make on it, including choosing how much of the purchase price goes to Mirlo itself. The people running it are doing so for the love of music rather than to make fat stacks of cash, and my understanding is that the site pretty much just breaks even on its operating costs.</p><p>It is also <a href="https://github.com/funmusicplace/mirlo/">open source</a> meaning people can contribute changes or directly influence the development efforts, and you can run your own instance of it if you really want to for some reason.</p><p>With Mirlo you will have to <a href="https://sockpuppet.band/blog/feed?id=2251&amp;tag=streaming#own-your-collection">own your collection</a>, which is a good thing. More on that later.</p><h4 id="121_h4_4_itch.io"><a href="https://sockpuppet.band/itch">itch.io</a><a href="https://sockpuppet.band/blog/121-On-Spotify-and-listening-to-and-collecting-music#121_h4_4_itch.io" class="toc_link"></a></h4><p><a href="https://itch.io">itch</a> isn&rsquo;t really a music store, but a lot of people <a href="https://itch.io/soundtracks">sell music there</a>. The experience usually isn&rsquo;t great and is up to the musician (although things like <a href="https://fluffy.itch.io/bandcrash">bandcrash</a> can help to make it better). Like Mirlo, it&rsquo;s totally up to the musician how much money they get and how much goes to the platform.</p><p>With itch you will also have to <a href="https://sockpuppet.band/blog/feed?id=2251&amp;tag=streaming#own-your-collection">own your collection</a>.</p><h4 id="121_h4_5_Bandcamp"><a href="https://sockpuppet.band/bandcamp">Bandcamp</a><a href="https://sockpuppet.band/blog/121-On-Spotify-and-listening-to-and-collecting-music#121_h4_5_Bandcamp" class="toc_link"></a></h4><p><a href="https://bandcamp.com/">Bandcamp</a> is probably the most popular indie music download site there is, and with good reason. They offer high-quality downloads in a number of formats, they were the first site to offer a lot of features which many places take for granted these days (pay-what-you-want pricing, embedded lyrics, optional per-track artwork, full discography purchases, and so much more), and if you buy something on Bandcamp you can also stream it through the app so you don&rsquo;t need to manage your own local library. They also only take a 15% cut for small musicians, and a 10% cut for larger musicians.</p><p>They&rsquo;ve somewhat fallen out of favor in recent years due to a series of changes in ownership, but it is still a great place to buy music which supports the artists.</p><p>While it isn&rsquo;t strictly required that you <a href="https://sockpuppet.band/blog/feed?id=2251&amp;tag=streaming#own-your-collection">own your collection</a> (thanks to the streaming app), it&rsquo;s still a good idea that you do so, especially if you listen to music that comes from a mix of sources.</p><h4 id="121_h4_6_Qobuz">Qobuz<a href="https://sockpuppet.band/blog/121-On-Spotify-and-listening-to-and-collecting-music#121_h4_6_Qobuz" class="toc_link"></a></h4><p><a href="https://qobuz.com/">Qobuz</a> is both a streaming provider and a <a href="https://www.qobuz.com/us-en/shop">download store</a>. Their claim to fame is that they provide everything in the highest possible bitrate and quality, <em>and</em> they are also quite good in terms of how they support artists.</p><p>They&rsquo;re not the best option for purchasing (since Mirlo and Bandcamp match them in terms of quality and exceed them in terms of payment cut), but they <em>are</em> the most-desirable option for streaming (since they provide the highest per-stream rate in the industry, at 1.5¢/stream at the time of this writing).</p><p>If there&rsquo;s an album you want to buy and which isn&rsquo;t on Mirlo or Bandcamp, Qobuz is probably the best place to acquire it.</p><p>Unfortunately, they aren&rsquo;t available globally, buf if you&rsquo;re in one of the supported countries they&rsquo;re a good choice.</p><h4 id="121_h4_7_Tidal">Tidal<a href="https://sockpuppet.band/blog/121-On-Spotify-and-listening-to-and-collecting-music#121_h4_7_Tidal" class="toc_link"></a></h4><p>Tidal has good quality, a reasonable monthly price, and one of the better per-stream rates (1¢/stream) of the larger/better-known providers. They&rsquo;re also one of the few major DSPs which allows musicians to directly upload their music for streaming and sales, although some of their artist management could be better. That shouldn&rsquo;t affect listeners, although sometimes my music ends up on the wrong artist profile and getting that corrected can be tricky.</p><p>For example, as of April 2026, <a href="https://tidal.com/@sockpuppet">my official artist profile</a> only has one release on it, while most of my music has ended up on <a href="https://tidal.com/artist/44840891">a different profile</a>, and Tidal support is taking their sweet time getting that fixed. (They claim it will take <em>at least</em> 8 weeks to get sorted out.)</p><p>I&rsquo;ve also heard anecdotally from other musicians that the opposite problem often happens, where other musicians with the same name release music, Tidal erroneously puts it on their profile, and getting that corrected also takes, apparently, forever.</p><h4 id="121_h4_8_Amazon-Music">Amazon Music<a href="https://sockpuppet.band/blog/121-On-Spotify-and-listening-to-and-collecting-music#121_h4_8_Amazon-Music" class="toc_link"></a></h4><p>The Amazon Music store and Amazon Prime Streaming are pretty okay, all things considered. As a download store they take a 30% cut, but they provide music in reasonably-high-quality (but not the best quality) MP3. The streaming service pays around 1¢/stream.</p><p>The main downside is that using them means supporting Amazon, which a lot of folks do not want to do for very good reasons.</p><h4 id="121_h4_9_Apple-Music-iTunes-Music-Store">Apple Music/iTunes Music Store<a href="https://sockpuppet.band/blog/121-On-Spotify-and-listening-to-and-collecting-music#121_h4_9_Apple-Music-iTunes-Music-Store" class="toc_link"></a></h4><p>The iTunes Music Store is one of the earliest major download services (and they set the standard for how those work), and even today it&rsquo;s still a reasonable option. It&rsquo;s far from the best, though, mostly because they only offer AAC downloads at a high-but-not-amazing bitrate, and being Apple they heavily encourage its use on Apple devices (although there are Windows and Android clients as well, and with effort you can make your purchases on Linux too).</p><p>For downloads they keep a 30% cut, which isn&rsquo;t the worst in the industry but is also far from the best. For streams, their payment rate is just <em>okay</em>, currently around 0.8¢/stream.</p><h4 id="121_h4_10_YouTube-Music"><a href="https://sockpuppet.band/youtube">YouTube Music</a><a href="https://sockpuppet.band/blog/121-On-Spotify-and-listening-to-and-collecting-music#121_h4_10_YouTube-Music" class="toc_link"></a></h4><p>YouTube Music has a bunch going for it:</p>
<ul>
<li>You&rsquo;re already there to watch video</li>
<li>They have basically <em>everything</em> (especially if you consider unofficial uploads)</li>
<li>The quality is decent</li>
</ul>
<p>The main downsides are that the subscription is on the expensive side, and that you&rsquo;re supporting Google, which a lot of people don&rsquo;t like.</p><p>They currently pay around 0.6¢/stream for subscription plays. (They also pay based on ad revenue for content match videos but that&rsquo;s not relevant to this discussion, or to my music, as being Creative Commons-licensed it&rsquo;s not eligible for ContentID, but that&rsquo;s a whole other rant.)</p><h4 id="121_h4_11_Most-other-streaming-providers">Most other streaming providers<a href="https://sockpuppet.band/blog/121-On-Spotify-and-listening-to-and-collecting-music#121_h4_11_Most-other-streaming-providers" class="toc_link"></a></h4><p>Providers like Deezer, Rdio, Napster, etc. all seem to offer rates of around 0.8¢/stream.</p><p>There are two notable exceptions:</p>
<ul>
<li>iHeartRadio, which seems to pay around 1.2¢/stream but I get so few streams from them it&rsquo;s basically statistical line noise, and it&rsquo;s hard to tell if that rate would last if they got more popular</li>
<li>Pandora, which pays a mere 0.5¢/stream (but it has a <em>really good</em> recommendation engine, that said)</li>
</ul>
<h4 id="121_h4_12_Piracy">Piracy<a href="https://sockpuppet.band/blog/121-On-Spotify-and-listening-to-and-collecting-music#121_h4_12_Piracy" class="toc_link"></a></h4><p>I would honestly prefer people pirate my music before they listen to it on Spotify. This is because:</p><h4 id="121_h4_13_Spotify">Spotify<a href="https://sockpuppet.band/blog/121-On-Spotify-and-listening-to-and-collecting-music#121_h4_13_Spotify" class="toc_link"></a></h4><p>If you listen to music on Spotify, even on a free plan, they get money. And where does that money go?</p>
<ul>
<li><a href="https://apnews.com/article/joe-rogan-spotify-deal-76fa0e2c9d4b137f510428528ea6226b">Joe Rogan</a> and other right-wing podcasters</li>
<li>Their chairman<sup id="r_e121_fn2"><a href="https://sockpuppet.band/blog/121-On-Spotify-and-listening-to-and-collecting-music#d_e121_fn2" rel="footnote">2</a></sup>, Daniel Ek, who uses his billions of dollars to <a href="https://djmag.com/news/spotifys-daniel-ek-leads-eu600-million-investment-ai-military-defence-company">directly finance the war machine</a> and the economic destruction of all future creativity via generative AI</li>
<li>Spotify&rsquo;s own AI efforts towards turning all music into bullshit slop</li>
</ul>
<p>You see what&rsquo;s missing from that list? <strong><em>The actual musicians.</em></strong></p><p>Back when Spotify paid musicians, the rate was about 0.5¢/stream. This is among the worst in the industry.</p><p><strong><em>HOWEVER</em></strong></p><p>At this point they rarely even pay musicians, especially the smaller ones:</p>
<ul>
<li>Any track that doesn&rsquo;t get at least 1000 streams per year doesn&rsquo;t get paid, because it&rsquo;s assumed to be low-quality filler (and not just undiscovered)</li>
<li>Any small-artist track which <em>does</em> get at least 1000 streams per year and doesn&rsquo;t come from a major label is assumed to have gotten &ldquo;algorithmic streaming&rdquo; (i.e. bot traffic) and is removed from eligibility on that basis</li>
</ul>
<p>So, for a smaller independent musician like me, Spotify pays essentially $0.</p><p>You may then ask, why do so many musicians put their stuff on Spotify if it&rsquo;s so bad? It&rsquo;s mostly because it&rsquo;s the platform everyone uses, and the hope is that if one gets discovered on Spotify they&rsquo;ll actually make a decent amount of money. But even the artists who <em>do</em> are getting largely screwed over, and not making nearly as much as if those streams had come from a different streaming provider.</p><p>But enough musicians have decided to <a href="https://variety.com/2025/digital/news/deerhoof-remove-catalog-from-spotify-daniel-ek-ai-investment-1236443990/">remove their music from Spotify</a> that I hope that listeners will decide to go to other, more ethical sources for their music.</p><p>Every time I perform at a show I get people asking me not &ldquo;where can I hear your music?&rdquo; but &ldquo;Where&rsquo;s your Spotify?&rdquo; Or if they do ask where they can hear it and I point them to my website, they ask about Spotify, because that&rsquo;s the only place they can <em>conceive</em> of listening to it. Sometimes these questions even come right after I&rsquo;ve performed <a href="https://sockpuppet.band/track/the-war-machine">The War Machine</a>, a song which is explicitly about why my music isn&rsquo;t on Spotify. It will take some time to get people on board with seeking alternatives.</p><p>My goal in this post isn&rsquo;t to encourage musicians to leave Spotify. My goal is to get <em>listeners</em> to do so. It&rsquo;s the listeners who make Spotify money, and that money goes to terrible places.</p><p>There are better listening experiences that cost you less while doing a much better job of directly supporting musicians.</p><h3 id="121_h3_14_Owning-your-collection"><span id="own-your-collection">Owning your collection</span><a href="https://sockpuppet.band/blog/121-On-Spotify-and-listening-to-and-collecting-music#121_h3_14_Owning-your-collection" class="toc_link"></a></h3><p>Owning your collection means buying and downloading your music, and managing it in your own local collection. This has so many advantages:</p>
<ul>
<li>You can get music from many different sources (including CDs!)</li>
<li>It&rsquo;s a one-time purchase instead of a recurring monthly payment</li>
<li><em>Way</em> more of the money goes to the artists (typically, buying a song once is worth over 100 streams&#39; worth!)</li>
<li>Once you have it, it won&rsquo;t disappear if the artist stops listing their music for whatever reason (contract disputes, dissolution of the band/death of the artist, streaming service disappears)</li>
<li>You can choose the way that you listen to music depending on preferences and such</li>
</ul>
<p>I manage my collection by keeping it all on my desktop computer and then use Music.app/iTunes to track it in its database. Then I have a smart playlist setup that will randomly select albums I haven&rsquo;t listened to recently, and use that for actually listening to my music and for building playlists to sync to my phone.</p><p>I also have a backup (always keep it backed up!) on a file server which is also running <a href="https://plex.tv/">Plex</a> and <a href="https://jellyfin.org/">Jellyfin</a>, which gives me the ability to stream my collection from just about anywhere. Plex in particular provides an &ldquo;Album Radio&rdquo; mode which will build a playlist from randomly-selected albums, and the paid version gives you some nice virtual DJ things for automatically building mixes from a particular song (great for crate digging!).</p><p>People often ask me about how I discover new music.</p><p>First of all, my playback setup is integrated with <a href="https://last.fm/user/plaidfluff">last.fm</a>, so that maintains a history of the music I&rsquo;ve played, and can also make recommendations for more music to listen to. Plex has last.fm support built in directly, and both macOS and iOS have <a href="https://www.last.fm/about/trackmymusic">tracking apps</a> to feed the play history in.</p><p>The other major thing is that I follow a lot of musicians and music fans, both via blogs and via social media (<a href="https://joinmastodon.org/">the Fediverse</a> in particular). <a href="https://etherdiver.com/">Ether Diver</a> has a blog called <a href="https://www.etherdiver.com/category/other-peoples-music/">Other People&rsquo;s Music</a> which has been particularly helpful. (And of course sometimes I try to remember to post <a href="https://sockpuppet.band/blog/?tag=recommendations">similar things here</a> to pay it forward, and this is also why I keep my last.fm profile public.)</p><p>Sometimes I also listen to the radio. <a href="https://kexp.org/">A good radio station</a> will expose you to so much good music that you hadn&rsquo;t heard before. Also be on the lookout for various community Internet radio stations like <a href="https://kvrradio.com/public/kvrr">KVRR</a> and <a href="https://theindiebeat.fm/">The Indie Beat</a>. But most of how I discover new music is by word-of-mouth, and then buying entire discographies of bands I like.</p><p>Here&rsquo;s some non-iTunes music players and self-hosted streaming systems that you might consider for managing your collection:</p>
<ul>
<li><a href="https://www.foobar2000.org/">Foobar2000</a> is a well-regarded music player for local collections, which supports Windows, macOS, Android, and iOS</li>
<li><a href="https://github.com/sentriz/gonic">Gonic</a> is a self-hosted streaming server, similar to Jellyfin, with a number of client apps available</li>
<li><a href="https://www.navidrome.org/">Navidrome</a> is another self-hosted streaming server with a really nice user interface</li>
<li><a href="https://audacious-media-player.org/">Audacious</a> (a modern fork of the venerable XMMS, in turn a clone of Winamp<sup id="r_e121_fn3"><a href="https://sockpuppet.band/blog/121-On-Spotify-and-listening-to-and-collecting-music#d_e121_fn3" rel="footnote">3</a></sup>), which has versions for Windows, Linux, and macOS</li>
<li><a href="https://www.doubletwist.com/">Doubletwist</a> is basically the phone sync part of iTunes, but for Windows</li>
<li><a href="https://videolan.org/">VLC</a> runs pretty much everywhere, and now you understand the traffic cone memes too</li>
<li><a href="https://radiccio.music/">Radiccio</a> is macOS-only but does a lot of stuff better than iTunes/Apple Music</li>
</ul>
<h3 id="121_h3_15_Edit-history">Edit history<a href="https://sockpuppet.band/blog/121-On-Spotify-and-listening-to-and-collecting-music#121_h3_15_Edit-history" class="toc_link"></a></h3>
<ul>
<li><strong>2025-07-15:</strong> Initial post</li>
<li><strong>2025-07-20:</strong> Add link to Jeremy Blake&rsquo;s video</li>
<li><strong>2025-10-02:</strong> Some updates and formatting cleanups</li>
<li><strong>2026-01-25:</strong> Updates regarding Daniel Ek</li>
<li><strong>2026-03-26:</strong> Updates regarding my own availability on streaming</li>
<li><strong>2026-03-31:</strong> Some rewrites based on me no longer being on Spotify and some other phrasing updates</li>
<li><strong>2026-04-12:</strong> Some minor notes about Tidal</li>
<li><strong>2026-04-23:</strong> Added some minor notes about Pandora and my own situation</li>
<li><strong>2026-05-27:</strong> Restored this edit history in the name of transparency and clarity</li>
</ul>

            
                <hr/><ol><li id="d_e121_fn1"><p>If a band does not have their own website, they could do well to build one using any number of website builders. <a href="https://simonrepp.com/faircamp/">Faircamp</a> is pretty decent for a lot of folks. Personally I use a combination of <a href="https://publ.beesbuzz.biz/">Publ</a> and <a href="https://fluffy.itch.io/bandcrash">Bandcrash</a> but that can be pretty involved to set up.&nbsp;<a href="/blog/121-On-Spotify-and-listening-to-and-collecting-music#r_e121_fn1" rev="footnote">↩</a></p></li><li id="d_e121_fn2"><p>When I first wrote this article Ek was still the CEO. He has since &ldquo;stepped down&rdquo; to become the chairman of the board, which makes no actual practical difference because now he&rsquo;s the CEO&rsquo;s boss and still the majority shareholder.&nbsp;<a href="/blog/121-On-Spotify-and-listening-to-and-collecting-music#r_e121_fn2" rev="footnote">↩</a></p></li><li id="d_e121_fn3"><p>No llamas had their asses whipped in the making of this blog post.&nbsp;<a href="/blog/121-On-Spotify-and-listening-to-and-collecting-music#r_e121_fn3" rev="footnote">↩</a></p></li></ol>
            

            

        
        <a rel="tag" href="https://sockpuppet.band/blog/?tag=business">#Business</a>
        
        <a rel="tag" href="https://sockpuppet.band/blog/?tag=streaming">#Streaming</a>
        
        <a rel="tag" href="https://sockpuppet.band/blog/?tag=customer+choice">#CustomerChoice</a>
        

        ]]>



        </content>
        <category term="Blog" label="Blog" />
        
        
        <category term="Business" label="business" />
        
        <category term="Streaming" label="streaming" />
        
        <category term="CustomerChoice" label="customer choice" />
        

        

    </entry>
    

    
</feed>