Embedding information in an audio stream for connectivity

In some examples, a network connected audio system may embed information in an audio stream for connectivity. The network connected audio system may comprise a hardware processor that plays audio files and a network connectivity engine. The network connectivity engine may embed network connection information in the audio stream, transmit the audio stream with the embedded network connection information, receive network connection information from a first device, and connect the first device to the network connected audio system responsive to receiving the network connection information.

BACKGROUND

Network connected audio systems may play audio files. The audio files to be played may be received from multiple sources and/or from multiple users. In order to provide audio files to the network connected audio systems, the users may need to be connected to the network connected audio system.

DETAILED DESCRIPTION

The following detailed description refers to the accompanying drawings. Wherever possible, the same reference numbers are used in the drawings and the following description to refer to the same or similar parts. While several examples are described in this document, modifications, adaptations, and other implementations are possible. Accordingly, the following detailed description does not limit the disclosed examples. Instead, the proper scope of the disclosed examples may be defined by the appended claims.

Network connected audio systems may play audio files. Examples of a network connected audio system include a Bluetooth speaker, a WiFi connected speaker, and/or other audio device that receives information via a network and plays audio files. The audio files to be played may be received from multiple sources and/or from multiple users connected to the network. For examples, audio files may be received from local storage on a user's device, from a streaming music provider (e.g., PANDORA®, SPOTIFY®, and/or other streaming music service provider), from a cloud storage associated with a user connected to the network connected audio system, and/or from other sources. Upon receiving audio files, the network connected audio system may manage a queue of audio files to play.

As mentioned above, the network connected audio system may receive audio files across a network from these multiple sources and from multiple users. Each individual user may need to connect to the audio system to play music. This may pose several technical challenges. For example, an individual user may not know how to connect to the network on which the audio system is connected. This issue may be exacerbated if multiple users want to connect at once (e.g., during a party, etc.). Another issue may arise for maintaining security for the network. For example, the owner of the network (and the audio system) may not want a user to be able to connect to the network outside of the user providing audio files across the network.

To address this issue, the network connected audio system may embed information in an audio stream for connectivity. The network connected audio system may comprise, for example, a hardware processor that plays audio files and a network connectivity engine. The network connectivity engine may embed network connection information in the audio stream, transmit the audio stream with the embedded network connection information, receive network connection information from a first device, and connect the first device to the network connected audio system responsive to receiving the network connection information.

The network connection information may comprise, for example, network identification information of the network connected audio system, security information related to the network, error correction information related to the security information and the network identification information, and/or other information related to connecting to the network. In some examples, the network connection information may also comprise a rolling code that may be used for to ensure timeliness of connection of a device to the network connected audio system. The code may be randomly generated or generated based on information related to the current time, the network connected audio system, and/or other factors. In some examples, a first network connection information may be embedded and transmitted in the audio stream during a first predetermined time period and any device that attempts to connect to the network connected audio system may need to provide that first network connection information to connect. Second network connection information may be embedded and transmitted in the audio stream during a second time period. A device attempting to connect using the first network connection information during the second time period may be unsuccessful.

Referring now to the drawings,FIG. 1is a block diagram of an example network connected audio system100for embedding information in an audio stream for connectivity. The network connected audio system100may comprise a BLUETOOTH connected audio system, a WiFi connected audio system, or any other audio system suitable for executing the functionality described below. In the example depicted inFIG. 1, network connected audio system100includes a processor110, a network connectivity engine120, and/or other components for embedding information in an audio stream for connectivity.

As detailed below, network connected audio system100may include a hardware processor110and a set of engines (e.g., network connectivity engine120, and/or other engines) for embedding information in an audio stream for connectivity. Each of the engines may generally represent any combination of hardware and programming. For example, the programming for the engines may be processor executable instructions stored on a non-transitory machine-readable storage medium and the hardware for the engines may include at least one processor of the network connected audio system100to execute those instructions. In addition or as an alternative, each engine may include one or more hardware devices including electronic circuitry for implementing the functionality described below.

