<?xml version="1.0" encoding="UTF-8"?><rss version="2.0"
	xmlns:content="http://purl.org/rss/1.0/modules/content/"
	xmlns:wfw="http://wellformedweb.org/CommentAPI/"
	xmlns:dc="http://purl.org/dc/elements/1.1/"
	xmlns:atom="http://www.w3.org/2005/Atom"
	xmlns:sy="http://purl.org/rss/1.0/modules/syndication/"
	xmlns:slash="http://purl.org/rss/1.0/modules/slash/"
	>

<channel>
	<title>Passive Promotion</title>
	<atom:link href="https://passivepromotion.com/feed/" rel="self" type="application/rss+xml" />
	<link>https://passivepromotion.com</link>
	<description>&#34;Set it and forget it&#34; music promotion</description>
	<lastBuildDate>Fri, 23 Oct 2026 01:17:03 +0000</lastBuildDate>
	<language>en-US</language>
	<sy:updatePeriod>
	hourly	</sy:updatePeriod>
	<sy:updateFrequency>
	1	</sy:updateFrequency>
	<generator>https://wordpress.org/?v=7.1.4</generator>

<image>
	<url>https://passivepromotion.com/wp-content/uploads/2018/06/icon-gradient.png</url>
	<title>Passive Promotion</title>
	<link>https://passivepromotion.com</link>
	<width>32</width>
	<height>32</height>
