Unwrapping Chicago’s Christmas Music: Using Technology to Explore Trends

It’s that time of the year again where Christmas has come to a very abrupt end. I wrote a blog article last year about how I wanted to find out if Mariah Carey’s “All I Want For Christmas is You” is the most played Christmas song on Chicago’s 93.9 Lite FM. I am back again this year with more metrics, some fun facts, and all the data you didn’t know you needed to know.

As a computer programmer, I wanted to leverage the newest and most prevalent technologies, and this year was no exception.

In this blog post, I will detail the differences in the algorithm and results from last year, as well as explain some of the small ways that radio works behind the scenes. Ultimately, I found the results quite shocking and interesting, and I hope you can stay with me for the entire process, this is a very long article.

Upgrades and Experiments

This year, I wanted to try a different method of data collection outside of the web scraper that worked well for me last year. I had a couple of ideas that included the following:

  • Using an audio recorder and feeding that data into a song recognition algorithm like Shazam
  • Using external audio capture and manually cataloging the data
  • Picking up the song title and artist over the air

Ultimately, I tried two of these three approaches and learned a lot in the process. I am going to detail these a bit below.  

Capturing Audio

Since I am a nerd and got a ham radio license, I learned about the wonderful invention that is the SDR. An SDR, or software defined radio, is a little dongle that plugs into a computer and allows the computer to capture radio waves. This little device connects to an antenna, and depending on the design of the antenna, can pick up anything from ham radio signals to airplane telemetry, to even NOAA weather satellites! I know there are ways people can pick up standard FM radio over these, so I did a lot of digging. Since I already had the dongle and had it set up in my new lab in my basement, I wasted no time getting SDR# (the program that controls the SDR) programmed to the right station and listening in!

The SDR Dongle that I used

Audio Recognition

As my first attempt of expanding on what I had created in the last year, I wrote a Python script that took 10 seconds of audio, analyzed it, and returned what song was playing.

Throughout this process, I learned the fascinating way in which music recognition services such as Shazam work. They use what’s called an audio fingerprint, and an algorithm converts the data that is presented via audio to a string of code, unique to the song (just like the human fingerprint!) and then can search their database using that simplified rather than sending all the large and computationally expensive audio over the internet. I attempted to take the same approach with my Python script, but the open-source options I attempted to integrate that provided Shazam-like functionality were not comprehensive enough to include a lot of the Christmas music or was not reliable enough to be used for this application in my testing. Additionally, I did not want to pay the $20,000 it would cost for me to license a solution like Shazam for use in my fun little script. Sadly, this caused me to abandon this idea and move towards the other idea of picking up the song title and artist from over the air.

RDS

Now that the Python script had failed, I wanted to figure out what was going on over the air, and since I had the SDR hooked up to my computer and I can receive various signals, I wondered if there was a way in which I could receive that song title and artist that you see in your car when you’re driving and listening to the radio station, in my research, I came to find out this solution is called RDS.

Radio Data System (RDS) is a communications protocol standard for embedding small amounts of digital information in conventional FM radio broadcasts. RDS standardizes several types of information transmitted, including time, station identification, and program information.

This is SDR Sharp, the software I used to capture audio. The little humps on each side of the bigger ones are the RDS signals!

The heart of RDS is the ability to transmit a digital signal alongside the regular FM radio signal. This is achieved through a process called subcarrier modulation. Essentially, the FM radio signal has unused bandwidth, and RDS utilizes this space to piggyback its digital information. The most common type of modulation used for RDS is known as Binary Phase Shift Keying (BPSK), which is a form of phase modulation.

One of the key features of RDS is the Program Service (PS) name, which allows up to 8 characters (such as the station’s call letters) to be displayed on the radio’s interface. Another important feature is the Program Identification (PI) code, a unique identifier for each radio station. This helps with functions like the alternative frequencies (AF) feature, which allows a radio receiver to re-tune to a different frequency providing the same program when the first signal becomes too weak (e.g., when moving out of range or listening on HD Radio).

The feature I was after was Radio Text (RT), which provides additional information about the station or currently playing song and artist and the Clock Time (CT)

I utilized a program called RDS Spy and their cataloging plugin to attempt to pull the data out of the air.

RDS Spy