The processor110of network connected audio system100may be one or more central processing units (CPUs), microprocessors, digital signal processors, and/or other hardware devices suitable for retrieval and execution of instructions stored in a machine-readable storage medium. The processor110may fetch, decode, and execute program instructions to enable connectivity to the network connected audio system100, as described below. As an alternative or in addition to retrieving and executing instructions, the processor110may include one or more electronic circuits comprising a number of electronic components for performing the functionality of instructions stored in the machine-readable storage medium.

In one example, the instructions can be part of an installation package that can be executed by the processor110to implement the functionality described herein. In this case, the machine-readable storage medium may be a portable medium such as a CD, DVD, or flash drive or a memory maintained by a computing device from which the installation package can be downloaded and installed. In another example, the program instructions may be part of an application or applications already installed on network connected audio system100.

The non-transitory machine-readable storage medium may be any hardware storage device for maintaining data accessible to network connected audio system100. For example, the machine-readable storage medium may include one or more hard disk drives, solid state drives, tape drives, and/or any other storage devices. The storage devices may be located in network connected audio system100and/or in another device in communication with network connected audio system100. For example, the machine-readable storage medium may be any electronic, magnetic, optical, or other physical storage device that stores executable instructions. Thus, the machine-readable storage medium may be, for example, Random Access Memory (RAM), an Electrically-Erasable Programmable Read-Only Memory (EEPROM), a storage drive, an optical disc, and the like. As described in detail below, the machine-readable storage medium may be encoded with executable instructions for embedding information in an audio stream for connectivity. As detailed below, the machine-readable storage medium may maintain and/or store the data and information described herein.

As mentioned above, network connected audio system100may also comprise a network connectivity engine120.

The network connectivity engine120may embed network connection information in an audio stream that is to transmitted by the network connected audio system100to facilitate connectivity with the network connected audio system100. For example, the network connectivity engine120may embed network connection information in an audio stream transmitted by the network connected audio system100by adding in a signal or digital data into the audio stream. The signal or digital data may interrupt the audio stream being transmitted by the network connected audio system or may be transmitted alongside other data (e.g., music or other audio) being transmitted. In some examples, the network connection information embedded in the audio stream via the signal or digital data may not be detectable by human ears.

The network connection information may comprise, for example, network identification information. The network identification information may comprise an IP address of the network connected audio system100, an SSID associated with the network connected audio system100, a network ID associated with the network on which the network connected audio system100is connected, and/or other connection information related to the network and/or the network connected audio system100. In some examples, the network connection information may also comprise security information. The security information may comprise, for example, information related to a user name and password, encrypted information, and/or other security information that may be used to connect to the network connected audio system100.

In some examples, the network connection information may begin with an indicator (e.g., a set of bits that indicates that the next set of information that is transmitted by the audio stream comprises the network connection information). In some examples, the indicator may also comprise information indicating a size of the network connection information. In other examples, the network connection information may also comprise an end indicator (e.g., a set of bits that indicates that the network connection information has been transmitted).

Responsive to embedding the network connection information in the audio stream, the network connectivity engine120may transmit the audio stream with the embedded network connection information. The network connectivity engine120may transmit the audio stream over air waves, such that the audio stream may be heard by other devices, users in the vicinity of the network connected audio system, over the Internet and/or other networks, and/or by other transmission methods.

In some examples, the network connection information may be changed at predetermined time intervals to ensure timely connection of devices and/or to allow the owner of the network connected audio system100to change the set of users/devices that may be able to connect to the network connected audio system100.

For example, the network connection information may comprise a code that may be used to make sure that connection attempts to the network connected audio system are timely. For example, the network connectivity engine120may embed a first network connection information in the audio stream during a first time period and may embed a second network connection information in the audio stream during a second time period. The first network connection information may comprise a first code that is different from a second code in the second network connection information. A user/device attempting to connect to the network connected audio system100during the first time period may need to use the first network connection information with the first code in order to connect. To that end, a user/device attempting to connect to the network connected audio system100during the second time period would be unsuccessful if the user/device used the first network connection information with the first code. The user/device would need to use the second network connection information with the second code to connect to the network connected audio system during the second time period.

The first code and the second code may be randomly generated, may be pseudo-randomly generated while taking into account factors such as time or information about the network, and/or may be generated based on various factors related to time, the network, the network connected audio system100, the audio stream, and/or other factors.

