The creation of music is a popular activity enjoyed by many people. Various devices may be used to enable a user to create music. For example, a user may connect a musical instrument such as a piano keyboard to a computer system. This enables the user to create music using the keyboard and record the music on the computer system. The user may connect various other devices such as speakers to the keyboard and/or computer system. Such devices are typically connected together using wires.
Embodiments generally relate to processing music. In one embodiment, a method includes receiving a layout configuration having nodes. The method also includes receiving an information flow configuration that indicates information flow among the nodes. The method also includes associating devices with the nodes. The method also includes causing information to flow among the devices based on the information flow configuration.
In another embodiment, a computer-readable storage medium carries one or more sequences of instructions thereon. The instructions when executed by a processor cause the processor to perform operations including receiving a layout configuration having nodes. The instructions further cause the processor to perform operations including receiving an information flow configuration that indicates information flow among the nodes. The instructions further cause the processor to perform operations including associating devices with the nodes. The instructions further cause the processor to perform operations including causing information to flow among the devices based on the information flow configuration.
In another embodiment, a system includes one or more processors, and includes logic encoded in one or more tangible media for execution by the one or more processors. When executed, the logic is operable to perform operations including receiving a layout configuration having nodes. The logic is further operable to perform operations including receiving an information flow configuration that indicates information flow among the nodes. The logic is further operable to perform operations including associating devices with the nodes. The logic is further operable to perform operations including causing information to flow among the devices based on the information flow configuration.
Embodiments described herein enable a user to process music by conveniently connecting various devices together in a network. In some embodiments, a system receives a layout configuration, where the layout configuration has nodes that represent relative physical positions. For example, the node may represent physical positions of devices used to create and process music. Such devices may include, for example, one or more musical instruments (e.g., electronic keyboard, guitar, etc.), one or more sound effects devices (e.g., distortion, reverb, etc.), and any other device for music generation and processing. In some implementations, a user may first provide the layout configuration to the system as desired and then layout the devices in accordance with the layout configuration. Conversely, in some implementations, a user may first layout the devices as desired and then provide the layout configuration to the system in accordance with the layout of the devices.
The system then receives an information flow configuration that indicates information flow among the nodes. The system also displays the layout configuration and the information flow configuration to the user. The system then associates the devices with the plurality of nodes, where the associating is based on relative physical positions of the devices. The system then causes information to flow among the devices based on the information flow configuration. In various implementations, the system detects changes to relative physical positions of the devices, and re-associates the devices with the nodes based on the detecting of the changes.
As a result, the user has the experience of creating and processing music using various devices. Embodiments also enable the user to conveniently reconfigure the devices and information flow among the devices.
Music application 108 may be stored on memory 106 or on any other suitable storage location or computer-readable medium. Music application 108 provides instructions that enable processor 102 to perform the functions described herein. In various embodiments, music application 108 may run on any electronic device including smart phones, tablets, computers, etc.
In various embodiments, touchscreen 114 may include any suitable interactive display surface or electronic visual display that can detect the presence and location of a touch within the display area. Touchscreen 114 may support touching the display with a finger or hand, or any suitable passive object, such as a stylus. Any suitable display technology (e.g., liquid crystal display (LCD), light emitting diode (LED), etc.) can be employed in touchscreen 114. In addition, touchscreen 114 in particular embodiments may utilize any type of touch detecting technology (e.g., resistive, surface acoustic wave (SAW) technology that uses ultrasonic waves that pass over the touchscreen panel, a capacitive touchscreen with an insulator, such as glass, coated with a transparent conductor, such as indium tin oxide (ITO), surface capacitance, mutual capacitance, self-capacitance, projected capacitive touch (PCT) technology, infrared touchscreen technology, optical imaging, dispersive signal technology, acoustic pulse recognition, etc.).
In various embodiments, processor 102 may be any suitable processor or controller (e.g., a central processing unit (CPU), a general-purpose microprocessor, a microcontroller, a microprocessor, etc.). Further, operating system 104 may be any suitable operating system (OS), or mobile OS/platform, and may be utilized to manage operation of processor 102, as well as execution of various application software. Examples of operating systems include Android from Google, iPhone OS (iOS), Berkeley software distribution (BSD), Linux, Mac OS X, Microsoft Windows, and UNIX.
In various embodiments, memory 106 may be used for instruction and/or data memory, as well as to store music and/or video files created on or downloaded to system 100. Memory 106 may be implemented in one or more of any number of suitable types of memory (e.g., static random access memory (SRAM), dynamic RAM (DRAM), electrically erasable programmable read-only memory (EEPROM), etc.). Memory 106 may also include or be combined with removable memory, such as memory sticks (e.g., using flash memory), storage discs (e.g., compact discs, digital video discs (DVDs), Blu-ray discs, etc.), and the like. Interfaces to memory 106 for such removable memory may include a universal serial bus (USB), and may be implemented through a separate connection and/or via network connection 110.
In various embodiments, network connection 110 may be used to connect other devices and/or instruments to system 100. For example, network connection 110 can be used for wireless connectivity (e.g., Wi-Fi, Bluetooth, etc.) to the Internet (e.g., navigable via touchscreen 114), or to another device. Network connection 110 may represent various types of connection ports to accommodate corresponding devices or types of connections. For example, additional speakers (e.g., Jawbone wireless speakers, or directly connected speakers) can be added via network connection 110. Also, headphones via the headphone jack can also be added directly, or via wireless interface. Network connection 110 can also include a USB interface to connect with any USB-based device.
In various embodiments, network connection 110 may also allow for connection to the Internet to enable processor 102 to send and receive music over the Internet. As described in more detail below, in some embodiments, processor 102 may generate various instrument sounds coupled together to provide music over a common stream via network connection 110.
In various embodiments, speaker 116 may be used to play sounds and melodies generated by processor 102. Speaker 116 may also be supplemented with additional external speakers connected via network connection 110, or multiplexed with such external speakers or headphones.
For ease of illustration, only four nodes and four devices are shown in
Referring still to
In various implementations, the user may use any suitable configuration tool to configure node layout configuration 300, such as the number of nodes and their relative positions. In various implementations, the user may use any suitable user interface including gestures, mouse inputs, key inputs to provide node layout configuration 300 and selections. In some implementations, processor 102 may enable the user to select a node (e.g., via predetermined gesture, click of a mouse or key, touch of a touchscreen, etc.). Processor 102 then enables the user to drag nodes around the screen to desired positions. Once the user is satisfied with node layout configuration 300, processor 102 may fix/lock node layout configuration 300.
In block 204, processor 102 receives an information flow configuration that indicates information flow among the nodes. In some implementations, processor 102 may enable the user to indicate information flow configuration in a variety of ways. In some implementations, processor 102 may enable the user to drag one node to another node to indication a direction of information flow. For example, the user may drag node 302 toward node 304 to touch or overlay node 304. This establishes a direction of information flow from node 302 to node 304. Similarly, the user may drag node 304 toward node 306 to touch or overlay node 306. This establishes a direction of information flow from node 304 to node 306. Similarly, the user may drag node 306 toward node 308 to touch or overlay node 308. This establishes a direction of information flow from node 306 to node 308. This is one example of establishing an information flow configuration, and the particular method for establishing an information flow configuration will depend on the particular implementation.
In some implementations, processor 102 may cause the resulting information flow configuration to be displayed to the user by adding information flow indicators to the layout configuration. The information flow indicators indicate direction/flow of information among nodes. For example, referring to
In block 206, processor 102 associates devices with the nodes. In various implementations, processor 102 associates the devices with the nodes based on the relative physical positions of the devices. In other words, processor 102 associates the devices with the nodes depending on how the devices are physically laid out on one or more surfaces. An example method for associating the devices with the nodes is described in detail below in connection with
In block 208, processor 102 causes information to flow among the devices based on the information flow configuration. Referring again to
In block 404, processor 102 determines the relative physical positions of the devices. In various implementations, processor 102 may utilize any suitable method, algorithm, and/or technology to determine the relative physical positions of the devices. For example, processor 102 may measure and determine a signal strength from a signal transmitted by each of devices 312, 314, 316, and 318. In some implementations, processor 102 may utilize any suitable triangulation method to determine relative physical positions of devices 312, 314, 316, and 318.
In block 406, processor 102 maps each device to a node based on the relative physical positions of the devices. As indicated above, processor 102 may fix or lock the layout configuration of the nodes. The user may physically move devices around such that the layout configuration of the devices corresponds to the layout configuration of the nodes. Processor 102 may then map each device to a node.
In block 408, processor 102 associates the plurality of devices with the plurality of nodes based on the mapping. In some implementations, processor 102 determines the device identifications of the devices, where each device identification corresponds to one of the devices. The device identification may be provided by each device as signals are transmitted and/or manually by the user. In some implementations, processor 102 may save the configurations in a musical instrument digital interface (MIDI) midi map, or in a map in accordance with any other suitable standard and/or protocol for communication among electronic musical instruments, computers, and other related devices.
In some implementations, processor 102 may enable the user to designate a hub node or core node. As such, the device that is mapped to/associated with the core node becomes the designated core device, where system 102 determines the positions of the other devices relative to the core device. While any give device may be the core device, in some implementations, the core device may be one having a display screen or the largest display screen. In some implementations, the core device may host system 100 and/or may display the user interface that enables the user to configure the nodes and devices, the information flows, as well as display the various configurations to the user.
In various implementations, processor 102 causes one or more of the node layout configuration (e.g., node layout configuration 300 of
In various implementations, processor 102 may detect such changes based on any suitable method, algorithm, and/or technology that determines the physical locations of devices. In some implementations, processor 102 may determine the relative physical layout 710 at predetermined periodic time periods (e.g., every S seconds). If/when processor 102 detects a change to the relative physical layout, processor 102 may then determine the new relative physical layout.
Based on such changes, in block 604, processor 102 then re-associates the devices with the plurality of nodes based the changes (e.g., based on the new relative physical positions of the devices).
In block 606, processor 102 causes information to flow among the devices based on the changes and the information flow configuration.
Referring to
A benefit of the detection of changes to the relative physical positions and re-association of the devices is that the user (e.g., a musician, disk jockey, etc.) may intentionally change the information in real-time while performing. For example, if one of the devices is a guitar, the user may move to different parts of the stage to different positions relative to other devices and change the information flow (e.g., the order in which the signal is routed through the devices).
In various implementations, active or reactivated nodes may be represented by a square or any other shape or marking. Inactive or deactivated nodes may be represented by a circle or any other shape or marking distinguishing such nodes from active or reactivated nodes, as shown in
Referring to
As described in detail below in connection with
Referring to both
Referring to
As described in detail below in connection with
Referring to both
Referring to
Embodiments described herein provide various benefits. For example, embodiments enable professional and non-professional musicians to quickly and conveniently create and process music using various devices. Embodiments also enable the user to conveniently reconfigure the devices and information flow among the devices.
Although the description has been described with respect to particular embodiments thereof, these particular embodiments are merely illustrative, and not restrictive. Any suitable programming language can be used to implement the routines of particular embodiments including C, C++, Java, assembly language, etc. Different programming techniques can be employed such as procedural or object oriented. The routines can execute on a single processing device or multiple processors. Although the steps, operations, or computations may be presented in a specific order, this order may be changed in different particular embodiments. In some particular embodiments, multiple steps shown as sequential in this specification can be performed at the same time.
Particular embodiments may be implemented in a computer-readable storage medium for use by or in connection with the instruction execution system, apparatus, system, or device. Particular embodiments can be implemented in the form of control logic in software or hardware or a combination of both. The control logic, when executed by one or more processors, may be operable to perform that which is described in particular embodiments.
Particular embodiments may be implemented by using a programmed general purpose digital computer, by using application specific integrated circuits, programmable logic devices, field programmable gate arrays, optical, chemical, biological, quantum or nanoengineered systems, components and mechanisms may be used. In general, the functions of particular embodiments can be achieved by any means as is known in the art. Distributed, networked systems, components, and/or circuits can be used. Communication, or transfer, of data may be wired, wireless, or by any other means.
It will also be appreciated that one or more of the elements depicted in the drawings/figures can also be implemented in a more separated or integrated manner, or even removed or rendered as inoperable in certain cases, as is useful in accordance with a particular application. It is also within the spirit and scope to implement a program or code that can be stored in a machine-readable medium to permit a computer to perform any of the methods described above.
A “processor” includes any suitable hardware and/or software system, mechanism or component that processes data, signals or other information. A processor can include a system with a general-purpose central processing unit, multiple processing units, dedicated circuitry for achieving functionality, or other systems. Processing need not be limited to a geographic location, or have temporal limitations. For example, a processor can perform its functions in “real time,” “offline,” in a “batch mode,” etc. Portions of processing can be performed at different times and at different locations, by different (or the same) processing systems. A computer may be any processor in communication with a memory. The memory may be any suitable processor-readable storage medium, such as random-access memory (RAM), read-only memory (ROM), magnetic or optical disk, or other tangible media suitable for storing instructions for execution by the processor.
As used in the description herein and throughout the claims that follow, “a”, “an”, and “the” includes plural references unless the context clearly dictates otherwise. Also, as used in the description herein and throughout the claims that follow, the meaning of “in” includes “in” and “on” unless the context clearly dictates otherwise.
Thus, while particular embodiments have been described herein, latitudes of modification, various changes, and substitutions are intended in the foregoing disclosures, and it will be appreciated that in some instances some features of particular embodiments will be employed without a corresponding use of other features without departing from the scope and spirit as set forth. Therefore, many modifications may be made to adapt a particular situation or material to the essential scope and spirit.