Unfortunately, I had a myriad of issues with the RDS setup. Firstly, my laptop is an old tried and true HP EliteBook. That laptop has been showing its age significantly and I noticed when I connected the RTL-SDR to the computer, I was getting a significant amount of noise on the PCI bus. I am not entirely sure what was causing it, it could have been the failed web cam or the failed touch screen on that laptop causing some noise, so I moved my obnoxious and hacked-together antenna using a cymbal stand from my drum kit and the rabbit ears over to my lab computer downstairs.

My SDR Setup, nice and underground. A great way to get signals.

Once everything was set up down there, I was able to get the program tuned in and song logging properly. Until it wasn’t. I was getting over the air reads, but partial reads at best. If the song was “Sleigh Ride”, I could have gotten the transmission “Sl Ride” or due to some interference, something like “Slyrtc Rids”, or gibberish not even remotely correct to the song playing. Sadly, I believe this was due to my poor reception from my antenna in my lab in the basement, and the sensitivity and finnickyness of the RDS spy software. The power utility in my area is good—not great—and with my great luck the power went out a few times. All of these reasons, along with the program crashing a few times and the computer going to sleep caused me to abandon this data collection method as well. I was sad to do that, but with all of the methods I tried and cleaning up the data, it would have been significant time and effort to get similar data.  

That song totally exists, it’s my favorite!

BUT! I was able to still use the good ol’ web scraper I built last year. That was my saving grace in this entire situation, and I was able to utilize the same data from last year using the same method, and it even logged the entire years’ worth of normal music since last Christmas when I built it. I never shut it off and I was able to get everything since November 2 of 2022. Luckily since this script is hosted in the cloud, the power outages and computer problems that were local to my house did not affect this. Additionally, since the script was already working, I was able to log as soon as they switched over at 9 am on Nov 2. Since I have started the script, I have logged over 75,000 songs! Believe it or not, this entire database is less than 5.5 mb, less than the size of 5 iPhone pictures.

This year, I took a dump of the database and utilized Microsoft Excel to aggregate the data. I feel as though I have made significant strides in my analysis since last year and can provide some better information. They transitioned off Christmas Music approximately 5:30 AM on December 26, 2023.

The Results

This year, I have a boatload of results to share!

Total Songs Logged 2023: 10474

Total Songs Logged 2022: 9513

Difference – 961 More songs were logged in 2023– and more songs played in November 2023 than anytime else! This could potentially be shorter songs, or a decrease in commercials to compete with streaming services. This could also potentially be because more titles were available on the website showing as currently playing. I know this is partially due to me not having the script running for a day last year, but this does not account for the whole difference.

2023 Most Played Christmas Artist in Chicago

This year the most played artist of the 129 logged, much to my chagrin, is Mariah Carey with a total of 552 plays. If you turned on the Light this Christmas season, you had a 5.27% chance of hearing one of Mariah’s 5 songs they played, including “All I want for Christmas is You” with a whopping 212 plays, “Christmas (Baby Please Come Home)” with 125 plays, “Santa Claus is Comin’ to Town” with 113 plays “O Holy Night” with 101 plays, “Oh Santa” with 1 play. Using the song length of these pieces, there was a total of 119886 seconds, or 33.3 Hours of Mariah played this Christmas Season. Rounding out the top 5, we have Andy Willians with 533 Plays over 10 songs, Amy Grant with 513 plays over 9 songs, Ray Conniff with 402 plays over 7 songs, and Dean Martin with 389 over 5 songs.

ArtistPlay CountPercentagePlace
Mariah Carey5525.27%1
Andy Williams5335.09%2
Amy Grant5134.90%3
Ray Conniff4023.84%4
Dean Martin3893.71%5
Mannheim Steamroller2622.50%6
Kelly Clarkson2532.42%7
The Ronettes2492.38%8
Frank Sinatra2472.36%9
Johnny Mathis2472.36%9
Bing Crosby2342.23%11
Harry Connick, Jr.2262.16%12
José Feliciano2152.05%13
David Foster2081.99%14
Burl Ives2041.95%15
Faith Hill1841.76%16
LeAnn Rimes1811.73%17
Train1761.68%18
Brenda Lee1641.57%19
Perry Como1631.56%20
Martina McBride1541.47%21
John Lennon1521.45%22
Darlene Love1481.41%23
The Drifters1431.37%24
THURL RAVENSCROFT1421.36%25

2023 Most Played Christmas Song in Chicago

Track Name2022 Plays2023 Plays2022 Rank2023 RankPlay Difference
Oh Holy Night by Kelly Clarkson271428919115
Santa Claus Is Coming to Town by The Crystals1712211429105
Where Are You Christmas by Faith Hill331377923104
Rudolph The Red-Nosed Reindeer by Burl Ives641645015100
Let It Snow! Let It Snow! Let It Snow! by Andy Williams131001264187