In some examples, the machine-readable storage medium of the network connected audio system100may store information related to the network connection information embedded in the audio stream and may store information related to connection request information that may correspond to the network connection information, where the connection request information comprises information that may be required in order to connect to the network connected audio system100. For example, responsive to the network connected information comprising a code, the connection request information may comprise the code. Responsive to the network connection information comprising security information, the connection request information may comprise corresponding security check information (e.g., a private/public key combination, a password, etc.). Other types of network connection information and connection request information may be stored as well.

In some examples, the network connectivity engine120may include information related to the connection request information in the network connection information. For example, the network connection information may include information about the data that a device should send in order to be successfully connected to the network connected audio system100. The data may comprise, for example, specific parts of the network connection information, an indication that the entire set of network connection information should be sent, data manipulations that should be done to the network connection information, information related to decrypting information included in the network connection information, and/or other information about the data to be sent by a device to successfully connect to the network connected audio system100.

The network connectivity engine120may receive information from a first device indicating that it would like to connect to the network connected audio system (e.g., via near field communications, WiFi, Bluetooth, a wired connection, and/or other networks). The information may comprise the network connection information embedded in an audio stream transmitted by the network connected audio system100. The information received from the first device may also comprise information related to the user to be connected to the network connected audio system100.

The network connectivity engine120may determine whether to connect the first device to the network connected audio system100based on the received information. For example, the network connectivity engine120may compare the received information with the network connection information. Responsive to the received information matching the network connection information, the network connectivity engine120may connect the first device to the network connected audio system100. In other examples in which the non-transitory machine-readable storage medium stores connection request information, the network connectivity engine120may compare the received information to connection request information stored in a non-transitory machine-readable storage medium associated with the network connected audio system100. Responsive to the received information matching the connection request information, the network connectivity engine120may connect the first device to the network connected audio system100.

Responsive to connecting the first device to the network connected audio system100, the network connected audio system100may receive audio files from the first device and may play the audio files.

In some examples, the network connectivity engine120may receive requests from numerous devices to connect to the network connected audio system100and may determine, for each request, whether to connect the requesting device in a manner similar to determining whether to connect the first device as described above. For example, during a party in which the network connected audio system100is providing music, the network connectivity engine120may receive requests from multiple users/devices over a predetermined time period to connect to the network connected audio system100. The network connectivity engine120may change the network connection information transmitted by the network connected audio system100after the predetermined time period has ended.

In some examples, the network connectivity engine120may change the network connection information to be embedded in the audio stream automatically at predetermined time intervals. The network connectivity engine120may, in addition or in lieu of the automatic change, also change the network connection information responsive to receiving an indication from an administrator of the network connected audio system100to change the network connection information. In some examples, the network connectivity engine120may require information (e.g., a username/password, key, and/or other authentication information) from the administrator proving that they have authorization to change the network connection information. In some examples, the network connectivity engine120may change the network connection information responsive to one or more conditions being met (e.g., a predetermined number of unsuccessful attempts, a predetermined amount of time passing since the network connection information was changed, a change in network information of the network connected audio system100, and/or other conditions). The conditions may be stored in the non-transitory machine-readable storage medium associated with the network connected audio system100, received from an administrator of the network connected audio system100, and/or otherwise received.

FIG. 2depicts an example network connected audio system200that embeds information in an audio stream for connectivity. As with network connected audio system100, network connected audio system200may comprise a BLUETOOTH connected audio system, WiFi connected audio system, or any other network connected audio system suitable for executing the functionality described below. Network connected audio system200may comprise a processor210, a machine-readable storage medium220, and/or other components. As with the processor of network connected audio system100, processor210may be one or more CPUs, microprocessors, digital signal processor, and/or other hardware devices suitable for retrieval and execution of instructions. As with the storage medium of network connected audio system100, the machine-readable storage medium220of network connected audio system200may be any hardware storage device for maintaining data accessible to network connected audio system200and may comprise information similar to that stored in the machine-readable storage medium of network connected audio system100.

The processor210of network connected audio system200may execute computer readable instructions stored in the machine-readable storage medium220of network connected audio system200. The processor210may execute the computer readable instructions to perform functionality the same as or similar to the functionality performed by the processor110, the network connectivity engine120, and/or other components of the network connected audio system100.

