USOO9436962B2

(12) United States Patent (10) Patent No.: US 9,436,962 B2 Boulter et al. (45) Date of Patent: *Sep. 6, 2016

(54) INTERNET RADIO AND BROADCAST (2013.01); G06F 17/30752 (2013.01); G06F METHOD PERSONALIZED BY GENRE 17/30761 (2013.01); G06F 17/30772 (71) Applicant: Pandora Media, Inc., Oakland, CA (2013.01); (US) (Continued) (72) Inventors: Jeffrey R. Boulter, Los Angeles, CA (58) Field of Classification Search (US); Todd M. Beaupre, Los Angeles, CPC ...... G06F 17/30017: G06F 17/30772 CA (US) See application file for complete search history. (73) Assignee: Pandora Media, Inc., Oakland, CA (56) References Cited (US) U.S. PATENT DOCUMENTS (*) Notice: Subject to any disclaimer, the term of this patent is extended or adjusted under 35 5,410,344 A 4/1995 Graves et al. U.S.C. 154(b) by 0 days. 5,616,876 A * 4/1997 Cluts ...... GO6F 17,30749 348/E7.071 This patent is Subject to a terminal dis claimer. (Continued) (21) Appl. No.: 14/578,076 FOREIGN PATENT DOCUMENTS (22) Filed: Dec. 19, 2014 WO WO97/O2537 1, 1997 (65) Prior Publication Data OTHER PUBLICATIONS US 2015/0106321 A1 Apr. 16, 2015 European Extended Search Report in EPO application 11190849.7 Related U.S. Application Data mailed Apr. 4, 2014. (Continued) (63) Continuation of application No. 14/195.434, filed on Mar. 3, 2014, which is a continuation of application Primary Examiner — Jeong S Park No. 12/765,525, filed on Apr. 22, 2010, now Pat. No. 8,700,795, which is a continuation of application No. (74) Attorney, Agent, or Firm — Beyer Law Group LLP 09/709,234, filed on Nov. 9, 2000, now Pat. No. (57) ABSTRACT 7,711,838. Data streams are generally selected according to user pref (60) Provisional application No. 60/164,846, filed on Nov. erences and transmitted to the user in general alignment with 10, 1999. expressed preferences of the user. Such data streams may be music, including music videos. Users may indicate their (51) Int. Cl. general or specific preferences with regards to Song, artists, G06F 5/16 (2006.01) or albums. Any other aspects or factors that might affect the G06O 30/06 (2012.01) user's preferences can be taken into account. A playlist is (Continued) created that combines all of these factors. The playlist then serves as the basis for feeding the data streams to the user. (52) U.S. Cl. Each user is able to express his or her own preferences and CPC ...... G06Q 30/0641 (2013.01); G06F 3/0482 receive music corresponding to those preferences on an (2013.01); G06F 3/04817 (2013.01); G06F on-going basis. 3/04842 (2013.01); G06F 3/04847 (2013.01); G06F 17/2235 (2013.01); G06F 17/30053 22 Claims, 37 Drawing Sheets

- 00 LAUNCHcast 3 asjordan's LAUNCHcast Station Page Microsoft Internetexplorer six 48- LAUCHCAST LAUCHCAST PLAYER LAUNCHcast "' Eils Edit Wiswigo Bokmarks IKls slip HOME - ----104 108---sufferingo:30a2BE {Back-to-8s (RSSearch 3Favorites 3 History E.'s 2-32 SONGINFO 14 - Don't Let's start Address w L-102 -1 Rana ----WINDOWS 108 USER RATINGTOOL EVER-108 HOME WATCH a LISTEN i INTERACT READ is WIN MYLAUNCH PAGES ------(DJS) Stations 40 ock Sigrdan s astorians 'RE:GATEWAY 1 LAUNCHEast station CSECEICO PTOR (SERVLET) SERVLET) asorgan's Inte askarian's Song Ratings --- asjordan's has rated 122 (HTTPREDIRECTFRM 102 18 songs, 33artists and 4 albums MEDIAGATEWAYTO LAUNCH.cs Levelanthusiast SOL MMSPROTOCOL) RATINGs PLAYLIST Sier83 haWested to asocar's station ACHE GENERATOR asorden's wishlists albums SO 100 (SERVLET) (SERVLET) WINDOWS MEDIA Last seen or LAUNCHast 1105,200 Average Song Rating:58 asgical is currently listening to 80 Don'te's Start 162 USERDATA soredata-166 They MightBs Giants inay Night Bagiaris DATABASE 18 ECEO E.C. E.C. Artists Playednastorian's Station 164-PLAYLISTS AUD AND WIDEASFFLELIBRARY US 9,436,962 B2 Page 2

(51) Int. Cl. 6,118,450 A 9, 2000 Proehl et al. G06F 7/30 (2006.01) 6, 192,340 B1* 2/2001 Abecassis ...... G1995 H04H 60/46 (2008.01) 6,226.672 B1 5/2001 DeMartin et all H04H 60/66 (2008.01) 6,248,946 B1 6/2001 Dwek H04N 2L/443 (2011.01) 6,314,094 B1 * 1 1/2001 Boys ...... HO4H2O,72 H04N 2L/45 (2011.01) 6,370,513 B1 4, 2002 KO1 370,352 H04N 2L/454 (2011.01) - W OaWa H4N2L/466 (2011.01) 6,438,579 B1* 8/2002 Hosken ...... G09:13, H04N 2L/475 (2011.01) 6,546.421 B1 * 4/2003 Wynblatt ...... GO6F 17,30867 H04N 2L/482 (2011.01) 707/E17.109 H04N 2L/6 (2011.01) 6,557,042 B1 * 4/2003. He ...... GO6F 17/30017 H04N 2L/8 (2011.01) ck TO7 (999-001 G06N 5/02 (2006.01) 6,587,127 B1 7/2003 Leeke ...... Goog.g4? H04L 29/08 (2006.01) 6,662,231 B1 12/2003 Drosset et al. G06F 3/0482 (2013.01) 7,082,407 B1 7/2006 Bezos et al. G06F 3/0484 (2013.01) 7,711,838 B1* 5/2010 Boulter ...... GO6F 17,30761 TO9,231 G06F 3/048 (2013.01) ck G06F 7/22 (2006.01) 8,700,795 B2 * 4/2014 Boulter ...... G06F 1239; G06O 20/12 (2012.01) 2008/0285.552 A1 11/2008 Abdulla et al. HO4H 6O/82 (2008.01) 2015/0106451 A1 4/2015 Boulter et al. HO4L 29/06 (2006.01) 2015,0106727 A1* 4, 2015 Boulter ...... G06F 1297. HO4H2O/82 (2008.01) 2015, 0112830 A1* 4/2015 Boulter ...... GO6F 17,30761 HO4H 60/06 (2008.01) 705/26.7 HO4N 2 1/462 (2011.01) (52) U.S. Cl. OTHER PUBLICATIONS CPC ... G06F I 73086 (2013.01); G06F I 7.30902 Office Action in U.S. Appl. No. 14/578,047, dated Mar. 12, 2015. (2013.01); gtoN 5/02 (2013.01); GoGo Office Action in U.S. Appl. No. 14/578,057, dated Mar. 4, 2015. 2012 (2013:9). HH6046 (2030); office Action in U.S. Appl. No. 14/577,957, dated Mar. 6, 2015. H04H 60/66 (2013.01). H04L 65/4084 Office Action in U.S. Appl. No. 14/578,041, dated Mar 20, 2015. (2013.01). H04L 6702 (2013.01); H04L 6710 Office Action in U.S. Appl. No. 14/578,015, dated May 4, 2015. (2013.01). H04L 6722 (2013.01). H04L 6742 Office Action in U.S. Appl. No. 14/577,974, dated Mar 17, 2015. (2013.01); H04N 2 I/443 (2013.01); H04N Office Action in U.S. Appl. No. 14/195.434, dated Jun. 25, 2015. 21/454 (2013.01); H04N 2 1/4532 (2013.01); Office Action in U.S. Appl. No. 14/578,057, dated Jul 16, 2015. H04N 2 1/4668 (2013.01); H04N 21/4756 Office Action in U.S. Appl. No. 14/578,041, dated Jul. 31, 2015. (2013.01); H04N 21/.4825 (2013.01); H04N Office Action in U.S. Appl. No. 14/578,047, dated Jul. 28, 2015. 21/6125 (2013.01); H04N 21/6175 (2013.01); Office Action in U.S. Appl. No. 14/578,089, dated Jul. 23, 2015. H04N 21/8113 (2013.01); H04H 20/82 Office Action in U.S. Appl. No. 14/577,957, dated Jul. 15, 2015. (2013.01); H04H 60/06 (2013.01); H04H OfOffice Action in U.S. Appl. No. 14/577.974, dated Aug. 19, 2015. 6082 (2013.01). H04L 65/4076 (2013.01). Noticece Actionof Allowance in U.S. inAppl. S.App. No. 14/578,015, No. 4/57sois, dated Oct. Dec. 28, 7, 2015.2015. H04N 2 1/4622 (2013.01) Notice of Allowance in U.S. Appl. No. 14/578,041, dated Jan. 22, 2016. (56) References Cited Notice of Allowance in U.S. Appl. No. 14/577.974, dated Jan. 29. 2016. U.S. PATENT DOCUMENTS Final Office Action in U.S. Appl. No. 14/195.434 dated Feb. 2, 2016. 5,675,743 A * 10/1997 Mavity ...... HO4N 21/23 348/E5.008 Office Action in U.S. Appl. No. 14/578,057 dated Feb. 8, 2016. 5,734,720 A * 3/1998 Salganicoff ...... G06Q 20/383 Office Action in U.S. Appl. No. 14/578,047 dated Feb. 16, 2016. 348/E7.056 Office Action in U.S. Appl. No. 14/577,957 dated Feb. 16, 2016. 5,931.901 A * 8/1999 Wolfe ...... G06Q 30/0601 Notice of Allowance in U.S. Appl. No. 14/195.434, dated Mar. 2, TO5/26.1 2016. 5,963,916 A 10/1999 Kaplan 6,088,455 A 7/2000 Logan et al. * cited by examiner U.S. Patent Sep. 6, 2016 Sheet 1 of 37 US 9,436,962 B2

U.S. Patent Sep. 6, 2016 Sheet 2 of 37 US 9,436,962 B2

CATEDCETHSOORIÕISTRUCTED

U.S. Patent Sep. 6, 2016 Sheet 5 Of 37 US 9,436,962 B2

205 Y20 \ 69 al Q - Da Hi-Q - (s HitsMan (W) FANS Memories Fade 1 Tears For Fear HitsMan Corlette1 minature R Coo34. T Corlette1(R) Genre Modern Rock Crazy 1 Seal u 1980's M RECENTSONGS STATIONANAGER minature (WP InVisible Sun / The Police Voidsong () PLAY () Rotten Apple? Alice in Chains KravMason (W) Aquimini? Outkast STATION MANAGER Ratinds Y LAUNCHcast Top 10 November 8 CD DJS C RATING TITLE ARTIST 2 Genres 1 C Intergalctic The Beasty Boys s Stations 1 Special Garbage 2 O DD 3 Out Of My Head Fastball H 4. Smells Like Teen Spirit Nirvana C H Options CfO Share 6 Elderly Woman Behind The Counter... Pearl Jam 7 Daughter Pearl Jam 8 Sweetest Thing U2 Been Caught Stealing Jane's Addiction Where The Streets Have No Name U2

LAUNCHcast STATIONMANAGER MySTATION DJs TOP 100 FEEDBACK HELP

FIG 3 U.S. Patent Sep. 6, 2016 Sheet 6 of 37 US 9,436,962 B2

eÐJOOXO??O/XOOOueH??quÐH 06OOED

DDDDDDDDDDD OZZ U.S. Patent Sep. 6, 2016 Sheet 7 Of 37 US 9,436,962 B2

220

Terrapin Station {a} asjordan's LAUNCHCast Station Terrapin Station {a} 530 Grateful Dead 540 The Arista Years (1996) 525 -- 545 520

510

512 HitsMan COrlette1 505 minature Average Rating 60 U.S. Patent Sep. 6, 2016 Sheet 8 Of 37 US 9,436,962 B2

220

Terrapin Station {a} asjordan's LAUNCHCast Station Terrapin Station {a} Grateful Dead The Arista Years (1996) ODI b) IX I ()DDDDDDDDDD You have not rated this album RATE IT

FANS HitsMan COrlette 1 minature Average Rating 60

RECENT SONGS STATION MANAGER () LAUNCH.Cast

F.G. 6 U.S. Patent Sep. 6, 2016 Sheet 9 Of 37 US 9,436,962 B2

Mama Said Knock You Out asjordan's LAUNCHCast Station 5\lama Said KnOCk You Out LL COOl J 710 All World (1996)

FANS Angie5 COrlette 1

Average Rating 60

RECENT SONGS STATION MANAGER

AD "" LAUNCH.Cast

FIG. 7 U.S. Patent Sep. 6, 2016 Sheet 10 Of 37 US 9,436,962 B2

Pretty Good Year? Tori Amo. asjordan's LAUNCHCast Station y Pretty Good Year TOri AmOS Under the Pink (1994) 805 Why this song was played You rated this artist

FANS Samatha COrlette 1

Average Rating 53

RECENT SONGS STATION MANAGER AD "" LAUNCH.Cast

FIG. 8 U.S. Patent Sep. 6, 2016 Sheet 11 of 37 US 9,436,962 B2

LAUNCHcast - Microsoft. X asjordan's LAUNCHCast Station Updating

OO }} X ()DDDDDDDDDD RATE IT

RECENT SONGS STATION MANAGER (a LAUNCH.Cast FIG. 9 U.S. Patent Sep. 6, 2016 Sheet 12 Of 37 US 9,436,962 B2

205

Y20 \ 69 al Q -Da-i-Q - (- ANCH Vy9 "9November 8, 1999 HOME o WATCH o LISTEN o INTERACT o READ o WIN o MYLAUNCH

music that listens to you" LAUNCHcast STATIONMANAGER MySTATION STATIONS RATE MUSIC FEEDBACK HELP asjordan's STATION Who's Listening NOW PLAYING there are 22 members listening She Has Funny Cars badluckroy QP Mama Said KnOCKYOU Out LL COOJ PLAY YOUR STATION jnaut QP LAUNCHCast Guilty Gravity Kills (S.I.En Oa is its an a techno girl Q II : Cant Back Down! Toad The Wet Sprocket MsinformationQ) Creep Radiohead MS Rock richard99 Q) We Will Rock Youl Queen MORE RESULTS

STATION MANAGER Ratinds LAUNCHcast Top 10 November 8 RATING TITLE ARTIST JS 1 Intergalctic The Beasty Boys Genres Special Garbage Stations 3 Out Of My Head Fastball MOOd's 4. Smells Like Teen Spirit Nirvana FIG. 10 U.S. Patent Sep. 6, 2016 Sheet 13 Of 37 US 9,436,962 B2

Y20 N 69 al Q X-i-Q - his The Prodigy Experience Bad Businessman 1 Squirrel Nut Zippers PLAY YOUR STATION LAUNCHcast ... Every Morning Goldleader (W) Sugar Ray Rock) Wonderwall Oasis 14:59 (1999) Recommenced by fans of jnaut (R) The Beatles Time After Time / Cindi Lauper badluckboy) Ad cern Rock Something So Right / Annie Lennox 1980's E.M RECENTSONGS STATIONMANAGER OrDahl (W) SESeptetl Brothers Wynton RagMarsalis - Wynton Marsalis

STATION MANAGER Ratinds 1. LAUNCHcast Top 10 November 8 CD DJs fif CC RATING TITLE ARTIST 4. Genres < 1 Intergalctic The Beasty Boys d 1 Special Garbage 2 O Fastball O Moods 3. Out Of My Head H 4 Smells Like Teen Spirit Nirvana CC H Options 5 So What Pilk CO Share 6 Elderly Woman Behind The Counter.... Pearl Jam 7 Daughter Pearl Jam 8 Sweetest Thing U2 9 Been Caught Stealing Jane's Addiction 10 Where The Streets Have No Name

LAUNCHCast STATIONMANAGER MySTATION DJs TOP 100 FEEDBACK HELP

Sponsors AOCut Launch Launch On CD-ROM Feedback Help (GM). FIG. 11

U.S. Patent Sep. 6, 2016 Sheet 15 Of 37 US 9,436,962 B2

2

U.S. Patent Sep. 6, 2016 Sheet 17 Of 37 US 9,436,962 B2

asjordan's LAUNCHcast Station Page Microsoft Internet Explorer File Edit View Go Bookmarks Tools Help Y20 N 69 al Q -a - E - Q ANCH ty November 8, 1999 HOME o WATCH o LISTEN o INTERACT o READ o WIN o MYLAUNCH Music that listens to you LAUNCHCast STATIONMANAGER MySTATION STATIONS RATE MUSIC FEEDBACK HELP asjordan's Highest-rated Songs Now Showing #1-10 Title Artist Watermark Enya Jefferson Airplane Today Jefferson Airplane Somebody To Love Jefferson Airplane She Has Funny Cars Jefferson Airplane Embryonic Journey Jefferson Airplane Wish You Were Here Pink Floyd It's The End Of The World AS We R.E.M Know it (And I Feel Fine) So Central Rain (I'm Sorry) R.E.M. Losing My Religion R.E.M.

LAUNCHcast STATIONMANAGER MySTATION DJs TOP 100 FEEDBACK HELP

Sponsors AbOut Launch Launch On CD-ROM Feedback Help

FIG. 15 U.S. Patent Sep. 6, 2016 Sheet 18 Of 37 US 9,436,962 B2

LAUNCH DisCOver New Music Microsoft Internet Explorer File Edit View Go Bookmarks Tools Help

LAUNCHcast STATIONMANAGER MySTATION STATIONS RATE MUSIC FEEDBACK HELP You can improve your station by liking other DJs that share your music tastes and Subscribing to them by tg the check boxes below. This will allow those members to influence your station with their ratings of artists, albums, and songs that you haven't rated. Featured DJs Station Picked By LAUNCH Toad The Wet The Meters, R.E.M. Radiohead, Sprocket, Garbage, COmmadors, Grant Sinead O'COnnor, Counting CrOWS, Ne Green, Frank The Werve Radical more Sinatra, more Pipe, more

asjordan's DJs DJs YOU Have SubSCribed TO Member Name G.) Online R7 = Subscribed Use the SubSCribe buttons to SubSCribe to Other DJs stations Popular DJs DJs WithThe MOSt SubSCriberSTOTheir LAUNCHCast Station Member Name Q Online R7 = Subscribed HitsMan Q O 180 SubSCriberS Toad The Wet Sprocket, Garbage, COunting CrOWS, New Radical, Colony (Rock), more bOulter O 145SubSCriberS Pet Shop Boys, Sting, Sarah McLaughlan, Ben Folds Five, Garbage, more gmoney411 Q O 119 SubSCriberS 311, Dave Matthews Band, UB40, Kid Rock, Red Hot Chili Peppers, more ratcage2 109 SubSCriber U.S. Patent Sep. 6, 2016 Sheet 19 Of 37 US 9,436,962 B2

LAUNCH Discover New Music Microsoft Internet Explorer File Edit View Go Bookmarks Tools Help Yip V 69 al Q Y a Y is asjordan's DJs DJs YOU Have SubSCribed TO Member Name Q? Online RA = Subscribed Use the SubSCribe buttons to SubSCribe to Other DJs stations

Popular DJs DJs With The Most Subscribers TOTheir LAUNCHCast Station Member Name Q Online RA = Subscribed HitsMan Q D 180 SubSCribers Toad The Wet Sprocket, Garbage, COunting Crows, New Radical, Colony (Rock), more bOulter D 145 SubSCriberS Pet Shop Boys, Sting, Sarah McLaughlan, Ben Folds Five, Garbage, more gmoney411 Q 119 StbSCIberS 311, Dave Matthews Band, UB40, Kid Rock, Red Hot Chili Peppers, more ratcage2 109 SubSCriberS U2, Dave Matthew Band, Lemonheads, R.E.M., Santana, more launchthis 99 StibSCIberS Rush, The Verve Pipe, The Police, The Smiths, U2, more

DJ SEARCH Find a DJ named Go LAUNCHcast STATIONMANAGER MySTATION DJs TOP 100 FEEDBACK HELP

Sponsors AbOut Launch Launch On CD-ROM Feedback Help (GM)

FIG. 17 U.S. Patent Sep. 6, 2016 Sheet 20 Of 37 US 9,436,962 B2

LAUNCH Discover New Music Microsoft Internet Explorer File Edit View Go Tools Help

LAUNCHcast STATIONMANAGER MySTATION STATIONS RATE MUSIC FEEDBACK HELP By Selecting the local stations you like to listento, LAUNCHCast can personalize yOur music by playing more of whats Ordinarily Play: On thOSe Stations, Click On a radio Stations Call letters to see what they are Currently playing Check the radio stations around zip To add more radio stations, enter a code 90293 that you like and press zip code to find stations in that area the 'Save' button when you're done. LOS ANGELES (U.S. Only) KACD 103.1 Find Radio Stations SES 104.3 (City - Zip Code Lookup) KISS 100.3 KIIS 103.7 KIKF KICK FM KJLHRhythm 102.3 KKBT 92.3 The Beat KLOS 95.5 KLYYY107 KOST 103.5 KPWR 105.9 KROQ 108.7 KSCA 101.9 KYSR Star 98.7 KZLA 93.9 SAN BERNADINO-RIVER KCAL 96 Rock KCAL FM KCXX 103.9 KFRGK-Frog KGG 99 ONE

FIG. 18 U.S. Patent Sep. 6, 2016 Sheet 21 Of 37 US 9,436,962 B2

LAUNCH Discover New Music Microsoft Internet Explorer File Edit View Go Tools Help Y20 V 69 al Q - x -i-Q be LOS ANGELES KACD 103.1 Find Radio Stations KBIG 104.3 (City - Zip Code Lookup) KISS 100.3 KIIS 103.7 KIKF KICKFM KJLH Rhythm 102.3 KKBT 92.3 The Beat KLOS 95.5 KLYYY107 KOST 103.5 DKPWR 105.9 KROQ 108.7 KSCA 101.9 KYSR Star 98.7 KZLA 93.9 SAN BERNADINO-RIVER KCAL96 Rock KCAL FM KCXX 103.9 KFRGK-Frog KGGI99 ONE Save

LAUNCHcast STATIONMANAGER MySTATION DJs TOP 100 FEEDBACK HELP

Sponsors AbOut Launch Launch On CD-ROM Feedback Help (GM)

F.G. 19 U.S. Patent Sep. 6, 2016 Sheet 22 Of 37 US 9,436,962 B2

LAUNCH Discover New Music Microsoft Internet Explorer File Edit View Go Tools Help Y20 N 69 al Q X E. LAUNCH ARTISTSEARCH G) DiscOver New Music November 8, 1999 | HOME o WATCH o LISTEN o INTERACT o READ o WIN o MYLAUNCH LAUNCHCast LAUNCHcast STATIONMANAGER MySTATION STATIONS RATE MUSIC FEEDBACK HELP What type of Internet connection do you have? CONNECTION TYPE AR 64 kbis O Office Or School LAN, Cable modem, DSL ISDN Stereo 32 kbis O 56K modem Stereo 16 kbis O 28.8 Or 33.6 mOdem MOnO