Of the 110 song titles I logged, the most played song was Sleigh Ride, with 823 plays. If you turned on the radio, you had an 8% chance of hearing a version of this song playing. There were 11 Versions of this song that played, totaling an airtime of 145848 seconds, OR 40.51 hours! That’s nearly 1.7 days of the Christmas season of having Sleigh Ride! I’m not mad though, I love sleigh ride.

TrackPlay CountPercentage of TotalRank
Sleigh Ride by Johnny Mathis2011.92%5
Sleigh Ride by The Ronettes1991.90%7
Sleigh Ride by The A-Strings980.94%42
Sleigh Ride by Air Supply970.93%43
Sleigh Ride by Amy Grant900.86%45
Sleigh Ride by Andy Williams600.57%56
Sleigh Ride by Arthur Fiedler560.53%60
Sleigh Ride by Carpenters180.17%121
Sleigh Ride by Ray Conniff20.02%205
Sleigh Ride by Harry Connick, Jr.10.01%214
Sleigh Ride by Lindsey Stirling10.01%214

To round out the top 5, we have Rudolph the Red Nosed Reindeer with 546 plays over its 7 versions, Winter Wonderland with 528 plays over its 8 versions, Carol of the Bells with 502 plays over its 4 versions, and Frosty the Snowman with 467 plays over its 7 versions.

Song TitlePlay CountPercentageRank
Sleigh Ride8237.86%1
Rudolph The Red-Nosed Reindeer5465.21%2
Winter Wonderland5285.04%3
Carol of the Bells5024.79%4
Frosty The Snowman4674.46%5
Jingle Bells3453.29%6
This Christmas3373.22%7
Have Yourself a Merry Little Christmas3313.16%8
It’s The Most Wonderful Time Of The Year3153.01%9
Let It Snow! Let It Snow! Let It Snow!2702.58%10
Rockin’ Around The Christmas Tree2692.57%11
Christmas (Baby Please Come Home)2412.30%12
All I Want for Christmas Is You2302.20%13
Feliz Navidad2152.05%14
Jingle Bell Rock1971.88%15
It’s Beginning to Look a Lot Like Christmas1911.82%16
Santa Claus Is Coming to Town1911.82%16
Ring Christmas Bells1891.80%18
Here Comes Santa Claus (Right Down Santa Claus Lane)1741.66%19
Let It Snow, Let It Snow, Let It Snow1641.57%20
Happy Xmas (War Is Over)1641.57%20
I Saw Mommy Kissing Santa Claus1631.56%22
Silver Bells1551.48%23
Happy Xmas War Is Over (Full Version)1521.45%24
Santa Claus Is Comin’ to Town1491.42%25

Fun fact! If you turned on the radio, you would have had a 40.92% chance of the current song being one of the top 10 on this list!

2023 Most Played Christmas Track in Chicago

And the moment you have all been waiting for… The most played Christmas Track in Chicago is….. (drumroll) … “Feliz Navidad” by Jose Feliciano with a whopping 215 plays! It beat out “All I want for Christmas is You” by a total of 3 plays! That is a total of 10.92 hours of that song being played the holiday season. Interestingly enough though, Mariah has him beat for total play time, with “All I want for Christmas is You” playing for a total of 13.89 hours.

Rounding out the top 5, we have Two versions of Carol of the Bells, the Mannheim Steamroller version (last year’s most played song) with 208 plays, David Foster’s version also with 208 plays, and Johnny Mathis’s version of Sleigh Ride with 201 plays.