For example, processor210of network connected audio system200may execute computer readable instructions stored in the machine-readable storage medium220to embed network connection information in the audio stream, transmit the audio stream with the embedded network connection information, receive first network connection information from a first device, connect the first device to the network connected audio system200responsive to receiving the first network connection information, receive second network connection information from a second device, connect the second device to the network connected audio system200responsive to receiving the second network connection information, receive information related to a first audio file from the first device, and play the first audio file.

Network connected audio system200may also be communicably coupled to one or more user devices (e.g. user devices250a,250b).

A user device250amay comprise, for example, a laptop computing device, a desktop computing device, an all-in-one computing device, a tablet computing device, a mobile phone, an electronic book reader, a network-enabled appliance such as a “Smart” television, a server, and/or other electronic device suitable for executing the functionality described below. An individual user device250amay be coupled to network connected audio system200via a network50. The network50may be any suitable network for facilitating communication between the device250aand the audio system200.

In the example depicted inFIG. 2, device250aincludes a network connectivity engine252a, and/or other components.

As detailed below, device250amay include a set of engines (e.g., network connectivity engine252a, etc.). Each of the engines may generally represent any combination of hardware and programming. For example, the programming for the engines may be processor executable instructions stored on a non-transitory machine-readable storage medium220and the hardware for the engines may include at least one processor of the device250ato execute those instructions. In addition or as an alternative, each engine may include one or more hardware devices including electronic circuitry for implementing the functionality described below. While functionality may be ascribed to a particular engine, one or more engines of the device250amay perform that functionality.

The processor of device250amay be one or more central processing units (CPUs), microprocessors, and/or other hardware devices suitable for retrieval and execution of instructions stored in a machine-readable storage medium. The processor may fetch, decode, and execute program instructions to perform the functionality described herein, as described below. As an alternative or in addition to retrieving and executing instructions, the processor may include one or more electronic circuits comprising a number of electronic components for performing the functionality of instructions stored in the machine-readable storage medium.

In one example, the instructions can be part of an installation package that can be executed by the processor to implement the functionality described herein. In this case, the machine-readable storage medium may be a portable medium such as a CD, DVD, or flash drive or a memory maintained by a computing device from which the installation package can be downloaded and installed. In another example, the program instructions may be part of an application or applications already installed on device250a.

The machine-readable storage medium may be any hardware storage device for maintaining data accessible to device250a. For example, the machine-readable storage medium may include one or more hard disk drives, solid state drives, tape drives, and/or any other storage devices. The storage devices may be located in device250aand/or in another device in communication with device250a. For example, the machine-readable storage medium may be any electronic, magnetic, optical, or other physical storage device that stores executable instructions. Thus, the machine-readable storage medium may be, for example, Random Access Memory (RAM), an Electrically-Erasable Programmable Read-Only Memory (EEPROM), a storage drive, an optical disc, and the like. As described in detail below, the machine-readable storage medium may be encoded with executable instructions. As detailed below, the machine-readable storage medium may maintain and/or store the data and information described herein.

The user device250amay provide audio files and/or information related to audio files to be played by the network connected audio system200, may provide information to connect the device250ato the network50to facilitate connection with the audio system200, may provide information to directly connect to the audio system200, may provide information about the audio settings preferences of a user, and/or may otherwise interact with the audio system200.

Network connectivity engine252amay facilitate connection of the device to the network connected audio system200(e.g., as described above). The network connectivity engine252amay receive the audio stream transmitted by the network connected audio system200, may parse the audio stream for the network connection information, and may transmit information to the network connected audio system200in order to request connection to the network connected audio system200.

The network connectivity engine252amay parse the audio stream for the network connection information. For example, the network connectivity engine252amay determine that the network connection information is being transmitted based on an indicator in the transmitted audio stream. In another example, the network connectivity engine252amay determine which information in the audio stream does not match the intended audio stream (e.g., the music or other audio being played) and may determine that the non-matching information comprises the network connection information.

Responsive to determining the network connection information from the audio stream, the network connectivity engine252amay determine information to send to the network connected audio system200to request connection. In some examples, the network connectivity engine252amay send the network connection information back to the network connected audio system200. In some examples, the network connection information may comprise information indicating what data the network connectivity engine252ashould send. In these examples, the network connectivity engine252amay determine the data to be sent and may send that data to the network connected audio system200.