</image> 
	<item>
		<title>Spotify Discovery Mode and the Case of the 86,607% Stream Lift</title>
		<link>https://passivepromotion.com/spotify-discovery-mode-stream-lift/</link>
					<comments>https://passivepromotion.com/spotify-discovery-mode-stream-lift/#comments</comments>
		
		<dc:creator><![CDATA[Brian Hazard]]></dc:creator>
		<pubDate>Thu, 22 Oct 2026 22:06:21 +0000</pubDate>
				<category><![CDATA[Strategies]]></category>
		<guid isPermaLink="false">https://passivepromotion.com/?p=11444</guid>

					<description><![CDATA[Spotify for Artists Discovery Mode reporting got a new look! &#x2728; It seems it got some new math too, because one of my songs is seeing a historical stream lift of 86,607%. Impressed? You shouldn&#8217;t be. More on that later. First, from the new summary page: Discovery Mode is a no-brainer, right? From the looks [&#8230;]]]></description>
										<content:encoded><![CDATA[
<p class="wp-block-paragraph"><strong>Spotify for Artists Discovery Mode reporting got a new look!</strong> <img src="https://s.w.org/images/core/emoji/17.0.2/72x72/2728.png" alt="✨" class="wp-smiley" style="height: 1em; max-height: 1em;" /></p>



<p class="wp-block-paragraph">It seems it got some new math too, because one of my songs is seeing a historical stream lift of 86,607%. Impressed? You shouldn&#8217;t be.</p>



<p class="wp-block-paragraph">More on that later. First, from the new summary page:</p>



<figure class="wp-block-image aligncenter size-full is-resized"><img fetchpriority="high" decoding="async" width="1480" height="922" src="https://passivepromotion.com/wp-content/uploads/sdm_royalties.png" alt="Spotify Discovery Mode royalties" class="wp-image-11446" style="width:740px;height:auto"/></figure>



<p class="wp-block-paragraph">Discovery Mode is a no-brainer, right? From the looks of it, I made about three times&nbsp;as much in royalties as I would have on the 5 songs in my campaign.</p>



<p class="wp-block-paragraph">But wait, there are 29 songs in my campaign! What gives?</p>



<p class="wp-block-paragraph">Spotify only counts the ones that got at least 500 streams the month before, which tend to be the winners. Pretty sneaky sis!</p>



<p class="wp-block-paragraph">Those 5 songs accounted for about two-thirds of my Discovery Mode streams. The commission, though, came off all 29.</p>



<figure class="wp-block-image aligncenter size-full is-resized"><img decoding="async" width="1480" height="188" src="https://passivepromotion.com/wp-content/uploads/sdm_hsl.png" alt="Spotify Discovery Mode Historical Stream Lift" class="wp-image-11449" style="width:740px;height:auto"/></figure>



<p class="wp-block-paragraph">If you thought their commission calculation was deceptive, wait until you see how they calculated my historical stream lift!</p>



<p class="wp-block-paragraph">Back to that 86,607% figure:</p>



<figure class="wp-block-image aligncenter size-full is-resized"><img decoding="async" width="1480" height="732" src="https://passivepromotion.com/wp-content/uploads/sdm_songs-1.png" alt="Spotify Discovery Mode Songs" class="wp-image-11454" style="width:740px;height:auto"/></figure>



<p class="wp-block-paragraph">Historical lift compares last month against the 28 days before the song was enrolled in Discovery Mode.</p>



<p class="wp-block-paragraph">“Where Tigers Are Said to Roam” and “The Rehearsal” were both released as singles before the album came out. I opted them into Discovery Mode as soon as they were eligible. A few months after the album release, I removed the singles and left the album versions.</p>



<p class="wp-block-paragraph">Here&#8217;s where things get messy. The album didn’t exist during the 28 days before the songs were first enrolled, so Spotify is comparing last month&#8217;s streams to <em>zero</em> streams. Since you can’t divide by zero, Spotify swaps in a 1.</p>



<p class="wp-block-paragraph">So in September, “Tigers” got 929 streams and “The Rehearsal” got 691 in 30 days. Spotify is comparing them to a baseline of 1 stream in 28 days. That’s how you get 86,607% and 64,392%. <img src="https://s.w.org/images/core/emoji/17.0.2/72x72/1f92f.png" alt="🤯" class="wp-smiley" style="height: 1em; max-height: 1em;" /></p>



<p class="wp-block-paragraph">The fix, if I cared enough to fix it, would be to leave it out of Discovery Mode for a month and then re-enroll it. Then it would take the stream and listener counts from the unenrolled month as the new baseline.</p>



<p class="wp-block-paragraph">Many of the 29 songs in my campaign have come in and out of Discovery Mode, so they&#8217;ve adopted new baselines.</p>



<p class="wp-block-paragraph">As for the 91% historical stream lift for the entire campaign, when you remove the broken songs, it comes in at 58%. Put them back in with the baselines they had before I removed the singles, and it&#8217;s roughly zero.</p>



<p class="wp-block-paragraph"><strong>tl;dr Historical stream lift falls somewhere between useless and bogus.</strong></p>



<p class="wp-block-paragraph">My advice: ignore it.</p>



<p class="wp-block-paragraph"><strong>One more item of business: which songs to enroll.</strong></p>



<p class="wp-block-paragraph">Spotify only recommends opting in 7 of my 26 eligible tracks for November. It only recommends tracks that it thinks will get more streams in Discovery Mode.</p>



<figure class="wp-block-image aligncenter size-full is-resized"><img loading="lazy" decoding="async" width="1480" height="1040" src="https://passivepromotion.com/wp-content/uploads/sdm_recc.png" alt="Spotify Discovery Mode Recommend" class="wp-image-11458" style="width:740px;height:auto"/></figure>



<p class="wp-block-paragraph">I almost always opt in everything. When I tried sticking to their recommendations, my Discovery Mode streams dropped precipitously, so I reverted.</p>



<p class="wp-block-paragraph"><strong>Until today, I thought that Discovery Mode streams were bonus streams that I otherwise wouldn&#8217;t get.</strong></p>



<p class="wp-block-paragraph">I didn&#8217;t mind paying a 30% commission, because I was paying far more than that for Meta ads. Who cares about a third of a third of a cent for a stream compared to $0.20 for a click, with no guarantee of an actual stream, on Instagram?</p>



<p class="wp-block-paragraph">But Discovery Mode streams aren&#8217;t freebies. They include all the streams those songs would have gotten from Radio, Autoplay, and Mixes anyway.</p>



<p class="wp-block-paragraph">So when I dropped the songs that weren&#8217;t recommended, of course my Discovery Mode streams went down. Those songs were no longer in the Discovery Mode report, but that doesn’t mean they stopped getting algorithmic streams.</p>



<p class="wp-block-paragraph">With the 30% commission, a song needs to get 43% lift just to break even on royalties. My recommended songs are well past that, except for “Time to Kill,” which is new this month.</p>



<p class="wp-block-paragraph">The recommendation predicts more streams, not necessarily more money. For the other 19 songs, Spotify doesn’t even give me a lift estimate, so I would be paying 30% on faith.</p>



<p class="wp-block-paragraph">So I’m running a test. I’m only enrolling the 7 recommended songs for November. When the campaign ends, I’ll compare the other 19 songs&#8217; Radio, Autoplay, and Mixes streams to the previous month. If they are in the same ballpark, I would have been paying 30% for nothing.</p>



<p class="wp-block-paragraph">I’ll report back in December&#8217;s email newsletter, so <a href="https://colortheory.com/passivepromotion" data-type="link" data-id="https://colortheory.com/passivepromotion" target="_blank" rel="noreferrer noopener">subscribe</a> if you haven&#8217;t already! I&#8217;m not selling anything and I only email at the end of the month or when I&#8217;ve got a new post.</p>



<p class="wp-block-paragraph"><strong>What&#8217;s your Discovery Mode strategy? Am I getting it wrong? Set me straight in the comments!</strong></p>
]]></content:encoded>
					
					<wfw:commentRss>https://passivepromotion.com/spotify-discovery-mode-stream-lift/feed/</wfw:commentRss>
			<slash:comments>6</slash:comments>
		
		
			</item>
		<item>
		<title>I Built a Windows XP Website for My Music</title>
		<link>https://passivepromotion.com/i-built-a-windows-xp-website-for-my-music/</link>
					<comments>https://passivepromotion.com/i-built-a-windows-xp-website-for-my-music/#comments</comments>
		
		<dc:creator><![CDATA[Brian Hazard]]></dc:creator>
		<pubDate>Thu, 30 Jul 2026 19:32:11 +0000</pubDate>
				<category><![CDATA[Strategies]]></category>
		<guid isPermaLink="false">https://passivepromotion.com/?p=11404</guid>

					<description><![CDATA[Remember Windows XP? If so, my new website at colortheorymusic.com will feel instantly familiar. Color Theory XP features highlights from the Color Theory catalog disguised as a Windows XP desktop, complete with boot screen, login, taskbar, Start menu, draggable windows, and fake apps that play real music. A month ago, I wouldn&#8217;t have thought that [&#8230;]]]></description>
										<content:encoded><![CDATA[
<p class="wp-block-paragraph"><strong>Remember Windows XP?</strong></p>



<p class="wp-block-paragraph">If so, my new website at <a href="https://colortheorymusic.com" target="_blank" rel="noreferrer noopener">colortheorymusic.com</a> will feel instantly familiar.</p>



<p class="wp-block-paragraph">Color Theory XP features highlights from the Color Theory catalog disguised as a Windows XP desktop, complete with boot screen, login, taskbar, Start menu, draggable windows, and fake apps that play real music.</p>



<figure class="wp-block-embed is-type-video is-provider-youtube wp-block-embed-youtube wp-embed-aspect-16-9 wp-has-aspect-ratio"><div class="wp-block-embed__wrapper">
<iframe loading="lazy" title="Color Theory XP Demonstration" width="500" height="281" src="https://www.youtube.com/embed/rVnqEExf6r0?feature=oembed" frameborder="0" allow="accelerometer; autoplay; clipboard-write; encrypted-media; gyroscope; picture-in-picture; web-share" referrerpolicy="strict-origin-when-cross-origin" allowfullscreen></iframe>
</div></figure>



<p class="wp-block-paragraph">A month ago, I wouldn&#8217;t have thought that this was even possible, much less that I could do it myself.</p>



<p class="wp-block-paragraph">I suppose that&#8217;s overstating things. I didn&#8217;t actually do it myself. I asked Claude to do it, and it was up and running in an afternoon.</p>



<p class="wp-block-paragraph">Here is the actual prompt I gave it:</p>



<blockquote class="wp-block-quote is-layout-flow wp-block-quote-is-layout-flow">
<p class="wp-block-paragraph">I, Brian Hazard, have a recording project called Color Theory and I want to build a new website that I&#8217;ll host at colortheorymusic.com, leaving colortheory.com to host my email. For the purposes of this task, pretend that colortheory.com doesn&#8217;t exist and just pull images and info online.</p>



<p class="wp-block-paragraph">I want you to build a website that looks like a Windows XP operating system, with a desktop and file navigation and apps to click on. Make it fun with lots of easter eggs. Try to tastefully encourage people to join my Patreon page and include WinAmp that can play my songs. Also include Cubase VST that can load and play my songs.</p>
</blockquote>



<p class="wp-block-paragraph">Bada boom, bada bing, done.</p>



<p class="wp-block-paragraph">I figured it would need PHP and a database and a special hosting package, but to my surprise, it didn&#8217;t require hosting at all. It&#8217;s just HTML, CSS, and JavaScript that runs in the visitor&#8217;s browser.</p>



<p class="wp-block-paragraph">Cloudflare, where I host my domains, has a Workers &amp; Pages feature where you simply upload the files Claude spits out (a “deployment”), and they&#8217;re immediately live on the web with no monthly fee.</p>



<p class="wp-block-paragraph">So I put it up and shared it, and it started spreading on social media! To capitalize on the momentum, I updated it to include my new single, &#8220;<a href="https://ffm.colortheory.com/cibm" target="_blank" rel="noreferrer noopener">Couldn&#8217;t It Be Me?</a>&#8220;</p>



<iframe loading="lazy" width="100%" height="166" scrolling="no" frameborder="no" allow="autoplay; encrypted-media" src="https://w.soundcloud.com/player/?url=https%3A//api.soundcloud.com/tracks/soundcloud%253Atracks%253A2359331645&#038;color=%23ff5500&#038;auto_play=false&#038;hide_related=false&#038;show_comments=true&#038;show_user=true&#038;show_reposts=false&#038;show_teaser=true"></iframe><div style="font-size: 10px; color: #cccccc;line-break: anywhere;word-break: normal;overflow: hidden;white-space: nowrap;text-overflow: ellipsis; font-family: Interstate,Lucida Grande,Lucida Sans Unicode,Lucida Sans,Garuda,Verdana,Tahoma,sans-serif;font-weight: 100;"><a href="https://soundcloud.com/colortheory" title="Color Theory" target="_blank" style="color: #cccccc; text-decoration: none;" rel="noopener">Color Theory</a> · <a href="https://soundcloud.com/colortheory/couldntitbeme" title="Couldn&#x27;t It Be Me" target="_blank" style="color: #cccccc; text-decoration: none;" rel="noopener">Couldn&#x27;t It Be Me</a></div>



<p class="wp-block-paragraph">I rendered stems from Ableton so that they could be muted and soloed on a per-track basis in Cubase VST. Getting that to work took longer than everything else up to that point.</p>



<p class="wp-block-paragraph">Ten separate audio files won&#8217;t stay in sync in a browser, so Claude made it download all of them up front, decode them into memory, and start them on one shared clock. On mobile it collapses the stems to mono at a lower sample rate to fit in memory.</p>



<p class="wp-block-paragraph">As for traffic, Cloudflare reports 5,440 unique visitors in 30 days mostly from the US, UK, Netherlands, Brazil and Canada.</p>



<p class="wp-block-paragraph"><strong>Is it an effective way to promote music? Who knows. Was it fun? Yes.</strong></p>



<p class="wp-block-paragraph">If you&#8217;re paying $20 a month for a Claude or ChatGPT subscription, you can do it too, though you might have to space out your sessions. You genuinely don&#8217;t need to know anything about coding or web design. Just tell it what you want in plain language.</p>



<p class="wp-block-paragraph">My little demonstration video only scratches the surface. Feel free to <a href="https://colortheorymusic.com" target="_blank" rel="noreferrer noopener">play around</a> to your heart&#8217;s content!</p>



<p class="wp-block-paragraph">I had Claude prepare a full feature list, including every easter egg, in case you&#8217;d rather read than explore:</p>



<details class="wp-block-details is-layout-flow wp-block-details-is-layout-flow"><summary><em>Spoilers: full feature list and easter eggs</em> (click to reveal)</summary>
<h2 class="wp-block-heading">Feature list</h2>



<h3 class="wp-block-heading">The shell</h3>



<ul class="wp-block-list">
<li><strong>Boot sequence</strong>&nbsp;→ XP-style&nbsp;<strong>welcome screen</strong>&nbsp;with three users:
<ul class="wp-block-list">
<li><strong>Guest</strong>&nbsp;— one click, straight in</li>



<li><strong>Brian Hazard</strong>&nbsp;— password-gated (a joke: &#8220;14,082 unread demos&#8221;)</li>



<li><strong>Patron</strong>&nbsp;— password posted on Patreon; turns off every upsell and unlocks bonus content</li>
</ul>
</li>



<li>Working&nbsp;<strong>taskbar</strong>&nbsp;(live clock, tray, window buttons),&nbsp;<strong>Start menu</strong>,&nbsp;<strong>Run…</strong>&nbsp;dialog</li>



<li><strong>Draggable, minimizable, maximizable windows</strong>&nbsp;with a real z-order stack</li>



<li><strong>Right-click the desktop → Change Wallpaper</strong>&nbsp;(4 wallpapers, including the XP hill)</li>



<li><strong>Turn Off Computer</strong>&nbsp;→ &#8220;It&#8217;s now safe to turn off your computer&#8221;</li>



<li>Idle two minutes with the music stopped →&nbsp;<strong>DVD-player-style screensaver</strong></li>



<li>Tray&nbsp;<strong>balloon tips</strong>&nbsp;that fire on login and after your first full song</li>
</ul>



<h3 class="wp-block-heading">Winamp (it really plays)</h3>



<ul class="wp-block-list">
<li><strong>10 full tracks</strong>&nbsp;from the catalog, real MP3s</li>



<li>Live&nbsp;<strong>spectrum analyzer</strong>, playlist, shuffle, repeat, seek and volume sliders</li>



<li>The classic skin, rebuilt in CSS</li>
</ul>



<h3 class="wp-block-heading">Cubase VST — the centerpiece</h3>



<ul class="wp-block-list">
<li>Loads catalog songs as fake&nbsp;<code>.all</code>&nbsp;sessions:&nbsp;<strong>moving playhead, bar/beat counter, per-song tempo, VU meters</strong></li>



<li><strong>The real stem session for the new single &#8220;Couldn&#8217;t It Be Me?&#8221;</strong>&nbsp;— 10 actual stems (drums, bass, piano, synths, arpeggio, pluck, and more) exported from the master project</li>



<li><strong>Mute and solo buttons genuinely work.</strong>&nbsp;Visitors remix the song in the browser.</li>



<li>The arrangement blocks are transcribed bar-for-bar from the Ableton project, so the timeline looks like the real session</li>



<li>Period-correct joke: Brian tracked in Cubase until 2010, when he won Ableton Live in the John Lennon Songwriting Contest</li>
</ul>



<h3 class="wp-block-heading">MS Paint</h3>



<ul class="wp-block-list">
<li>Working pencil, brush, eraser, fill, 20-color XP palette, three brush sizes</li>



<li>Draws with touch on phones</li>



<li><strong>Easter egg:</strong>&nbsp;the new single&#8217;s cover art sits under a scratch-off layer — you reveal the artwork by scribbling on it</li>
</ul>



<h3 class="wp-block-heading">Explorer / file system</h3>



<ul class="wp-block-list">
<li><strong>My Computer</strong>,&nbsp;<strong>My Music</strong>&nbsp;(4 albums in detail, 14 in the catalog),&nbsp;<strong>My Pictures</strong>&nbsp;(cover art viewer),&nbsp;<strong>My Documents</strong></li>



<li><strong>Napster Downloads</strong>&nbsp;folder — &#8220;totally legit&#8221;</li>



<li>Notepad documents:&nbsp;<code>bio.txt</code>,&nbsp;<code>press_quotes.txt</code>, and a&nbsp;<code>TODO.txt</code>&nbsp;that shouldn&#8217;t have shipped</li>
</ul>



<h3 class="wp-block-heading">Internet Explorer</h3>



<ul class="wp-block-list">
<li>A&nbsp;<strong>GeoCities-era Color Theory homepage</strong>: rainbow banner, marquee, visitor hit counter, &#8220;under construction&#8221; GIF energy, real links out to Bandcamp, Patreon and socials</li>
</ul>



<h3 class="wp-block-heading">A Different Drum (the deep cut)</h3>



<ul class="wp-block-list">
<li>A replica of&nbsp;<strong>adifferentdrum.com</strong>, the Provo, Utah synthpop label and mail-order shop that sold Color Theory CDs in the XP era — rebuilt from a&nbsp;<strong>2004 Wayback Machine snapshot</strong>, including the logo redrawn as SVG</li>



<li><strong>20 CDs</strong>&nbsp;in the catalog: Color Theory&#8217;s six, plus Cosmicity, B! Machine, Faith Assembly and other label-mates</li>
</ul>



<h3 class="wp-block-heading">Patron features</h3>



<ul class="wp-block-list">
<li><strong>Patron Center</strong>&nbsp;— a parody of the XP Security Center (&#8220;Patreon Status: AT RISK&#8221;)</li>



<li>Logging in as Patron unlocks&nbsp;<strong>all 18 Patreon CD volumes</strong>&nbsp;with complete tracklists; titles that exist on the site play in Winamp</li>



<li>Patron login also&nbsp;<strong>silences every upsell</strong>&nbsp;— no Clippy, no balloons</li>
</ul>



<h3 class="wp-block-heading">Games</h3>



<ul class="wp-block-list">
<li><strong>Minesweeper</strong>&nbsp;— fully playable, with a flag-mode button added for touch</li>



<li><strong>3D Pinball: Space Cadet</strong>&nbsp;— the actual game, via a community WebAssembly port</li>
</ul>



<h3 class="wp-block-heading">Guestbook</h3>



<ul class="wp-block-list">
<li>A &#8217;90s-style guestbook that&#8217;s really a&nbsp;<strong>mailing list signup</strong>, pitching five free songs including &#8220;Crystal&#8221; and &#8220;The Darkness&#8221;</li>
</ul>



<h3 class="wp-block-heading">Command Prompt</h3>



<ul class="wp-block-list">
<li><code>HELP</code>,&nbsp;<code>DIR</code>&nbsp;(lists the songs, reports the total as &#8220;minutes of feelings&#8221;),&nbsp;<code>PLAY 9</code>&nbsp;(plays track 9 in Winamp),&nbsp;<code>PATREON</code>,&nbsp;<code>COLOR</code>,&nbsp;<code>BSOD</code>,&nbsp;<code>CLIPPY</code></li>



<li>Undocumented:&nbsp;<code>FORMAT C:</code>&nbsp;→ &#8220;Access denied: drive contains unreleased demos&#8221;,&nbsp;<code>DEL *.*</code>&nbsp;→ &#8220;Nice try.&#8221;, and&nbsp;<code>PONYTAIL</code></li>
</ul>



<h3 class="wp-block-heading">Easter eggs</h3>



<ul class="wp-block-list">
<li><strong>Konami code</strong>&nbsp;→ Blue Screen of Death (&#8220;A problem has been detected and Windows has been shut down to prevent damage to your ears&#8221;)</li>



<li><strong>Clippy</strong>&nbsp;appears a few minutes in with a Patreon nudge you can decline</li>



<li><strong>Recycle Bin</strong>:&nbsp;<code>guitar_solo.wav</code>&nbsp;(it plays!),&nbsp;<code>major_label_contract.doc</code>, and&nbsp;<code>nu_metal_phase</code>&nbsp;— do not restore</li>



<li><strong>Napster Downloads</strong>&nbsp;→ &#8220;Depeche Mode &#8211; Unreleased B-Side.mp3&#8221;, which tells the true Ponytail Girl story</li>



<li><code>Run…</code>&nbsp;accepts&nbsp;<code>regedit</code>&nbsp;(HKEY_LOCAL_MACHINE\SOFTWARE\ColorTheory\Feelings is protected) and&nbsp;<code>telnet towel.blinkenlights.nl</code></li>



<li>Winning Minesweeper reveals that &#8220;Ponytail Girl&#8221; was never a Depeche Mode song</li>
</ul>



<h3 class="wp-block-heading">Under the hood</h3>



<ul class="wp-block-list">
<li><strong>No build step, no framework, no dependencies</strong>&nbsp;— hand-written HTML, CSS and JavaScript: about&nbsp;<strong>2,800 lines</strong>&nbsp;total, plus ~82 MB of audio and art</li>



<li><strong>Hosted free</strong>&nbsp;on Cloudflare (static assets)</li>



<li>Works on phones and tablets: windows maximize, single-tap opens icons, Paint draws with touch, Minesweeper gets bigger cells</li>



<li>The stem player decodes all 10 stems to memory and starts them on a single audio clock, so they can never drift out of sync — and it down-converts to mono on phones to survive the memory limits</li>
</ul>
</details>



<p class="wp-block-paragraph"><strong>If you&#8217;ve got any ideas for what I should do next, let me know in the comments!</strong></p>
]]></content:encoded>
					
					<wfw:commentRss>https://passivepromotion.com/i-built-a-windows-xp-website-for-my-music/feed/</wfw:commentRss>
			<slash:comments>4</slash:comments>
		
		
			</item>
		<item>
		<title>AI Stole My Music (and probably yours too)</title>
		<link>https://passivepromotion.com/ai-stole-my-music/</link>
					<comments>https://passivepromotion.com/ai-stole-my-music/#comments</comments>
		
		<dc:creator><![CDATA[Brian Hazard]]></dc:creator>
		<pubDate>Fri, 26 Jun 2026 15:59:14 +0000</pubDate>
				<category><![CDATA[Opinion]]></category>
		<guid isPermaLink="false">https://passivepromotion.com/?p=11358</guid>

					<description><![CDATA[My social media feeds are overwhelmingly musician-focused, so your mileage may vary, but I&#8217;ve been seeing screenshots like the one above everywhere, accompanied by angry, angry words. ICYMI, The Atlantic created an AI Watchdog search engine where you can check if your music was used to train AI models, for which you were almost certainly [&#8230;]]]></description>
										<content:encoded><![CDATA[
<p class="wp-block-paragraph">My social media feeds are overwhelmingly musician-focused, so your mileage may vary, but I&#8217;ve been seeing screenshots like the one above everywhere, accompanied by angry, <em>angry</em> words.</p>



<p class="wp-block-paragraph">ICYMI, The Atlantic created an <a href="https://www.theatlantic.com/category/ai-watchdog/" target="_blank" rel="noreferrer noopener">AI Watchdog search engine</a> where you can check if your music was used to train AI models, for which you were almost certainly not informed or compensated.</p>



<p class="wp-block-paragraph">In my case, 181 songs are in two datasets: LAION-DISCO (above) and SLEEPING-DISCO:</p>



<figure class="wp-block-image size-full"><img loading="lazy" decoding="async" width="1652" height="1282" src="https://passivepromotion.com/wp-content/uploads/ai_sleeping-disco.png" alt="" class="wp-image-11360" srcset="https://passivepromotion.com/wp-content/uploads/ai_sleeping-disco.png 1652w, https://passivepromotion.com/wp-content/uploads/ai_sleeping-disco-1536x1192.png 1536w" sizes="auto, (max-width: 1652px) 100vw, 1652px" /></figure>



<p class="wp-block-paragraph"><strong>I should be <em>really</em> angry then, right?</strong></p>



<p class="wp-block-paragraph">Maybe I should be, but I&#8217;m like a 4 out of 10 tops.</p>



<figure class="wp-block-image size-full is-resized"><img loading="lazy" decoding="async" width="1480" height="557" src="https://passivepromotion.com/wp-content/uploads/pain.jpeg" alt="pain scale" class="wp-image-11388" style="width:600px"/></figure>



<p class="wp-block-paragraph">For starters, I already knew my music was trained on. There&#8217;s a music AI service called Sonauto (now Treblo) that allowed you to prompt for specific artists until recently, most likely due to legal challenges.</p>



<p class="wp-block-paragraph">When it first launched, I prompted for songs “in the precise sound and style of Color Theory” and the results were shockingly good. For free, mind you. Anyone could theoretically whip up a Color Theory album in a half hour.</p>



<p class="wp-block-paragraph">I shared a track with my patrons and here are some sample comments:</p>



<blockquote class="wp-block-quote is-layout-flow wp-block-quote-is-layout-flow">
<p class="wp-block-paragraph">Yeah I can&#8217;t tell BrAIan apart from you based just on a voice or lyrics, or the music style… Scary!</p>
</blockquote>



<blockquote class="wp-block-quote is-layout-flow wp-block-quote-is-layout-flow">
<p class="wp-block-paragraph">This is unreal, if you&#8217;d have posted this as your next demo I wouldn&#8217;t have thought twice <img src="https://s.w.org/images/core/emoji/17.0.2/72x72/1f642.png" alt="🙂" class="wp-smiley" style="height: 1em; max-height: 1em;" /> To be fair the vocals are good, but the song hasn&#8217;t quite got that Color Theory Magic.</p>
</blockquote>



<blockquote class="wp-block-quote is-layout-flow wp-block-quote-is-layout-flow">
<p class="wp-block-paragraph">Yes we‘re doomed….a bit. I still can hear a difference, luckily…But to be honest: if you wouldn‘t have told me/us before, I might have not noticed it….</p>
</blockquote>



<p class="wp-block-paragraph">My friend Minute Taker was in there too so I whipped up some songs with him singing ridiculous things he&#8217;d never say, for our ears only of course. If nothing else, AI is always good for a laugh!</p>



<p class="wp-block-paragraph">Even then, I wasn&#8217;t angry. I was amazed! And a little bit honored to have made the cut, I suppose.</p>



<p class="wp-block-paragraph">I&#8217;m not saying we don&#8217;t need protections for our sonic identities. We absolutely do, and maybe we&#8217;ll even get some retroactive compensation via a class action lawsuit. I&#8217;m not holding my breath.</p>



<p class="wp-block-paragraph">Another possible reason I&#8217;m not angry (who can really say, emotions being what they are) is that a couple of years ago, I opted in to AI training through a sync/radio platform called <a href="https://www.audiosparx.com/ColorTheory" target="_blank" rel="noreferrer noopener">AudioSparx</a>. I&#8217;ve been active there for many years, and I figured if my music was going to be trained on anyway, I might as well get paid for it.</p>



<p class="wp-block-paragraph">To be clear, this isn&#8217;t how my music ended up in those datasets. The AudioSparx training is fully licensed, as an ethical alternative to the theft detailed above. So far I&#8217;ve made $168.85 in AI training royalties.</p>



<p class="wp-block-paragraph">To sum things up, I suppose I&#8217;m pro-AI, anti-theft. You know I&#8217;ll be asking Claude to proofread this post before I hit publish!</p>



<p class="wp-block-paragraph"><strong>How do you feel about AI training on our music? Are you angry? Tell me why I should be too in the comments!</strong></p>
]]></content:encoded>
					
					<wfw:commentRss>https://passivepromotion.com/ai-stole-my-music/feed/</wfw:commentRss>
			<slash:comments>11</slash:comments>
		
		
			</item>
		<item>
		<title>Introducing the Spotify Campaign Analyzer</title>
		<link>https://passivepromotion.com/introducing-the-spotify-campaign-analyzer/</link>
					<comments>https://passivepromotion.com/introducing-the-spotify-campaign-analyzer/#comments</comments>
		
		<dc:creator><![CDATA[Brian Hazard]]></dc:creator>
		<pubDate>Mon, 22 Jun 2026 15:48:21 +0000</pubDate>
				<category><![CDATA[Sites & Services]]></category>
		<guid isPermaLink="false">https://passivepromotion.com/?p=11326</guid>

					<description><![CDATA[I got some bad news today. I learned that I&#8217;ve spent over $12K on Spotify Marquee and Showcase campaigns since 2022. And what did all that money get me besides a hole in the wallet? Exactly 107,327 streams from 23,100 listeners at an average cost of $0.55 per listener. And how do I know this? [&#8230;]]]></description>
										<content:encoded><![CDATA[
<p class="wp-block-paragraph"><strong>I got some bad news today.</strong></p>



<p class="wp-block-paragraph">I learned that I&#8217;ve spent over $12K on Spotify Marquee and Showcase campaigns since 2022. </p>



<p class="wp-block-paragraph"><strong>And what did all that money get me besides a hole in the wallet?</strong></p>



<p class="wp-block-paragraph">Exactly 107,327 streams from 23,100 listeners at an average cost of $0.55 per listener.</p>



<p class="wp-block-paragraph"><strong>And how do I know this?</strong></p>



<p class="wp-block-paragraph">It&#8217;s all thanks to the free <a href="https://passivepromotion.com/spotify-campaign-analyzer" target="_blank" rel="noreferrer noopener">Spotify Campaign Analyzer</a> I built for you. Export your results from Spotify for Artists, drag the file onto the page, and you get everything S4A shows you, plus the analysis it doesn&#8217;t:</p>



<ul class="wp-block-list">
<li><strong>Every campaign in one sortable table.</strong> Spend, listeners, streams, and intent rate side by side across your entire campaign history.</li>



<li><strong>The cost metrics Spotify doesn&#8217;t calculate</strong>: cost per listener, cost per stream, and total streams, including streams of your non-promoted releases.</li>



<li><strong>Side-by-side comparisons.</strong> Pick any set of campaigns and see them charted against each other, metric by metric.</li>



<li><strong>Benchmarks with context.</strong> Any campaign can be measured against your own history or against typical independent-artist results. Tiny, stopped-early campaigns can be disregarded (you set the dollar threshold) so as to not skew your results.</li>



<li><strong>Apples-to-apples mode.</strong> Campaigns that target potential listeners (cold audiences) always look worse on paper. One click recomputes the numbers from warm audiences only.</li>



<li><strong>A straight answer on in-progress campaigns.</strong> Enter the numbers from a campaign that&#8217;s still running and get a verdict with clear reasoning: keep going, watch it, or stop.</li>



<li><strong>Completely private.</strong> It&#8217;s a single web page. Your data never leaves your browser. Nothing is uploaded, and there&#8217;s no signup. There&#8217;s not even a donate button! <img src="https://s.w.org/images/core/emoji/17.0.2/72x72/1f914.png" alt="🤔" class="wp-smiley" style="height: 1em; max-height: 1em;" /></li>
</ul>



<h3 class="wp-block-heading">What my 123 campaigns taught me</h3>



<p class="wp-block-paragraph">Pulling my whole history into one place surfaced a few things I would&#8217;ve never spotted on Spotify for Artists:</p>



<ul class="wp-block-list">
<li><strong>Latin America is a bargain.</strong> In Brazil I pay about $0.25 per converted listener and in Mexico $0.38, versus roughly $0.60 in the US and UK. Brazil and Mexico also post my highest intent rates (~22%), well above the US (~17%).</li>



<li><strong>Albums beat singles, by a lot.</strong> Album campaigns convert listeners at $0.44 and generate ~5 streams per listener, while single campaigns cost $0.60 for ~1.6 streams each. More tracks means more to explore, but the cost-per-listener differences wasn&#8217;t obvious. EPs land in between.</li>



<li><strong>Almost 40% of my streams came from my back catalog.</strong> Across these campaigns, listeners drove ~64k streams of the promoted release, plus another ~41k streams of my other releases. Kind of important to factor in, wouldn&#8217;t you say? But S4A keeps it tucked away.</li>



<li><strong>Marquee and Showcase are different tools.</strong> My Marquee campaigns earn higher intent (~22% vs ~15%), but Showcase drives nearly double the streams per listener (3.0 vs 1.7).</li>
</ul>



<h3 class="wp-block-heading">Getting your data in</h3>



<p class="wp-block-paragraph">The tool reads the same results file Spotify already lets you download. It never connects to your account or asks for a login.</p>



<ol class="wp-block-list">
<li>In <strong>Spotify for Artists</strong>, go to <strong>Campaigns → Display</strong>.</li>



<li>Click the <strong>&#8220;…&#8221;</strong> menu next to <strong>+ Create campaign</strong> and choose <strong>Download all results</strong>. That&#8217;s a single CSV covering every campaign you&#8217;ve ever run.</li>



<li>Drag that file onto the analyzer. Done.</li>
</ol>



<p class="wp-block-paragraph">A few things worth knowing: it&#8217;s one file for your whole history. There&#8217;s no need to download individual campaigns, but it&#8217;ll accept them if you do. Your data stays in your browser; nothing is uploaded. It reads both Marquee and Showcase data all the way back to my first campaign in 2022.</p>



<p class="wp-block-paragraph">It even works on my iPhone via the Files app! That was a pleasant surprise.</p>



<p class="wp-block-paragraph"><strong>Give it a try at <a href="https://passivepromotion.com/spotify-campaign-analyzer" target="_blank" rel="noreferrer noopener">passivepromotion.com/spotify-campaign-analyzer</a></strong></p>



<p class="wp-block-paragraph">And share your results and suggestions for improvement in the comments<strong>!</strong></p>
]]></content:encoded>
					
					<wfw:commentRss>https://passivepromotion.com/introducing-the-spotify-campaign-analyzer/feed/</wfw:commentRss>
			<slash:comments>10</slash:comments>
		
		
			</item>
		<item>
		<title>I Built a Meta Ads to Spotify Analyzer</title>
		<link>https://passivepromotion.com/i-built-a-meta-ads-to-spotify-analyzer/</link>
					<comments>https://passivepromotion.com/i-built-a-meta-ads-to-spotify-analyzer/#comments</comments>
		
		<dc:creator><![CDATA[Brian Hazard]]></dc:creator>
		<pubDate>Wed, 03 Jun 2026 19:13:58 +0000</pubDate>
				<category><![CDATA[Strategies]]></category>
		<guid isPermaLink="false">https://passivepromotion.com/?p=11221</guid>

					<description><![CDATA[I promote my music on Spotify through Meta ads. Money goes out. Streams, saves, and playlist adds come in. But are those things actually connected, or am I paying for what the algorithm would do anyway? I vibe coded a tool to find out! The Meta Ads to Spotify Analyzer is a single-page, browser-based calculator [&#8230;]]]></description>
										<content:encoded><![CDATA[
<p class="wp-block-paragraph">I promote my music on Spotify through Meta ads. Money goes out. Streams, saves, and playlist adds come in.</p>



<p class="wp-block-paragraph"><strong>But are those things actually connected, or am I paying for what the algorithm would do anyway?</strong></p>



<p class="wp-block-paragraph">I vibe coded a tool to find out!</p>



<p class="wp-block-paragraph">The <strong>Meta Ads to Spotify Analyzer</strong> is a single-page, browser-based calculator with no login required. Your data never leaves the page.</p>



<p class="wp-block-paragraph">Try it <a href="https://passivepromotion.com/meta" target="_blank" rel="noreferrer noopener">here</a>, or use the version baked into this post.</p>



<p class="wp-block-paragraph">I&#8217;ve completely overhauled it, and this post, since I first published the tool. Instead of entering data manually, you simply drop in CSV files from Ads Manager and Spotify for Artists.</p>



<p class="wp-block-paragraph">The tool re-runs the whole analysis on 300 random shufflings of your conversions and only claims an effect if random data can&#8217;t match it.</p>



<p class="wp-block-paragraph">See for yourself! If you need help locating the proper files, click on “Where do I get these files?” in the import box.</p>



<p class="wp-block-paragraph">Or if you just want to see what it can do, click the <strong>Load Example</strong> button below the table.</p>



<iframe id="pp-meta-embed" src="https://passivepromotion.com/meta/" style="width: 100%; height: 833px; border: 0px;" loading="lazy" title="Meta Ads to Spotify Analyzer"></iframe>
<script>
(function(){
  var f=document.getElementById("pp-meta-embed"); if(!f) return;
  function r(){ try{ var d=f.contentDocument; if(!d||!d.body) return; var h=d.body.scrollHeight; if(h) f.style.height=h+"px"; }catch(e){} }
  function hook(){ r(); try{ new ResizeObserver(r).observe(f.contentDocument.body); }catch(e){} setInterval(r,500); }
  f.addEventListener("load",hook);
  try{ if(f.contentDocument && f.contentDocument.readyState==="complete") hook(); }catch(e){}
})();
</script>



<p class="wp-block-paragraph">The minute you click <strong>Load Example</strong> (or <strong>Run Analysis</strong> on your own files), you&#8217;ll get a plain-English verdict. For the example (a real 44-day campaign plus a couple of baseline days), it comes back with:</p>



<p class="wp-block-paragraph"><img src="https://s.w.org/images/core/emoji/17.0.2/72x72/2705.png" alt="✅" class="wp-smiley" style="height: 1em; max-height: 1em;" />&nbsp;<strong>Streams: strong evidence your ads are driving this</strong>&nbsp;<em>(chance matched this result in fewer than 1% of 300 trials)</em><br><img src="https://s.w.org/images/core/emoji/17.0.2/72x72/1f7e1.png" alt="🟡" class="wp-smiley" style="height: 1em; max-height: 1em;" />&nbsp;<strong>Intent (saves + playlist adds): suggestive, but not conclusive yet</strong>&nbsp;<em>(chance matched this result in about 10% of 300 trials)</em></p>



<p class="wp-block-paragraph">Then you get a pretty graph and lots of numbers before the part that actually matters: what&#8217;s attributable to the ads.</p>



<p class="wp-block-paragraph">In this example, each conversion is generating about 8 streams, for a cost of $0.03 per stream.</p>



<p class="wp-block-paragraph">Keep in mind that this example is catalog-wide. For any individual song, Spotify for Artists only lets you download daily streams. Saves, listeners, and playlist adds are for <em>all</em> of your songs.</p>



<p class="wp-block-paragraph">So if you include a CSV for an individual song, the streams conclusions will be tighter and ultimately more honest.</p>



<p class="wp-block-paragraph">I realize it sounds ridiculous to pay that much when Spotify pays us back a paltry $0.003 in royalties, but that doesn’t factor in future streams or algorithmic impact. Good luck measuring that!</p>



<p class="wp-block-paragraph">When it comes to streams, there are loads of confounding variables:</p>



<ul class="wp-block-list">
<li>organic activity</li>



<li>The Algorithm<img src="https://s.w.org/images/core/emoji/17.0.2/72x72/2122.png" alt="™" class="wp-smiley" style="height: 1em; max-height: 1em;" /></li>



<li>Marquee and Showcase campaigns</li>



<li>playlist adds and removals</li>



<li>proximity to release day</li>



<li>weekdays vs weekends</li>
</ul>



<p class="wp-block-paragraph">It&#8217;s so messy, we&#8217;re lucky to see any signal at all in the noise, and some of these can fake a correlation as easily as hide one.</p>



<p class="wp-block-paragraph">Intent paints a cleaner picture. A save or playlist add is a deliberate, same-day reaction to your ad.</p>



<p class="wp-block-paragraph">In my experience, saves are the best way to judge the success of an ad campaign. If you don&#8217;t see an obvious relationship between conversions and saves, something is probably wrong, and this tool will help you spot it.</p>



<p class="wp-block-paragraph">Alrighty then, that&#8217;s a lot of data talk and my brain hurts.</p>



<p class="wp-block-paragraph"><strong>If you&#8217;ve got a few spare minutes, <a href="https://passivepromotion.com/meta" target="_blank" rel="noreferrer noopener">try it for yourself</a> and share your experience in the comments!</strong></p>
]]></content:encoded>
					
					<wfw:commentRss>https://passivepromotion.com/i-built-a-meta-ads-to-spotify-analyzer/feed/</wfw:commentRss>
			<slash:comments>4</slash:comments>
		
		
			</item>
	</channel>
</rss>