TrackPlay CountPercentage of TotalRank
Feliz Navidad by José Feliciano2152.05%1
All I Want for Christmas Is You by Mariah Carey2122.02%2
Carol of the Bells by Mannheim Steamroller2081.99%3
Carol of the Bells by David Foster2081.99%3
Sleigh Ride by Johnny Mathis2011.92%5
It’s The Most Wonderful Time Of The Year by Andy Williams2001.91%6
Sleigh Ride by The Ronettes1991.90%7
Jingle Bells by Frank Sinatra1981.89%8
Winter Wonderland by Amy Grant1971.88%9
Ring Christmas Bells by Ray Conniff1891.80%10
Rockin’ Around The Christmas Tree by LeAnn Rimes1811.73%11
This Christmas by Train1761.68%12
Let It Snow! Let It Snow! Let It Snow! by Dean Martin1701.62%13
Rudolph The Red-Nosed Reindeer by Dean Martin1691.61%14
Rudolph The Red-Nosed Reindeer by Burl Ives1641.57%15
Jingle Bell Rock by Brenda Lee1641.57%15
Happy Xmas War Is Over (Full Version) by John Lennon1521.45%17
White Christmas (feat. Clyde McPhatter & Bill Pinkney) by The Drifters1431.37%18
You’re A Mean One, Mr. Grinch by THURL RAVENSCROFT1421.36%19
Oh Holy Night by Kelly Clarkson1421.36%19
Linus And Lucy by Vince Guaraldi Trio1411.35%21
Here Comes Santa Claus (Right Down Santa Claus Lane) by Gene Autry1391.33%22
Where Are You Christmas by Faith Hill1371.31%23
Winter Wonderland by Martina McBride1361.30%24
Frosty the Snowman by Ray Conniff1271.21%25
Christmas (Baby Please Come Home) by Mariah Carey1251.19%26
I Saw Mommy Kissing Santa Claus by The Jackson 51241.18%27
Deck the Halls With Boughs of Holly by Percy Faith1231.17%28
Santa Claus Is Coming to Town by The Crystals1221.16%29
Frosty The Snowman by Bing Crosby1211.16%30
Jingle Bells by The Ray Conniff Singers1201.15%31
Christmas (Baby Please Come Home) by Darlene Love1161.11%32
Santa Claus Is Comin’ to Town by Mariah Carey1131.08%33
Rudolph the Red-Nosed Reindeer by Harry Connick, Jr.1131.08%33
Let It Snow, Let It Snow, Let It Snow by Harry Connick, Jr.1091.04%35
Christmas Eve / Sarajevo 12/24 by Trans-Siberian Orchestra1051.00%36
Frosty the Snowman by Willie Nelson1030.98%37
It’s Beginning to Look a Lot Like Christmas by Perry Como1010.96%38
A Holly Jolly Christmas by Lady A1010.96%38
O Holy Night by Mariah Carey1010.96%38
Let It Snow! Let It Snow! Let It Snow! by Andy Williams1000.95%41
Sleigh Ride by The A-Strings980.94%42
Sleigh Ride by Air Supply970.93%43
Rudolph the Red-Nosed Reindeer by Gene Autry with The Pinafores950.91%44
Sleigh Ride by Amy Grant900.86%45
It’s Beginning To Look A Lot Like Christmas by Bing Crosby900.86%45
Rockin’ Around The Christmas Tree by Amy Grant880.84%47
Winter Wonderland by Andy Williams870.83%48
Underneath the Tree by Kelly Clarkson820.78%49
Carol Of The Bells by John Tesh820.78%49

If you turned on the radio, you had a 10% chance of having one of the top 5 songs playing!

As a prelude into the next section, I compared the top songs of 2022 and where they stand this year.

Song Name2023 Plays2022 Plays2023 Rank2022 RankPlay DifferenceRank Difference
Sleigh Ride823635111880
Rudolph The Red-Nosed Reindeer54640152145-3
Winter Wonderland52849433340
Carol of the Bells50245044520
Frosty the Snowman46750425-373
Jingle Bells34539166-460
This Christmas337164247173-17
Have Yourself A Merry Little Christmas331155268176-18
It’s The Most Wonderful Time Of The Year31525199640
Let It Snow! Let It Snow! Let It Snow!270192161078-6

Year Over Year Data

The benefit of using the same web scraping system is I am now able to categorize the songs year over year, since it is the same system, special characters are treated the same, and I do not need to account for differences in space as well. Below I have shared some data from the year over year rankings of each song (the popularity number each year) and the difference year over year in plays.

167 tracks were the same between 2023 and 2024.  There were 286 unique tracks in 2023 and 187 unique tracks in 2022. This 50 unique track increase is a welcome one, as it means that there is more unique music on the station. 167 tracks were the same year over year.

As for song titles, it is Christmas songs, so I don’t expect a difference in unique song titles, but there were 9 more song titles this year as opposed to last. (111 in 2023 and 102 in 2022). 90 song titles were the same Year over Year.

Artist wise, we saw a significant increase in unique artists, with 27 more unique artists this year. 129 this year as opposed to 102 in 2022. It is great to see more artists with more renditions of their favorite carols.

Biggest Year over Year Song Play Increase