How much new music WOuld you like to discover? O | Want to disCOVer a lot of music O O O | Wantamix of music I've rated highly and music haven'trated O O O want to listen to mostly music I've rated

FIG. 20 U.S. Patent Sep. 6, 2016 Sheet 23 Of 37 US 9,436,962 B2

LAUNCH Discover New Music Microsoft Internet Explorer File Edit View Go Tools Help

CONNECTION TYPE of R 64 kb/s O Office Or School LAN, Cable modem, DSL ISDN Stere0 32 kb/s O 56K modem Stere0 16 kbis O 28.8 Or 33.6 modem MOnO How much new music would you like to discover? O Want to disCOver a lot of music O O O want a mix of music I've rated highly and music haven't rated O O O want to listen to mostly music I've rated Do you want to hear music with explicitlyrics? DYes, play music that Contains explicit lyrics

LAUNCHcast STATIONMANAGER MySTATION DJs TOP 100 FEEDBACK HELP

Sponsors AbOut Launch Launch On CD-ROM Feedback Help Ge.

FIG 21 U.S. Patent Sep. 6, 2016 Sheet 24 of 37 US 9,436,962 B2

LAUNCH Discover New Music Microsoft Internet Explorer File Edit View Go Tools Help Y20 N 69 al Q - x -i- Q - 9 L AU NCH ARTISTSEARCH GO Discover New Music November 8, 1999 HOME o WATCH o LISTEN o INTERACT o READ o WIN o MYLAUNCH LAUNCHCast LAUNCHcast STATIONMANAGER MySTATION STATIONS RATE MUSIC FEEDBACK HELP MoOdsallow yOU to Create 'Sub-Stations" of yOur LAUNCHCast Station. These moods Can have SOme Oral of the radio Stations, genres, and DJs yOu've Selected to perSonalize yOur Station. My moods (You have not Created any moods yet) CREATEAMOOD

LAUNCHcast STATIONMANAGER MySTATION DJs TOP 100 FEEDBACK HELP

Sponsors AbOut Launch Launch On CD-ROM Feedback Help (GM)

FIG. 22 U.S. Patent Sep. 6, 2016 Sheet 25 Of 37 US 9,436,962 B2

LAUNCH DisCOver New Music Microsoft Internet Explorer File Edit View GO Tools Help Y20 V 2 al () Y XXY is LAU NCH ARTISTSEARCH Go) DiscOVer New Music November 8, 1999 HOME o WATCH o LISTEN o INTERACT o READ o WIN o MYLAUNCH LAUNCHCast LAUNCHcast STATIONMANAGER MySTATION STATIONS RATE MUSIC FEEDBACK HELP MOOd Name Choose a name for thismOOdlike "MeNow", "Friday Afternoon", or "Jazz and Blues". Regular Mood Genres Select which Genre you want to hear music from in this m00c. Create

LAUNCHcast STATIONMANAGER MySTATION DJs TOP 100 FEEDBACK HELP

SpOnSOrs ADOut Launch Launch On CD-ROM Feedback Help GM9

FIG. 23 U.S. Patent Sep. 6, 2016 Sheet 26 of 37 US 9,436,962 B2

LAUNCH DisCOver New Music Microsoft Internet Explorer File Edit View Go Tools Help Y20 N 69 a Q - a -i- Q - 9 LAUNCHCast LAUNCHcast STATIONMANAGER MySTATION STATIONS RATE MUSIC FEEDBACK HELP Tell the personalized DJ which kinds of music you usually listen to and that information will be used to play Similar musicOnyOurperSonalized LAUNCHCast Station, POP/ROCK REGGAE Generation Pop-Rock General reggae Mainstream ROCk Roots Modern Rock Dub O Heavy Metal O Ragga-Dancehall Classic ROCK Ska Industrial Rock WORLD Progressive Rock General WOrld Gothic Rock V Celtic Indie Rock African Adult Contemporary Top 40 CarribeanMiddle Eastern Surf SOUth Pacific Hardcore-Punk Asian BLUES New Age General Blues General new age Modern Blues FOLK Classic Blues General folk JAZZ Modem Generation JaZZ Traditional Mainstream Jazz GOSPEL Smooth Jazz O General gospel Fusion Contemporary Christian Big Band SINGERSONGWRITERS Swing General singer-songwriters Latin JaZZ ORIGINAL CAST RECORDER LOUnge General Original cast recording

