Internet applications have grown tremendously over the years and so has the functionality provided to devices that access those applications. One area that has seen such growth relates to audio file management. An audio file management application may enable a user to search and purchase music selections online and store the purchased music in cloud storage. The audio file management application may further enable a user to access and play the music stored in the cloud storage using network connected devices.
Playlist generation is a common task, which users conduct to organize their music. However, compiling the proper mix of music for a playlist can be a time consuming process. This is especially true when the playlist is designed to include music for a unique group of users at a specific location. It is in this context that embodiments arise.
Embodiments of the present disclosure provide methods, systems, and computer programs for discovering and selecting location-based music. It should be appreciated that the present disclosure can be implemented in numerous ways, such as a process, an apparatus, a system, a device, or a method on a computer readable medium. Several inventive embodiments of the present disclosure are described below.
In one embodiment, a method for discovering and selecting location-based music is disclosed. The method includes identifying a user having a user device. The user device has access to an application for accessing online music. The disclosed method further includes determining a distance zone around the user device and identifying a group of nearby users having respective nearby devices within the distance zone. The nearby devices of the nearby users have access to respective applications for accessing online music. Each of the nearby devices is in the progress of playing a selected music track. Based on examination of the selected music tracks being played by the nearby devices, a playlist is generated for the user device, and the generated playlist is forwarded to the user device.
In another embodiment, a system including a server for executing logic is disclosed. The disclosed logic identifies a user device having access to an online music service over a network, determines a distance zone around the user device, and identifies a group of nearby devices within the distance zone. The identified nearby devices have access to the online music service, and each of the nearby devices is in progress of playing a selected music track using the online music service. The disclosed logic further automatically generates a playlist for the user device based on examination of music tracks being played by the nearby devices, and forwards the generated playlist to the user device. The playlist is generated based on a current location of the user device, the distance zone, and the group of nearby devices.
Other aspects will become apparent from the following detailed description, taken in conjunction with the accompanying drawings.
The disclosure may best be understood by reference to the following description taken in conjunction with the accompanying drawings.
Methods and systems are described for discovering music for automatically generating playlists based on a user device's location. In one embodiment, the disclosed methods include identifying a user having a user device and calculating or determining a distance zone around or within a proximity of the user device. The user device has an application or code for accessing online music. Based on the calculated distance zone, a group of nearby users having respective nearby devices within the distance zone is identified, and each of the nearby users is playing a selected music track. A disclosed method includes generating a playlist based on selected music tracks being played by the nearby users, and presenting the playlist to the user device. In one embodiment, the transmitting of the generated playlist may be based on a push action by a server or based upon the user's request (e.g., based on a user's selection on a user interface of the user device). In one embodiment, the processing of the playlist generation is conducted on a server or multiple servers of a music service provider. The playlist is presented to the user device on a user interface (UI) that is at least partially populated with data by the music service provider. In such an embodiment, the user receives the playlist on the user device that has network access to the music service provider and is therefore able to render the UI on the user device.
The following description sets forth numerous specific details such as examples of specific systems, components, methods, and so forth, in order to provide a good understanding of several embodiments of the present disclosure. It will be apparent to one skilled in the art, however, that at least some embodiments of the present disclosure may be practiced without these specific details. In other instances, well-known components or methods are not described in detail or are presented in a simple block diagram format in order to avoid unnecessarily obscuring the present disclosure. Thus, the specific details set forth are merely examples. Particular implementations may vary from these example details and still be contemplated to be within the spirit and scope of the present disclosure.
Reference in the description to “one embodiment” or “an embodiment” means that a particular feature, structure, or characteristic described in connection with the embodiment is included in at least one embodiment of the disclosure. The appearances of the phrase “in one embodiment” in various places in the specification do not necessarily all refer to the same embodiment.
One example digital service provider 102 can be Google Inc., of Mountain View California. Other digital service providers can be more focused to provide only specific services, while others provide a variety of services for access, download, viewing, searching, etc. The content can vary greatly, but is commonly presented in digital format and displayed on monitors or screens of devices, computers, smartphones, tablets, etc.
The servers that provide music related services, in one embodiment, are illustrated by the music provider logic 114, that executes over one or more servers that are connected to the Internet 104. The music provider logic 114 is shown connected to a cloud music storage 116. Cloud music storage 116 is shown to include a plurality of storage systems, identified as store A, store B, . . . store N. The various storage systems that hold music data and music metadata, are provided with fast access to the Internet, for providing music data on demand to users requiring access to their music accounts stored in cloud music storage 116. In one embodiment, users can access the cloud music storage 116 by way of a plurality of devices 106. The plurality of devices can include any type of device having a processor and memory, wired or wireless, portable or not portable. In the example illustrated in
The communication logic (Tx/Rx) can include various types of network interface circuitry, radio-communication (e.g. wireless), cell tower communication, or interconnected wiring connected to Internet service providers. Device 106 is also shown to include a display having a screen 120, local storage 124, and a processor 130. Local storage 124 can include cash memory 126, persistent storage 128, and other logic. In this example, device 106 is shown to include graphical icons (e.g., graphical user interfaces GUIs) that represent a play list. The screen 120 can be a touch-screen, or a display typically provided by a flat-panel display, a cathode ray tube (CRT), or other media capable of rendering a display. Still further, device 106 can have its display separate from the device, similar to a desktop computer or a laptop computer. Still further yet, device 106 can be in the form of a smartphone, a tablet computer, or hybrids that provide touch screen capability in a portable form factor. One example device can include a portable phone device that runs an operating system and is provided with access to various applications (apps) that may be obtained over the Internet, and executed on the local portable device (e.g., smartphone, tablet, laptop, desktop, etc.).
In one embodiment, the user of device 106 can install an application that provides cloud storage of music files, and access to the storage cloud music files from the device 106. Once the user's music files are uploaded to the cloud music storage 116, the user's music files are associated to a library of the user. In one embodiment, a plurality of users can access the same application and can upload their own music files to create their own library, which will be stored in the cloud music storage 116.
Each of such users can then access the cloud music storage 116 through an application on their device 106 to render and play selected music files on their device, when the device 106 has access to the Internet and associated servers of the music provider logic 114 and cloud music storage 116. Accordingly, users can access the music application on their device 106, access all music files stored in cloud music storage 116, arrange music titles in their music library into playlists, add music to the cloud music storage 116, delete music from the cloud music storage 116, and purchase music that is added to the cloud music storage 116. These changes are maintained and managed by the music provider logic 114 and the music provider logic 114 will provide access to the various users to their music files stored in the cloud music storage 116, based on their selections during use of the application.
Once the application 140 has been downloaded and installed on device 106, the icon representing application 140 will be rendered on the display screen of device 106. Initially, the user will be prompted to select music to add to the cloud music storage 116. The music may be added from files currently maintained by the user on his or her device 106, on other devices of the user such as computers, other smartphone and or tablets, or other storage media. Additionally, the user can add music files that may be part of a music library maintained by another application. The other application may maintain a specific format for the music, and the music can be obtained and translated to standardize music files for addition to the cloud music storage 116.
Once the user has managed his library to add, modify, or adjust the music files present in the cloud music storage 116, the user can access application 140 and various options from graphical user interfaces provided on the screen 120 of device 106. In the illustrated example, device 106 will open application 140 through various graphical user interface screens, such as interface 140a. Interface 140a can include various menus, selection icons, configuration icons, displays, advertisements, buttons, listings, etc. In this example, the interface 140a may include an image that lists the users library 160, the users playlists 162, and music title icons 164. Music title icons can be represented by graphical artwork that represents artwork associated with the various music files present in the users library. The users library is illustrated by music title icons 164, shown as A-H.
The music title icons 164 are rendered on the screen 120 upon obtaining metadata from the cloud music storage 116 (or accessing the metadata from previous download(s) stored locally on the user device), which may be present in data store 150. Music provider logic 114 will include request processing module 144 that manages the requests and communication between various users applications 140 and the cloud music storage 116. The request processing module (RPM) 144 is also in communication with a play processing module (PPM) 146. In order to render the title icons 164 on the screen of the device 106, the music provider logic 114 will utilize the request processing module 144 to obtain metadata 142 from the data store 150.
The metadata 142 will be the metadata associated with the various music files stored in data store 150. The metadata 142 provides information regarding each of the titles stored in the cloud music storage 116, and sufficient information to render the title icons 164 on the screen of device 106, and provides text information, duration information, genre information, and other data that describes aspects or characteristics of the music files. As shown, when the user selects playlist 162 on device 106, a playlist graphical user interface is shown identifying particular songs that have been arranged by the user.
Playlist A, part of the playlist 162, represents various songs that were selected by the user. The user can have various playlists, and the selection of playlist A is only provided as one example of a playlist that includes music files that are played in the order EDA B. Once the user selects a corresponding play button or clicks on one of the audio files in the playlist, the music files will begin to play, via the speaker 106a, in the order arranged and defined by the user in his or her playlist A.
In one embodiment, the music manager server 310 and the nearby database 320 are part of the music provider logic 114, and the cloud music store 380 is part of the cloud music storage 116, as shown in
As shown in
In the example illustrated in
In one embodiment, the user database 318 communicates with the cloud music store 380 so that the various user accounts stored in the cloud music store 380 may be updated. The nearby logic 311 and the tracking logic 316 may communicate with the user database 318 to identify which user or nearby user has logged into his or her music account, and whether he or she is playing a music track. In one embodiment, the tracking logic 316 may track the locations of the users (with user permission) who have logged into their respective user accounts by tracking the locations of the user devices of those users. In other embodiments, the tracking logic 316 may obtain location data from other tracking services, or location identifying services. For example, location identifying services may include, without limitation, signal processing from a cellular towers, GPS processors, Wi-Fi signals, IP address resolution processors, etc.
In one embodiment, after user 371 has logged into his or her music account, user 371 may send a request for discovering location-based music, e.g., the music tracks being played by other nearby users, to the nearby logic 311 of the music manager server 310 via the user access module 317. Upon receiving the user's request, the nearby logic 311 may identify user 371 who sent out the request and the location of user 371 by obtaining the location of the user device 370 via the location data received from the tracking logic 316. In one embodiment, the tracking logic 316 may utilize the service from Google Latitude or signals from a cellular tower, GPS, Wi-Fi, IP address tracking to track and update the location of a user device or a nearby device for a user or a nearby user who has logged into his or her music account.
In one embodiment, based on the location of the user device 370, the nearby logic 311 may calculate or determine a distance zone 379 around the user device 370. The distance zone may have either a two-dimensional or three-dimensional space location or volume. In the example shown in
In one embodiment, a distance zone around a user device may be defined by dimensions of structural buildings, such as a shopping mall, a church, a school, etc. In another embodiment, a distance zone around a user device may be more generally defined, such as within an approximate city block, or within a certain radius or zone. In still another embodiment, a distance zone may be relative to a map address. A three-dimensional distance zone may also include identification of vertical space. Vertical space may be useful if the distance zone relates to identifying the floor or approximate floor in a multi-floor building.
Based on the calculated distance zone, the nearby logic 311 is further configured to identify a group of nearby users having respective nearby devices within the distance zone, and each of nearby users is playing a music track from their respective music collections. In the embodiment shown in
In one embodiment, the nearby logic 311 may send the information regarding the identified user, the identified group of nearby users, and the music tracks being played by nearby users to the recommendation framework 312. Based on the received information sent by the nearby logic 311, the recommendation framework 312 may generate a playlist 350 for user 371. In one embodiment, the generated playlist includes all music tracks being played by nearby users.
In the example illustrated in
In another embodiment, the generated playlist 350 may be sorted and/or filtered by music affinity defined by the music listening history of user 371 (and users nearby). The music listening history may include the categories of music user 371 listened to, the singers or the artists user 371 liked, etc. In other embodiments, the music affinity may be defined by the music listening histories of user 371 and/or his or her social network friends. In one embodiment, if a nearby user is the user's social network friend, the nearby user's identification may be listed along with the music track being played by the nearby user.
In one embodiment, upon receiving the generated playlist 350 in the user device 370, user 371 may choose one or more favorite music tracks from the playlist 350 and sends out the “shout outs” messages to the nearby users who are playing those favorite music tracks or one nearby. A “shout out” message may indicate the user's likes or dislikes for the music track being played. A “shout out” message for a favorite music track may be transmitted from the user device 370 to the nearby device 377 of the nearby user who is playing that favorite music track. In one embodiment, the nearby user who received the “shout out” message may send out a response to user 371. The response message sent by the nearby user may show the identification of the nearby user, if the nearby user's identification has not been revealed, to user 371. Thus, the “shout out” feature may be utilized as social means to meet new friends who like the same type of music.
In one embodiment, the playlist 350 generated by the recommendation framework 312 may be presented to the user device 371. For example, after the recommendation framework 312 has generated the playlist 350 for user 371, the playlist 350 may be presented to the user device 370 to be displayed at the user device display screen 375. In another example, the playlist 350 may be presented via the user access module 317 to the UI used by the user device 370 to access the music service online.
In one embodiment, the nearby logic 311 and the tracking logic 316 may record the music tracks being played for a specified distance zone based on a time line with or without a user's request, and send the gathered information to the recommendation framework 312. For example, the nearby logic 311 may work in conjunction with the tracking logic 316 to record all music tracks being played by the shoppers in a shopping mall, and sends the recorded location-based music playing information to the recommendation framework 312. In one embodiment, the recommendation framework 312 may send the received location-based music playing information to the nearby database 320 to be saved in a music record based on the specified distance zone.
The saved location-based music playing information in a distance zone music record of the nearby database 320 may be used to show the music trends for that specified distance zone. In one embodiment, the saved location-based music playing information may be categorized according to music types and be displayed based on the music categories and time line. For example, the time line in the display may be hours in a day, days in a month, months in a year, etc.
In one embodiment, the recommendation framework 312 may be configured to recommend music tracks to user 371 based on the generated playlist 350. The recommended music tracks may be purchased from the online music store 314 or from an external music store 360 provided by another music provider.
As shown in
In one embodiment, after user A presses the nearby button 630 displayed on the user device display screen 620, a location-based music discovery request is sent to the corresponding music service provider, e.g., the music provider logic 114 shown in
In one embodiment, the generated playlist 640 may include a song column showing a list of songs being played by the identified nearby users, a user column showing the identifications of the nearby users, and a “shout out” column showing the associated “shout out” buttons for the songs in the playlist 640.
In one embodiment, in addition to the generated playlist 640, user A may be presented with a social affinity button 650 and a music affinity button 660 so that user A may sort and/or filter the generated playlist 640 based on either the social affinity or the music affinity. In other embodiments, the playlist sorting/filtering feature may be implemented by a drop down menu selection, or other suitable means.
In the embodiment shown in
In one embodiment, if user A favors song A being played the anonymous user xxx (nearby user K), user A may click on the “shout out” button associated with song A being played by nearby user K. The “shout out” message sent by user A may indicate that user A likes song A being played by nearby user K. Additionally, the “shout out” message may show the identification of user A. After nearby user K receives the “shout out” message sent by user A, nearby user K has the option to respond or not to respond to the “shout out” message sent by user A. After nearby user K clicks on the shout out response button 690 shown in the nearby device display screen 680 of the nearby device 685, a shout out response 695 is sent from nearby user K to user A and the shout out response 695 may show the identification of nearby user K to user A.
As shown in
As used herein, the term “music provider logic” is used to connote a system that can manage the musical recommendation and playlist generation for users. As such, so long as the functionality is provided, any name may be provided for “music provider logic.”
In operation 810, a user having a user device is identified. The user device has an application or code for accessing online music. In one embodiment, the identification of the user having a user device includes identifying the location of the user device. For example, the identification of the user having the user device may be performed by the nearby logic 311 by receiving the location data (with user permission) of the user device from the tracking logic 316, as shown in
In operation 820, a distance zone around or proximate to the user device is calculated or determined. The calculated distance zone may be either two-dimensional or three-dimensional in space. In one embodiment, a distance zone around a user device may be defined by dimensions of structural buildings, such as a shopping mall, a church, a school, etc. In another embodiment, a distance zone around a user device may be more generally defined, such as within an approximate city block, or within a certain radius or zone. In still another embodiment, the distance zone may be calculated based on the location data from the user device and other nearby devices. For example, the location data may be obtained from the tracking logic 316 of the music manager server 310 in
In operation 830, a group of nearby users within the distance zone is identified. Each of the nearby users has a nearby device having the application or code for accessing online music, and each of the nearby users is in progress of playing a selected music track. In one embodiment, the identification of the nearby users having respective nearby devices may be performed by the nearby logic 311 of the music manager server 310 in
In operation 840, a playlist is generated for the user device based on all of the selected music tracks being played by the nearby users. In one embodiment, the playlist is generated by the recommendation framework 312 after receiving the information regarding the selected music tracks being played by the nearby users from the nearby logic 311.
In one embodiment, the playlist may include a list of music tracks being played by the nearby users via their respective nearby devices. The playlist may further include a list of nearby users who are in progress of playing the selected music tracks. For example, the playlist may show the identification of the nearby users who are social network friends of the user, while the identification of the other nearby users who are not social network friends of the user may be blocked out.
In one embodiment, the playlist may further include a list of “shout out” buttons with each “shout out” button corresponding to each music track listed in the playlist. If the user likes a music track being played by a nearby user, the user may click on the “shout out” button associated with this music track to deliver a “shout out” message to the nearby user who is playing that music track. The nearby user who is playing that music track may choose to respond to the “shout out” message. The response sent by the nearby user may reveal the identification of the nearby user. In this way, the “shout out” message may be utilized as social means for meeting new friends. In one embodiment, the generated playlist may be sorted and/or filtered based on social affinity, music affinity, or a combination of the social affinity and music affinity.
In operation 850, the generated playlist may be presented to the user device. In one embodiment, the presentation of the playlist to the user device may be performed by the user access module 317 of the music manager server 310 in
In one embodiment, the distance zone may be recalculated based on device location changes that occur over time when the user device is detected to have moved or when the nearby devices are detected to have exited or entered distance zone. Once the distance zone have been recalculated due to device location changes, a updated group of nearby users having respective nearby devices within the recalculated distance zone may be identified and the generated playlist may be updated based on music tracks being played by the updated group of nearby users. In one embodiment, the updated playlist may be presented to the user device when the difference between the updated playlist and the playlist exceeds a threshold. In one embodiment, the recalculation of the distance zone and the identification of an updated group of nearby devices may be performed by the nearby logic 311 of the music manager server 310 in
The disclosed method 800 may be implemented by a central music server system in music provider logic, e.g., the music manager server 310 of the music provider logic 114 in
Permanent storage 908 represents a persistent data storage device such as a hard drive or a USB drive, which may be local or remote. Network interface 912 provides connections via network 914, allowing communications (wired or wireless) with other devices. It should be appreciated that processor 904 may be embodied in a general-purpose processor, a special purpose processor, or a specially programmed logic device. Input/Output (I/O) interface 910 provides communication with different peripherals and is connected with processor 904, memory 906, and permanent storage 908, through the bus. Sample peripherals include display 922, keyboard 918, mouse 920, removable media device 916, etc.
Display 922 is configured to display the user interfaces described herein. Keyboard 918, mouse 920, removable media device 916, and other peripherals are coupled to I/O interface 910 in order to exchange information with processor 904. It should be appreciated that data to and from external devices may be communicated through I/O interface 910. Embodiments of the disclosure can also be practiced in distributed computing environments where tasks are performed by remote processing devices that are linked through a wired or a wireless network.
Embodiments of the present disclosure can be fabricated as computer readable code on a non-transitory computer readable storage medium. The non-transitory computer readable storage medium holds data which can be read by a computer system. Examples of the non-transitory computer readable storage medium include permanent storage 908, network attached storage (NAS), read-only memory or random-access memory in memory module 906, Compact Discs (CD), Blu-ray™ discs, flash drives, hard drives, magnetic tapes, and other data storage devices. The non-transitory computer readable storage medium may be distributed over a network-coupled computer system so that the computer readable code is stored and executed in a distributed fashion.
Additionally,
Some, or all operations of the method presented herein are executed through a processor, such as processor 904 of
In addition, at least one operation of some methods performs physical manipulation of physical quantities, and some of the operations described herein are useful machine operations. Embodiments presented herein recite a device or apparatus. The apparatus may be specially constructed for the required purpose or may be a general purpose computer. The apparatus includes a processor capable of executing the program instructions of the computer programs presented herein.
Although the foregoing embodiments have been described with a certain level of detail for purposes of clarity, it is noted that certain changes and modifications can be practiced within the scope of the appended claims. Accordingly, the provided embodiments are to be considered illustrative and not restrictive, not limited by the details presented herein, and may be modified within the scope and equivalents of the appended claims.