Even though sleigh ride was still #1, it was played over 188 times more this year!

Song Name2023 Plays2022 Plays2023 Rank2022 RankPlay Difference
Sleigh Ride82363511188
Have Yourself A Merry Little Christmas331155268176
This Christmas337164247173
Rudolph The Red-Nosed Reindeer54640152145
Oh Holy Night142275729115

Biggest Year over Year Song Play Decrease

Mele Kalikimaka bumms me out, always nice to hear a tropical song in a cold Chicago winter. I wonder if the warmer winter we have been having has anything to do with that?

Song Name2023 Plays2022 Plays2023 Rank2022 RankPlay Difference
Do You Hear What I Hear?1062211135-115
Deck The Hall0114300-114
Last Christmas149260825-111
O Holy Night1482231027-75
Mele Kalikimaka1574399-56

Biggest Year Over Year Artist Play Increase

Artist2023 Plays2022 Plays2023 Rank2022 RankPlay Difference
Mariah Carey55237441178
Train1760018176
Burl Ives204645015140
Faith Hill184674816117
Air Supply126118430115

Biggest Year Over Year Artist Play Decrease

Artist2023 Plays2022 Plays2023 Rank2022 RankPlay Difference
Jordin Sparks571911554-134
Burl Ives & Videocraft Chorus0125310-125
Nat King Cole271492272-122
Perry Como and The Fontane Sisters with Mitchell Ayres & His Orchestra0114330-114
Glee591701953-111

Biggest Year over Year Track Play Increase

Track Name2022 Plays2023 Plays2022 Rank2023 RankPlay Difference
Oh Holy Night by Kelly Clarkson271428919115
Santa Claus Is Coming to Town by The Crystals1712211429105
Where Are You Christmas by Faith Hill331377923104
Rudolph The Red-Nosed Reindeer by Burl Ives641645015100
Let It Snow! Let It Snow! Let It Snow! by Andy Williams131001264187

Biggest Year over Year Track Play Decrease

Track Name2022 Plays2023 Plays2022 Rank2023 RankPlay Difference
Do You Hear What I Hear? by Jordin Sparks191571159-134
Winter Wonderland by Andy Williams20187648-114
Last Christmas by Glee170591857-111
Let It Snow, Let It Snow, Let It Snow by Michael Bublé92337202-89
O Holy Night by Martina McBride1061833121-88

Lessons Learned

As I went through this process for the second year in a row, I learned a lot, On the bright side of the failed experiment, I was able to learn a lot about the way radio signals work, and as a nerd this made me happy. Learning about things like sidebands and radio propagation is something I wouldn’t have sought out if it weren’t for this project.

Ultimately every experiment that you run might not go to plan, and some of those results might be skewed or poor, but it’s about learning and trying new things that counts. In my career I’ve noticed that even if something might not work the first time, taking a break, thinking about it through a different light, and coming back to it later proves to be more beneficial than stressing yourself out over the failures in the moment. I feel that is especially true for this situation, as all the different methods that I had tried compared to last year did not come to fruition, however I was still able to get reliable data from my scraper and can innovate for the upcoming year.

The Future

As I mentioned in last year’s article, there is always room for improvement. Ideally I would like to leverage my failed RDS experiment to provide more detailed metrics, One item I feel is fascinating is looking at the total time played on the air, because who know if a longer song may be played fewer times but may have more airtime in general. Next year, I would like to write a script that queries a service like MusicBrainz Picard to get song metadata and maybe we can even see some correlations with release years or album release dates. As this is an ongoing project, it is never done and I always want to keep improving.

Do you see some data that I missed or an error? Please let me know in the comments or by contacting me on social media as well. I would love to see if anybody else would be interested in this data set to get more information than I was able to drive from it and eventually understand even more about the Christmas music landscape in Chicagoland. I hope you have a wonderful holiday season and a great new year!

4 thoughts on “Unwrapping Chicago’s Christmas Music: Using Technology to Explore Trends

  1. Just curious, is there a full list of the songs and their corresponding artists which were played that is available? I was hoping to make a playlist containing all of the songs from the station.

    1. Matthew J. Fitzgerald January 30, 2024 at 11:30 am

      Are you asking for the individual tracks or the songs themselves?

  2. Katie Fitzgerald December 28, 2023 at 7:10 pm

    Ooo. cool stuff.

    1. Matthew J. Fitzgerald January 30, 2024 at 11:30 am

      Thank you

Leave a Comment

Your email address will not be published. Required fields are marked *