FIG. 24 U.S. Patent Sep. 6, 2016 Sheet 27 Of 37 US 9,436,962 B2

LAUNCH DiSCOver New Music Microsoft Internet Explorer File Edit View Go Tools Help Y20 \ 69 a G) - a -i- Q - (- LOunge COMEDY SPOKEN WORD Adult Jazz General Comedy-spokenword COUNTRY General Country CHILDREN'S Traditional Country D General children's Modern Country CHRISTMAS Alt Country General Christmas D Bluegrass EASYLISTENING OCajun O General easy listening URBAN GENERAL General urban General general O Rap INSTRUMENTAL Hip-Hop General instrumental Traditional R&B SOUND EFFECTS SOUNDTRACKS O General SOund effects General soundtracks Original Scores Pop Soundtracks ELECTRONIC DANCE General electronic dance Ambient House And Garage Techno Drums NBass Trip Hop

LAUNCHcast STATIONMANAGER MySTATION DJs TOP 100 FEEDBACK HELP

Sponsors AbOut Launch Launch On CD-ROM Feedback Help GM

FIG. 25 U.S. Patent Sep. 6, 2016 Sheet 28 Of 37 US 9,436,962 B2

LAUNCH DisCOver New Music Microsoft Internet Explorer File Edit View GO Tools Help Y20 V 69 a G) - X - E - Q his LAUNCHCast LAUNCHcast STATIONMANAGER MySTATION STATIONS RATE MUSIC FEEDBACK HELP asjordan's asjordan's station LAUNCHCast station Q PLAY Gd) asjordan'has rated 86 songs, 59 artists, and 31 albums level enthusiast 1 member has listened to asjordan's station asjordan is Currently listening to Doll Parts. (acoustic version) Hole Ask For I (EP) asjordan's Highest Rated Songs Title Artist Rating Watermark Enya 100 Wooden Ships Jefferson Airplane 100 Today Jefferson Airplane 100 Somebody To Love Jefferson Airplane 100 She Has Funny Cars Jefferson Airplane 100 Embryonic Journey Jefferson Airplane 100 Wish You Were Here Pink Floyd 100 It's The End Of The World As We Know it (And I Feel Fine) R.E.M. 100 So Central Rain (I'm Sorry) R.E.M. 100 Losing My Religion R.E.M. 100

asjordan's DJs asjordan's Subscribers asjordan's Radio-Stations (None) (None) (None) (edit) Total: O (edit)

FIG. 26 U.S. Patent Sep. 6, 2016 Sheet 29 Of 37 US 9,436,962 B2

LAUNCH Discover New Music Microsoft Internet Explorer File Edit View Go Tools Help Y20 V 69 a G) - X - E - Q - (- asjordan is Currently listening to Doll Parts. (acoustic version) Hole Ask For it (EP) asjordan's Highest Rated Songs Title Artist Rating Watermark ... .Enya .100 Wooden Ships Jefferson Airplane 100 Today Jefferson Airplane 100 Somebody To Love Jefferson Airplane 100 She Has Funny Cars Jefferson Airplane 100 Embryonic Journey Jefferson Airplane 100 Wish You Were Here Pink Floyd 100 It's The End Of The World As We Know it (And Feel Fine) R.E.M. 100 SO Central Rain (I'm SOrr R.E.M. 100 Losing My Religion R.E.M. 100

asjordan's DJs asjordan's Subscribers asjordan's Radio-Stations (None) (None) (None) (edit) Total: 0 (edit) DU SEARCH Find a DJ named Go LAUNCHcast STATIONMANAGER MySTATION DJs TOP 100 FEEDBACK HELP

Sponsors AbOut Launch Launch On CD-ROM Feedback Help (GM)

FIG. 27

U.S. Patent Sep. 6, 2016 Sheet 31 Of 37 US 9,436,962 B2

U.S. Patent Sep. 6, 2016 Sheet 32 Of 37 US 9,436,962 B2

?SeOHONDWT dTEHWOWEGEE:OISÍWHIWHSNOIIVISNOIIVISÃW850WNWINNOIVIS1880H

U.S. Patent Sep. 6, 2016 Sheet 33 Of 37 US 9,436,962 B2

asjordan's LAUNCHcast Station Page Microsoft Internet Explorer File Edit View Go Bookmarks Tools Help Y20 V 69 al Q - Da - E - Q - (- LAU N C H ARTISTSEARCH DiscOver New Music November 8, 1999 f HOME o WATCH o LISTEN o INTERACT o READ o WIN o MYLAUNCH LAUNCHCast LAUNCHCast STATIONMANAGER MySTATION STATIONS RATE MUSIC FEEDBACK HELP Monday, November 8, 1999 Compiled daily from all LAUNCHcast stations TW= THIS WEEK LWLAST WEEK NET PLAYS = number of plays over 14 day period TW LW TITLE ARTIST is RATE IT BIGGEST WOWE 1 31 Intergalactic Beastie Boys 73 1 2 Special Garbage 73 3 1 Out Of My Head Fastball 71 4 3 Smells Like Teen Spirit Nirvana (Punk) 70 5 7 Song 2 Bur 67 6 6 Elderly Woman Behind The Counter. Pearl Jam 66 6 4. Daughter Pearl Jam 66 8 9 Sweetest Thing - (The Single Mix) U2 65 9 5 Been Caught Stealing Jane's Addiction 64 10 36 Where the Streets Have No Name U2 62 NEXTX LAUNCHCast STATIONMANAGER MySTATION DJs TOP 100 FEEDBACK HELP

Sponsors About Launch Launch On CD-ROM Feedback Help (GMC)

FIG. 31 U.S. Patent Sep. 6, 2016 Sheet 34 of 37 US 9,436,962 B2

Audio Video window expansion (Contains basic player functionality) (displays video when in video mode)

"When video is off in a community channel. chat takes up entire right pane" Users WindoW Chat window expansion (v2.5) (who's listening to this) (type and view chat)

FIG. 32 U.S. Patent Sep. 6, 2016 Sheet 35. Of 37 US 9,436,962 B2

Old Rating Text

The Best Great like that It'S OK Not my thing Pretty Bad Hate it

FIG. 33 U.S. Patent Sep. 6, 2016 Sheet 36 of 37 US 9,436,962 B2

Album Artist Neither Album->song rating 30 | 0 || 0 Artist->song rating O 20 0 MyDJs avgrating BDS Playlist->song rating

FIG. 34

SOn Album- Artist- MyDJs BDS Venue NetP Community Last 9 >Song >Song Avg Playlist AV Played Dizz Knee 68.4 56.9 56.2 Land ystery U.S. Patent Sep. 6, 2016 Sheet 37 Of 37 US 9,436,962 B2

FIG. 35

Weight matrix: Son Album- Artist- MyDJs BDS Venue NetP Community Last 9 >Song |>Song Avg Playlist Avg Played Dizz Knee O.20 O.20 O.05 O.05 0.05 0.20 Land Eystery 103 |O |015 0.15 005 |005 |005 |O25 Army O O2 (0.15 0.15 005 |005 |0.05 0.25 FIG. 36

Score matrix:

Album- Artist- MyDJs BDS Community Last

Dizz Knee 13.68 2.85 3.06 11.24 Land E.g.ystery 225 |O 863 |o 5 326 2.76 5.78 Army O 130 1849 s 237 264 |250 FIG. 37 US 9,436,962 B2 1. 2 INTERNET RADIO AND BROADCAST and would generally have to avoid the role of an “on METHOD PERSONALIZED BY GENRE demand” system, as this might be in violation of statutory regulation. CROSS-REFERENCES TO RELATED APPLICATIONS SUMMARY OF THE INVENTION This application is a Continuation of prior, co-pending The present invention provides a copyright-compliant, U.S. application Ser. No. 14/195.434, filed on Mar. 3, 2014, broad-based, individually-tailored Internet media broadcast which is a continuation of U.S. patent application Ser. No. system and method. The present invention provides means 12/765,525, now U.S. Pat. No. 8,700,795, filed Apr. 22, 10 by which users may individually rate or indicate music, 2010, which is a Continuation of U.S. patent application Ser. music videos, or other recorded media that they enjoy No. 09/709,234, filed Nov. 9, 2000, now U.S. Pat. No. hearing from a vast musical or other database. Additionally, 7,711,838, which claims the benefit of U.S. Provisional Such users may also indicate the exclusion of music/media Patent Application No. 60/164,846 filed Nov. 10, 1999, the 15 that is to their distaste. In so doing, the user interaction is contents of each of which are incorporated herein by refer limited to that decision-making role that is necessary for the CCC. user to establish his or her preferences. The Internet radio of the present invention and its method take care of the rest, BACKGROUND OF THE INVENTION providing the end user a media or radio channel tailored to his or her own musical tastes. In this way, the present 1. Field of the Invention invention can be said to “microcast” or “narrowcast the This invention relates to Internet media data streams and content of personalized Songlists to individual listening the like, and more particularly to a copyright-compliant stations or users. As the broadcast uses Internet protocol, audio/video/radio broadcast system over the Internet where each data packet of each data stream has its own individual each individual user is able to set his or her preferences 25 address, namely, the end-user's data stream player. As the regarding works played so as to influence the frequency Such present invention is scalable, thousands, even tens or hun works are broadcast to the user. dreds of thousands of listeners can be handled by the present 2. Description of the Related Art invention. With the advance of data-transmission technol The rise of the Internet has provided many different ogy, tens or hundreds of millions of users may be served by, channels through which media can be presented to users. 30 or given access to, a system incorporating the present RealNetworks RealMedia, Apple QuickTime, and Win invention, including the delivery of user-preferred data dows Media all provide players through which live or streams by wireless communication links. previously-recorded data streams can be displayed, played Mention is made herein of the present invention with hack, or broadcast to the individual user. Both audio and respect to music broadcast to provide a personalized Inter Video are generally available through these programs and 35 net, or data stream, radio. Note should be taken that use of provide a higher and more attractive degree of interactivity the term “radio” “music,” and the like includes any recorded with the Internet. datastream content, including music videos and the like. Regular radio broadcasts arc based upon a central indi At the core of the present invention is the playlist gen vidual or station broadcasting Songs, or other audio infor 40 erator. It is the generated Songlist that is associated with the mation, electromagnetically. Different radio stations are user's account and indicates to the system which song is to separated by their different carrier frequencies. Amplitude be played next. Once a song has been selected, it is then modulation (AM) and frequency modulation (FM) provide streamed as data out to the individual’s computer (uniquely two means by which radio broadcast can be effected by a identified by Internet protocol). As the central server of the transmitter to a receiver. If an individual wants to affect the 45 system can handle a large number of users at any one time, Songs that are played by the radio station, he or she may it becomes possible to serve each user with his or her own write, call, fax, e-mail, or otherwise transmit their prefer individual data stream. In this case, the data stream com ences to the radio station. prises audio and/or video information and serves to establish However, one person’s preferred music may not be as a situation similar to each user having his or her own appreciated by another individual. Music can be very per 50 individual radio station that he or she programs. The list can Sonal, often affecting a person at an emotional level. When be created in advance and stored, or generated, in real time the radio station broadcasts a song or other audio signal, all when needed. Collaborative filtering techniques may be receivers tuned to the carrier frequency pick up the broad used in constructing the playlist. cast and either enjoy or suffer the broadcast equally. Other applications for the present method may also exist It would be much more advantageous to allow each 55 when similar circumstances are present where a large data base of information is available that is subject to individual individual to influence their own set of Song playlists. preferences. In a broad sense, the present invention provides Currently, this is not achievable by wireless broadcast means by which individual Subsets of an all-encompassing means. However, unique data stream addressing available data space may be defined, modified, and preserved, Subject through Internet data processing might provide means by 60 to a variety of influences and allowing some serendipitous, which an Internet radio could be advantageously affected. Other Internet broadcasting processes are known, but gen or random, events to occur. erally follow the known radio station format of broadcasting OBJECTS OF THE INVENTION a single song, or data stream, to all users tuned to the station or channel. In compliance with the Digital Millennium 65 It is an object of the present invention to provide indi Copyright Act (DMCA), such a radio would have to comply vidualized data stream programming according to an indi with statutory regulations regarding the broadcast of Songs vidual’s preference. US 9,436,962 B2 3 4 It is yet another object of the present invention to provide FIGS. 16 and 17 show the data window display when an Internet-based radio or music playing system that is selecting the “DJs' hyperlink of FIG. 14 in accordance with biased according to each user's preferences. an embodiment of the present invention. It is yet another object of the present invention to provide FIGS. 18 and 19 show the data window for selecting the a means by which Song playlists may be generated for Such "Radio Stations' link of FIG. 14 in accordance with an an Internet radio. embodiment of the present invention. It is an object of the present invention to provide copy FIGS. 20 and 21 show the data windows displayed when right-compliant media streams for Internet and other net the “Options' hyperlink is selected in FIG. 14 in accordance worked systems broadcast with an embodiment of the present invention. These and other objects and advantages of the present 10 FIG. 22 is the data window display when the “Moods’ invention will be apparent from a review of the following hyperlink of FIG. 14 is selected in accordance with an specification and accompanying drawings. embodiment of the present invention. FIG. 23 shows the data window displayed when a mood BRIEF DESCRIPTION OF THE DRAWINGS is to be created by selecting the “Create a Mood' link shown 15 in FIG. 22 in accordance with an embodiment of the present invention. FIG. 1A is a schematic view of the system architecture FIGS. 24 and 25 show the data window display when the used to achieve one embodiment of the present invention. “Genres’ hyperlink of FIG. 14 is selected in accordance with FIG. 1B is a screen shot showing a computer desktop with an embodiment of the present invention. the audio player and user homepage in accordance with an FIGS. 26 and 27 show the data window displayed when embodiment of the present invention. the “MySTATION’ link is selected as show at the top of FIG. 1C is a screen shot showing a computer desktop with FIG. 26 in accordance with an embodiment of the present the video player and user homepage in accordance with an invention. embodiment of the present invention. FIGS. 28-30 show the present invention window displays FIG. 2 shows an initial desktop with two browser win 25 as background to a “whisper” or instant messaging, function dows arising from an embodiment of the present invention. enabling users to send messages to one another across the FIG. 3 is a continuation of a larger window in FIG. 2 in LAUNCHcast system in accordance with an embodiment of accordance with an embodiment of the present invention. the present invention. FIG. 4 shows the smaller player window and the larger FIG. 31 shows an initial data window display upon data window used in an embodiment of the present inven 30 selecting the “TOP 100” link shown above and below the list tion. of songs in FIG.31 in accordance with an embodiment of the FIG. 5 is the smaller player window of FIGS. 2-4 with the present invention. artist highlighted. FIG. 32 shows an expandable window for video display FIG. 6 is the player window with the album highlighted and chat in accordance with an embodiment of the present in accordance with an embodiment of the present invention. 35 invention. FIG. 7 shows the player window with the song high FIG. 33 shows additional examples of a song ratings lighted and the tool tip indicating "Skip for now in accor scheme in accordance with an embodiment of the present dance with an embodiment of the present invention. invention. FIG. 8 is the player window with the tool tip indicating the FIG. 34 shows an example of a weight matrix in accor reason why the Song is being played in accordance with an 40 dance with an embodiment of the present invention. embodiment of the present invention. FIG. 35 shows an example of a user profile matrix in FIG. 9 is the player window showing to the viewer that it accordance with an embodiment of the present invention. is “Updating its broadcast in accordance with an embodi FIG. 36 shows a weight matrix in accordance with an ment of the present invention. embodiment of the present invention. FIG. 10 is a close up view of the initial LAUNCHcast 45 FIG. 37 shows a score matrix in accordance with an window of FIG. 2. embodiment of the present invention. FIG. 11 shows the bottom half of a second and different initial LAUNCHcast screen similar to that in FIG. 10 in BRIEF DESCRIPTION OF THE APPENDICES accordance with an embodiment of the present invention. FIG. 12 shows the player window with its “RECENT 50 The following appendices are incorporated herein by this SONGS tool tip, as well as the data window displayed in reference thereto from U.S. Pat. No. 7,711,838. response to selecting the recent song's hyperlink in accor Appendix 1 is an excerpted text listing of a playlist dance with an embodiment of the present invention. generated in conformance with the present invention. FIG. 13 shows a Windows 98 desktop with the smaller Appendix 2 is a source code listing for one embodiment player and larger data windows. The “BUY tool tip is 55 of the present invention. displayed, as well as the data window corresponding to the BUY hyperlink in accordance with an embodiment of the DESCRIPTION OF THE PREFERRED present invention. EMBODIMENT(S) FIG. 14 shows the desktop of the player and data windows with the player window showing the “STATION MAN 60 The detailed description set forth below in connection AGER' tool tip, as well as the data window corresponding with the appended drawings is intended as a description of to the STATION MANAGER hyperlink in the player win presently-preferred embodiments of the invention and is not dow in accordance with an embodiment of the present intended to represent the only forms in which the present invention. invention may be constructed and/or utilized. The descrip FIG. 15 is the data window show for selecting the “YOUR 65 tion sets forth the functions and the sequence of steps for RATINGS hyperlink in FIG. 14 in accordance with an constructing and operating the invention in connection with embodiment of the present invention. the illustrated embodiments. However, it is to be understood US 9,436,962 B2 5 6 that the same or equivalent functions and sequences may be Note should be taken that the database 160 is not neces accomplished by different embodiments that are also sarily the home for the media library 180. In fact, according intended to be encompassed within the spirit and scope of to present technology, it may be more advantageous to the invention. provide Some means by which high-speed access can be As mentioned above, use of the term “radio,”99 &g“music,” provided to the media library 180. By separating the data and the like includes any recorded datastream content, base 160 from the media library 180 faster and better service including music, videos, recorded sports events and con may be provided to users so they may enjoy the content of certs, and the like. datastream better. Certain infrastructures may allow for In FIG. 1A, the general structure of the present system is offsite residence of the media contained in the media library shown where the LAUNCHcast Player provides user feed 10 180. Pointers or other indicators to such information in an back and indication of song preference through Java Servlets indexed or other form can thereby provide the link necessary and JavaScript code. In one embodiment, a Windows Media to deliver the preferred or indicated content by the user from Player may provide the interface allowing the audio and/or the media library 180 to that same user. video broadcast to take place at the user's computer. Other 15 As shown in FIG. 1A, the database 160 may hold a variety media players now known or developed in the future may of types of information, including: user data 162, playlists also suffice and operate to good advantage. Mentioned use of 164, and song data 166. Such information is stored by the the Windows Media Player system is to be considered as database 160 and updated by the servlets as set forth in the indicating any appropriately functioning media player. Song present invention, including the user code set forth in or video information is available through both the player and Appendix 2. the accompanying data window. In FIG. 1B, the player, or playback, window 102 is shown Referring now to FIG. 1A, the architecture and system and is highly interactive with several embedded hyperlinks. structure of the Internet radio and broadcast method of the In the upper right-hand corner of the playback window 102, present invention is shown in Schematic form. The system the indication of “asjordan” is made. By clicking on this 100 is generally focused upon the player 102. The player 102 25 link, more information about the current station may be is the component that the user sees and is ultimately the given and/or the ability to change Such station. The user's arbiter of the media datastream service provided by the page 140 may be activated and shown upon clicking the present invention. As shown in FIG. 1, the player 102 has a username link. In the right center of the playback window, Song information section 104, a rating tool 106, and a player a “RATE IT' window indicator that is the rating tool 106 is 108. For this last component, the player 108 is indicated as 30 being a Windows Media Player. However, other media given, allowing the individual to rate the current “SONG.' players can also be used to good advantage in order to the "ARTIST performing the current song, and/or an achieve the present invention. “ALBUM' containing the song. Below the “RATE IT'. Through its components, the player 102 is linked or indicator, hyperlinks to “RECENT SONGS.” “BUY,” and associated to a number of other sources of information and 35 “STATION MANAGER'' are present allowing the user to programs, including Java or other servlets. The present travel to those destinations and either learn more informa invention, when implemented in Software, may be so imple tion, purchase or review purchasing information about the mented using Java-family of computer program languages. current album being played, as well as access the station A servlet is Java programming that runs as a part of a manager for the present invention. network service, such as an HTTP server, in response to 40 Below the Song information window 104, icons arc given requests from clients. In this case, the client can be consid for Play/Pause. Skip This Song. Skip This Song and Never ered to be the player 102 while the HTTP server can be the Play It Again (“Delete'), and a Volume control. The question servers for the database 160 and the media content library mark (“?) shown below the “Song Information area win 180. dow is a hyperlink to a Help file for the playback window At a center of the present invention is the player 108. The 45 102 and the Internet Radio system of the present invention. player 108 allows the content to be broadcast to the indi These icons are also shown in the other playback window vidual user and serves as means by which the user can enjoy FIGS., such as that for the video playback user interface/ Such content. In addition to being linked to the media client 102 shown in FIG. 1C. database 180, the player 108 is also in communication with FIGS. 1B and 1C show a desktop display of the system a media gateway servlet 120 and a playlist generator servlet 50 100 in action from the user's point of view. A tool lip may 122. As discussed in more detail below, these two servlets be given when the cursor hovers over the song title. The provide the player the ability to play streaming media in same may be similarly true for the artist and the album conformance with the present invention. currently playing. Note should be taken that just as the song The rating tool 106 is coupled to the database 160 via a rating indicator is highlighted and active in the middle right rating accepter servlet 130 and a ratings cache servlet 132. 55 section of the playback window, the song title is highlighted As indicated in FIG. 1, the rating accepter servlet 130 and in the upper portion of the playback window. ratings cache servlet 132 are also in communication with Additionally, the left and center middle portion of the one another, as set forth in more detail below. playback window provides information regarding fans who The song information component 104 of the player 102 have strong positive feelings about the present song, artist, may provide links to other information available through the 60 and/or album, as well as an average rating for all users or database 160 or otherwise. For example, the song informa Some Subset of users on the system. tion tool 104 may provide links to other user pages 140, a FIGS. 1B and 1C show small balloons on the right-hand station manager 142, provided home pages of various artists side of the central dark area across from the "Fans.” These 144, as well as links to album pages 146 of Such artists or balloons may have a letter 'W' inside of them to indicate otherwise. Additionally, a central homepage 148 may be 65 another listener is currently online and can be engaged via present that allows travel or linking to any or all of available the instant messaging (“whisper) function. FIGS. 1B and pages or services. 1C also show graphic information that may be used for US 9,436,962 B2 7 8 advertising or other hyperlinks. In generating the playlist of 2, page 192). If a playlist already exists, it can be used it if the present invention, the user can be informed as to why a all the following are met (and PlaylistStatus.is State( ) particular song was picked. returns false): For other links and presentation of information in the all of the parameters (userID, dj ID, etc) match; there arc player 102, a tool tip may be presented when the cursor 5 more than 8 songs left; hovers over an area. A tool tip is a small window providing the newRatingsCount (counter of new personalization Succinct information about the item under the cursor when data since last refresh) is less than 15; and the cursor hovers over that item. the playlist is less than a week old. When the system 100 is updating and obtaining a new If all these conditions are met, the dates for the last time 10 the user listened to an ad, news bit, and tip may be reset and data stream from the system for the user, a display may be the playlist may be resaved. The ASX file is written out and given to the user to indicate ongoing activity of the playback media player begins to execute by making requests to the system. Such visual activity in the form of animation assures media gateway 120 to play music. the listener/viewer that the short span of silence, or “dead If the old playlist cannot be used, a new one is created air.” following a song is only temporary and that a new song 15 with the playlist generator via PlaylistGenerator.create(). will soon play. Generally, in order to promote interactivity The first step is to retrieve the user's preferences via and to take advantage of the new media that the Internet PlaylistGeneratorgetOptions( ). In response the following provides, the windows shown in the FIGS. 2 and 3 contain options are returned: ample internal hyperlinks that lead to web pages providing unratedQuota: how much new (not rated) music they want information regarding music, artists 144, and/or their works hear in their playlist. The options here are 90.80, 70, 50, 40, 146, web pages regarding other users of the system (as DJs 30, and 20 percent. The default is 50 percent. or otherwise) 140, and/or web pages regarding the user's explicit lyrics: Does this user want us to play music with control of the system (preferences, etc.) 142. explicit lyrics? True or false. The default paradigm for the user interface/player 102 is bandwidth: if the bandwidth is not already specified in the to allow the user the greatest degree of freedom in express 25 generator parameters, it is read from Stored data. Currently, ing preferences and in obtaining that preference information bandwidth options include 28.8, 56, and T1/LAN. The regarding music artists, and their publications/albums. In default is 28.8 if a valid setting of “none' is found in the this way, the user's experience is enhanced as he or she hears database. more of the music he or she likes. Access to purchasing web A list of all the possible songs available for play (via sites is also made available where users may purchase 30 PlaylistGenerator-gatherMedia(() as well as some other data artists’ works. about those songs is obtained. This is generally done using In implementing the present invention in software, the multiple threads running at the same time for better perfor accompanying Source code (Appendix 2) may be used to mance. The list of songs is held in hashtable (as via the achieve the present invention. Such code is subject to Population subroutine (Appendix 2, page 198)). copyright protection and is owned by LAUNCH Media, Inc. 35 The database 160 is first called to load a history of all the of Santa Monica. Calif. songs played for the user in the last 30 days. This is stored The generation of a proper playlist combining available in the database as a long string, formatted as: user ratings and a media database forms an important part of “Date=, . . . . . For perfor the present invention. One such playlist as generated by the mance reasons, reading one siring from the database is faster present invention is shown in Appendix 1 and is an 40 than reading potentially several thousand rows individually excerpted form for purposes of explanation. Entries in the from the database. Dates older than 30 days are ignored and playlist have been removed so that the playlist may better the last lime a song was played overwrites previous plays of serve the explanatory purposes herein without undue length a song. Each time a song is played via the media gateway or the sacrifice of sufficient detail. 120, this siring is appended. Playlist generation occurs when a user launches his client 45 After the history loading is complete, a random integer is player 102. A Windows Media or other player 108 is picked from 1 to 10. If the value is 1, the date and song ID embedded in the user's client player 102. The player 108 siring is recreated and rewritten to the database. This cleans opens a call to the playlist generator servlet 122 as executed up the string by removal of songs that were played more than by the PlaylistGeneratorServlet routine (Appendix 2. page 30 days ago as well as duplicate entries for the same songD. 158). The expected output from this HTTP call is an ASX 50 The history loads as a thread, and another database call is playlist file, which in the present invention is list of pointers made to get the users, or DJ's, list of subscribed DJs, to a script that reads the actual playlist data object from the genres, and radio stations (via PlaylistGeneratorgetSub database 160. scriptions( ) for the specific mood requested. The result of The playlist generator servlet 122 parses the particular this call is three lists called DJs, genres, and stations. parameters for this ASX playlist as follows: 55 Once the Subscriptions are available, the ratings are Object: GeneratorParameters: 0048 userID: (required) obtained via GetRatings. This is also done in a thread. The the user for whom the playlist is generated; Song hashtable, another hashtable that contains Artist and dID: (default is userID) the user whose profile will be Album ratings (ItemsProfile), the DJ, and the list of sub used to generate the playlist; scribed DJs are all passed to the GetRatings method routine. mood ID: (default is none) a mood which is a subset of a 60 A retrieval list of users whose ratings are to be retrieved profile may be indicated and used to alter the preferences in is compiled using the Subscribed DJs and the DJ requesting the playlist and under which to listen (optional); and 0051 the playlist. A request is made to the ratings cache to retrieve bandwidth: (default is 28.8 k, if not read from the user's all these ratings via RatingsCache.getRatings( ). preferences in the database) the bit rate at which the user When the playlist generator has all the ratings, it is ready wishes to listen. 65 to assemble them into categorized data structures, based on The database 160 with the playlist database 164 is the properties of each rating. It iterates through all the checked for an existing playlist by PlaylistStatus (Appendix ratings and stores them in the following manner. If the ID of US 9,436,962 B2 10 the user is the DJ and the rating is 0 (an X in the end-user The determined number of Songs is picked and attempts interface), the Song is added to Song hashtable (via Popula are made to add the Songs to the Song hashtable with a type tion) as an "Excluded' type, meaning that song should never of "Unrated.” A song is not added if it is already in the be played. The rating is also added to the average rating for hashtable. Songs by that artist. If the rating is not 0, the Song informa In order to select from all songs, a song is randomly tion cache is immediately checked via SonginfoCache. selected 5000 times. Each time, attempts are made to add the gel ()) for data about this song. If the data does not exist in Song if it is not already there as picked, as described above. the cache, it is a song that was rated, but is not available for Once the process finishes adding random Songs, all the play (as possibly not encoded), and the Song is immediately ratings for the Songs are retrieved as are all the dates of when 10 the songs were played for the user. The explicit, implicit, and marked as an "Excluded' song. unrated lists built in the last step are taken and ordered in If all of the above tests pass, the song is added to the Song descending order by score, or rating, using a quickSort or hashtable with a type of “Explicit'. The rating for the song other algorithm. is included in the calculation of this DJ’s average rating of The number of Songs to pick from each list is determined. Songs by the artist. 15 For example, if the size of a playlist is 50 songs, the Each song that is rated by subscribed DJs is added to the following may occur. If the user is listening to his own song hashtable. The subscribed DJ's rating for the song is station, the following formula may be used: if the user's list included in the calculation of the subscribed DJs' average of explicit and implicit songs is smaller than 100 songs, 90% rating for this song. of the songs must be picked from the unrated list to avoid For albums, the ratings profile is obtained from the item playing the user's rated Songs too much. The user's unrated rating profiles. If a ratings profile for an album does not yet quota may, then, be set to 90. Otherwise, an unrated quota exist, then the data regarding the album is retrieved and a may be used from the user's stored options. ratings profile is created. Under some circumstances the maximum number of If the rater is the user requesting the playlist, the rating for Songs available from the explicit and implicit song lists is this item is set to the user's rating. However, if the rater is 25 calculated as follows: a subscribed DJ, the rating is added to the DJ’s average for maximum Rated=playlistSize (100 this album. unratedQuota)*0.01. For artists, the rating procedure is the same as for albums, The maximum number of songs available from the except any ratings made for the artists listed as "Various explicit list may be calculated as: Artists”, “Soundtrack', or “Original Soundtrack’ are dis 30 carded or ignored in the relevant calculations. MaximumExplicit=number of songs in the explicit The top 1000 most popular songs (via PlaylistGenerator. list 0.20. getPopular() in the bandwidth type specified may be added A number of Songs to pick from the explicitly-rated list may then be: to the Song candidate hashtable. This popular list is main 35 tained in the Song information cache. Before each Song is explicitToPick playlistSize (100-unrated added to the song hashtable, inspection is made see if the quota)*0.01* (number of songs in the explicit Song is already in the candidate hashtable (perhaps put there list sum of explicit and implicit songs)*3); by another query). If so, inspection is made to make Sure that From this the number of implicit songs is simply: the song is not of type "Excluded, or the Song is discarded. 40 implicitToPick=maximum Rated=explicitToPick. If the Song is added to the song hashtable, it is added under the type “Unrated”. Confirmation can be made to ensure that more explicit A maximum of 5000 songs are picked randomly (via Songs have not been picked than indicated by maximumEX PlaylistGeneratorgetRandom (). Initially, a count is made of plicit and that no more implicit songs have been picked than those that are in the implicit list. The number of unrated the number of Songs contained in each and all of the genres 45 songs is then: playlistSize-(explicitToPick-implicitToPick) a user has selected (via SonginfoCache.countinGenres( ). If the user is listening to a station other than his own and Songs may be in multiple genres. The number of Songs is the number of Songs in the explicit and implicit list total then divided by the total number of Songs in the Song greater than 200, then the following calculations are made: information cache. If the result is less than 5%, Songs are picked directly from a list of Songs only in those genres. 50 explicitToPick=Minimum(playlistSize:0.50, 20% of Otherwise, songs can be picked randomly from all available explicit songs): and Songs. This calculation may be performed to avoid the implicitToPick=Minimum (playlistSize. # of implicit situation where a user has selected a small number of genres songs)-explicitToPick and picking songs randomly will return only a few songs that 55 If, for Some reason, a Sufficient and/or playlistSize num are available or allowable for play when considering their ber of songs is not obtained from this calculation, a third of genres. the songs is picked from each of explicit, implicit and In order to select songs only from selected genres, a unrated Songs with a check to ensure that not more than 20% determination is made of the total number of Songs to pick of the songs on the rated and unrated lists are picked. As a (via totalToPick) from the lesser of 5000 and the total 60 fallback measure if none of the methods above used to number of Songs in the selected genres, for each genre, a calculate the number of Songs to pick worked, the songs are copy of the list of Songs in that genre is obtained from the selected as a third of the playlistSize from each list, making Song information cache (via Song InfoCache.getInGenre()). sure not to pick more than 20% of the rated and unrated lists. The number of Songs to pick from each genre is determined A list of albums and artists from and by which Songs have from the following formula: songs to pick=totalToPick 65 been played for this user in the last 3 hours is copied or (number of Songs in this genre?total number of Songs in the otherwise made available to the process set forth herein and selected genres). the songs for this playlist are picked via PlaylistGenerator. US 9,436,962 B2 11 12 pickSongs( ). A list of all the picks needed is made (via As an additional enhancement to the present invention, PickList). For example, if there is a playlist of 50 songs, the playlists from commercial and other radio stations through list may contain 10 entries for explicit songs, 20 for implicit out the United States, and elsewhere, are made available so Songs, and 20 for unrated Songs. that playlists may be affected by such radio stations and by While there are still songs to pick, iteration is made popularity of particular musical works. through the following cycle: In achieving the Internet radio of the present invention, a a. randomly pick a song list type (explicit, implicit, rating acceptor 130 in the form of the Rating WidgetServlet unrated) with a probability based on the proportion of Songs routine (Appendix 2, page 222) takes HTTP requests to rate to come from each list; and gets ratings for songs, albums, and artists. When a rating b. pick a random Song index from that list (which has 10 is saved, it written to the ratings database and if the user who already been sorted in descending order of Score), based on rated the item is designated as being in the ratings cache, the the following formula (via SongGroup, pickRandom()): rating change is added to the queue of ratings updates. size(OfList the number of songs in this list; Once every minute, the ratings updates are sent to all the random a randomly-chosen number between 0 and (size 15 ratings caches that have registered their IP address in the OfList-1) 0.01; and database. Every hour, the list of ratings caches are retrieved index of song to pick-((rand 7)/size(OfList-17)*(sizeCf from the database. Every ten minutes, the list of users in the List-1)). cache are retrieved from the database. The song information This formula allows songs to be picked somewhat ran cache is implemented through the Song InfoCache routine domly, while guaranteeing a high probability that the Song (Appendix 2, page 265) and may be a large in-memory cache picked will come from highest scored. The higher the of relatively static data that is used in playlist generation. It ranking of the song in the score matrix, the higher the may include a list and hashtable of all songs which includes probability it will be picked. This algorithm scales well for identifying numbers, media formats available, average rat any size of list because it is rank-based, not just score based. ing, artist and album information, explicit lyrics mark, The song at that index is removed from the list. If for 25 genres the Song is in, and radio stations that play the song. Some reason a valid Song is not obtained (possibly the Song Also, other information may be included in the song infor list already exhausted), another song is added to the list of mation cache, including: a hashtable of artist information; a types to pick of this type. Once a song is picked, its album hashtable of album information; a list and hashtable of all and artist information are obtained. ads including identifying numbers and media formats avail If the artist is not a “Various Artist' and the sum of the 30 number of songs played by this artist and already picked for able: a list and hashtable of all news clips including iden this playlist by this artist is greater than or equal to 3, this tifying numbers and media formats available: a list and Song cannot be played under the RIAA (Recording Industry hashtable of all audio tips including identifying numbers and Associates of America) and/or DMCA (Digital Millennium media formats available: a lists of the 1000 most popular Copyright Act) rules. Other rules may also be implemented 35 Songs in each media format, lists of all songs in each genre; in the present invention to accommodate statutory and other and a cache of frequently-accessed ratings profiles. This last rights and/or restrictions. cache is seen in the RatingsCache 132 routine (Appendix 2. The song is marked as "rejected and another song is page 211). The Song information cache is completely rebuilt added to the list of songs to pick from the same list the once a day from the database. rejected Song was picked from. The same test is performed 40 The ratings cache caches the entire ratings profile for the for albums, with the maximum played, for example, being 2. top 100 users who are known to be accessed frequently. The If the Song was picked Successfully and was within legal or ratings cache is implemented through the RatingsCache other boundaries, the number of Songs picked from this routine (Appendix 2, page 211). On startup, the ratings cache album and by this artist is incremented. The Song is added registers its IP address in the database to subscribe to ratings to the final list of songs for the playlist and the order in 45 updates. These users are typically DJs (users with broad which the song was picked for the playlist is marked, or casted or Subscribed ratings) that have many Subscribers, or noted. users who simply use LAUNCHcast frequently. Each ratings If, for Some reason, a playlistSize number of Songs is not cache recalculates the most frequently-accessed users and obtained, the existing playlist is deleted and popular songs writes it to the database every 8 hours. At that time, the entire are added to the song hashtable, and the song lists are 50 cache is discarded and reread from the database to erase any re-Sorted and re-picked ignoring the user's genres selections. lingering corruption. Each ratings cache checks the database The picking of news clips is done simply by picking a every 10 minutes for changes in the list of users to be cached specific number of unique news items that are in the speci and updates the ratings cache as appropriate. fied bandwidth format. A list of available news clips is stored Note should be taken that many of the parameters set forth in the Song information cache. Ads may be picked in the 55 herein are discretionary and advisory. Consequently, those same way as news clips are picked. However, a difference properly and legitimately implementing the present inven may be present in the different number of ads to pick. Tips tion may alter Such parameters, such as when events occur may also be picked in the same manner as news clips, with and event timing as above, according to system operation a different number of tips to pick. preferences. The order of the songs may be randomly shuffled in the 60 For each user who is not in the ratings cache, their ID is playlist and the playlist may be serialized and saved to the appended to a list of users whose profiles need to be database. Finally, the ASX file may be returned to the player retrieved from the database 160. Users who have been added 108. to the cache recently have their profiles added to the list of Every 5 minutes, the player 102/108 “pings” the Playlist ratings to be returned to the PlaylistGenerator 122 routine Generator 122. If the playlist is stale or has 8 songs or less 65 (Appendix 2, page 158). All non-cached users’ ratings are left in it, the playlist generator regenerates the playlist and retrieved from the database 160, are appended to the list of replaces the one previously saved in the database. ratings, and are returned to the PlaylistGenerator 122. The US 9,436,962 B2 13 14 album and artist ratings are retrieved in a separate query viduals or DJs, to influence their musical playlist just as the from the Song ratings. Each runs in its own thread in parallel user does. The DJ, online or otherwise, becomes an addi for optimal performance. tional factor in influencing the user's preferences and play The media gateway 120 is a Java servlet that brokers the list. Some individuals may act as real DJs, serving to provide relationship between the end user's (Windows Media) 5 content to an audience of Subscribers through the Internet. Player 108, the database 106, and media library, or Windows Programs of special interest may also be developed and Media Server, 180 and logs all media access. The Medi Subscribed to by listeners using the present invention. aGatewayServlet routine (Appendix 2, page 112) performs Through the heavily hyperlinked (but easily understandable) this function. Because the client's Windows Media Player interlace set forth in the Figures and described above, a user playlist (...sax file) does not contain any information about the 10 actual songs or ads in the user's playlist, the media gateway may establish musical (or other data stream) preferences. In 120 contains the logic described below to redirect the user's establishing Such preferences, the music played to the lis player to the correct media address on the media library 180. tener is tailored to that listener and provides an enhanced For security reasons, the media gateway 120 may check to musical experience on an individual basis. see that the client 102 is accessing it from the Windows 15 While the present invention has been described with Media Player client 108 (and not a web browser or other reference to a preferred embodiment or to particular embodi application). If not, it may redirect the user to an error media ments, it will be understood that various changes and file. The media gateway 120 then pulls the user's ID off the additional variations may be made and equivalents may be query string and retrieves that user's playlist object from the substituted for elements thereof without departing from the database 160. The gateway 120 inspects timestamps in the scope of the invention or the inventive concept thereof. In user's playlist object that indicate when the user last heard addition, many modifications may be made to adapt a an ad, tip, Song or other media item and determines if it is particular situation or material to the teachings of the time to insert an ad, tip, or news item in the datastream, or invention without departing from the essential scope thereof. just play the next Song. Therefore, it is intended that the invention not be limited to If the user has not heard an ad, for example, for a 25 particular embodiments disclosed herein for carrying it out, pre-defined period of time, the media gateway 120 resets an but that the invention includes all embodiments falling ad timestamp and retrieves an ad path from the user's ad within the scope of the appended claims. playlist and passes that MMS (Microsoft Media Server) I. Alternate Embodiments Group 1 redirect instruction/address to the end user's Windows Embodiments of the present invention relate to Internet Media client 108. If no ad is available, the process continues 30 data streams and the like, and more particularly to a radio and plays the next Song in the user's playlist. If it is not time broadcast system over the Internet where each individual to play an ad, the timestamp is checked to see if it is time to user is able to set his or her preferences regarding, or play a tip. The process then follows the same logic, above, influencing, the songs played. for ads to retrieve and play a tip, instead of an ad. If it is not As previously discussed, FIG. 1A shows the general lime to play an ad or tip, the timestamp is checked to see if 35 structure of the LAUNCHcast system. The player provides it is time to play a news item. The process then follows the the interface allowing the audio/and or video broadcast to same logic as for ads to retrieve and play a news item. take place at the user's computer. Song or video information If it is not time to play an ad, tip, news item, or other is available through both the Player and the accompanying stream (the usual case), the media gateway 120 retrieves the data window. path of the next song in the playlist and returns that address 40 FIG. 2 shows an initial desktop with two browser win via an MMS redirect to the client’s Windows Media Player dows arising from an embodiment of the present invention. 108. In all cases, the mediaID of the ad, tip, or song played In FIG. 2, the initial data window 205 is shown that first is logged in the database 160 under that user's ID. This appears when the present invention is invoked or called up logging information is used to display what the user is by the user. In alternative embodiments, the present inven listening to on the user's station page and under the “Who’s 45 tion may have a shortcut located in the start-up folder that Listening page. These pages may be associated with the allows the broadcast to begin every time the user boots up central home page 148 in a manner similar to that of the user his or her computer. Additionally, a single link may initialize pages 140 as history data in the playlist generator, and in the Player of the present invention. As shown in generally calculating a Top 100 chart for the most popular songs the middle of FIG. 2, a thumbnail 210 above a “PLAY!' and/or streams. While there may be some preference for an 50 button/hyperlink 215 is shown that initiates the Player “on-demand service such that individuals may pick their window 220 shown to the left of the data window. A song own radio playlists, the element of randomness and pleasant information data window 223 indicates its initialization by Surprise is inherent in the present invention. Additionally, displaying a “Personalizing” or 'Tuning message. statutory requirements prevent users from turning the Inter The playback window 220 is highly interactive with net into their own home stereo system. “On-demand ser 55 several embedded hyperlinks. In the upper right-hand corner Vice is generally prevented by statute and may be a violation of the playback window, the indication of “asjordan's Sta of copyright. Consequently, any statutory regulations, such tion 222 is made. By clicking on this, more information as the Digital Millennium Copyright Act (DMCA), and about the current station may be given and/or the ability to other limitations can be programmed automatically into the change Such station. In the right center of the playback present invention. In so doing, the present invention com 60 window, a “RATE IT' window indicator 224 is given plies with all applicable law and delivers to the user a allowing the individual to rate the current “SONG” 226, the musical experience generally aligned with his or her pref “ARTIST 227 performing the current song, and/or an CCS. “ALBUM' 228 containing the song. Below the “RATE IT'. Many users often listen to music while doing program indicator, hyperlinks to “RECENT SONGS 230, “BUY ming or the like. Such music can now be delivered over the 65 232 and “STATION MANAGER 234 are present allowing Internet via the user's very own radio station through the the user to travel to those destinations and either learn more present invention. Additionally, users may select other indi information, purchase or review purchasing information US 9,436,962 B2 15 16 about the current album being played, as well as access the FIG. 8 illustrates the player window with the tool tip 805 station manager for the present invention. indicating the reason why the song is being played. In FIG. Below the song information window 223 as shown above, 8, a tool tip arising when the cursor is hovering over the icons are given for Play/Pause, Skip this Song, and Never “You rated this artist’ area gives an indication of why the Play It Again (“Delete'), and a Volume control. The question 5 Song is played. mark (“?) shown below the “Personalizing window is a FIG. 9 illustrates the player window showing to the hyperlink to a Help file for the playback window and the viewer that it is “Updating its broadcast. FIG. 9 shows a Internet Radio System of the present invention. These icons display given to the user to indicate ongoing activity of the are also shown in the other playback window Figures. playback system while it is updating and obtaining a new The initial data window 205 may include a station man 10 ager link, MyStation link, DJs link, Top 100 link, Feedback, data stream from the system. Visual activity in the form of and help links A Who’s listening section may show members animation assures the listener/view that the short span of listening. silence, or “dead air, following a song is only temporary Various advertisements may be displayed on initial win and that a new song will soon play. The remaining Figures dow 205 and player 220 (e.g., AD box). In various figures, 15 all show windows associated with the present invention that including FIG. 2, a W-bubble (whisper bubble) is shown for allow for feedback either to system or information presented other members of the system that are online and available for to the individual. instant messaging. FIG. 10 is a close up view of the initial LAUNCHcast FIG. 3 is a continuation of a larger window 205 in FIG. window 205 of FIG. 2. FIG. 10 illustrates an example of 22 2. At the left-side of FIG. 3, a station manager 234 is members listening and what the members are listening to. illustrated that includes a ratings button, DJs button, Genres The whisper balloon (“W) is also illustrated by each online button, Stations button, Moods button, options button, and a member. An artist search window is also provided. share button. In one embodiment a list of Who's listening FIG. 11 shows the bottom half of a second and different and the music they are listening to is provided. A list of top initial LAUNCHcast screen similar to that in FIG. 10. This Songs of the system may also be presented. 25 examples shows in more detail a top ten list of Song titles in FIG. 4 shows the smaller player window and the larger the system. data window used in an embodiment of the present inven FIG. 12 shows the player window with its “RECENT tion. FIG. 4 shows a desktop display of the system in action. SONGS tool tip 1230 (“Review and rate songs you have A tool tip 405 may be given when the cursor hovers over the heard recently'), as well as the data window displayed in Song title in Song information window 223. Such as showing 30 response to selecting the recent song's hyperlink of FIG. 2. “You rated this album'. The same may be similarly true for Aditionally, the user's ratings “My Rating may also be the artist and the album currently playing. Note should be shown. In this example, other information may also be taken that just as the Song rating indicators is highlighted and displayed explaining why the song was picked (e.g., “this active in the middle right section of the playback window, Song is a random pick”). the song title is highlighted in the upper portion of the 35 FIG. 13 shows a Windows 98 desktop with the smaller playback window. player and larger data windows. The “BUY tool tip is Additionally, the left and center middle portion 410 of the displayed as well as the data window corresponding to the playback window provides information regarding fans who BUY hyperlink. In this example, the user is listening to have strong positive feelings about the current song, artist, Madonna’s “Ray of Light' on the player and the buy it and/or album, as well as an average rating for all users or 40 features bring up information to buy the song/album (top Some Subset of users on the system. right) and may also indicate other albums the user may like FIG. 5 is the smaller player window of FIGS. 2-4 with the to purchase (bottom right). The user interface may also artist highlighted in the rating indicator 505. FIG. 5 shows include features to show whether a user owns an album (“I the highlighted artist rating indicator corresponding to the own it”). In this example, other information Such as a listing highlight of the group in the work indicator window. Of note 45 of tracks on the album may also be provided. are the small balloons 510 on the right-hand side of the FIG. 14 shows the desktop of the player and data windows central dark area across from the "Fans' 512. These balloons with the player window showing the “STATION MAN may have a letter 'W' (“whisper mode’) inside of them to AGER' tool tip 1410 (“Personalize Your Launchcast sta indicate another listener is currently online and can be tions'), as well as the data window corresponding to the engaged via the instant messaging function. 50 STATION MANAGER hyperlink in the player window. The FIG. 5 also shows the icons given for Play/Pause 520, Your Ratings features permits a user to “Review the songs Skip this Song 525, and Never Play It Again 530 (a cross-out that you've rated hightly.” The DJs feature permits a user to: mark for “Delete'), and a Volume control 540. The question “Subscribe to other LaunchCast users as your own DJs, so mark (“?”) 545 shown below the “Personalizing window is that their ratings would influence the music you hear.” The a hyperlink to a Help file for the playback window and the 55 Radio stations features permits a user to “Select your Internet Radio System of the present invention. favorite radio stations, so that their playlists influence the FIG. 6 is the player window with the album highlighted. music you hear.” An Options features permits a user to “Set FIG. 6 shows the album highlighted both in the ratings your options for new music, connection speed, and explicit indicator and the work display window. lyrics filtering.” A Moods feature permits a user to “Add, FIG. 7 shows the player window with the song high 60 delete, and edit your mood profiles.” A Genres feature lighted and the tool tip 710 indicating "Skip for now.” FIG. permits a user to “Select what genres of music you enjoy 7 shows the song highlighted both in the ratings window and listening to.” A Share Feature permits a user to “Tell the the work display window. The bottom portion of the play world about your Launchcast station.” back window of FIG. 7 shows graphic information that may FIG. 15 is the data window show for selecting the “YOUR be used for advertising or other hyperlinks. In generating the 65 RATINGS hyperlink in FIG. 14. In this example, user's playlist of the present invention, the user can be informed as hightest rated Songs are displayed. The display may include to why a particular song was picked. titles, artists, and the user's ratings. US 9,436,962 B2 17 18 FIGS. 16 and 17 show the data window display when preferences and in obtaining that preference information selecting the “DJs' hyperlink of FIG. 14. FIG. 16 shows a regarding music artists, and their publications/albums. In list of featured DJs that a user can subscribe to. Additionally, this way, the user's experience is enhanced as he or she hears at the top of FIG. 16 is the “MyStation' link A user can find more of the music he or she likes. Access to purchasing web other DJs that share the user's music tastes and subscribe to 5 sites is also made available where users may purchase them using the checkboxes. A list of featured DJs may be artists’ works. displayed (top), DJs the user has subscribed to (middle), and As an additional enhancement to the present invention, a list of popular DJs (bottom). FIG. 17 shows in more detail playlists from radio stations throughout the United States, the bottom of the display window. In this example, the and elsewhere, are made available so that playlists may be number of subscribers is shown for each DJ. A play button 10 affected by Such radio stations and by popularity of particu is provided to play respective stations for each DJ. A. DJ lar musical works (FIGS. 18 and 19). search field may be provided (bottom of FIG. 17). II. Alternate Embodiments Group 2 FIGS. 18 and 19 show the data window for selecting the An exemplary list of components is now described in “Radio Stations’ link of FIG. 14. FIG. 18 illustrates that a accordance with an embodiment of the present invention. user can select radio stations they would like to listen to. In 15 A. Rating Acceptor (RatingWidgetServlet) response, the system personalizes the music by playing more This servlet takes HTTP requests to rate and get ratings of what’s played on those stations. for songs, albums and artists. When a rating is saved, it FIGS. 20 and 21 show the data windows displayed when written to the ratings database and if the user who rated the the “Options' hyperlink is selected in FIG. 14. In one item is designated as being in the ratings cache, the rating embodiment a user can select the type of Internet connection change is added to the queue of ratings updates. that they have (top). A user may also select how much new In one embodiment, once every minute, the ratings music they would like to discover (bottom). FIG. 21 illus updates are sent to all the ratings caches who have registered trates an option for a user to select whether or not they want their IP address in the database. Every hour, the list of ratings to hear music with explicit lyrics. caches are retrieved from the database. Every ten minutes, FIG. 22 is the data window display when the “Moods’ 25 the list of users in the cache are retrieved from the database. hyperlink of FIG. 14 is selected. In one embodiment a user B. Song Information Cache (Song InfoCache) may create a mood by selecting a Subset of genres, radio In one embodiment a song information cache is a large stations, or DJs. FIG. 23 shows the data window displayed in-memory cache of relatively static data that is used in when a mood is to be created by selecting the “Create a playlist generation. In one embodiment it includes: Mood link shown in FIG. 22. 30 1) A list and hash table of all songs which includes FIGS. 24 and 25 show the data window display when the identifying numbers, media formats available, average rat "Genres” hyperlink of FIG. 14 is selected. FIG. 24 provides ing, artist and album information, explicit lyrics mark, an option for the user to tell their personalized DJ which genres the song is in and radio stations that play the song. kinds of music they listen to. The information is used to play 2) A hash table of artist information. similar music on a personalized station. A link may be 35 3) A hash table of album information. provided (bottom) for a user to find other DJs who share 4) A list and hash table of all ads including identifying their music tastes. numbers and media formats available. FIGS. 26 and 27 show the data window displayed when 5) A list and hash table of all news clips including the “MySTATION’ link is selected as shown at the top of identifying numbers and media formats available. FIG. 26. In the example of FIG. 26, information on asjor 40 6) A list and hash table of all audio tips including dan's station is displayed. This may include asjordan’s DJs, identifying numbers and media formats available. asjordan's Subscribers, artists played on asjordan's station, 7) Lists of the 1000 most popular songs in each media the current Song being played on the station, and a list of format. highest rated Songs on the station. 8) Lists of all songs in each genre. FIGS. 28-30 show the present invention window displays 45 9) A cache of frequently-accessed ratings profiles (Rat as background to a “whisper” or instant messaging, function ingsCache). enabling users to send messages to one another across the In one embodiment the Song Information Cache is com LAUNCHcast system. The left hand panel shows a “whis pletely rebuilt once a day from the database. per messaging window to send a message to asjordan. The C Ratings Cache (RatingsCache) w (whisper) bubble is displayed on the right next to asjor 50 In one embodiment the ratings cache caches the entire dan's station. Thus in this example a user can select the ratings profile for the top 100 users who are known to be whisper bubble for asjodran and then send an instant mes accessed frequently. On startup, it registers its IP address in Sage to asjordan. the database to Subscribe to ratings updates. These users are FIG. 31 shows an initial data window display upon typically DJs that have a lot of subscribers or users who selecting the “TOP 100” link shown above and below the list 55 simply use LAUNCHcast frequently. Each ratings cache of songs in FIG. 31. In this example the top 100 are compiled recalculates the most frequently accessed users and writes it from all Launchcast stations. The number of plays may also to the database every 8 hours. At that time, the entire cache be shown. The user may be invited to rate the song. is disposed and reread from the database to erase any Generally, in order to promote interactivity and to take lingering corruption. Each ratings cache checks the database advantage of the new media that the Internet provides, the 60 every 10 minutes for changes in the list of users to be cached windows shown in the Figures contain ample internal hyper and updates the ratings cache as appropriate. links that lead to web pages providing information regarding For each user who is not in the ratings cache, their ID is music, artists, and/or their works, web pages regarding other appended to the list of users whose profiles need to be users of the system (as DJs or otherwise), and/or web pages retrieved from the database. Users who are in the cache just regarding the user's control of the system (preferences, etc.). 65 immediately have their profiles added to the list of ratings to The default paradigm for the user interface/player is to be returned to the PlaylistGenerator. All non-cached users allow the user the greatest degree of freedom in expressing ratings are retrieved from the database, appended to the list US 9,436,962 B2 19 20 of ratings, and returned to the PlaylistGenerator. The album bandwidth: (default is 28.8 k, if not read from the user's and artist ratings are retrieved in a separate query from the preferences in the database) the bitrate that the user wishes Song ratings. Each runs in its own thread in parallel for to listen at. optimal performance. We then check the database for an existing playlist D Media Gateway (MediaGatewayServlet) (PlaylistStatus). If there already exists a playlist, we can use In one embodiment the media gateway is a Java servlet it if all the following are met: (PlaylistStatus.is Stale()) that brokers the relationship between the end user's Win a. all the parameters (useriD, DJID, etc) match. dows Media Player, the database, and Windows Media b. There are more than 8 songs left. Server and logs all media access. Because the clients c. The newRatingsCount (counter of new personalization Windows Media Player playlist (asX file) does not contain 10 data since last refresh) is <15. any information about the actual songs or ads in the user's d. The playlist is less than a week old. playlist, the media gateway in one embodiment contains the If all these are met, we simply reset the dates for the last logic described below to redirect the user's player to the time the user listened to an Ad, News bit, and Tip and correct media address on the Windows Media Server: resave the playlist. The ASX file is written out and 15 Media Player takes off, making requests to the Media 1. For security reasons, the media gateway checks to see Gateway to play music. that the client is accessing it from the Windows Media 4. If we cannot reuse an old playlist, we must create a new Player client (and not a web browser or other application). one with the PlaylistGenerator (PlaylistGenerator.cre If not, it redirects the user to an error media file. ateC). 2. Next, the media gateway pulls the user's ID off the 5. The first step is to get the user's preferences (Playlist query string and retrieves that user's playlist object from the GeneratorgetOptionsO). database. We get the following options: 3. The gateway looks at timestamps in the playlist object Unrated Quota: how much new (not rated) music they that indicate when the user last heard an ad, tip, and Song and want hear in their playlist. The options here are 90, 80, 70. figures out if it is time to insert an ad, tip, news item, or just 25 50, 40, 30, and 20 percent. The default is 50 percent. play a song. Explicit lyrics: Does this user want us to play music with 4. If the user has not heard an ad for a pre-defined period explicit lyrics? True or False. of time, the media gateway resets the ad timestamp and Bandwidth: if not already specified in the Generator retrieves an ad path from the user's ad playlist and passes Parameters, this is read. Current options are 28.8, 56, and that mms redirect to the end user's Windows Media client. 30 T1/Lan. The default is 28.8 if a valid setting is none is found in the database. If no ad is available, it falls through to playing the next song 6. Next we need to get a list of all the possible songs we in the user's playlist. can play (PlaylistGenerator-gatherMediaO) as well as 5. If it is not time to play an ad, the timestamp is checked Some other data about those songs. This is generally to see if it is time to play a tip, then it follows the same logic 35 done using multiple threads running at the same time as #4 to retrieve and play a tip, instead of an advertisement. for better performance. The list of songs is held in 6. If it is not time to play an ad or tip, the timestamp is hashtable (Population). checked to see if it is time to play an audio news item, then a. The first thing we do is call the database to load a it follows the same logic as #4 to retrieve and play an audio history of all the songs played for the user in the last 30 news item. 40 days. This is stored in the database as a long string, 7. If it is not time to play an ad, tip, or news item (the usual formatted aS Such: , case), the media gateway retrieves the path of the next Song . . . . . for performance reasons: in the playlist and returns that address via MMS redirect to reading one string from the database is faster than the client’s Windows Media Player. reading potentially several thousand rows individually 8. In all cases, the mediaID of the ad, tip, or song played 45 from the database. Dates older than 30 days are ignored is logged in the database under that user's ID. This logging and the last time a song was played overwrites previous information is used: plays of a song. Each time a song is played via the a. To display what the user is listening to on the user's Media Gateway, this string is appended. After the station page and under Who's Listening. history loading is complete, a random integer is picked b. As history data in the playlist generator. 50 from 1 to 10. If the value is 1, we recreate the date and c. In calculation of the LAUNCHcast Top 100 chart. SongiD String and rewrite it to the database. This cleans E Playlist Generation up Songs that were played more than 30 days ago and In one embodiment, when a user launches his player, an duplicate entries for the same songiD. embedded Windows Media Player opens a call to our b. As the history loads as a thread, we make another PlaylistGenerator Servlet (PlaylistGeneratorServlet). The 55 database call to get the DJ's list of subscribed DJs, expected output from this HTTP call is an ASX playlist file, genres, and radio stations (PlaylistGeneratorgetSub which, in LAUNCHcast is list of pointers to a script that ScriptionsQ) for the specific mood they've requested. reads the actual playlist data object from the database. The result of this is three lists (DJs, genres, and The Playlist Generator Servlet parses the particular stations). parameters for this playlist: 60 c. As soon as we have the Subscriptions, were ready to get Object: GeneratorParameters. ratings (GetRatings). This is also done in a thread. We useriD: (required) the user for whom were generating pass the song hashtable, another hashtable that contains this playlist. Artist and Album ratings (ItemsProfile), the DJ and the DJID: (default is useriD) the user whose profile we will list of DJs to the GetRatings method. A list of users use to generate this playlist. 65 whose ratings we want to retrieve is compiled using the moodiLD: (default is none) a mood (subset of profile) subscribed DJs and the DJ requesting the playlist, and under which to listen (optional. a request is made to the ratingsCache to retrieve all US 9,436,962 B2 21 22 these ratings (RatingsCache.getRatings()). When the Determine the number of Songs to pick from each genre PlaylistGenerator has all the ratings, it is ready to from this formula: songs to pick-totalToPick (number of assemble them into categorized data structures, based Songs in this genre I total number of Songs in the selected on the properties of each rating. It iterates through all genres). the ratings and stores them as follows: We pick the determined number of songs, and try to add F Songs: it to the song hash table with a type of "Unrated. The song If the ID of the user is the DJ and the rating is 0 (X in is not added if it is already in the hash table. the end-user interface), the Song is added to Song To select from all songs we simply select a random Song hashtable (Population) with a type of “Excluded', 5000 times. Each time, we try to add the song if it is not 10 already there, as described above. meaning it should never be played. The rating is also f. Once were done adding random Songs, we wait until all added to the average rating for songs by that artist. the ratings are retrieved and we have all the dates of If the rating is not 0, we immediately check the Song when songs were played for the user. information cache (SonginfoCache.get()) for data about this 8. Now we finally get close to picking songs for the Song. If it does not exist in the cache, it is a song that was 15 playlist. First off, we take the explicit, implicit, and rated, but we do not have available for play (it's not unrated lists built in the last step and order them in encoded), it is immediately marked as an "Excluded' song. descending order by score using a quickSort algorithm. If all of the above tests pass, we add the song to the Song 9. Then we figure out how many Songs from each list to hashtable, with a type of “Explicit'. We also include the pick. As an example, assume the size of a playlist is 50 rating in the calculation of this DJ’s average rating of Songs. Songs by the artist. If the user is listening to their own station, use the We add each song that is rated by subscribed DJs to the following formula: song hashtable and include the subscribed DJ's rating in the If the user's list of explicit and implicit songs is Smaller calculation of the subscribed DJ’s average rating for this than 100 songs, we must pick 90% of the songs from the SOng. 25 unrated list to avoid playing their rated Songs too much. Set G Albums: their unrated quota to 90. Otherwise, use the unrated quota We get the ratings profile for this album from the item from their options. rating profiles. If it doesn't exist yet, retrieve the data and The maximum number of Songs we can pick from the create it. explicit and implicit lists is: maxiumumRated playlistSize If the rater is the user requesting the playlist, we set the 30 (100-unrated Quota)*0.01. rating for this item to the users rating. The maximum number of Songs we can pick from the If the rater is a subscribed DJ, we add the rating to the DJ explicit list is: maximumExplicit-number of songs in the average for this album. explicit list:0.20. H Artists: The number of songs to pick from the explicitly-rated list 35 is then: explicitToPick playlistSize (100-unrated The same as for albums, except we discard any ratings quota)*0.01*(number of songs in the explicit list I sum of made for the artists listed as “Various Artists”, “Sound explicit and implicit songs)*3). track', or “Original Soundtrack’. The number of implicit songs is simply: d. We then add the top 1000 most popular songs (Play implicitToPick-maximum RatedexplicitToPick. listGenerator:getPopular( )) in the bandwidth type 40 We then check to make sure we haven’t picked more specified to the song candidate hashtable. This popular explicit songs than maximumExplicit and no more implicit list is maintained in the song information cache. Before Songs than are in the implicit list. each Song is added to the song hashtable, we check to The unrated Songs are simply then: playlistSize-(explicit see if it’s already in the candidate hashtable (put there ToPick-implicitToPick). by another query), and if so, we check to make Sure it 45 If the user is listening to a station other than their own and shouldn't be "Excluded', or discard it. If we add the the number of Songs in the explicit and implicit list total song, it is added under the type is “Unrated. greater than 200: e. We add a maximum of 5000 songs picked randomly. explicitToPick=Minimum(playlistSize:0.50, 20% of (PlaylistGeneratorgetR.andom()). To do this, we first explicit songs) count the number of Songs contained in each all of the 50 genres a user has selected (SonginfoCache.countln Genres()). Songs may be in multiple genres. We then implicitToPick=Minimum (playlistSize, # of implicit divide the number of songs by the total number of songs)-explicitToPick. Songs in the song information cache. If this is less than If for Some reason we did not get playlistSize songs from 5%, we pick Songs directly from a list of Songs only in 55 this calculation, we pick a third of the songs from each of those genres. Otherwise we can pick randomly from all explicit, implicit and unrated, making Sure not to pick more Songs. We do this calculation to avoid the situation than 20% of the rated and unrated lists. where a user has selected a small number of genres and As a fallback, if none of the methods above to calculate picking randomly will return only a few songs that are the number of songs to pick worked, we pick a third of the allowable to play when considering their genres. 60 playlistSize from each list, making Sure not to pick more To select only from selected genres: than 20% of the rated and unrated lists. Determine the total number of songs to pick (totalToPick) 10. Copy the list of albums and artist from and by which from the lesser of 5000 and the total number of songs in the Songs have been played for this user in the last 3 hours. selected genres. 11. Pick the songs for this playlist. (PlaylistGenerator. For each genre, get a copy of the list of songs in that genre 65 pickSongs()) from the song information cache (Songinfo First, make a list of all the picks we need to make Cache.getInGenre()). (PickList). For example, if we have a playlist of 50 songs, US 9,436,962 B2 23 24 the list may contain 10 entries for explicit songs, 20 for Browser. In one embodiment no client download is implicit songs, and 20 for unrated Songs. required. While there are still songs to pick, iterate through this An exemplary player window may include the following cycle: feature for an expandable window for video and chat is a. randomly pick a song list type (explicit, implicit, illustrated in FIG. 32. It includes: an audio section, a video unrated) with a probability based on the proportion of Songs section, a users window, and a chat window. The audio to come from each list. section contains basic player functionality. The video win b. pick a random Song index from that list (which has dow expansion displays video when in a video mode. The already been sorted in descending order of Score), based on users window shows who's listening to the same content. the following formula (SongGroup pickRandom()): 10 The chat window Supports typing and viewing chat. A status sizeGf List=the number of songs in this list bar may illustrate Personalizing your Launchcast In one embodiment, an exemplary set of features of the random—a randomly-chosen number between 0 and player includes: (sizeGfList-1)+0.01 index of song to pick= 15 A) Play/pause button (rand A 7)I sizeGfList-1. A 7)*(sizeGf List-1)) B) Skip Song This formula allows us to pick Songs somewhat randomly, C) Volume control while guaranteeing a high probability that the song picked D) Prominent rating widget will come from highest scored. The higher the ranking of the 1) Shows current explicit rating song in the score matrix, the higher the probability it will be 2) Shows implicit rating (and source) when explicit one picked. This algorithm scales well for any size of list not present because it is rank-based, not just score based. 3) Shows other songs with same rating value (when user The song at that index is removed from the list. If for puts mouse over a rating value) Some reason we do not get a valid song (possibly the song 4) Graphically shows community popularity (average list already exhausted), add another song to the list of types 25 rating) and ranking, where appropriate to pick of this type. 5) Gives rewards when user rates item Once we have picked a song, get its album and artist E) Current Song title (linked to Song page) information. F) Artist (linked to artist page) If the artist is not a “Various Artist' and the sum of the G) Album (linked to album page) number of songs played by this artist and already picked for 30 H) Link to fans of the song (ordered by rating and online this playlist by this artist is greater than or equal to 3, we status) cannot play this song by the RIAA rules. We mark it as I) Area to display text tips and factoids "rejected and add another song to the list of Songs to pick J) Small image advertisement from the same list this song was picked from. In one embodiment a VIDEO-I button appears active The same test is performed for albums, with the maximum 35 when video is available. It expands the window and starts played being 2. video, otherwise it links to a video section. If the Song was picked Successfully and was within legal In one embodiment a CHATDI button allows a user to boundaries, increment the number of songs picked from this open and close chat interface on community LAUNCHcasts. album and by this artist. Add the song to the final list of The button appears active when digital download is avail Songs for the playlist and mark the order in which this songs 40 able. It downloads in a separate window, otherwise links to was picked for the playlist. downloads section. 12. If for some reason we did not get playlistSize songs, In one embodiment a RATE MORE button is linked to delete the existing playlist, add popular songs to the a list of more songs to rate. Song hashtable, resort the song lists, and pick, ignoring In one embodiment a BUY button is linked to an the user's genres selections. 45 album/single commerce page. 13. Pick news clips. This is done simply by picking a In one embodiment an OPTIONS button is linked to specific number of unique news items that are in the LAUNCHcast options. specified bandwidth format. A list of available news In one embodiment a HELP button is linked to a player clips is stored in the song information cache. tutorial. 14. Pick ads. This is done exactly the same as news, with 50 In one embodiment all of the links many open in the same a different number of ads to pick. target window. 15. Pick tips. This is done exactly the same as news, with B. Media Gateway a different number of tips to pick. In one embodiment the Media Gateway is accessed via 16. Randomly shuffle the order of the songs in the playlist. HTTP and used to play a song in LaunchCast 2.0. It 17. Serialize the playlist and save it to the database. 55 performs a number of tasks and if all criteria are met, 18. Return the ASX file to Windows Media Player. streams out a media file (audio or video). This program can 19. Every 5 minutes, the Flash player “pings” the Play be written in TCL for StoryServer or could be a compiled listGenerator again. If the playlist is stale or has 8 songs program in Java or C++ if performance requires. or less left in it, it regenerates the playlist and replaces Tasks the one previously saved in the database. ps III. Alter 60 An exemplary set of tasks for the media gateway is now nate Embodiments Group 3 described. Additional embodiments and an exemplary user interface 1. Check cookies for valid Launch login credentials. In specification are now described. the case of an error, play an audio clip that asks the user to A. Player UI Specification log in. Size: In one embodiment the size of the player user 65 2. Checks the USER AGENT HTTP header to make Sure interface may be made Small enough that the user can keep a user isn't trying to download a file with a browser. If the it open while using other applications. check fails, redirect to http://www.launch.com. US 9,436,962 B2 25 26 3. Write out the HTTP headers including an expires The artist ID includes: header and MIME type appropriate for the media. values: integer 4. Open the file for reading in binary mode. init: not passed 5. Select the top 1 song from in the playlist by ordinal in changeRatee: optional the playlist from the database. Delete the row in the data 5 artist url: The URL to which a browser window opens base. Look up its file name and path. If either of these last when a user clicks on the album title in the player window. two tasks fails, exit. The artist id should be appended to it like this: 6. Call the stored procedure OnPiayStart. Close the data sartist url?artistID= launch url: The URL a browser window should open up values: a valid HTTP URL to when a users clicks on the LAUNCH logo on the player. init: required values: a valid HTTP URL 35 changeRatee: not passed init: required Song lookup url: The URL to use to obtain the SongiD, changeRatee: not passed rating, and other song information. The parameters should manager url: The URL a browser window should open up be appended to the query string like this: to when a users clicks on the station manager button in the & player. 40 djil D= values: a valid HTTP URL values: a valid HTTP URL init: required init: required changeRatee: not passed changeRatee: not passed member url: The volume should be the last volume setting if it has values: a valid HTTP URL 45 changed since the last call to Song lookup url, or -1 oth init: required erwise. If -1, the volume will not be saved. changeRatee: not passed It returns the following data: The URL a browser window should open up to when a Song id—the ID of the song requested username (fan ord for example) is clicked on. The useriD Song name—the title of the Song must be appended to the query string like this: 50 artist name—the name of the artist who peformed this Song mode: Specifies what mode the player is in. This is a artist id—the ID of artist who performed this song placeholder awaiting further specification on different func album name—the name of the album this song is from tionality for the modes. album id the ID of the album this song is from values: “audio’’ or “video 55 new indicates if this song is new to LAUNCHcast init: required popular indicates if this song is popular among changeRatee: not passed LAUNCHcast DJs ping interval: The number of seconds to wait between exclusive—indicates if this song is exclusive to making requests to the ping uri. If not passed on init, default LAUNCH to 600. 60 last played—a string representing the date this song was values: integer >0 last played for this user init: optional fan id-n—the useriD of a user who is a fan of this song. changeRatee: not passed If there are more than a certain number this will be 0, ping url: A URL to make a request to at a given interval prompting to stop and display a more button (ping interval). The responding page does not need to return 65 fan namesong ratings and popu media id—the mediaiD of this song late implicit rating matrix, where we don't have an explicit An example return string is as follows: Song rating: song id=9806650&song name=One&artist name=U2& 3) Retrieve user's implicit artist->song ratings and popu artist id=90900&album name=Zooropa&album id= late rating matrix, where we don’t have an explicit song 8759&new=O&popular-1&exclusive-O&Iast 30 rating or album->song rating: played=9808655&fan id1=13302&fan name1=Hits 4) Retrieve average rating from user's DJs for all songs Man&fan id2=6474162&fan name2=boulter&d rated by their advisors and populate rating matrix: rating id1 =13302&d rating name1=Hitsman&d 5) Retrieve and scale user's implicit BDS playlist->song rating value1 =78&d rating id 2=6474162&d ratings and populate rating matrix rating name2=boulter&d rating value2=65&image 35 6) Retrieve and scale user's venue->artists->song ratings url=http://www.launch.com/images/ and populate rating matrix (note: we will retrieve a maxi 87980.jpg&origin=Your-rating+for+this.--song mum of 50 artists across all venues, so retrieve 50/venue song url: The URL to which a browser window opens memberships artists from each venue.) If a song is present when a user clicks on the Song title in the player in any venue, it receives a score of 100 for the implicit venue window. The ratee should be appended to the query 40 rating string like this: 9) Retrieve and scale user's song recommendations from

EXAMPLE 5 55 The system of example 12, wherein the database is a song database and the data streams are songs. The method of example 1, further comprising: informing the user generally regarding the database and the data EXAMPLE 1.4 streams, querying the user as to data stream preference prior to generating an initial transmission list of data streams, 60 The system of example 11, wherein the database is a whereby the initial list reflects general preferences of the music video database and the data streams are music videos. USC.

EXAMPLE 6 EXAMPLE 1.5 65 The method of example 1, wherein the data streams are The system of example 11, wherein the user interface selected from the group consisting of Songs and videos. comprises an electronic media player. US 9,436,962 B2 33 34 EXAMPLE 16 receiving user feedback from the user for Songs played on the personalized internet radio station in the form of The system of example 15, wherein the electronic media Song ratings for songs played on the personalized player is selected from the group consisting of RealPlayer, Internet radio station; and Apple QuickTime, and Windows Media Player. 5 adjusting the selection of songs based on the received user feedback and on at least one discovery rule to discover EXAMPLE 17 at least a minimum rate of new songs that includes at least Some songs outside of the at least one musical The system of example 11, wherein the selection program preference of the user to introduce an element of creates a list of data streams for transmission to the user. 10 variety to the personalized Internet radio station. 2. The method of claim 1, wherein the at least one EXAMPLE 1.8 discovery rule includes a rule to discovery new songs based on preferences of a community of users. The system of example 17, wherein the selection program 3. The method of claim 2, wherein the community of users modifies the list of data streams for transmission to the user 15 is a set of DJs selected by the user. 4. The method of claim 1, wherein the method further according to the user preference. comprises determining a user preference for musical variety and the selection of Songs is adjusted based on the deter EXAMPLE 19 mined user preference for musical variety. 5. The method of claim 1, wherein the at least one The system of example 11, further comprising: the data discovery rule includes a rule to select a minimum rate of stream controller transmitting the data streams in compli Songs not rated by the user. ance with copyright law. 6. A system for providing an Internet radio service, comprising: EXAMPLE 20 25 at least one computer server configured to generate and host a personalized Internet radio station including a The Example of claim 19, further comprising: the data Selection of Songs based on at least one musical pref stream controller transmitting all data streams in compliance erence of a user and transmit a data stream providing with applicable copyright law. access to Songs of the personalized Internet radio 30 station to a client device of the user, and EXAMPLE 21 the at least one computer server configured to: receive user feedback from the user for songs played on A user interface for an Internet datastream transmission the personalized internet radio station in the form of system, including: a media player for playing data streams; Song ratings for songs played on the personalized a rating tool, the rating tool indicating a rating for a data 35 Internet radio station; and stream currently played by the media player, and a data adjust the selection of Songs based on the received user stream information display, the data stream information feedback and on at least one discovery rule to discover display displaying information for the data stream currently at least a minimum rate of new songs that includes at played by the media player, whereby a user can indicate a least Some songs outside of the at least one musical preference regarding the data stream currently played by the 40 preference of the user to introduce an element of media player. variety to the personalized Internet radio station. 7. The system of claim 6, wherein the at least one EXAMPLE 22 discovery rule includes a rule to discovery new songs based on preferences of a community of users. The user interface of example 21, further comprising: a 45 8. The system of claim 7, wherein the community of users playlist generator, the playlist generator generating playlists is a set of DJs selected by the user. of data streams for the media player, the playlist generator 9. The system of claim 6, wherein the system determines selecting data streams according to preferences indicated by a user preference for musical variety and the selection of the user. Songs is adjusted based on the determined user preference 50 for musical variety. EXAMPLE 23 10. The system of claim 6, wherein the at least one discovery rule includes a rule to select a minimum rate of The user interface of example 22, further comprising: the Songs not rated by the user. data streams selected by the playlist generator being in 11. The system of claim 6, wherein the at least one compliance with applicable copyright law. 55 discovery rule includes a rule to discover new songs based on at least one of artist preferences and album preferences of What is claimed is: the user. 1. A method of providing an Internet radio service, 12. The system of claim 6, wherein the at least one comprising: discovery rule includes a rule to select a minimum rate of generating, by at least one computer server, a personalized 60 Songs not rated by the user. Internet radio station including a selection of Songs 13. A method of providing an Internet radio service, based on at least one musical preference of a user; comprising: transmitting a data stream, by at least one server com creating a personalized Internet radio station for a user puter, providing access to Songs of the personalized and storing user profile information for the user that Internet radio station to a client device of the user; and 65 includes at least one musical preference of the user and adapting, over time, the selection of Songs of the person Song ratings of the user for songs played on the alized Internet radio station, including: personalized Internet radio station; US 9,436,962 B2 35 36 receiving, in at least one server computer, a command to includes at least one musical preference of the user and launch the personalized Internet radio station and in Song ratings of the user for songs played on the response: personalized Internet radio station; accessing the user profile information and obtaining the receive a command to launch the personalized Internet at least one musical preference of the user; radio station and in response: accessing the user profile information and obtaining access the user profile information and obtaining the at Song ratings of the user for songs previously played least one musical preference of the user, on the personalized Internet radio station; access the user profile information and obtaining song accessing at least one discovery rule including at least ratings of the user for Songs previously played on the one rule to discover a minimum rate of new songs 10 that includes at least some songs outside of the at personalized Internet radio station; least one musical preference of the user, access at least one discovery rule including at least one launching the personalized Internet radio station and rule to discover a minimum rate of new songs that selecting songs based on the at least one musical includes at least Some songs outside of the at least preference of the user, the song ratings of the user, 15 one musical preference of the user, and the at least one discovery rule; and launch the personalized Internet radio station and transmitting a data stream, by the at least one server selecting Songs based on the at least one musical computer, providing access to songs of the person preference of the user, the song ratings of the user, alized Internet radio station to a client device of the and the at least one discovery rule; and U.S. transmit a data stream, by the at least one server 14. The method of claim 13, wherein the user profile computer, providing access to songs of the person includes a discovery preference selected by the user from at alized Internet radio station to a client device of the least two different discovery preferences including a first USC. discovery preference to decrease a rate of the discovery of 19. The system of claim 18, wherein the user profile new music relative to a default setting and a second discov 25 includes a discovery preference selected by the user from at ery preference to increase a rate of the discovery of new least two different discovery preferences including a first music relative to the default setting. discovery preference to decrease a rate of the discovery of 15. The method of claim 13, wherein the at least one new music relative to a default setting and a second discov discovery rule includes at least one rule to discover new ery preference to increase a rate of the discovery of new music based on an artist rating. 30 music relative to the default setting. 16. The method of claim 13, wherein the at least one discovery rule includes at least one rule to discover new 20. The system of claim 18 wherein the at least one music based on an album rating. discovery rule includes at least one rule to discover new 17. The method of claim 13, wherein the at least one music based on an artist rating. discovery rule includes at least one rule to discovery new 35 21. The system of claim 18, wherein the at least one music based on preferences of a community of users. discovery rule includes at least one rule to discover new 18. A system for providing an Internet radio service, music based on an album rating. comprising: 22. The system of claim 18, wherein the at least one at least one server computer configured to: discovery rule includes at least one rule to discovery new create a personalized Internet radio station for a user and 40 music based on preferences of a community of users. storing user profile information for the user that k k k k k