Responsive to sending information to connect to the network connected audio system200, the network connectivity engine252amay receive a response from the network connected audio system200indicating whether connection was successful or not. Responsive to the connection being successful, the device250amay send one or more audio files to be played by the network connected audio system200.

In the example depicted inFIG. 2, each device250A and250B each have a respective network connectivity engine252A,252B that facilitates connection to the network connected audio system200.

FIG. 3is a flowchart of an example method for execution by a system for embedding information in an audio stream for connectivity.

Although execution of the method described below is with reference to network connected audio systems100and200ofFIGS. 1 and 2, other suitable devices for execution of this method will be apparent to those of skill in the art. The method described inFIG. 3and other figures may be implemented in the form of executable instructions stored on a machine-readable storage medium, by one or more engines described herein, and/or in the form of electronic circuitry.

In an operation300, network connection information may be embedded in an audio stream played by the network connected audio system. For example, the network connected audio system100(and/or the processor110, network connectivity engine120, or other resource of the network connected audio system100) may embed the network connection information in the audio stream. The network connected audio system100may embed the network connection information in the audio stream in a manner similar or the same as that described above in relation to the execution of the processor110, network connectivity engine120, or other resource of the network connected audio system100.

In an operation310, the network connected audio system may transmit the audio stream with the embedded network connection information. For example, the network connected audio system100(and/or the processor110, network connectivity engine120, or other resource of the network connected audio system100) may transmit the audio stream with the embedded network connection information. The network connected audio system100may transmit the audio stream with the embedded network connection information in a manner similar or the same as that described above in relation to the execution of the processor110, network connectivity engine120, or other resource of the network connected audio system100.

In an operation320, the network connected audio system may receive the first network connection information from the first device. For example, the network connected audio system100(and/or the processor110, network connectivity engine120, or other resource of the network connected audio system100) may receive the first network connection information from the first device. The network connected audio system100may receive the first network connection information from the first device in a manner similar or the same as that described above in relation to the execution of the processor110, network connectivity engine120, or other resource of the network connected audio system100.

In an operation330, the network connected audio system may connect the first device responsive to the network connected audio system receiving the first network connection information from the first device. For example, the network connected audio system100(and/or the processor110, network connectivity engine120, or other resource of the network connected audio system100) may connect the first device. The network connected audio system100may connect the first device in a manner similar or the same as that described above in relation to the execution of the processor110, network connectivity engine120, or other resource of the network connected audio system100.

In an operation340, the network connected audio system may receive the first network connection information from the second device. For example, the network connected audio system100(and/or the processor110, network connectivity engine120, or other resource of the network connected audio system100) may receive the first network connection information from the second device. The network connected audio system100may receive the first network connection information from the second device in a manner similar or the same as that described above in relation to the execution of the processor110, network connectivity engine120, or other resource of the network connected audio system100.

In an operation350, the network connected audio system may connect the second device responsive to the network connected audio system receiving the first network connection information from the second device. For example, the network connected audio system100(and/or the processor110, network connectivity engine120, or other resource of the network connected audio system100) may connect the second device. The network connected audio system100may connect the second device in a manner similar or the same as that described above in relation to the execution of the processor110, network connectivity engine120, or other resource of the network connected audio system100.

The foregoing disclosure describes a number of examples of an audio system for embedding information in an audio stream for connectivity. For purposes of explanation, certain examples are described with reference to the components illustrated inFIGS. 1-3. The functionality of the illustrated components may overlap, however, and may be present in a fewer or greater number of elements and components. Further, all or part of the functionality of illustrated elements may co-exist or be distributed among several geographically dispersed locations. Moreover, the disclosed examples may be implemented in various environments and are not limited to the illustrated examples.

Further, the sequence of operations described in connection withFIGS. 1-3are examples and are not intended to be limiting. Additional or fewer operations or combinations of operations may be used or may vary without departing from the scope of the disclosed examples. Furthermore, implementations consistent with the disclosed examples need not perform the sequence of operations in any particular order. Thus, the present disclosure merely sets forth possible examples of implementations, and many variations and modifications may be made to the described examples. All such modifications and variations are intended to be included within the scope of this disclosure and protected by the following claims.