In the realm of personal digital music, there are several interesting “scopes” or “libraries” of media. In the most personal space, there is a personal media collection. This collection is generally locally stored on one or more machines/devices. This is a very real scope; one that exists for hundreds of millions of users today. In the least personal space is the scope of all available media. A real-world approximation of this scope would amount to a regional retailer selling via the Internet, such as an online music store or a subscription service.
An interaction between these two scopes involves extracting media from one and inserting the extracted media into the other, particularly for users that like to buy/download. Many do. Another model is where the user considers both scopes to be part of “the user's library” and thus the music that comes out of the user's speakers is really sourced from either one.
All of the above cites music as an example but applies equally well to any form of digital media: Movies, TV Shows, Books on Tape.
The above two scopes are very, very different. This holds true for a multitude of reasons. The local scope has on average less that 2000 songs; available media via subscriptions is at around the 1.5 MM mark today with expectations of this easily reaching 5 MM and even 20 MM songs. Because the service library clearly eclipses the local library, the integration of the two has generally been seen as uninteresting to do. In addition, the rate of a user consuming media is relatively low when compared to the amount of media released during the same time period. This is to say that far more media is released on any given day that a single (normal) user would purchase and thus updating 100 MM clients “just in case” is generally seen as foolish/non-obvious. Thus, historical user interfaces, implementation models, etc are also very different.
Embodiments of the invention include a system and method for expanding the scope of a user search. In an embodiment, the invention includes receiving a query by a user with respect to one media source and applying the query to a second media source.
This summary is provided to introduce a selection of concepts in a simplified form that are further described below in the Detailed Description. This Summary is not intended to identify key features or essential features of the claimed subject matter, nor is it intended to be used as an aid in determining the scope of the claimed subject matter.
Other features will be in part apparent and in part pointed out hereinafter.
Corresponding reference characters indicate corresponding parts throughout the drawings.
Referring now to
The system 21 depicted in
In one embodiment, the media items contained in the local library 29 are defined by the user 23. Such a library 29 may be stored on a user's computer 130 (see
The user interface 25 and the processor 27 of the system 21 are adapted for performing the actions described below with respect to the methods described herein. The processor receives 35 instructions and selections from the user 23 through the user interface 25. The processor 27 provides information 33 to the user 23 through the user interface 25. The processor 27 communicates 39 with the data source 29 to access candidate media items. The detailed operation of the system 21 will be described in greater detail below with respect to the methods of the described herein.
In one embodiment, a computer-implemented method of operation on a data processing device such as the system 21 is described. The device has access to a first data source 29 of media items and has access to a plurality of additional data sources 39, 41, 43 of media items. The method generates in response to a first user query of the first data source 29 a first list of media items, if any, from the first data source which first list corresponds to the requirements of the first query. In addition, in response to the first user query of the first data source, at least one of the plurality of additional data sources is searched and information identifying one or more items, if any, found in the searching is displayed. The identified and displayed items of the searched data source correspond to the first user query. In this way, the scope of the user's search has been seamlessly expanded and the user understands the first list of media items belongs to the user and, in contrast, that the second list is available to the user, such as by renting/buying. However, the user is not confused up by such a user interface as the user go back and forth across the scopes (e.g., across the sources).
In the embodiment, the user experience can roam with the user as they use different devices and the user has the ability to experience music on given device and enjoy a similar experience on other devices in the home (HME) or on remote PCs (roaming awareness). This is not just being able to play a given artist on any PC, but rather experiencing owned personal playlists that were made on one PC (even referencing local content) on another PC with no PC-to-PC network connectivity. Such searching is content driven and provides access to very complex databases/data sources (internet wide community rating, song sales trends) with rich user experience constructs: word-wheel, search, sort, large list scrolling, alternate views, context menus, etc and with local storage for offline use.
In one embodiment, the first data source 29 may be a local library and the second data source 39, 41, 43 may be at least one of the following: a media service, a network library or an Internet accessible library. In this embodiment, the user experience would be as follows:
“When I, the user, search locally:
And I get local hits, then
I have the ability to see service results.
I have the ability to see home network library results.
I have the ability to see web results.
And I get no local hits, then
I have the ability to see service results.
I have the ability to see home network library results.
I have the ability to see web results.”
In one embodiment, the first data source 29 may be one of the following: a local library, a media service, a network library or an Internet accessible library and the second data source may be at least one of the following other than the first data source: a local library, a media service, a network library or an Internet accessible library. In this embodiment, the user experience would be as follows:
“When I, the user, search from another scope (service, other PC in home, etc.)
And I get local hits, then
I have the ability to see service results.
I have the ability to see home network library results.
I have the ability to see web results.
And I get no local hits, then
I have the ability to see service results.
I have the ability to see home network library results.
I have the ability to see web results.”
In one embodiment, the searching of the second data source is asynchronous relative to the searching of the at least one of the plurality of additional data sources. In this embodiment, the search results are provided asynchronously so that the searching performance of the first data source from the user perspective is not delayed and a user is not blocked from taking immediate action.
In one embodiment, a notifier is provided for indicating to the user that at least one item of the second data source has been identified as corresponding to the query for the first data source. For example, a “throbbing notifier” such as a flashing element FE is provided (see
In one embodiment, if the searching of the first data source yields no items, this suggests that the user may be in the wrong scope. Thus, the user is provided with the optional results of the search from the second data source. In this embodiment, the user experience would be as follows: “When I search<from any scope>but am in the wrong scope I get offered results.” For example, suppose the user searches for “Artist A” and goes into the “Artist A” folder. Then, suppose the user searches incorrectly for “Artist B” while in the Artist A folder, this embodiment give the user the option to go to the “Artist B” folder in an obvious way.
Thus,
Referring to
As shown in
Almost simultaneously with the user launching the local query at 101, a background query on other library scopes 39, 41 and/or 43 is executed at 101A. In this case, the outside search scope is the Urge music service catalog. As the background query produces results, they are displayed asynchronously inline with the “no results” page as illustrated in
In addition to being available inline in the listview, the local and expanded query results are available via the Search control dropdown menu as shown in
As shown in
At 107 of
As indicated above in
If the user at some later time chose to re-execute the flow shown in
Conversely, if the user were to begin in an unfiltered view of Artists in the Urge service catalog and execute a query through the Search control for “james blunt”, as illustrated in
At 116 of
Once the user is satisfied with the search for the particular James Blunt song, they may wish to search for an additional track by a different artist. For example, let's assume at
In the case of the Artist Britney Spears, the User's query results in matches both in the expanded Urge scope, as well as their Local library. The ability to change the view based on the results of these background queries prevents the User from being “trapped” in a drilled-down limited scope (in this case, the Artist>James Blunt limited scope) while searching for a completely separate Artist, Britney Spears. In addition to the Urge results as shown, 2 songs, 1 Artist, and 1 Album match the query on the User's Local library.
Assuming the User is searching for a particular song by Britney Spears, in this case “Toxic,” the User chooses to view the Artist's Urge page by clicking on the 1 Artist results match under the Urge Matches for ‘britney’ shown in
Having changed their view into another scope (in this case, the Urge>Artist>Britney Spears scope) the User can view Britney's available tracks on the Urge service at
In this Artist>Britney Spears view, selecting the Search control and typing in a query for “Toxic” at
The computer 130 typically has at least some form of computer readable media. Computer readable media, which include both volatile and nonvolatile media, removable and non-removable media, may be any available medium that may be accessed by computer 130. By way of example and not limitation, computer readable media comprise computer storage media and communication media. Computer storage media include volatile and nonvolatile, removable and non-removable media implemented in any method or technology for storage of information such as computer readable instructions, data structures, program modules or other data. For example, computer storage media include RAM, ROM, EEPROM, flash memory or other memory technology, CD-ROM, digital versatile disks (DVD) or other optical disk storage, magnetic cassettes, magnetic tape, magnetic disk storage or other magnetic storage devices, or any other medium that may be used to store the desired information and that may be accessed by computer 130. Communication media typically embody computer readable instructions, data structures, program modules, or other data in a modulated data signal such as a carrier wave or other transport mechanism and include any information delivery media. Those skilled in the art are familiar with the modulated data signal, which has one or more of its characteristics set or changed in such a manner as to encode information in the signal. Wired media, such as a wired network or direct-wired connection, and wireless media, such as acoustic, RF, infrared, and other wireless media, are examples of communication media. Combinations of any of the above are also included within the scope of computer readable media.
The system memory 134 includes computer storage media in the form of removable and/or non-removable, volatile and/or nonvolatile memory. In the illustrated embodiment, system memory 134 includes read only memory (ROM) 138 and random access memory (RAM) 140. A basic input/output system 142 (BIOS), containing the basic routines that help to transfer information between elements within computer 130, such as during start-up, is typically stored in ROM 138. RAM 140 typically contains data and/or program modules that are immediately accessible to and/or presently being operated on by processing unit 132. By way of example, and not limitation,
The computer 130 may also include other removable/non-removable, volatile/nonvolatile computer storage media. For example,
The drives or other mass storage devices and their associated computer storage media discussed above and illustrated in
A user may enter commands and information into computer 130 through input devices or user interface selection devices such as a keyboard 180 and a pointing device 182 (e.g., a mouse, trackball, pen, or touch pad). Other input devices (not shown) may include a microphone, joystick, game pad, satellite dish, scanner, or the like. These and other input devices are connected to processing unit 132 through a user input interface 184 that is coupled to system bus 136, but may be connected by other interface and bus structures, such as a parallel port, game port, or a Universal Serial Bus (USB). A monitor 188 or other type of display device is also connected to system bus 136 via an interface, such as a video interface 190. In addition to the monitor 188, computers often include other peripheral output devices (not shown) such as a printer and speakers, which may be connected through an output peripheral interface (not shown).
The computer 130 may operate in a networked environment using logical connections to one or more remote computers, such as a remote computer 194. The remote computer 194 may be a personal computer, a server, a router, a network PC, a peer device or other common network node, and typically includes many or all of the elements described above relative to computer 130. The logical connections depicted in
When used in a local area networking environment, computer 130 is connected to the LAN 196 through a network interface or adapter 186. When used in a wide area networking environment, computer 130 typically includes a modem 178 or other means for establishing communications over the WAN 198, such as the Internet. The modem 178, which may be internal or external, is connected to system bus 136 via the user input interface 184, or other appropriate mechanism. In a networked environment, program modules depicted relative to computer 130, or portions thereof, may be stored in a remote memory storage device (not shown). By way of example, and not limitation,
Generally, the data processors of computer 130 are programmed by means of instructions stored at different times in the various computer-readable storage media of the computer. Programs and operating systems are typically distributed, for example, on floppy disks or CD-ROMs. From there, they are installed or loaded into the secondary memory of a computer. At execution, they are loaded at least partially into the computer's primary electronic memory. Aspects of the invention described herein includes these and other various types of computer-readable storage media when such media contain instructions or programs for implementing the steps described below in conjunction with a microprocessor or other data processor. Further, aspects of the invention include the computer itself when programmed according to the methods and techniques described herein.
For purposes of illustration, programs and other executable program components, such as the operating system, are illustrated herein as discrete blocks. It is recognized, however, that such programs and components reside at various times in different storage components of the computer, and are executed by the data processor(s) of the computer.
Although described in connection with an exemplary computing system environment, including computer 130, embodiments of the invention are operational with numerous other general purpose or special purpose computing system environments or configurations. The computing system environment is not intended to suggest any limitation as to the scope of use or functionality of any aspect of the invention. Moreover, the computing system environment should not be interpreted as having any dependency or requirement relating to any one or combination of components illustrated in the exemplary operating environment. Examples of well known computing systems, environments, and/or configurations that may be suitable for use with aspects of the invention include, but are not limited to, personal computers, server computers, hand-held or laptop devices, multiprocessor systems, microprocessor-based systems, set top boxes, programmable consumer electronics, mobile telephones, network PCs, minicomputers, mainframe computers, distributed computing environments that include any of the above systems or devices, and the like.
Embodiments of the invention may be described in the general context of computer-executable instructions, such as program modules, executed by one or more computers or other devices. Generally, program modules include, but are not limited to, routines, programs, objects, components, and data structures that perform particular tasks or implement particular abstract data types. Aspects of the invention may also be practiced in distributed computing environments where tasks are performed by remote processing devices that are linked through a communications network. In a distributed computing environment, program modules may be located in both local and remote computer storage media including memory storage devices.
An interface in the context of a software architecture includes a software module, component, code portion, or other sequence of computer-executable instructions. The interface includes, for example, a first module accessing a second module to perform computing tasks on behalf of the first module. The first and second modules include, in one example, application programming interfaces (APIs) such as provided by operating systems, component object model (COM) interfaces (e.g., for peer-to-peer application communication), and extensible markup language metadata interchange format (XMI) interfaces (e.g., for communication between web services).
The interface may be a tightly coupled, synchronous implementation such as in Java 2 Platform Enterprise Edition (J2EE), COM, or distributed COM (DCOM) examples. Alternatively or in addition, the interface may be a loosely coupled, asynchronous implementation such as in a web service (e.g., using the simple object access protocol). In general, the interface includes any combination of the following characteristics: tightly coupled, loosely coupled, synchronous, and asynchronous. Further, the interface may conform to a standard protocol, a proprietary protocol, or any combination of standard and proprietary protocols.
The interfaces described herein may all be part of a single interface or may be implemented as separate interfaces or any combination therein. The interfaces may execute locally or remotely to provide functionality. Further, the interfaces may include additional or less functionality than illustrated or described herein.
In operation, computer 130 executes computer-executable instructions such as those illustrated in the figures to implement aspects of the invention as illustrated in the figures.
The order of execution or performance of the operations in embodiments of the invention illustrated and described herein is not essential, unless otherwise specified. That is, the operations may be performed in any order, unless otherwise specified, and embodiments of the invention may include additional or fewer operations than those disclosed herein. For example, it is contemplated that executing or performing a particular operation before, contemporaneously with, or after another operation is within the scope of aspects of the invention.
Embodiments of the invention may be implemented with computer-executable instructions. The computer-executable instructions may be organized into one or more computer-executable components or modules. Aspects of the invention may be implemented with any number and organization of such components or modules. For example, aspects of the invention are not limited to the specific computer-executable instructions or the specific components or modules illustrated in the figures and described herein. Other embodiments of the invention may include different computer-executable instructions or components having more or less functionality than illustrated and described herein.
When introducing elements of aspects of the invention or the embodiments thereof, the articles “a,” “an,” “the,” and “said” are intended to mean that there are one or more of the elements. The terms “comprising,” “including,” and “having” are intended to be inclusive and mean that there may be additional elements other than the listed elements.
Having described aspects of the invention in detail, it will be apparent that modifications and variations are possible without departing from the scope of aspects of the invention as defined in the appended claims. As various changes could be made in the above constructions, products, and methods without departing from the scope of aspects of the invention, it is intended that all matter contained in the above description and shown in the accompanying drawings shall be interpreted as illustrative and not in a limiting sense.