Apparatus and method for unit composition
By receiving user data, filtering and selecting music modules, unique music can be generated in real time, solving the problem that portable device users cannot create new music in real time and meeting users' personalized music needs.
Patent Information
- Authority / Receiving Office
- CN · China
- Patent Type
- Patents(China)
- Current Assignee / Owner
- Filing Date
- 2017-06-30
- Publication Date
- 2026-03-27
AI Technical Summary
Portable electronic device users cannot generate new music in real time, and existing technology cannot meet users' needs to select music in real time based on their mood, activity, and environment.
By receiving user data, filtering and selecting datasets from multiple modules, generating and arranging units, and combining path overlap and transformation rules, music can be created in real time.
It enables the generation of unique music in real time based on user data, meeting users' music selection needs in different situations.
Smart Images

Figure CN115762451B_ABST
Abstract
Description
[0001] This application is a divisional application of application number 201780052139.2, filed on June 30, 2017, having the title "Apparatus and method for cellular composition". TECHNICAL FIELD
[0002] The present invention relates generally to apparatus, methods and systems for cellular composition, i.e. the generation of music from cells, i.e. short musical motifs. BACKGROUND
[0003] Music is often listened to on portable electronic devices such as mobile phones, smart phones, tablet devices and laptop computers. Users of portable electronic devices typically select a piece of music to listen to from a selection of many pre-recorded pieces of music stored on the device (or accessed by the device) or by selecting a radio station that broadcasts pre-recorded music. Users can select a particular piece of music to listen to according to their mood, what they are doing (e.g. relaxing, doing exercise, falling asleep, etc.) and / or their environment or surroundings. Generally, users of such devices cannot generate new music in real time when they are performing another activity, e.g. running.
[0004] The present applicant has recognised a need for improved techniques for providing music. SUMMARY
[0005] According to a first aspect of the present invention there is provided a method of cellular composition comprising: at a first apparatus: receiving a request for cellular composition; receiving user data; and transmitting a control signal comprising the request and the user data to a second apparatus; at the second apparatus: receiving the control signal from the first apparatus; filtering at least one data set containing a plurality of modules in response to the received user data, each module comprising a plurality of cells; selecting at least one cell from the filtered at least one data set; and arranging the at least one cell according to a path in response to the control signal.
[0006] According to a second aspect of the present invention there is provided a system for cellular composition, the system comprising: a first apparatus configured to: receive a request for cellular composition; receive user data; and generate a control signal comprising the request and the user data; and a second apparatus configured to: receive the control signal from the first apparatus; filter at least one data set containing a plurality of modules in response to the received user data, each module comprising a plurality of cells; select at least one cell from the filtered at least one data set; and generate a control signal comprising the selected at least one module; and arrange the at least one cell according to a path in response to the control signal.
[0007] In embodiments, the step of selecting at least one cell comprises selecting, at the second device, a first cell from the first filtered dataset and a second cell from the second filtered dataset based on the properties of the first cell, the method further comprising: at the second device: arranging the first cell according to a first path; arranging the second cell according to a second path; and wherein the first path and the second path at least partially overlap. The first module can be selected from a harmony dataset, and the second module can be selected from one of a beat dataset, a solo dataset, or an atmosphere dataset. The first path and the second path at least partially overlap, such that, for example, the harmony of the first module and the musical element of the second module at least partially overlap each other to form a cell composition.
[0008] In embodiments, the cell composition process can comprise receiving, at the first device, at least one variation of the user data; and transmitting a modified control signal.
[0009] The step of transmitting the modified control signal can comprise, for each variation of the user data, determining a variation type and a variation magnitude; and generating the modified control signal comprising each determined variation type and variation magnitude.
[0010] In embodiments, the cell composition process can comprise (at the second device) receiving the modified control signal; identifying at least one transition rule corresponding to each determined variation type and variation magnitude; and applying the at least one transition rule to the cell composition.
[0011] The step of applying the at least one transition rule can comprise: identifying a cell to be replaced in the cell composition; determining properties of the identified cell; selecting a new cell from within the at least one dataset based on the transition rule and the determined properties of the cell; and replacing the identified cell in the cell composition with the selected new cell.
[0012] According to another aspect of the application, there is provided a device for generating / composing music, the device comprising: a user interface configured to receive a request to compose music; and a processor configured to, in response to the received request: receive user data; filter at least one dataset containing a plurality of pre-recorded musical items in response to the received user data; select at least one pre-recorded musical item from the filtered at least one dataset; compose music using the or each selected pre-recorded musical item; and generate metadata associated with the composed music.
[0013] According to another aspect of the application, there is provided a method for generating / composing music, the method comprising: receiving a request to compose music; receiving user data; filtering at least one data set containing a plurality of pre-recorded music items in response to the received user data; selecting at least one pre-recorded music item from the filtered at least one data set; generating music using the or each selected pre-recorded music item; and generating metadata associated with the composed music.
[0014] According to another aspect of the application, there is provided a system for generating / composing music, the system comprising: a remote data store comprising at least one data set containing a plurality of pre-recorded music items; and a device comprising: a user interface configured to receive a request to compose music; a processor; and a communication module coupled to the processor to: receive user data; transmit the received user data to the remote data store together with the request to compose music; and wherein the processor is configured to generate metadata associated with the composed music.
[0015] The following features apply equally to each aspect of the application.
[0016] The cell composition / music generation method can be implemented on a single device (e.g. a user device). The device can be any user electronic device such as, but not limited to, a computer, a laptop, a desktop PC, a smartphone, a smartwatch or a tablet. The device can more broadly be any device owned or used by a user such as an Internet of Things (IoT) device, a toy (e.g. a remote control car, an action figure, etc.), a gaming system (e.g. a computer gaming system, a virtual reality gaming system, etc.), a virtual reality device / headset / system, a vehicle (e.g. a car), etc. In embodiments, the device comprises means for connecting to a remote data store containing pre-recorded music items, such as via the internet or via a mobile (cellular) network. In embodiments, the user’s movements can be used to compose music, which can be detected via the user device (or by sensors / devices which can be coupled to the user device). In embodiments, the movements of the device or movements associated with the device can be used to compose music. For example, the movements of a character in a video game, an avatar in a virtual reality environment, a car or a toy can be used to compose music.
[0017] In embodiments, the steps of the cell composition / music generation method can be distributed between two or more devices, for example between a user device and a remote server, or between a remote server and a music production component, or between a user device, a remote server and a music production component. Thus, in the following, the processor performing the steps of the cell composition / music generation process can be located in the user device, the remote server and / or the music production component.
[0018] In embodiments, the processor (located in the user device, or remote from the device) is configured to: select at least two pre-recorded music items from the at least two filtered data sets; and combine the selected pre-recorded music items to compose (original) music.
[0019] In embodiments, the processor (located in the user device, or remote from the device) is configured to compose music by modifying a characteristic of the selected pre-recorded music items or each selected pre-recorded music item. Preferably, the processor modifies the characteristic of the selected pre-recorded music items or each selected pre-recorded music item by modifying at least one of pitch, tone, melody, rhythm, timbre, form and tempo.
[0020] The at least one data set (located in the user device, or remote from the device) comprises a harmony data set, and the processor is configured to: filter the harmony data set in response to the received user data; and select a pre-recorded music item from the filtered harmony data set.
[0021] In embodiments, the at least one data set (located in the user device, or remote from the device) comprises a harmony data set, a tempo data set, a solo data set and a mood data set, and wherein the processor is configured to: filter the harmony data set, the tempo data set, the solo data set and the mood data set in response to the received user data; and select a first pre-recorded music item from the filtered harmony data set; and select a further pre-recorded music item from one or more of the filtered tempo data set, the filtered solo data set and the filtered mood data set. The processor (in the device or remote from the device) is configured to combine the selected first pre-recorded music item and the further pre-recorded music item or each further pre-recorded music item to compose music.
[0022] In embodiments, the processor is configured to further filter the tempo data set, the solo data set and the mood data set based on the selected first pre-recorded music item.
[0023] In embodiments, the processor is configured to: receive a change in the user data; and modify the composed music in response to the change in the user data. The processor can modify the composed music by modifying at least one characteristic of the composed music. Additionally or alternatively, the processor can modify the composed music by: selecting at least one further pre-recorded music item from the at least one data set; and replacing one pre-recorded music item in the composed music with the selected further pre-recorded music item.
[0024] The user data can comprise one or more of: a time at which the request to compose music was received, a date at which the request to compose music was received, weather conditions at the time the request to compose music was received, biometric data, pace, speed, mode of travel, heart rate, location, GPS location and direction of movement. Thus, the user data can comprise data about the user, data relating to conditions at the time the request to compose music was received (e.g. time, date, weather) or a combination of both. The user data can be obtained from one or more sensors (such as an accelerometer, pedometer, heart rate monitor, fitness tracker, GPS tracker etc.) (contained within the user device / apparatus or located externally to the user device). The condition data (e.g. for time and date) can be obtained from the user device itself via the internet (e.g. a weather data website, national or regional weather service or Met Office weather data website) etc.
[0025] In embodiments, the processor (in the user apparatus or remote from the user apparatus) is configured to: receive a change in the user data relating to one or more of pace, speed and heart rate; and modify the composed music in response to the change in the user data.
[0026] In embodiments, the processor is configured to: receive a change in the user data relating to one or more of pace, speed and heart rate; select a further pre-recorded music item from the beat data set in response to the change in the user data; and modify the composed music to incorporate the further pre-recorded music item from the beat data set.
[0027] In embodiments, the processor is configured to: receive a change in the user data relating to direction of travel; and modify a tonality of the composed music in response to the change in the user data. For example, the processor: determines an angle at which the direction of travel changed; determines a predetermined change in tonality corresponding to the determined angle from a lookup table; and modifies the composed music to the determined predetermined tonality.
[0028] In embodiments, the processor is configured to: receive a change in the user data relating to location; select a further pre-recorded music item from the atmosphere data set in response to the change in the user data; and modify the composed music to incorporate the further pre-recorded music item from the atmosphere data set.
[0029] In embodiments, the processor is configured to change at least one feature of the composed music after a predetermined period of time if no change in the user data is received within that period of time.
[0030] In embodiments, the user interface of the apparatus is configured to receive an operation mode selection, and the processor (in the user apparatus or remote from the user apparatus) is configured to filter at least one data set containing a plurality of pre-recorded music items in response to the selected operation mode.
[0031] In embodiments, the user interface is configured to receive a selection of one or more of a key, a mode, and a variation, and the processor is configured to filter at least one data set containing a plurality of pre-recorded music items in response to the received selection.
[0032] In embodiments, the apparatus comprises a data store to store the generated metadata. The data store in the apparatus can contain at least one data set of pre-recorded music items. In additional or alternative embodiments, at least one data set of pre-recorded music items is located in a remote data store.
[0033] In embodiments, the apparatus comprises a communication module configured to receive user data from an external device. The external device can be a sensor, such as an accelerometer, a pedometer, a heart rate monitor, a fitness tracker, a GPS tracker, or the like.
[0034] The communication module can be configured to transmit user data to a remote data store comprising at least one data set containing pre-recorded music items; receive at least one pre-recorded music item from the remote data store. Additionally or alternatively, the communication module can be configured to transmit user data to a remote data store comprising at least one data set containing pre-recorded music items; receive composed music from the remote data store based on the user data.
[0035] In embodiments, the user interface of the apparatus is configured to receive feedback data regarding the composed music. The processor can be configured to filter at least one data set containing pre-recorded music items in response to the received feedback data.
[0036] In embodiments, the apparatus comprises a camera configured to capture an image or record a video, and the processor is configured to output the composed music; determine that the camera has captured an image when the composed music is output; create a link between the captured image and the composed music.
[0037] In embodiments, the user interface is configured to receive a request to replay the composed music, and the processor is configured to retrieve metadata associated with the composed music; use the metadata to retrieve a pre-recorded music item or each pre-recorded music item forming the composed music from at least one data set; modify the retrieved pre-recorded music item or each retrieved pre-recorded music item using the metadata; and re-compose the composed music.
[0038] In embodiments, the method comprises selecting at least two pre-recorded music items from at least two filtered data sets; and combining the selected pre-recorded music items to compose music.
[0039] The step of composing music can comprise modifying a characteristic of the or each selected pre-recorded music item. Additionally or alternatively, the step of composing music can comprise receiving a change in user data; and modifying at least one characteristic of the composed music in response to the change in user data.
[0040] In embodiments, the method comprises receiving a change in user data relating to a direction of travel; determining an angle of change in the direction of travel; using a lookup table to determine a predetermined change in tonality corresponding to the determined angle; and modifying the composed music to the determined predetermined tonality.
[0041] In embodiments, the method further comprises receiving feedback data regarding the composed music; and filtering at least one data set containing pre-recorded music items in response to the received feedback data.
[0042] In embodiments, the method further comprises outputting the composed music; receiving an image captured by a camera at the time the composed music is outputted; and creating a link between the captured image and the composed music.
[0043] In embodiments, the remote data store is configured to filter at least one data set containing pre-recorded music items in response to received user data; and select at least one pre-recorded music item from the filtered at least one data set.
[0044] The remote data store can be configured to transmit the selected at least one pre-recorded music item to the communication module of the device, and wherein the processor is configured to compose music using the selected at least one pre-recorded music item.
[0045] The remote processor can be configured to receive the selected at least one pre-recorded music item from the remote data store; compose music using the selected pre-recorded music item or each selected pre-recorded music item; and transmit the composed music to the communication module of the device.
[0046] The remote processor can be configured to receive at least two selected pre-recorded music items from the remote data store; and combine the received pre-recorded music items to compose music.
[0047] The remote processor can be configured to compose music by modifying a characteristic of the or each selected pre-recorded music item.
[0048] The remote data store can comprise a harmony data set, a beat data set, a solo data set, and a mood data set, and wherein the remote processor is configured to: filter the harmony data set, the beat data set, the solo data set, and the mood data set in response to the received user data; and select a first pre-recorded music item from the filtered harmony data set; and select a further pre-recorded music item from one or more of the filtered beat data set, the filtered solo data set, and the filtered mood data set.
[0049] The communication module of the apparatus can be configured to: receive a change in user data; and transmit the received change in user data to the remote processor. The remote processor can be configured to: modify the composed music in response to the change in user data; and transmit the modified composed music to the communication module.
[0050] The system can further comprise at least one sensor to sense user data. In particular embodiments, the at least one sensor can be contained within the apparatus. In additional or alternative embodiments, the at least one sensor can be coupled to the apparatus via wired or wireless means. The at least one sensor can be configured to sense one or more of biometric data, pace, speed, heart rate, position, GPS position, and direction of movement.
[0051] In embodiments, the remote processor is configured to: receive a change in user data relating to one or more of pace, speed, and heart rate; and modify the beat of the composed music in response to the change in user data.
[0052] In a related aspect of the invention, there is provided a non-transitory data carrier carrying processor control code to implement the methods described herein.
[0053] As will be recognized by those skilled in the art, the technology can be embodied as a system, method, or computer program product. Accordingly, the technology can take the form of an entirely hardware embodiment, an entirely software embodiment, or an embodiment combining software and hardware aspects.
[0054] Furthermore, the technology can take the form of a computer program product embodied in a computer readable medium having computer readable program code embodied thereon. The computer readable medium can be a computer readable signal medium or a computer readable storage medium. A computer readable storage medium can be, for example, but not limited to, electronic, magnetic, optical, electromagnetic, infrared, or semiconductor system, apparatus, or device, or any suitable combination of the foregoing.
[0055] Computer program code for carrying out operations of the present technology can be written in any combination of one or more programming languages, including object oriented programming languages and conventional procedural programming languages. The code components can be embodied in processes, methods, etc., and can include sub-components, which can take the form of instructions or sequences of instructions at any of the levels of abstraction of the direct machine instructions of a native instruction set to high-level compiled or interpreted language structures.
[0056] Embodiments of the present technology also provide a non-transitory data carrier carrying code which, when implemented on a processor, causes the processor to perform the methods described herein.
[0057] The technologies also provide processor control code to implement the above-described methods, for example, on a general purpose computer system or Digital Signal Processor (DSP). The technologies also provide a carrier carrying the processor control code, to implement any of the above-described methods when run on a processor, particularly on a non-transitory data carrier such as a disk, microprocessor, CD-ROM or DVD-ROM, programmed memory such as read-only memory (firmware), or on a data carrier, e.g. an optical or electrical signal carrier. The code can be provided on a carrier such as a disk, microprocessor, CD-ROM or DVD-ROM, programmed memory such as non-volatile memory (e.g. flash), or read-only memory (firmware). Code (and / or data) implementing embodiments of the technologies can comprise source, object or executable code in a conventional programming language interpreted on a conventional general purpose computer, or in an assembly language or a compiled form, or code for setting up or controlling an ASIC (Application Specific Integrated Circuit) or FPGA (Field Programmable Gate Array). Such code and / or data can be distributed over several coupled components in communication with one another. The technologies can include a controller including a microprocessor, working memory and programmable memory coupled to one or more components of a system.
[0058] Those skilled in the art will also appreciate that all or portions of the logic method according to the preferred embodiments of the present technology can be embodied in a logic apparatus including a logic machine that executes the steps of the above- described methods, and that such logic machine can include components such as a processor, microprocessor, embedded controller, special- purpose computer, or the like. Such logic apparatus can further include components such as one or more memory machines, such as volatile memory, non-volatile memory, or the like, coupled to the logic machine, including a program memory, which can include a non-transitory data carrier, such as a disk, microprocessor, CD-ROM or DVD-ROM, programmed memory such as read-only memory (firmware), or the like. The logic machine can include a processor, which can include a microprocessor, embedded controller, special-purpose computer, or the like. The logic machine can include a program memory, which can include a non-transitory data carrier, such as a disk, microprocessor, CD-ROM or DVD-ROM, programmed memory such as read-only memory (firmware), or the like.
[0059] In an embodiment, this technology can be implemented in the form of a data carrier having functional data thereon, the functional data including functional computer data structures, which, when loaded into a computer system or network and operated thereon, enable the computer system to perform all the steps of the above-described method. Brief description of the attached diagram
[0060] These technologies are schematically illustrated by way of example in the accompanying drawings, wherein:
[0061] Figure 1A A schematic diagram of a device used to generate music is shown;
[0062] Figure 1B A schematic diagram of a system used for music composition is shown;
[0063] Figure 1C A schematic diagram of the system used for unit composition is shown;
[0064] Figure 2A Showing the use Figure 1A A schematic diagram of a system that generates music using a device;
[0065] Figure 2B A schematic diagram of a music dataset containing pre-recorded music projects of different types is shown;
[0066] Figure 3 A flowchart showing example steps in creating music is displayed;
[0067] Figure 4 A more detailed flowchart showing the example steps of creating music;
[0068] Figure 5 A flowchart showing example steps for selecting a music project to create music;
[0069] Figure 6 A flowchart showing example steps for creating music in response to a user walking or running;
[0070] Figure 7 A flowchart showing example steps for creating music in response to a user sitting or resting;
[0071] Figure 8 A flowchart showing example steps for creating music in sleep mode;
[0072] Figure 9 Showing the process used to generate music Figure 1A A diagram illustrating the user interface on the device;
[0073] Figure 10 It is a diagram illustrating an example of how musical items can be combined to create music;
[0074] Figure 11 is a schematic showing how changes in the direction of motion of a user cause changes in the pitch of the music being composed;
[0075] Figure 12 is a schematic showing how changes in the motion of a user cause changes in the music being composed;
[0076] Figure 13 is a flowchart of example steps to re-compose previously composed music;
[0077] Figure 14 is a flowchart of example steps to link a captured image with a piece of composed music;
[0078] Figure 15 is a flowchart of example steps to obtain user feedback on composed music;
[0079] Figure 16 shows a schematic of the steps of composing music in a music generation system;
[0080] Figure 17 shows a schematic of the components of a cell composition;
[0081] Figure 18 shows a schematic of the steps of generating a cell composition;
[0082] Figure 19 shows a more detailed flowchart of example steps of generating a cell composition;
[0083] Figure 20 shows a flowchart of example steps to modify a cell composition in response to changes in user data; and
[0084] Figure 21 shows a table of example change types and change magnitudes and example corresponding transition rules. DETAILED DESCRIPTION
[0085] Broadly speaking, embodiments of the present invention provide methods, systems, and apparatus for generating music (or cell composition) in real-time using one or more pre-recorded musical pieces (or modules comprising one or more cells running on a path), where the generated music / cell composition depends on user data. The user data can include data relating to initial conditions (such as time, date, season, weather, and location) at the time the user requests music to be generated, and can include data relating to variable conditions that change in real-time (such as location, direction of motion / travel, speed of travel, and heart rate). The generated music / cell composition can be generated based on the initial conditions, and can be modified in real-time according to the variable conditions. For example, an increase in the user's heart rate can cause the beat of the generated music / cell composition to increase, and a change in the user's direction of motion can cause a change in the tonality of the generated music / cell composition. Thus, the generated music / cell composition depends on the user data, and can be changed in real-time by the user. This can result in a substantially unique plurality of music / cell compositions being generated for the user.
[0086] The term "harmony" or "harmony layer" is used herein to mean an arrangement of simultaneous musical pitches, tones, notes, or chords that can be played or sung simultaneously (or sequentially) and often produce a pleasing sound.
[0087] The term "beat" or "beats" or "beat layer" is used herein to mean a rhythmic movement or speed at which a piece of music is played, which often forms the groove or additional rhythmic element of a piece of music. Beats can be provided by the playing of a percussion instrument. For example, a beat can be a rhythmic sound played on a drum.
[0088] The term "solo" or "solo layer" is used herein to mean a piece of music (or a section of music) played or sung by a single performer, and / or to mean a melody (i.e. a sequence / arrangement of individual notes that form different phrases or musical thoughts).
[0089] The term "atmosphere" or "atmosphere layer" is used herein to generally mean a sound effect, a recording of text or spoken words, an environmental sound, etc., which can not necessarily be musical. Examples include a reading of a poem, a recording of "bird song at dawn", and the sound of falling rain.
[0090] In embodiments, the generated music can be composed from one or more pre-recorded music pieces according to the user data (and possibly any user preferences), and each pre-recorded music piece can be used with or without modification. Generally, a piece of music can include multiple music layers, for example one or more of a harmony layer, a beat layer, a solo layer, and an atmosphere layer. In embodiments of the present technology, a generated piece of music can be composed from pre-recorded music pieces selected from one or more of a harmony dataset, a beat dataset, a solo dataset, and an atmosphere dataset. Each dataset includes multiple pre-recorded music pieces. For example, a harmony dataset includes multiple pre-recorded pieces of a harmony layer, and a beat layer includes multiple pre-recorded pieces of a beat layer. A generated piece of music can be composed by selecting pre-recorded music pieces from one or more datasets. If multiple music pieces are selected from a dataset, the generated piece of music is composed from the combination of the selected music pieces. One or more of the selected music pieces can be modified to form the generated piece of music. For example, the pitch of a selected harmony can be modified based on the user data. How the music piece or each music piece is selected from a dataset and possibly modified can depend on the user data, and is described in more detail below.
[0091] The term "pre-recorded music piece" is used interchangeably herein with the terms "piece of music", "music piece", "music layer", and "layer".
[0092] The term "generate music" is used to mean compose music in real-time from one or more units (i.e. pre-recorded music pieces or short musical motifs) selected based on user data or "initial conditions", and to mean modify the composed music in real-time based on changes in the user data or "variable conditions".
[0093] In embodiments, the unit composition can be formed from one or more modules according to the user data (and possibly any user preferences). Generally, the unit composition can include multiple music layers, for example one or more of a harmony layer, a beat layer, a solo layer, and an atmosphere layer. In embodiments, the unit composition can be composed from modules selected from one or more of a harmony dataset, a beat dataset, a solo dataset, and an atmosphere dataset. Each dataset includes multiple module groups, each module group including multiple modules. A module includes multiple units. A unit is a short musical motif or phrase with a harmony and an internal pattern, similar to a fixed motif. Each unit in a module can have the same theme, but with a different tonality or chord. Module groups include closely related modules, i.e. they have similar characteristics. For example, modules in a module group can have the same harmony characteristics, but different constructions. Module groups can be very different from each other, such that a switch between module groups causes a significant change in the unit composition.
[0094] The harmony dataset comprises a plurality of module groups forming a harmony layer, and the beat layer comprises a plurality of module groups forming a beat layer, and so on. A unit composition can be formed by selecting module groups from one or more of the datasets. If a plurality of module groups are selected from the datasets, the unit composition is formed by the combination of the selected module groups (in particular, one module in each of the selected module groups). How the module / module groups or each module / module group is selected from the datasets can depend on user data, and is described in more detail below.
[0095] The term "generated music" is used herein interchangeably with the term "unit composition".
[0096] A user can use a user device to obtain generated music / create a unit composition. The user device can be any user electronic device, such as but not limited to a computer, laptop, desktop PC, smart phone, smart watch or tablet computer. In embodiments, the user device can be used to generate music, and can therefore comprise a library of pre-recorded music items and instructions on how to use these music items and user data to compose music in real time. The instructions can be provided in the form of software or computer control code. These instructions can be provided as part of a "software application" that the user can be able to download, install and run on the user device. In embodiments, the process of composing music can be distributed between the user device and a remote server. The remote server can comprise a remote dataset containing a library of pre-recorded music items. In embodiments, the remote server can comprise a remote dataset and remote processing tools to compose music. In any case, the user device is used to communicate the composed music to the user.
[0097] Figure 1A A schematic diagram of an example user device 10 for generating music is shown. The user device 10 can be used to compose music, or can be part of a larger system for composing music. The user device comprises at least one processor 12, which can comprise processing logic for processing data (e.g. user data, programs, instructions received from a user, etc.). In embodiments, the processor 12 can be configured to output generated music / unit composition to a user in response to the processing. The processor 12 can be a microcontroller or microprocessor. The processor 12 can be coupled to at least one memory 22. The memory 22 can comprise working memory and program memory, the program memory storing computer program code to implement all or part of the music generation / unit composition process described herein. The program memory of the memory 22 can be used to buffer data when executing the computer program code, for example to buffer any received user data before using the user data to generate music / modify the generated music, and / or to buffer any generated music before outputting to the user.
[0098] In embodiments, the user device 10 can comprise at least one sensor 14. The at least one sensor 14 can comprise any one or more of: an accelerometer (which can be used as part of a pedometer), a gyroscope (which can be used to sense direction and / or movement), a location sensor such as a GPS sensor (which can be used to provide information about the location of the user device 10 and / or the speed of the user of the user device 10), and a heart rate monitor. However, this is not an exhaustive list, and the at least one sensor 14 can be any sensor capable of providing information about the user and / or the user’s surroundings / environment. In embodiments, the user device 10 can not comprise a sensor 14, and the sensor(s) 14 can instead be provided externally of the user device 10. In embodiments, the user device 10 can comprise one or more sensors 14, and one or more additional sensors 14 can be provided externally of the user device 10. The external sensor(s) 14 can be in communication with the user device 10, either through a wired or wireless connection. For example, the external sensor(s) 14 can use Bluetooth (RTM), WiFi, Bluetooth Low Energy (RTM), or any other communication protocol to transmit sensed user data to the user device 10.
[0099] Data received from any external sensor 14 or any other device can be received at a communication module 16 of the user device 10. The communication module 16 can be configured to send and / or receive data from external devices (e.g. external sensors, pedometers, heart rate monitors, fitness trackers). The communication module 16 can be configured to send and / or receive data from external sources, such as the internet or a remote server.
[0100] The user device 10 can comprise an interface 18, such as a conventional computer screen / display, keyboard, mouse, and / or other interfaces such as network interfaces and software interfaces. The interface 18 can comprise a user interface, such as a graphical user interface (GUI), a touchscreen, a microphone, a voice / speech recognition interface, physical or virtual buttons. The user interface can be configured to receive user data and / or user input. For example, a user can use the user interface to make a request for composed music - which can be made by selecting / launching a software “application” on the display of the user device 10, by a voice command, or otherwise. The user interface can be configured to receive user feedback on a piece of generated music, and / or to receive a user request to modify (or save or purchase, etc.) a piece of generated music.
[0101] In embodiments, the user device 10 comprises means for connecting to a remote data store containing pre-recorded music items. The communication module 16 and / or the interface 18 (or a dedicated communication module) can be used to connect the user device 10 to the remote data store, such as via the internet or via a mobile (cellular) network.
[0102] The user device 10 comprises a data store 20 configured to store, for example, user data and any user preferences relating to music generation. The data store 20 can comprise one or more music data sets comprising a plurality of pre-recorded music items. In embodiments, the user device 10 can be configured to store, locally in the data store 20, all or a subset of the available pre-recorded music items for use in composing music. The locally stored music items can be stored within a music data set in the data store 20. In embodiments where music generation is performed by the user device 10, it can be more efficient to store all or a subset of the available pre-recorded music items within the user device 10 (i.e. within the data store 20). This can avoid the need for the user device 10 to retrieve pre-recorded music items from a remote server when the user requests music to be composed, which can be time consuming (resulting in a delay in providing the composed music) and / or can consume a large portion of the user’s mobile phone data allowance. The data store 20 can store a subset of the available pre-recorded music items based on user preferences / standards. For example, the user preferences / standards can indicate, for example, which types of music the user likes or dislikes, and the data store can store only those pre-recorded music items that meet the user’s standards. Additionally or alternatively, if the user device 10 does not comprise sufficient memory to store all available music items, the data store 20 can store a subset of the available pre-recorded music items.
[0103] The memory 22 and / or the data store 20 can comprise volatile memory (such as random access memory (RAM)) for use as temporary memory when the processor 12 is processing user data or performing tasks relating to music generation. Additionally or alternatively, the memory 22 and / or the data store 20 can comprise non-volatile memory (such as flash memory, read-only memory (ROM) or electrically erasable programmable ROM (EEPROM)) for storing data, programs or instructions received or processed by the processor 12.
[0104] The user device 10 can comprise an audio module 24 to provide the composed music to the user. For example, the audio module 24 can comprise means for transducing electrical signals forming the composed music into audio signals and for outputting the audio signals (e.g. through a loudspeaker or to headphones coupled to the user device 10).
[0105] Figure 1BA schematic diagram showing an example system that can be used to compose music. These are merely some examples of how the music generation methods described herein can be implemented, and are non-limiting.
[0106] As mentioned previously, the music generation process can take place within the user device 10 - this is advantageous in that it Figure 1B is shown in system 30" in FIG. 6. In system 30", all processing required to compose music is performed within the user device 10. In system 30", the user device 10 can store instructions for implementing the methods of composing music described herein, and can store the entirety (or a subset) of the available pre-recorded music items from which music is composed. The user device 10 can be able to connect to a remote server to store music items locally (e.g. in data store 20). The user device 10 can be able to connect to any external device that provides user data.
[0107] An advantage of system 30" is that a connection to a remote server is not required when music is to be composed, as the music generation process takes place substantially entirely within the user device 10. This can be particularly advantageous if the user of the user device 10 is in a location where a connection to a remote server is not possible (e.g. in a remote location with no internet and / or mobile network connection). Another advantage of system 30" is that the user's mobile data allowance and / or broadband data allowance is not consumed every time the user device 10 composes music, as the user device 10 does not need to obtain music items from a remote server every time music is generated. Another advantage of system 30" is that music can be generated in real-time in response to received user data and changes in received user data, with no appreciable delay between receiving user data and outputting the generated music in response (as the user device 10 does not have to connect to a remote server).
[0108] Additionally or alternatively, the music generation process can be distributed between the user device 10 and a remote server 28, as shown in system 30'" in FIG. 7. In system 30'", the user device 10 can store instructions for implementing the methods of composing music described herein, and can store a subset of the available pre-recorded music items from which music is composed. The user device 10 can be able to connect to a remote server to store music items locally (e.g. in data store 20). The user device 10 can be able to connect to any external device that provides user data. Figure 1BIn system 30', the remote server 28 is located remotely from the user device 10 and can be part of a cloud computing system. The remote server 28 can include a data store that stores available pre-recorded music items for use in the music generation process. In system 30', when the user requests music to be composed, the user device 10 can transmit the user data to the remote server 28. The remote server 28 can use the user data to select and retrieve one or more pre-recorded music items from the remote data store and transmit these selected music items to the user device 10. The processor 12 of the user device 10 uses the or each selected music item to compose music and provides the composed music to the user. Thus, in system 30', the music library (i.e. the music data set) is stored remotely from the user device 10. An advantage of system 30' is that the user device 10 can not store a local copy of the entirety (or a subset) of the available pre-recorded music items, which can use a large amount of available memory / data storage space in the user device 10. Another advantage of system 30' is that the processor 12 of the user device 10 can not need to know how to select music items from the music data set based on the user data. Instead, this operation is performed by the remote server 28, which can reduce the amount of processing (or the complexity of the processing) to be performed by the user device 10, which in embodiments can use less power than system 30". A further advantage of system 30' is that the music data set can be updated periodically and centrally, without requiring each user device 10 to download the updated music data set.
[0109] Additionally or alternatively, the music generation process can be distributed between the user device 10 and the remote server 28, as shown by system 30" in Figure 1B In system 30, the remote server 28 is located remotely from the user device 10 and can be part of a cloud computing system. The remote server 28 can include a data store that stores available pre-recorded music items for use in the music generation process. The remote server 28 can include a processor or processing capability to generate music in response to received user data.
[0110] In system 30, when a user requests music to be composed, user device 10 can transmit user data to remote server 28. Remote server 28 can use the user data to select and retrieve one or more pre-recorded music items from a remote data store. A processor of remote server 28 uses the selected music items to compose music, and once composed, remote server 28 provides the composed music to the user. In embodiments, user device 10 streams the composed music from remote server 28 and does not download the composed music. As mentioned earlier, the composed music is composed in response to user data and changes in user data, and thus the composed music changes in real-time in accordance with the user data. It can therefore be advantageous to stream the composed music from remote server 28, as it can be a faster and more efficient process to deliver the composed music to the user in real-time, as compared to if user device 10 had to download the generated music each time the generated music was created and / or modified. Thus, in system 30, the music library (i.e., the music data set) is stored remotely from user device 10, and the processing required to generate / compose the music is performed remotely from user device 10. User device 10 simply transmits requests for the generated music and user data to the remote server. An advantage of system 30 is that user device 10 can not store a local copy of all (or a subset) of the available pre-recorded music items, which can use a large amount of available memory / data storage space in user device 10. Another advantage of system 30 is that processor 12 of user device 10 does not need to know how to select music items from the music data set based on user data. Rather, this operation is performed by remote server 28, which can reduce the amount of processing (or the complexity of the processing) to be performed by user device 10. In embodiments, user device 10 can use less power than systems 30" and 30'. Another advantage of system 30 is that the music data set can be updated periodically and centrally, without requiring each user device 10 to download the updated music data set.
[0111] Figure 1CAn illustration of an example system that can be used to generate music / unit composition is shown. In system 300, when a user requests unit composition, user device 10 can transmit user data to remote server 28. Remote server 28 can use the user data to select and retrieve one or more modules from a remote data store. In embodiments, the remote data set can be located within remote server 28 - in which case the selection can be made directly from the remote data store. In alternative embodiments, the remote data set can be located within a separate music production component 302 - in which case remote server 28 can consult a list of module groups corresponding to modules in the remote data set of the music production component and select from the list. In embodiments, both remote server 28 and music production component 302 can comprise at least one data set from which modules can be selected.
[0112] Remote server 28 transmits a control signal to music production component 302, the control signal comprising the selected module(s) or an indication of which module(s) have been selected. Music production component 302 receives the control signal and, in response to the control signal, arranges each of the plurality of cells within each of the selected modules into a path. The path indicates progression from one cell to another. By default, each cell can loop or repeat in the unit composition. That is, the unit composition can be formed from repeating the same cell. Without any variation in the user data, the same cell can repeat for a certain duration before the cell is replaced with a new cell in the unit composition that is from the same module. Without any variation in the user data, cell transitions can be based on predetermined rules. For example, the rules can specify which cell follows another cell. Music production component 302 can therefore arrange the plurality of cells in each of the selected modules into a default path to form the unit composition. Music production component 302 can transmit the unit composition directly to device 10, or to device 10 via remote server 28.
[0113] In embodiments, the user device 10 streams the unit composition from the remote server 28 or the music production component 302 and does not download the unit composition. As mentioned earlier, the unit composition is formed in response to the user data and changes in the user data, and thus the unit composition can change in real-time in response to changes in the user data. Therefore, it can be advantageous to stream the unit composition from the remote server 28 / music production component 302, as it can be a faster and more efficient process to deliver the unit composition to the user in real-time as compared to if the user device 10 had to download the unit composition each time the unit composition is created and / or modified. Thus, in the system 300, the library of modules (i.e., the music data set) is stored remotely from the user device 10 and the processing required to generate / compose music is performed remotely from the user device 10. The user device 10 simply transmits requests for the unit composition and user data to the remote server. An advantage of the system 300 is that the user device 10 can not store a local copy of the entire (or a subset of) the available modules or module groups, which can use a significant amount of available storage / memory / data storage space in the user device 10. Another advantage of the system 300 is that the processor 12 of the user device 10 does not need to know how to select modules from the music data set based on the user data. Rather, this operation is performed by the remote server 28, which can reduce the amount of processing (or the complexity of the processing) to be performed by the user device 10, in embodiments, the user device 10 can use less power than the systems 30” and 30’. Another advantage of the system 300 is that the library of modules can be updated periodically and centrally, without requiring each user device 10 to download the updated data set.
[0114] In embodiments, a unit composition method is provided, comprising: at a first device: receiving a request for a unit composition; receiving user data; filtering at least one data set containing a plurality of modules in response to the received user data, each module comprising a plurality of units; selecting at least one module from the filtered at least one data set; and transmitting a control signal comprising the selected at least one module to a second device; at the second device: receiving the control signal from the first device; and arranging each unit of the plurality of units within the or each selected module into a path in response to the control signal. Figure 1C In the system 300, the remote server 28 can be considered the first device and the music production component 302 can be considered the second device. Figure 1B In the system 300, the remote server 28 can be considered the first device and the music production component 302 can be considered the second device.
[0115] Figure 2A A block diagram of an example system for generating music / unit composition is shown and is described inFigure 1B A more detailed version of system 30 is shown. In system 30, remote server 28 is located remotely from user device 10 and may be part of a cloud computing system in embodiments. Remote server 28 includes (remote) data storage 36 that stores available pre-recorded music items / modules for use in the music generation / unit composition process. Remote server 28 includes (remote) processor 38 or processing power to generate music / unit compositions in response to received user data. Remote data storage 36 and remote processor 38 may be located within remote server 28 or otherwise as part of remote server 28. In embodiments, remote data storage 36 and remote processor 38 may be different entities coupled to remote server 28.
[0116] In system 30, when a user requests the generation of music / unit composition, user device 10 transmits user data to remote server 28. User device 10 can receive user data from sensors within user device 10 (as mentioned above). Figure 1A The user device 10 may receive user data from external sources, such as external sensor 32. External sensor 32 may be, for example, a pedometer, heart rate monitor, fitness tracker, satellite navigation system, etc. User device 10 may receive user data from other external sources, such as the Internet. For example, the user device may receive data about the “initial conditions” when the user requests music to be generated, such as weather data from a weather data website or a national meteorological service website (e.g., the Met Office website). In an embodiment, user device 10 may receive user data from the user themselves. For example, the user of user device 10 may input user data through the interface of device 10. User data may be obtained by user device 10 from one or more of these potential data sources. In an embodiment, when the user requests music to be generated, user device 10 organizes user data from one or more data sources. For example, user device 10 may automatically obtain weather data by connecting to the Met Office website and obtaining weather information for the location of user device 10. User device 10 may poll any internal and / or external sensors (if user device 10 detects an external sensor) and request the latest user data from the sensor. User device 10 can prompt the user to enter user data, for example, by displaying a request on the display screen of user device 10 or by giving an audible command.
[0117] User equipment 10 transmits the received user data, along with a request for the generated music / unit composition, to remote server 28. User equipment 10 may use any suitable communication protocol and technology to communicate with the remote server. For example, user equipment 10 may communicate with remote server 28 via the Internet (using a wired or wireless connection to router or gateway 34) or via a mobile network or "mobile web" (possibly through gateway 34, which uses different communication protocols to send data between networks along prescribed routes). User equipment 10 may be able to connect to remote server 28 using one or more technologies / protocols and may be able to automatically switch between protocols (e.g., between WiFi and mobile web connections).
[0118] Remote server 28 uses user data to select (and in this embodiment, acquire) one or more pre-recorded music items (or modules) from a remote data storage device. The remote data storage device may include music datasets, such as… Figure 2B The music dataset shown. Figure 2B In this context, the data storage or music dataset 40 includes a harmony dataset 40a, a beat dataset 40b, a solo dataset 40c, and an atmosphere dataset 40d. Each of these datasets 40a to 40d includes multiple pre-recorded musical items (or modules). For example, the harmony dataset 40a includes multiple pre-recorded harmonies. Harmony is typically a major component of a musical composition / unit of music. In this embodiment, the harmony is the first musical item (or module) to be selected from the music dataset to generate the music / unit composition, and if any other musical items (or modules) are selected, they are selected based on the characteristics of the selected harmony. That is, the harmonic layer of a generated piece of music is selected first and is the core audible material in the generated music, and any other layers present in the generated music are subordinate to / dependent on the harmonic layer.
[0119] The beat dataset 40b includes a plurality of pre-recorded beats that form a rhythm or additional rhythmic elements of a piece of generated music / unit composition. (In embodiments, the solo layer, the harmony layer, and the atmosphere layer can contain elements with rhythmic properties as they are musical, in which case the beat layer provides additional rhythmic elements to a piece of generated music). The beats selected from the beat dataset 40b can be selected based on the pace or speed of the user of the user device 10. For example, if the user is sensed to be walking slowly, the beats selected from the beat dataset 40b can be slower and can match the pace of the user’s walking speed. Similarly, if the user is sensed to be running, the beats selected from the beat dataset 40b can have a faster pace. The pace (e.g., beats per minute or BPM) of the rhythm / beats of the music item selected from the beat dataset 40b can be proportional to the heart rate of the user of the user device 10 in BPM or to the number of steps per minute of the user (e.g., the user’s footstep rhythm or revolutions per minute). Thus, if the user data transmitted by the user device 10 to the remote server 28 includes information about the user’s heart rate or footstep rhythm, this information can be used to select a music item from the beat dataset 40b with a substantially matching pace.
[0120] The solo dataset 40c includes a plurality of pre-recorded melodies. If the generated music includes a melody, after a harmony is selected from the harmony dataset 40a, a melody is selected from the solo dataset 40c. The characteristics of the selected harmony can influence how the melody is selected. For example, if the music item selected from the harmony dataset 40a is centered around the key of Bb minor, the melody can be selected from a subset of the music items in the solo dataset 40c that are in the key of Bb minor or another complementary minor / mode key.
[0121] The atmosphere dataset 40d includes a plurality of pre-recorded atmospheric sound effects and textual / spoken elements. The music items in the atmosphere dataset 40d can not be musical and can include, for example, speech and sound effects. The atmosphere dataset 40d can include, for example, readings of poetry or readings of excerpts from plays, novels, or speeches. The atmosphere dataset 40d can include sound effects such as, for example, recordings of “bird calls in the morning,” sounds of rain or crashing waves, etc. If a music item is selected from the atmosphere dataset 40d to generate / compose music, the selection can be made in accordance with the user’s location, the current weather, etc.
[0122] Each music item, module and / or module group stored in the music data set 40 can be tagged or labelled so that the characteristics of the music item / module / module group can be easily identified. For example, if a music item in the beat data set 40b has a tempo of 60 beats per minute, the music item can be tagged / labelled to indicate this particular characteristic. Similarly, if a music item in the atmosphere data set 40d includes the sound of crashing waves, the music item can be tagged / labelled to indicate that the music item is suitable if the user is located close to a body of water (e.g. at the seaside or lakeside). For example, if a music item in the atmosphere data set 40d includes a reading of Wordsworth's "Daffodils" poem, the music item can be tagged / labelled to indicate that the music item is suitable if the user is located in the Lake District region of the United Kingdom and / or if the season when the user requests music to be generated is spring. The tags can enable music items to be quickly and efficiently selected from the music data set 40 based on the received user data. The tags can enable the music data set to be filtered so that only those music items with tags / labels corresponding to the received user data are available for use in the generated music.
[0123] Each pre-recorded music item, or module or module group, in the music data set 40 can include an identifier or ID. Preferably, the identifier / ID is unique and static. The identifier can be, for example, a numeric or alphanumeric ID, or an 8-bit or 16-bit binary number. Preferably, when each pre-recorded music item is saved in the music data set 40, it is assigned an identifier. The identifier of each pre-recorded music item can facilitate retrieval of the music item from the music data set 40. The identifier of each pre-recorded music item can enable the generated music to be regenerated at a later time, as explained in more detail below.
[0124] In embodiments, Figure 2B The illustrated music data set 40 can be provided within the user device 10 (e.g. within the data store 20). In embodiments, Figure 2B In the illustrated embodiment, the music data set 40 can be provided within the remote data store 36. In embodiments, the music data set 40 can be provided within the remote data store 36 and all or a subset of the music data set can also be provided within the user device 10.
[0125] Returning to Figure 2AThe remote server 28 uses the user data to select and retrieve one or more pre-recorded music items (or modules) from a music data set 40 in a remote data store 36. The remote server 28 can use the user data and the tags / labels of each pre-recorded music item in the music data set to filter the music data set 40. The processor 38 can then select one or more music items from the filtered music data set 40, which contains a subset of the available pre-recorded music items / modules.
[0126] In embodiments, the processor 38 can select one pre-recorded music item (module) from each of the data sets 40a to 40d and combine these music items to generate the music / unit composition. Additionally or alternatively, the processor 38 can select music items from only the harmony data set 40a and use this to generate the music. In this case, the generated music can consist of the selected harmonies without modification. Preferably, the selected harmonies can be modified, for example by changing the key of the harmonies based on the direction in which the user is travelling, to generate / compose the music.
[0127] Additionally or alternatively, the processor 38 can select music items from one or more of the data sets 40a to 40d. By default, the processor 38 can select a pre-recorded music item from each of the data sets 40a to 40d. However, if the user has provided feedback that they do not want the generated music to contain an atmosphere layer, for example, the processor 38 can not select a pre-recorded music item from the atmosphere data set 40d.
[0128] Once the processor 38 has generated the music, the remote server 28 can notify the user device 10 that the generated music is available for streaming. In embodiments, the streaming can automatically start once the processor 38 has generated the music. Thus, the user device 10 streams the generated music from the remote server 28, which typically requires a continuous communication connection between the user device 10 and the remote server 28.
[0129] As explained in more detail below, the generated music can be modified in real-time based on changes in the user data. For example, if the user of the user device 10 switches from walking to running, a change in the user's heart rate or pace can be used to change the beat of the generated music. In another example, if the user of the user device 10 switches from walking in one direction (e.g. due north) to walking in another direction (e.g. northwest), the change in direction can be used to change the key of the harmony layer in the generated music. Whenever a change is detected / received, the change in the user data can be sent by the user device 10 to the remote server 28. Alternatively, the user device 10 can send the user data to the remote server 28 on a regular basis (e.g. every minute, every few minutes, every hour) regardless of whether the user data has changed. In this case, the user device 10 can poll any internal sensors, external sensors or any other source of user data at regular intervals. In embodiments, the frequency at which the user device 10 sends the user data to the remote server 28 can be specified by the user of the user device 10. For example, if the user wants music to be generated when they are running or training, the user can specify the frequency of updates to be every 30 seconds, as they know that their speed / pace / heart rate will change during the run / training. In embodiments, the user can specify the frequency depending on how the user device 10 is connected to the remote server 28. For example, if the user device 10 is connected to the remote server 28 via a WiFi or wired internet connection, the user can set the frequency of updates to be high (e.g. every 30 seconds), and if the user device 10 is connected to the remote server 28 over a mobile web connection, the user can set the frequency to be low (e.g. every 5 minutes) (e.g. to reduce their usage of their mobile data allowance). The user can be able to provide this information to the user device via the interface 18 of the user device 10. In embodiments, the frequency at which the user device 10 sends the user data to the remote server 28 can be a default frequency, e.g. every three minutes.
[0130] In embodiments, the music generation process can have more than one mode of operation. For example, the music generation process can have an "active" mode of operation and a "passive" mode of operation. For example, the walking and running modes of operation can be considered "active" modes of operation, in which the generated music is generated in response to the user data and changes in the user data. In the "passive" mode of operation, the user data can comprise user selected or user inputted data. For example, if the music generation process is running when the user is resting or sleeping, they can be using a "passive" mode of operation, in which the generated music can be generated in response to user selections and default mode dependent rules. Reference is made to Figure 9 The passive mode of operation is described in more detail.
[0131] A method of generating / composing music in real-time using one or more pre-recorded musical pieces and based on user data is now described. Figure 3 A flowchart showing example steps of generating / composing music in an "active" mode of operation is shown. The method starts at start step S30, which can be when a software application for generating / composing music is initialised. The method comprises receiving a request to generate / compose music (step S32). The request can be received in response to a user pressing a physical or virtual button on their user device 10, in response to a voice command input by the user into the user device 10 or other ways.
[0132] At step S34, user data is received. As explained above, the user data can be received, acquired and / or requested. The user data can be received by the user device 10 from sensors within the user device 10 and / or from external sources such as external sensors (e.g. pedometers, heart rate monitors, fitness trackers, satellite navigation systems etc.). The user device 10 can receive user data from other external sources such as the internet. The user device 10 can poll any internal and / or external sensors and request the latest user data from the sensors. Alternatively, user data from the or each sensor can be stored in a data store in the user device as the data is received from the sensors and at step S34 the user device can acquire the stored user data. Additionally or alternatively, the user device 10 can prompt the user to input the user data themselves and receive the user inputted user data at step S34.
[0133] The method comprises filtering a music dataset containing a plurality of pre-recorded music items using the received user data (step S36). As mentioned above, each pre-recorded music item can be tagged or labelled to identify one or more characteristics of that music item. The method comprises mapping the received user data to a particular characteristic of the music. For example, if the user data specifies that the user's heart rate is 120 beats per minute, the method can comprise mapping this heart rate to a particular tempo (or range of tempos). At step S36, the music dataset is filtered based on this tempo to provide a filtered dataset containing those music items having labels / tags indicating that they have the required tempo (or a tempo within the required tempo range). In this example, the filtering based on the user's heart rate can only be used to filter the tempo dataset. The method can comprise consulting one or more lookup tables (or similar objects) comprising information on how to map user data to music characteristics. There can be a separate lookup table for each type of user data (e.g. location, heart rate, direction of travel, speed, weather, etc.) and / or for each type of music characteristic (e.g. tempo, key, mood, etc.). If the user data comprises multiple pieces of information, the method can comprise using all of the pieces of information to filter the music dataset simultaneously, or can comprise using a particular piece of information first. This is discussed in more detail below. Figure 5 is described in more detail below.
[0134] At step S38, at least one music item is selected from the filtered music dataset. In embodiments, one music item is selected from each of the harmony, tempo and solo datasets and optionally from the mood dataset.
[0135] At step S40, music is generated using the selected music item(s). In embodiments, one or more characteristics of the selected music item(s) can be modified when generating the music. For example, the key of the selected harmony can be modified based on particular user data. In embodiments, the selected music items are combined to generate / compose the music without modification. If the music is generated in the user device 10, the generated music can be output to the user. If the music is generated in a remote server, the generated music can be communicated to the user (via the user device 10) in any number of ways including, for example, streaming or downloading.
[0136] In embodiments, the generated music is generated until the user terminates the music generation process. Thus, the generated music can be a continuous piece of music that is several minutes long or several hours long. The generated music can not be stored or saved (in the user device 10 or in a remote data store). Instead, when the music generation process ends (in response to a user termination command, or after a default or predetermined period of time), the method comprises generating and storing metadata relating to the generated music (step S46). The metadata comprises information that enables the generated music to be regenerated at a later date. For example, the metadata can comprise a unique identifier for each pre-recorded piece of music used to generate the music, the length of the piece of generated music, the time at which the generated music was modified in response to changes in the user data, and how the music was modified, etc.
[0137] The user can be prompted to "name" or otherwise label the metadata generated for each piece of generated music, so that the user can identify the generated music from the metadata alone. For example, if a piece of music was generated while she was running, the user can label it as "running music". In embodiments, a default name for a piece of generated music can be formed from the date and time that the music generation started / ended, and possibly a user identifier (e.g. a username). The metadata can be saved locally (e.g. on the user device 10) and / or in a remote server.
[0138] If the user wishes to listen to a particular piece of generated music again, she selects the particular piece of metadata from the list of saved metadata, and can then request that the music associated with the selected metadata be regenerated. The metadata enables the generated music to be regenerated. For example, the processor can extract from the metadata a unique identifier for each pre-recorded piece of music used to generate the music, and can use the identifier to retrieve the piece of music from the music data set. The metadata preferably indicates how and when the pre-recorded pieces of music were combined, how and when the generated music was modified in response to changes in the user data, the length of the generated music, etc., so that the generated music can be easily regenerated. Advantageously, this can mean that multiple pieces of generated music do not need to be stored (which reduces the memory requirements in the system), as the metadata is sufficient to regenerate the music when required. Once the metadata has been generated and saved (and optionally named), the process ends (step S48).
[0139] Optionally, the music generation process can comprise modifying the generated music in real-time in response to a change in the user data. For example, if it is determined that the user's heart rate has changed (e.g. because they have switched from walking to running), the tempo of the generated music can be changed in response. Thus, optionally, at step S42, the method can comprise receiving a change in the user data, and at step S44, the generated music can be modified in response to the change in the user data. The method can comprise using a lookup table or other data to determine how to modify the generated music in response to the change in the user data. The lookup table can be the same as the lookup table used at step S36. Any modifications made to the generated music are incorporated into the metadata generated at step S46.
[0140] Thus, a general method for generating music comprises: receiving a request to generate / compose music; receiving user data; filtering at least one dataset containing a plurality of pre-recorded music items in response to the received user data; selecting at least one pre-recorded music item from the filtered at least one dataset; generating music using the or each selected pre-recorded music item; and generating metadata associated with the generated / composed music. The method can be implemented in a user device (e.g. user device 10), or aspects of the method can be distributed between a user device and a remote server (as outlined above in relation to Figure 1B and Figure 2A as described above).
[0141] Figure 4 A more detailed flowchart showing example steps of generating / composing music is shown. The method starts at start step S50, which can be when a software application for generating / composing music is initialised and / or when a request to generate / compose music is received. At step S52, user data is received as explained above (see for example step S34 of Figure 3 In the illustrated embodiment, the method comprises determining whether a "save" command has been received (step S54). The method can comprise prompting the user to decide whether they wish to save the music to be generated at the end of the music generation process. For example, the method can comprise displaying a prompt on the display screen of the user device asking the user to decide whether to save the generated music. As mentioned earlier, the generated music itself can not be saved, but instead metadata associated with the generated music can be generated and saved. Thus, the prompt to "save" can be a prompt to save the metadata. In embodiments, the prompt can be provided to the user at the end of the music generation process. Additionally or alternatively, the method can default to saving the metadata associated with the generated music (and no "save" command is required from the user).
[0142] If a save command is received (from the user or from a default setting) at step S54, the method includes setting a "save" flag or other indicator / reminders to save the metadata at the end of the music generation process (step S56). After step S56 or if saving is not required, the method includes filtering at least one dataset containing a plurality of pre-recorded music items in response to the received user data (step S58). The process of filtering the music dataset(s) is similar to the process described in relation to step S36 of Figure 3 and so is not repeated for the sake of brevity. At step S60, at least one music item is selected from the filtered music dataset(s). In embodiments, one music item is selected from each of the harmony, beat and solo datasets and optionally from the atmosphere dataset. If two or more music items are selected at step S60, the method includes combining the selected music items (step S62). If only one music item is selected at step S60, the method can include modifying the selected music item to generate music. At step S64, the generated music is output. In embodiments where the music is generated in the user device 10 (e.g. as described above in relation to Figure 1B the music can be output to the user via the audio module 24 of the user device 10 substantially immediately after the music is generated. In embodiments where the music is generated in a remote server, the generated music can be communicated to the user (via the user device 10) in any number of ways - including for example streaming or downloading. In embodiments, the remote server can notify the user device 10 that the generated music is ready to be streamed / downloaded, or alternatively the remote server can automatically initiate the streaming process at the user device 10.
[0143] The music generation process can include modifying the generated music in real-time in response to changes in the user data. For example, if it is determined that the user's heart rate has changed (e.g. because they have switched from walking to running), the beat of the generated music can be changed in response. Accordingly, at step S66, the method can include checking whether a change in the user data has been received. This check can be performed at regular intervals (such as for example every 30 seconds, every minute or every few minutes). The regular intervals can be predefined or can be user defined (e.g. based on user activity). For example, if the user is exercising, the user can wish the music generation to quickly adapt to the changing heart rate or activity of the user and so can define the intervals at which step S66 is performed. If no change in the user data has been received, the method waits for a predefined or user defined interval before rechecking.
[0144] If a change in user data is received, the method can include modifying the generated music in response to the change in user data. In particular embodiments, a change in user data can not result in the generated music being modified. For example, if the user's heart rate changes within a particular range (e.g. changes + / - 5 beats / minute), the beat of the generated music can not change to match the change in heart rate. In embodiments, the method can include using a lookup table or other data to determine how to modify the generated music in response to a change in user data. The lookup table can be the same as the lookup table used at step S58. The modified generated music is then output in accordance with step S64 (step S70).
[0145] In embodiments, the method includes checking whether a command to terminate the music generation process has been received (step S72). In embodiments, the music generation process can automatically terminate after a predetermined period of time and / or if no change in user data is received within a predetermined period of time. If no "stop" or termination command is received, the method can include looping back to check whether any change in user data is received. If a stop command is received, the method can include checking whether a "save" flag has been set (step S74). If the "save" flag has been set, the method includes generating metadata associated with the generated music in a similar manner to that described in relation to step S46 (step S76). After step S76, or if the "save" flag is not set, the music generation process then terminates (step S78). Figure 3
[0146] The method shown in Figure 4 and described above can be implemented in a user device (e.g. user device 10). Additionally or alternatively, particular steps of the method can be distributed between a user device and a remote server. For example, at step S52, the user data can be received at the user device or at a remote server (from the user device). Similarly, at step S64, the step of outputting the generated music can be performed at the user device, or can be performed at a remote server which indicates to the user device that the generated music is ready to be streamed.
[0147] As mentioned above, the generated music is composed from at least one pre-recorded music item selected from a music data set. Figure 5 A flowchart showing example steps of selecting pre-recorded music items to generate / compose music is shown. At step S90, a method of selecting music items for use in generated music includes receiving user data. In the embodiment shown, the music data set includes the harmony data set, the beat data set, the solo data set and the atmosphere data set described above in relation to Figure 2B steps S46-S48.
[0148] The method includes filtering all of the music data sets in the music data sets 40a to 40d using the received user data (step S92). This can be performed even if no music item is selected from each of the data sets 40a to 40d. The filtering of step S92 can be considered to be a high level filtering or coarse filtering. The technique to perform this coarse filtering can be the technique described above in relation to step S36 of Figure 3 , and so is not repeated for the sake of brevity. As the harmony is often a major component of a piece of music composition / music, the harmony layer is the first music item selected from the music data sets to generate / compose the music. Thus, at step S94, a music item is selected from the filtered harmony data sets. In embodiments, the selection of the harmony music item can be random and performed by a processor (in the user device or a remote server). In embodiments, the selection of the harmony music item can be in response to a user indication of what type of harmony they require. This is described in more detail below in relation to Figure 9 .
[0149] The selection of the harmony music item triggers further filtering of the music data sets. In the illustrated embodiment, the next music item to be selected from the music data sets is a beat music item. Thus, at step S96, the method includes further filtering the beat data sets 40b using the selected harmony item. The beat data sets 40b have already been filtered once (at step S92) based on the user data, and are now further filtered based on one or more features of the selected harmony music item. For example, the selected harmony music item can be better suited to a particular type of beat or a particular time signature, and these suitability criteria can be used to further filter the beat data sets. Thus, the further filtering of the beat data sets (and other data sets) is performed so that the music items that are most suitable for the harmony are selectable. This further filtering can be considered to be a fine level filtering relative to the filtering performed at step S92. A music item is selected from the further filtered beat data sets 40b (step S98). In embodiments, only the harmony layer and the beat layer are used to generate / compose the music, and in this case, the selected music items are combined at step S108 to generate / compose the music.
[0150] In this embodiment, musical items can be selected from the solo dataset 40c, and harmonic and beat layers are added for music generation / composition. In this case, in step S100, the selected beat music items can be used to further filter the solo dataset 40c. In this embodiment, one or both of the selected beat music items and harmonic music items can be used to further filter the solo dataset 40c. The solo dataset 40c has already been filtered once based on user data (in step S92), and is now further filtered based on one or more features of the selected harmonic music items and / or the selected beat music items. For example, the selected musical items may be better suited to a particular type of melody, and any such suitability criteria can be used to further filter the solo dataset. For example, if the musical items selected from the harmonic dataset 40a are centered on the B-flat major scale, then the melody can be selected from a subset of musical items in the solo dataset 40c that is B-flat major or another complementary minor / modal tone. Therefore, further filtering of the solo dataset is performed, making musical items best suited to harmony and / or rhythm selectable. This further filtering can be considered finer than the filtering performed in step S92. Musical items are selected from the further filtered solo dataset 40c (step S102). In this embodiment, only the harmony layer, rhythm layer, and solo layer are used to generate / create music, and in this case, the selected musical items are combined in step S108 to generate / create music.
[0151] Optionally, musical items can be selected from the atmosphere dataset 40d, and harmonic, beat, and solo layers can be added for music generation / creation. In this case, in step S104, one or more selected musical items can be used to further filter the atmosphere dataset 40d. Musical items are selected from the further filtered atmosphere dataset 40d (step S106), and in step S108, the selected musical items are combined to generate / create music.
[0152] Will understand, according to Figure 5 The sequential filtering of the music datasets shown is not necessary. In this embodiment, the selected harmonic music items may be used to filter the solo dataset instead of the beat dataset. Furthermore, in this embodiment, the generated music may consist of some or all of the music items from the four music datasets 40a to 40d. In this embodiment, selecting a specific music item from one music dataset may not result in more refined filtering of one or more remaining datasets. For example, the selection of a beat music item may not affect which ambient music items can be used to generate / compose music.
[0153] Further, the more refined filtering of each data set can be performed in a similar manner to the initial coarse filtering of all data sets. That is, the method can include consulting one or more lookup tables (or similar objects) that include information on how to use the selected musical item(s) musical features to further filter the music data set. The tags / labels of the musical items can be used to perform the further filtering process. For example, the tags / labels of the musical items can identify particular features of that musical item, and the further filtering process can involve filtering for the particular features. Additionally or alternatively, the tags / labels of the musical items can indicate suitability for the particular musical item.
[0154] The music generation process can vary according to the user activity, and in embodiments it can be possible to specify user activities to adapt the music generation process. Figure 6 、 7 Figures 7, 8 and 9 respectively show variations in the general music generation process based on whether the user is walking / running, sitting / resting or asleep. Figure 4 These are just some possible operating modes, and there can be other possible operating modes that affect the music generation process.
[0155] Turning now to Figure 6 , this shows a flowchart of example steps to generate / compose music in response to the user walking or running. The user can also select an "operating mode" when requesting that music be generated. In this case, the user selects the walking or running mode. The music generation process is substantially the same as the process described in relation to Figure 4 until step S66. In the walking / running mode, at step S66 of the process, the method includes checking whether a change in user data has been received. This check can be performed at regular intervals, such as for example every 30 seconds, every minute or every few minutes. The regular intervals can be predefined for the operating mode, or can be user defined (e.g. based on user activity). For example, in the walking / running mode, the user can wish the music generation to quickly adapt to changes in the user's heart rate or activity, and so the default interval at which step S66 is performed in the walking / running operating mode can be shorter (i.e. more frequent) than in other operating modes. If no change in user data has been received, the method waits for a predefined or user defined interval before rechecking.
[0156] If a change in user data is received, the method may include determining what type of change was received. For example, the method may include determining whether the received altered user data indicates that the user's pace has changed (step S120). For example, pace may be indicated by rhythm, heart rate, or by determining how quickly the user covers a specific distance. This data may be obtained from sensors in and / or outside the user device. If the user's pace has changed, the method may determine whether the pace has increased or decreased, and / or how much the pace has changed relative to the original user data. If the pace has changed by a significant amount, the method may include selecting new items from the beat dataset that better match / suit the user's new pace (step S122). In an embodiment, the beat of the existing generated music is simply modified (e.g., increased or decreased) in response to a change in the user's pace. In an embodiment, the modification in step S122 is performed only if the change in pace is outside a predetermined error range. For example, the predetermined error range for heart rate may be + / - 5 beats / minute, such that a change in heart rate of up to 5 beats / minute is considered insufficient to guarantee a modification of the beat / time of the generated music.
[0157] The method may include determining whether the user's direction of travel has changed (step S124). A change in direction of travel may modify the pitch of the generated music. The method may include consulting a lookup table to determine how the change in direction causes a change in the pitch of the generated music.
[0158] Figure 11 This diagram illustrates how a change in the user's direction of movement can cause predetermined changes in the pitch of the generated music. Each basic direction (north, east, south, west) and intermediate (sequential) direction can be associated with a specific pitch. For example, moving due north might be associated with the C major pitch, while moving south might be associated with the F-sharp major pitch. Twenty-four possible pitches (12 minor and 12 major) can each be associated with a specific basic direction of movement (e.g., north, northwest, south-southeast, etc.). In an embodiment, as... Figure 11 As shown, each of the 24 tones can be associated with a specific angle or direction of travel and can be separated from its neighbors by the same angle θ (e.g., 15°). In an embodiment, the 24 tones may not be associated with a basic / sequential direction, and instead, the user's initial direction of travel can be defined as "virtual north," and all other directions and tone variations are defined relative to the initial direction of travel. In an embodiment, the angular intervals between adjacent directions of travel may be unequal / non-uniform. For example, there may be large angular intervals between a particular direction / tone, such that a particular tone variation occurs, for example, only when the direction of travel changes significantly.
[0159] Back Figure 6The method can include determining an angle of change in the user's direction of travel and using the angle of change in the user's direction of travel to determine how to modify the tonality of the generated music. For example, based on the example in Figure 11 , if the user's direction has changed by an angle θ in a clockwise direction relative to the original direction of travel (which corresponds to C major), the tonality of the generated music can change to A minor. When the user's direction has changed by an angle 2θ (or -2θ) in a counterclockwise direction relative to the original direction of travel, the tonality of the generated music can change to G major. Subsequent changes in direction can be determined relative to the original direction of travel or relative to the previous direction of travel. Thus, at step S126 in Figure 6 , the determined change in direction is used to modify the tonality of the harmony layer of the generated music (or the overall tonality of the generated music). In embodiments, if the change in tonality of the harmony layer means that one or more other layers in the generated music are no longer suitable for the harmony layer, step S126 can include selecting other suitable layers (i.e. other more suitable music items from the beat, solo and / or atmosphere data sets).
[0160] The method can include determining whether the user's location has changed (step S128). A change in location can prompt the selection of a new music item from the atmosphere data set, or the removal of an existing (if any) atmosphere music item from the generated music (step S130). As mentioned earlier, the atmosphere music item can be selected based on the user's location and / or the user's proximity to a notable location, a location of interest, etc. For example, if the user is now determined to be walking / running past the Globe Theatre in London (UK), the new music item selected from the atmosphere data set at step S130 can be a reading of a passage from a play or poem by Shakespeare.
[0161] Figure 6 Only some of the possible ways in which the generated music can be modified based on changes in the user data are shown. The order of steps S120 to S128 is merely exemplary and additional or alternative steps can be taken to modify the generated music. After the generated music has been modified (or it has been determined that no modification is required), the music generation process returns to step S70 of Figure 4 .
[0162] Figure 7 A flowchart showing example steps of generating / composing music in response to the user sitting or resting is shown. In this case, the user has selected a sitting / resting mode of operation. The music generation process is substantially as described in relation to Figure 4The described process is the same up to step S66. In the sitting / resting mode, at step S66 of the process, the method comprises checking whether a change in user data has been received. This check can be performed at regular intervals, such as for example every 30 seconds, every minute or every few minutes. The regular intervals can be predefined for the operating mode, or can be user defined (e.g. based on user activity). For example, in the sitting mode, the default interval at which step S66 is performed can be longer (i.e. less frequent) than in the running operating mode. If no change in user data has been received at step S66, the method waits for the predefined or user defined interval before rechecking.
[0163] If a change in user data is received, the method can comprise determining whether the user has started to move, i.e. is no longer sitting / resting (step S144). If so, a new item from the tempo dataset can be selected that better matches / suits the new pace of the user (step S146). In embodiments, simply the beat of the existing generated music is changed (e.g. increased or decreased) in response to a change in the pace of the user. In embodiments, as explained earlier, the modification at step S146 is only made when the change in pace is outside a predetermined error range. Small changes in movement (e.g. the user shuffling in their seat) or infrequent changes in movement (e.g. if the user is only moving around the room for a short while) can not be considered significant enough to change the beat or tempo of the generated music. Thus, in particular embodiments, an extended change in movement can be used to determine that the user is moving, and the beat / tempo can need to be modified.
[0164] In embodiments, the method can comprise determining whether the position of the user has changed. If the user has started to move, the position of the user can change. In embodiments, the user can still be resting / sitting, but their position can have changed, for example in the case of them being in a moving vehicle (e.g. train, car, plane etc.). In any case, the change in position can prompt the selection of a new music item from the ambience dataset, or the removal of the existing (if any) ambience music item from the generated music (step S150) in a similar manner to that described above in relation to the change in pace. Figure 6
[0165] In embodiments, if no change in user data is received at step S66, the method can comprise checking whether a predetermined period of time has elapsed since the last receipt of user data (or a change in user data) (step S140). The predetermined period of time can be a few minutes, 30 minutes, an hour, etc. If the predetermined period of time has not elapsed, the method returns to step S66. If the predetermined period of time has elapsed, the method can comprise automatically modifying the generated music in a predetermined manner (step S142). For example, the method can comprise automatically modifying the tonalities of the harmony layers. As mentioned earlier, changing the tonality of the harmony layers can also require changes to other layers in the generated music. Thus, the music generation process is configured to automatically modify the generated music in the sitting / rest mode even if no change in user data is received, in order to introduce changes in the generated music. The process then continues to step S70 of step 4.
[0166] Figure 8 A flowchart showing example steps of generating / composing music in a sleep mode is shown. In this case, the user has selected a sleep mode of operation. The sleep mode can be selected if the user wishes to listen to music to help them relax, meditate or fall asleep. Thus, in this mode of operation, it can be desirable for the music generation process to terminate after a certain time so that the user is able to fall asleep or remain asleep. The music generation process is substantially the same as described in relation to Figure 4 The process described is the same up to step S64 in the sleep mode. In the sleep mode, the method can comprise determining whether the user has set an "end time" (step S160). When the user selects the sleep mode, they can be prompted to specify how long they want music to be generated before the music generation process terminates. The user can specify an end time (e.g. 23:30) or a duration (e.g. 30 minutes), or can select an end time / duration from a list of options. Alternatively, the user can ignore this prompt and can decide to manually terminate the music generation process or allow user data indicating that the user has fallen asleep to determine when the music generation process terminates.
[0167] If it is determined at step S160 that an end time has been specified / set, the method can comprise checking whether the end time has been reached (step S162). If the end time has been reached, the method comprises stopping the output of the generated music (step S164) and then the process continues to step S74 of Figure 4 If the end time has not been reached, the method returns to step S162.
[0168] If it is determined at step S160 that no end time has been specified / set, the method can comprise determining whether data has been received indicating that the user is sleeping (step S166). The user can be wearing a heart rate monitor, fitness tracker or sleep monitoring device which can be able to determine whether the user is asleep (e.g. whether the user's heart rate has fallen below a resting heart rate). If such data is received at step S166, the method comprises stopping the output of the generated music (step S164). If such data is not received at step S166, the method can comprise automatically stopping the output of the generated music after a predetermined period of time (step S168). For example, the method can comprise automatically stopping the output of the generated music after 45 minutes or after 60 minutes. In embodiments, step S166 can comprise displaying a prompt on the user device asking the user whether they wish to continue to receive the generated music. If a response is received from the user, the method can comprise continuing or stopping the music generation based on the user's response. If no response is received from the user, the method can determine that the user is sleeping and can proceed to step S164.
[0169] In the sleep mode, if the output of the generated music is to be stopped, the method can comprise fading the generated music out, rather than stopping the music abruptly, as an abrupt change can startle or wake the user.
[0170] Figure 9 A schematic diagram of a graphical user interface for a user device 10 for generating music is shown. The user device 10 can comprise a display screen 50, which in embodiments can be a touch screen. The display screen 50 can be used to display / present a graphical user interface (GUI) when the user initiates the "application" to generate / compose music. Figure 9 The example GUI shown comprises operation mode buttons 52a to 52d which enable the user to select a walking mode (button 52a), a jogging / running mode (button 52b), a sitting / staring / relaxing mode (button 52c) or a sleep mode (button 52d). The number and type of operation modes and the corresponding buttons on the GUI can vary. In embodiments, once a user has selected a particular operation mode, user data can be used by a processor (in the user device 10 or in a remote server) to select appropriate music items from a music data set. The selected operation mode can also cause certain pre-defined and mode dependent rules to be applied. For example, if the user selects the sleep mode, the variation of the key of the harmony layer can be defined by mode dependent rules which can specify a particular calming key variation (e.g. from D major to G major). Similarly, if the user selects a walking or running mode, the possible variation of the key can be defined by mode dependent rules which can allow for more abrupt / brisk variations of the key.
[0171] In embodiments, the user data can include user-selected or user-entered data. This can be useful when the music generation process is in a "passive" mode of operation. For example, the walking and running modes of operation can be considered "active" modes of operation in which the generated music is generated in response to user data and changes in user data. The sleep and rest modes can be considered "passive" modes of operation in which the generated music can be generated in response to user selections as well as default mode-related rules. In embodiments, the sleep and rest modes can be "active" modes of operation in that the generated music can also be generated in response to user data as well as default mode-related rules.
[0172] In passive modes of operation, Figure 9 The illustrated GUI can enable the user to make user selections that are used to generate / compose music (in addition to, or instead of, user data). The GUI can include additional buttons that the user can use to make selections regarding the music to be generated. In particular embodiments, the GUI can enable the user to make pseudo-random selections of and sound music items. This can be useful in "passive" modes of operation (e.g., when the user is stationary) to prevent or minimize the chance that the same music items are selected by default each time the music generation process is in "passive" mode. As described above, additional layers of music can be selected and combined based on the selected and sound music items.
[0173] The GUI can include a key selector 54, a mode selector 56, and / or a variation selector 58. The key selector 54 enables the user to select one of the twenty-four possible musical keys. The key selector 54 can cycle through the twenty-four keys, and when the user presses the key selector 54 button on the GUI, the key selector selects the key it is cycling through at that time. The key selector 54 can play each key to the user as it cycles through the keys, or can display the key (e.g., A-, F+, F#+, etc.), or alternatively can not provide any audible or visual indication of the key as the key selector 54 cycles through the possible keys. When the user uses the key selector 54 to select a key, the key selector 54 can provide an audible output to indicate which key has been selected. In embodiments, if the user does not like the original selection, they can be able to spin the key selector 54 again to select a different key.
[0174] The mode selector 56 enables the user to select a mode. A mode is a different type of oscillation, gesture, and embellishment within and around a root tone (i.e., a selected tone). For example, a guitar player can lightly strum a chord, a scale, or a fading-in and fading-out sound to represent a chord. This mode also applies to larger musical groups, including orchestras. Thus, a mode can include a sound played on a single instrument in a selected tone, a sound played by a full orchestra in a selected tone, or a sound played by other combination of instruments in a selected tone. Thus, the mode selector 56 can cycle through various modes based on the tone selected using the tone selector 54, and in a similar manner to the process described above for the tone selector, the user can be able to use the mode selector 56 to select a particular mode.
[0175] The variation selector 58 enables the user to select a variation of the selected mode. A variation is a musical technique in which material is repeated in altered form. These alterations can involve changes to one or more of the following: harmony, melody, rhythm, timbre, instrumentation. For example, if the selected mode oscillates from the lowest note of a chord to the highest note, and then back again, the variation can not include a violin, or it can only include a piano, or it can be performed by a cellist plucking their strings (pizzicato) instead of playing with a bow. Thus, the variation selector 58 can cycle through multiple variations based on the mode selected using the mode selector 56, and in a similar manner to the process described above for the tone selector, the user can be able to use the variation selector 58 to select a particular variation.
[0176] Each selector can be presented as a rotating wheel or dial that can automatically start rotating once the user selects the passive mode of operation, and can be stopped by the user to effect a pseudo-random selection of a harmony and sound music item. For example, the tone selector 54 can cycle through all twenty-four musical tones, and the user can press the tone selector 54 to select a particular tone. Once a tone is selected, the mode selector 56 can cycle through structural variations of the selected tone. There can be any number of structural variations for each tone. Once a mode is selected, the variation selector 58 can cycle through variations based on the selected mode. There can be any number of variations for each mode. Thus, the use of all three selectors results in a harmony and sound music item being pseudo-randomly selected by the user. As described above, based on the selected harmony item, more music items can be selected from the dataset to generate / compose music.
[0177] Figure 10is a diagram showing an example of how musical items can be combined to generate / compose music. As mentioned earlier, a harmony musical item (or harmony layer) can be selected first in the music generation process. In embodiments, each layer can be presented in the generated music simultaneously. Additionally or alternatively, the harmony layer can be presented through the generated music, and the other layers can appear and disappear in the generated music over time. At point 70 (time t=0), the harmony layer has begun in the generated music. At point 72, the beat layer begins to appear in the generated music, and at point 74, the solo layer begins to appear in the generated music. At point 74 and thereafter, the harmony, solo, and beat layers are all presented in the generated music. At point 76, the atmosphere layer appears in the generated music, and at point 78, the atmosphere layer disappears from the generated music (e.g., in response to a change in user data, or otherwise). Thus, between point 76 and point 78, all four layers are presented in the generated music, and from point 78 to point 80 (when the music generation process terminates), only three layers are presented in the generated music. As explained earlier, the times at which each layer is added and removed from the generated music are recorded in the metadata associated with the generated music.
[0178] Figure 12 is a diagram showing how a change in the user's motion (i.e., user data) can cause a change in the generated music. The user can make a request for generated music, and then begin to walk. The user walks in an initial direction. At point 102, the user changes her direction of travel. The change in direction of travel can cause a change in the tonality of the generated music, as explained above with reference to Figure 6 At point 104, the user changes her direction of travel again, and this can again cause a change in the tonality of the generated music. At point 106, the user begins to run. As described with reference to Figure 6 The change in the user's speed (or heart rate) can be used to cause a corresponding change in the beat or tempo of the generated music. During this run, the user's direction also changes. Depending on how quickly the user's direction changes, the tonality of the generated music can or can not change. Only when the direction of travel is maintained for a particular amount of time (e.g., 30 seconds or a few minutes) can the tonality change. Then, the user terminates the music generation process (at the end), and the metadata associated with the generated music can be generated and stored.
[0179] Figure 13is a flowchart of example steps of regenerating / recomposing previously generated / composed music. As explained above, metadata can enable a piece of generated music to be regenerated. The method of regenerating music begins at start step S200. The method comprises receiving a request to listen / playback a previously generated piece of music. The request can be obtained through a user interface of a user device. The user can be able to access a list of generated pieces of music based on metadata that has been created and stored, and the user can select a particular generated piece of music from the list for regeneration. At step S204, the method comprises obtaining the metadata associated with the selected generated piece of music. This step can be performed by a processor in the user device or by a remote server / remote processor. The metadata can be stored locally (i.e. in the user device) or remotely from the user device (e.g. in a remote data store). The method can comprise using the metadata to obtain the pre-recorded music item or each pre-recorded music item that forms the generated piece of music from at least one music data set (step S206). If multiple music items form the generated piece of music, then at step S208 these music items are combined in accordance with the metadata.
[0180] If the generated piece of music is modified over time (e.g. in response to changes in user data), then these modifications and when they occurred in the generated piece of music are recorded in the metadata. Thus, the method comprises using the metadata to modify the obtained pre-recorded music item or each obtained pre-recorded music item (step S210), and then regenerating the generated piece of music and outputting the result (step S212). In embodiments, once the original generated piece of music has been regenerated and output, the process ends at step S220.
[0181] In embodiments, it can be possible for the user to modify the regenerated piece of music to create a new generated piece of music. If user data is received while the regenerated piece of music is being played / outputted (step S214), then the method can optionally comprise modifying the regenerated piece of music based on the received user data (step S216), and thereby creating a new generated piece of music. The method can comprise generating metadata for the new / modified regenerated piece of music in the same way as described earlier (step S218).
[0182] In embodiments, the user can be required to pay a fee for the previously generated piece of music to be regenerated, i.e. to pay to hear the previously generated piece of music again. In embodiments, it can not be necessary for the user to pay to listen to the regenerated piece of music.
[0183] In embodiments, the user can be able to purchase items of generated music so that she can listen to the generated piece of music whenever she likes without having to regenerate the music each time. Thus, in relation to the method of regenerating music described above with reference to Figure 6, the method can comprise, after step S212, receiving a request to purchase the generated piece of music (step S222). The request can be obtained through a user interface of a user device. The user can be able to access a list of generated pieces of music based on metadata that has been created and stored, and the user can select a particular generated piece of music from the list for purchase. At step S224, the method comprises obtaining the metadata associated with the selected generated piece of music. This step can be performed by a processor in the user device or by a remote server / remote processor. The metadata can be stored locally (i.e. in the user device) or remotely from the user device (e.g. in a remote data store). The method can comprise using the metadata to obtain the pre-recorded music item or each pre-recorded music item that forms the generated piece of music from at least one music data set (step S226). If multiple music items form the generated piece of music, then at step S228 these music items are combined in accordance with the metadata. The method can comprise outputting the generated piece of music (step S230). Figure 13During the described process, the user can be presented with an option to purchase the previously generated music (e.g. between steps S202 and S204, or before the music is regenerated, or during / after the regenerated music is output). The item of purchasing the generated music can mean that the user is able to download a copy of the generated music which can be played without the need for the regeneration process to be performed.
[0184] Figure 14 is a flowchart of example steps to link a captured image with a piece of generated music. In embodiments, music is generated (step S300) and a user can take a photograph and / or record a video using an image capture device (e.g. a video camera, or a smartphone including a video camera, or a webcam, etc.) whilst the music is being generated (S302). The user device can receive the captured image / video from the image capture device whilst the music is being generated and output. The method includes generating metadata or otherwise creating a link between the captured image and the generated music (step S304). The metadata or link can be associated with the generated music, the captured image / video, or both.
[0185] At some time in the future after the music generation process of step S300 has ended, the user can view the captured image / video. The captured image / video can be displayed on the user device (S306). In embodiments where the image / video includes metadata or a link to associate the image with the generated music, the method includes using the metadata / link to regenerate the generated music associated with the image. The regeneration process is similar to that described in relation to Figure 13 The method can include outputting the regenerated music whilst the user views the image / video (step S310).
[0186] Additionally or alternatively, at some time in the future after the music generation process of step S300 has ended, the user can request that a piece of generated music is regenerated. If the generated music (which is to be regenerated) includes metadata or a link to associate the music with an image / video, the method can include using the metadata to retrieve the associated image / video (step S314) and displaying the associated image / video whilst the regenerated music is output (step S316).
[0187] Figure 15is a flowchart of example steps to obtain user feedback on generated music. The method begins by generating music using any of the methods described above (step S400). When the music generation process has terminated, the method includes requesting feedback from the user on the generated music (step S402). The feedback can be requested by displaying a prompt or pop-up window on the user device display screen, or by email to the user, or in other ways. The user can be able to provide feedback on a piece of generated music immediately after it is produced, or at some time later. The user can be able to provide various different types of feedback. For example, the user can be able to rate the generated music, or indicate which features of the generated music he likes or dislikes. For example, the user can be able to indicate that he likes the harmony layer, but does not appreciate the beat layer, or he can be able to specify particular modifications to the generated music that he likes / dislikes in response to changes in the user data. The method includes receiving the feedback data (step S404), and storing the received feedback data (step S406). The feedback data can be stored locally, or preferably in a remote data store associated with the user's account or user profile.
[0188] Preferably, the feedback data is used the next time the user requests music to be generated (step S408). When music is generated, the feedback data can be used to filter the music data set (e.g. to remove particular types of beats based on her dislikes). Alternatively, the feedback data can be used to present the user with the option to obtain / access purchase additional "layer packs" (step S410). For example, if the user indicates that they appreciate a particular type of harmony, the feedback data can be used to give the user the option to access similar types of harmony. If the user purchases additional "layer packs", the user can access additional pre-recorded music items in the remote data store, or can be able to download additional pre-recorded music items for use in future music generation.
[0189] Artificial intelligence and machine learning techniques can be used to learn the user's likes and dislikes, and to filter the music data set when generating music to improve the chances of providing the user with generated music that they like. Machine learning techniques can use feedback data provided by the user to customise the music generation process for each individual user, and / or can use other "implicit" types of feedback provided by the user. Implicit feedback can be provided by the user, for example, when the user requests the music generation process to restart / start after only listening to a short period of a piece of generated music. This can imply that the user did not like the piece of generated music, and wants the process to restart. Another example of implicit feedback is where the user abandons a selection. For example, in the above example where the user is presented with a selection of different "layer packs" to purchase, if the user does not make a selection, this can imply that the user does not like any of the available "layer packs", and the system can learn this and use it to improve the selection of "layer packs" presented to the user in the future. Figure 9In the described pseudo-random selection process, if the user discards a tone selected using the tone selector 54 (i.e. by requesting the tone selector 54 to start the cycle through the tones again), the user can be implicitly indicating that they do not like the original selected tone.
[0190] As mentioned above, the music generation process can use the time of day as an input to generate / compose and modify the generated / composed music. For example, music with faster beats can be generated during the day or when the user is walking / running, while music with slower beats can be generated at night or when the user is relaxing. However, a user who works at night can prefer the generated music to have faster beats at night and slower beats during the day. If the user repeatedly rejects a particular selected beat and prefers faster / slower beat tempo, they can implicitly provide information about their work pattern or lifestyle. Machine learning techniques can be used to understand the user's habits, work and exercise patterns, and their likes and dislikes to produce music that the user is more likely to appreciate.
[0191] As mentioned above, each pre-recorded music item in the music dataset can include a tag or label. Tags or labels can also be attached to music items to indicate the artist / musician who created, composed and / or performed the music item. For example, a guitar solo performed by Jack White can be tagged with "Jack White", a reading of a poem performed by Patrick Stewart can be tagged with "Patrick Stewart", and a vocal music item performed by the Royal Philharmonic Orchestra can be tagged with "Royal Philharmonic Orchestra" or with the individual names of the members of the orchestra who played the music. These tags can be used to filter the music dataset in response to user feedback or user preferences for particular artists / musician, which are determined by user input or through machine learning techniques, or to provide the user with the option to purchase a "layer pack" containing more pre-recorded music items composed or performed by their preferred artists / musician.
[0192] The tags / labels can be used as part of an artist / musician compensation scheme. For example, the tags / labels can be used to determine how often a particular artist's music items are used to generate / compose music and to compensate the artist accordingly.
[0193] As mentioned earlier, all or part of the music generation process can be performed on a remote server rather than on the user device. Figure 16 A schematic diagram showing the steps of generating / composing music in a music generation system, in which the steps of the music generation process can be distributed among various devices. The music generation system is similar to the music generation system shown in Figure 1. Figure 2AThe illustrated system 30. The system includes a remote server 28, which is positioned remote from the user device 10 and in embodiments can be part of a cloud computing system. The remote server includes a (remote) data store 36, which stores available pre-recorded music items for use in the music generation process. The remote server includes a (remote) processor 38 or processing capability to generate / compose music in response to received user data. The remote data store 36 and remote processor 38 can be located within the remote server, or otherwise as part of the remote server. In embodiments, the remote data store 36 and remote processor 38 can be different entities coupled to the remote server.
[0194] To enable the user (and user device 10) to access the music generation service, the user / user device 10 can need to register with the music generation service. At step S500, the user uses her user device 10 to send a subscription request to the music generation service. The user can only need to register with the music generation service once, rather than registering per user device. The remote processor 38 receives the subscription / registration request. Because the music generation process uses user data to generate / compose music, it is important that secure communication is achieved between the user device and the remote server, such that the user data is not accessible by malicious third parties. This is particularly important because the user data can include real-time information about the precise location of the user, as well as biometric data, amongst others. Accordingly, as part of the registration process, the remote processor 38 can generate a public-private key pair to enable communication between the user device 10 and the remote server to be encrypted (step S502). The remote processor 38 sends confirmation of the registration to the user device 10, and also transmits the public key of the public-private key pair to the user device 10. (The private key is only known to the remote server / remote processor 38). The user device 10 can be configured to store the public key, and use it to encrypt all data sent to the remote server when requesting music to be generated.
[0195] The music generation process begins when the user makes a request for generated music. At step S506, the user device receives a request for generated music. In embodiments, the user device 10 can need to obtain user data for use in the music generation process. Accordingly, in embodiments, the user device can poll one or more sensors (step S508) to obtain user data. In embodiments, the user device 10 can obtain user data from a remote data store 34 (step S510). The remote data store 34 can be located within the user device 10, or otherwise as part of the user device 10. In embodiments, the remote data store 34 can be a different entity coupled to the user device 10. In embodiments, the remote data store 34 can be a part of the remote server 28. In embodiments, the remote data store 34 can be a part of a cloud computing system. Figure 16In the embodiment, the sensor is shown as an external sensor 32, but the sensor can be internal to the user device 10 itself. At step S510, the external sensor 32 transmits the sensed user data back to the user device, and at step S512 the user device 10 receives the user data. The user data received at step S512 can include user data received from one or more sources, including the external sensor 32, any internal sensor(s), the internet, the user themselves, etc. At step S514, the user device 10 encrypts the received user data with the public key, and then at step S516 transmits the encrypted user data and a request for generated music. The user device 10 can use any appropriate communication protocol and technology to communicate with the remote server. For example, the user device 10 can communicate with the remote server via the internet (using a wired or wireless connection to a router or gateway), or via a mobile network or "mobile web".
[0196] The remote processor 38 receives the transmission from the user device, and decrypts the user data using the private key of the public-private key pair (step S518). The remote processor requests that the music data set of the remote server be filtered (step S520), and the remote data store 36 filters the music data set using the user data as described above (step S522). As described earlier, the remote processor 38 selects one or more music items from the filtered music data set (step S524). If multiple music items are selected, the remote processor 38 combines the selected music items and generates music at step S526. At step S528, the remote processor 38 can transmit the generated music to the user device 10, or can indicate to the user device 10 that the generated music is available for streaming from the remote server. In embodiments, the streaming can automatically begin once the processor 38 has begun generating the music. Thus, the user device 10 can stream the generated music from the remote server, which typically requires a continuous communication connection between the user device 10 and the remote server.
[0197] The generated music can be modified in real-time based on changes in the user data. Changes in the user data can be sent by the user device 10 to the remote server each time a change is detected / received. Alternatively, the user device 10 can send the user data to the remote server on a regular basis (e.g. every minute, every few minutes, every hour), whether or not the user data has changed. In this case, the user device 10 can poll any internal sensors, external sensors, or any other sources of user data at regular intervals.
[0198] At step S530, the external sensor 32 sends the updated user data to the user device 10, either automatically or in response to a poll / query from the user device 10. The user device receives the changed user data and encrypts the data (step S532), and then transmits the changed user data to the remote processor (step S534). The remote processor 38 receives the changed user data, decrypts the data, and uses the data to determine whether to modify the generated music, and if so, how to modify the generated music. At step S538, the modified generated music is provided to the user device in a similar manner to step S528.
[0199] When the user terminates the music generation process, the user device 10 can send a termination request to the remote processor 38. In response, the remote processor 38 terminates the music generation process, and can generate and store the metadata as described earlier (step S540). The metadata can be stored in the music generation service in association with the user’s profile / account.
[0200] As mentioned above, in embodiments, the unit composition can be formed from one or more modules in dependence on the user data. Figure 17 A schematic diagram showing components of a unit composition. Generally, a unit composition can comprise a plurality of musical layers, for example one or more of a harmony layer, a beat layer, a solo layer, and an atmosphere layer. For simplicity, Figure 17 A unit composition formed from two musical layers is shown. In embodiments, a unit composition can be composed from one or more selected from a harmony data set, a beat data set, a solo data set, and an atmosphere data set. As Figure 17As shown, each dataset (such as Harmony Dataset 150) comprises multiple module groups 152. Module groups within the multiple module groups 152 (such as module group 154) comprise multiple modules 1-6. (There is no limit to the number of modules in a module group, and module groups can contain the same or different numbers of modules). Modules (such as module 2) comprise multiple units 156. A unit is a short musical theme or phrase with harmony and internal patterns, similar to a fixed motif. Each unit 156 within module 154 may have the same theme but with different tones or chords. Each unit has numerous attributes. Unit attributes are used to select units that match user preferences or user data / actions. For example, attributes may include information about complexity, construction, mood, beat, etc. Each unit is also linked to / associated with at least one other unit—each relationship with another unit is defined in the unit's attributes. This relationship can indicate the musical similarity or complementarity of one unit with another unit and can be used to select units that can be mixed together to form a pleasing composition. (Units that are very different from each other musically can lead to harsh compositions because the sounds can change drastically).
[0201] like Figure 17 As shown, one unit may have harmonics in C# major, while other units may be in D major, B minor, F# major, B-flat minor, etc. Module groups (such as module group 154) comprise closely related modules, meaning they share similar characteristics. For example, modules 1-6 within module group 154 may have the same harmonic characteristics but different structures. Module groups can be quite different from each other, causing significant variations in unit composition when switching between them.
[0202] To form the unit composition, the apparatus (e.g., user device 10, remote server 28, or music production component 302) filters the music data sets based on user preferences or user data / actions. The apparatus can select units 156 from at least one data set (e.g., a harmony data set) that has attributes that substantially match the user preferences / data. Any other units used to form a harmony layer or other layers (e.g., a beat layer) of the unit composition are selected based on the relationship of the first selected unit to the other units. For example, the selected harmony unit can be related to another harmony unit within the same module and can be related to other units in other modules or groups of modules and can be related to other units in other data sets (e.g., a beat data set). These relationships are used to select units to form the unit composition. When selected, the units of each layer are arranged according to a path 158. The path 158 indicates the progression from one unit to another in the unit composition. The path can specify whether any individual unit will loop / repeat before the next unit is introduced into the unit composition. The path of each layer can at least partially overlap. By default, each unit 156 can loop or repeat in the unit composition. That is, the unit composition can be formed by the same units repeating. Without any changes in the user data, the same unit can repeat for a certain duration before the unit is replaced with a new unit in the unit composition that comes from the same module. Without any changes in the user data, unit transitions can be based on predetermined transition rules. The transition rules can specify, for example, which unit follows another to form the path. Thus, the apparatus can arrange multiple units according to a default path to form the unit composition.
[0203] Changes in user data can cause changes in the cell composition. The type of change and / or the magnitude of the change can be used to determine how the cell composition changes. For example, for each change in user data, the cell composition can be modified by first determining the type of change and the magnitude of the change and then, in response to the determination, identifying at least one transition rule corresponding to each change in user data before applying the at least one transition rule. Larger changes in user data (e.g., larger changes in user speed or heart rate or direction of motion) can cause larger changes in the cell composition than smaller changes in user data. For example, when a user starts exercising, the user's heart rate will likely increase significantly. This can cause a large change in the cell composition, such as a change in module group (i.e., a change in harmony). Changes in module group can be the most drastic changes in the cell composition. The smallest change in the cell composition can be simply switching to a new cell within a module (i.e., a change in pitch / chord). This type of change can be implemented, for example, if no change in user data is received after a particular duration of time has passed. If the changes in user data are small and frequent, such that the small and frequent changes do not cause drastic changes in the cell composition that can sound unpleasant, then small changes, such as changes in pitch / chord, can be implemented. For example, "idle" to walking transitions can occur frequently during the day when a user stops to open a door, stops to cross the street, stands up from a desk to walk to a printer or kitchen, etc. Thus, generally, large changes in user data cause significant / drastic changes in the cell composition and vice versa.
[0204] In embodiments, the cell composition is formed at least by a harmony layer. Changes in user data can cause changes to the harmony layer, i.e., cells within the harmony layer are transitioned. Changes to cells in the harmony layer can automatically cause changes to cells in any other layer (e.g., a beat layer) due to the relationships between the cells.
[0205] Cells can be different lengths. For example, one harmony cell can be two measures long and another harmony cell can be three measures long. Similarly, cells from different data sets can be different lengths even though there are relationships between them. For example, a two measure long harmony cell can be related to a two measure long beat cell and a three measure long additional beat cell. Cells can loop / repeat different numbers of times, e.g., one harmony cell can repeat once and another can repeat four times. Differences in cell length / duration and repetition can mean that, when a harmony cell is close to being transitioned to another harmony cell, the underlying beat cell is not close to being transitioned. However, when the harmony cell indicates a transition in a cell in other layers in embodiments, all cells can transition when the harmony cell transitions.
[0206] Figure 18A schematic diagram showing the steps of generating a unit composition is shown. The method is implemented using a first device and a second device Figure 18 As explained earlier, the first device can be a user device or a remote server, and the second device can be a remote server or a music production component, for example. In embodiments, the method can involve a third device, and the steps of the method can be distributed among the first device (e.g. a remote server), the second device (e.g. a music production component) and the third device (e.g. a user device).
[0207] In example embodiments of the method Figure 18 In example embodiments, the first device can be a remote server, and the second device can be a music production component. At step S600, the first device receives a request for a unit composition. This can be received from a user device. The first device receives user data from the user device and / or from sensors or other devices that monitor user activity (step S602). The first device filters at least one dataset containing a plurality of modules in response to the received user data, where each module comprises a plurality of units as explained above (step S604). The first device selects at least one module from the filtered at least one dataset (step S606). The first device transmits a control signal to the second device comprising the selected at least one module (step S608). The second device receives the control signal (step S610), and arranges each unit according to a path in response to the control signal (step S612). The second device outputs the unit composition to the first device or to a user device or elsewhere (step S614). As mentioned earlier, the first device (or the second device) generates metadata associated with the unit composition.
[0208] Figure 19 A more detailed flowchart showing example steps of generating a unit composition is shown. The method begins at start step S650, which can be when a software application for generating a unit composition is initialised and / or when a request for a unit composition is received. At step S652, user data is received as explained above. In the shown embodiment, the method comprises determining whether a "save" command has been received (step S654). The method can comprise prompting a user to decide whether they wish to save the unit composition at the end of the process. For example, the method can comprise displaying a prompt on a display screen of a user device asking the user to decide whether to save the unit composition. As mentioned earlier, the unit composition itself can not be saved, but instead metadata associated with the unit composition can be generated and saved. Thus, the prompt to "save" can be a prompt to save the metadata. In embodiments, the prompt can be provided to the user at the end of the unit composition process. Additionally or alternatively, the method can default to saving the metadata associated with the unit composition (and no "save" command is required from the user).
[0209] If a save command is received at step S654 (either from the user or from a default setting), the method includes setting a "save" flag or other indicator / reminders at the end of the cell composition process to save the metadata (step S656). After step S656 or if saving is not required, the method includes filtering at least one data set containing a plurality of modules in response to the received user data (step S658). The process of filtering the music data sets (plurality of music data sets) is similar to the process described in relation to step S36 of Figure 3 , and so is not repeated for the sake of brevity. At step S660, at least one cell is selected from the filtered music data sets (plurality of filtered music data sets). In embodiments, one cell is selected from each of the harmony, beat and solo data sets and optionally from the atmosphere data set. The method includes arranging each selected cell according to the path, as explained earlier in relation to Figure 17 At step S664, the cell composition is output. In embodiments where the cell composition is formed in the user device 10 (e.g. as described above in relation to Figure 1B ), the cell composition can be output to the user by the audio module 24 of the user device 10 substantially immediately after the cell composition is generated. In embodiments where the cell composition is formed in a remote server or music production component, the generated music can be communicated to the user (via the user device 10) in any number of ways - including for example streaming or downloading. In embodiments, the remote server can notify the user device 10 that the cell composition is ready to be streamed / downloaded, or alternatively the remote server can automatically initiate the streaming process at the user device 10.
[0210] The cell composition process can include modifying the cell composition in real-time in response to changes in the user data. For example, if it is determined that the user's heart rate has changed (e.g. because they have switched from walking to running), the beat of the cell composition can be changed in response. Accordingly, at step S666, the method can include checking whether a change in the user data has been received. This check can be performed at regular intervals (such as for example every 30 seconds, every minute or every few minutes). The regular intervals can be predefined or can be user defined (e.g. based on user activity). For example, if the user is exercising, the user can wish the cell composition to quickly adapt to the changing heart rate or activity of the user, and so can define the intervals at which step S666 is performed. If no change in the user data has been received, the method waits for the predefined or user defined interval before rechecking.
[0211] If a change in user data is received, the method can include modifying the cell composition in response to the change in user data. In particular embodiments, a change in user data can not result in the cell composition being modified. For example, if the user's heart rate changes within a particular range (e.g., changes + / - 5 beats per minute), the beat of the cell composition can not change to match the change in heart rate. In embodiments, the method can include using predetermined rules, lookup tables, or other data to determine how to modify the cell composition in response to a change in user data. At step S668, the method includes determining a change type and a change magnitude for each change in user data. For example, the changes in user data can include changes in user location and changes in user heart rate. Heart rate and location are example change types. The magnitude of the change can be determined, for example, by comparing the new location and heart rate to the previous location and heart rate.
[0212] At step S670, the process includes identifying at least one transition rule corresponding to each change in user data in response to determining the change type(s) and magnitude(s). In Figure 21 Example transition rules are shown in Table 1. At step S672, the process includes applying the at least one transition rule. For example, if the identified transition rule specifies that a change in module group is required, the process can include filtering the at least one set of music data and selecting a new module group (or modules from a new module group). If the identified transition rule specifies that a change in tonality or chord is required, the process can include selecting new cells within each existing module (or at least within the harmony module) and arranging the cells within each existing module along a new path. The modified cell composition is then output (step S674).
[0213] In embodiments, the method includes checking whether a command to end the cell composition process has been received (step S676). In embodiments, the cell composition process can automatically terminate after a predetermined period of time and / or if no change in user data is received within a predetermined period of time. If no "stop" or end command is received, the method can include looping back to check whether any change in user data has been received. If a stop command is received, the method can include checking whether a "save" flag has been set (step S678). If the "save" flag has been set, the method includes generating metadata associated with the cell composition (step S680). After step S680, or if the "save" flag is not set, the cell composition process terminates (step S682).
[0214] In Figure 19The method shown in the middle and described above can be implemented in a user device (e.g. user device 10). Additionally or alternatively, specific steps of the method can be distributed between the user device and a remote server, or between the user device, a remote server and a music production component. For example, steps S666 to S670 can be implemented by a remote server (i.e. the apparatus performing steps S652 to S660). The remote server can send a modified control signal to the music production component after identifying the transition rule for each change type, the modified control signal comprising instructions on how to modify the cell composition. If the transition rule comprises a change in tonality / harmony, the modified control signal can comprise instructions to change the tonality / harmony (i.e. select a new cell within the harmony module). If the transition rule comprises switching to a new module or a new module group, the modified control signal can comprise the new module / module group or data identifying the new module / module group. Steps S672 to S674 can be implemented by the music production component (i.e. the apparatus performing steps S662 to S664).
[0215] Figure 20 A flowchart showing example steps of modifying the cell composition in response to a change in user data (in this case in response to a change in user speed). The cell composition process is substantially the same as described in relation to Figure 19 The process described in relation to Figure 7 is substantially the same as described in relation to Figure 6, up to step S666. At step S666, the process comprises determining whether a change in user data has been received. This check can be performed at regular intervals (such as, for example, every 30 seconds, every minute or every few minutes). The regular intervals can be predefined for the operating mode, or can be user-defined (e.g. based on user activity). If a change in user data is received, the process comprises determining the change type and magnitude. In this example, the change type is determined to be a change in user speed. This change type can be determined from, for example, GPS data, or indirectly from heart rate data. The next step is to determine the change magnitude and apply the corresponding transition rule. Thus, at step S720, the process can comprise determining whether the user has transitioned from an idle state (e.g. sitting / resting) to walking, or vice versa. This can be determined using GPS data, heart rate data, accelerometer data etc. and by comparing the new data with previous user data. If the magnitude of the change in user data indicates that the user has transitioned from idle to walking, the process identifies a transition rule corresponding to this change type and magnitude. For example, the transition rule can require a new cell to be selected from a module to implement a change in harmony / tonality (step S722).
[0216] If at step S720 the user is not determined to have transitioned from idle to walking, the process can include determining whether the user has transitioned from walking to jogging (S724), or vice versa. If the magnitude of the change in user data indicates that the user has transitioned from walking to jogging (or vice versa), the process identifies a transition rule corresponding to the type and magnitude of the change. For example, the transition rule can require that a new module be selected from a module group to effect a structural change (step S726).
[0217] If at step S724 the user is not determined to have transitioned from walking to jogging, the process can include determining whether the user has transitioned from idle to jogging (S728), or vice versa. If the magnitude of the change in user data indicates that the user has transitioned from idle to jogging (or vice versa), the process identifies a transition rule corresponding to the type and magnitude of the change. For example, the transition rule can require that a new module group be selected from a module dataset (multiple module datasets) to effect a harmonic change (step S730).
[0218] Figure 20 Only an example of how the unit composition can be modified based on changes in user data is shown. The order of steps S720 to S730 is merely exemplary, and additional or alternative steps can be taken to modify the unit composition. After the unit composition has been modified (or has been determined not to require modification), the process returns to step S674 of FIG. 6. Figure 19
[0219] Figure 21 A table showing example change types and change magnitudes and example corresponding transition rules is shown. Five example transition rules are shown, listed in order of increasing change magnitude. Broadly, larger changes in user data (e.g., large changes in user speed or heart rate or direction of motion) can cause larger or more drastic changes in the cell composition than smaller changes in user data. For example, when a user starts exercising, the user's heart rate and / or speed can increase significantly. This can cause a large change in the cell composition, such as a change in module group (i.e., a change in harmony). A change in module group can be the most drastic change in cell composition. The smallest change in cell composition can be simply switching to a new cell within a module (i.e., a change in tonal / chord). For example, this type of change can be implemented if no change in user data is received after a particular duration of time has passed. If the changes in user data are small and frequent, such that the small and frequent changes do not cause drastic changes in the cell composition that can sound unpleasant, then small changes, such as a change in tonal / chord, can be implemented. For example, a transition from "idle" to walking can occur frequently during the day when the user stops to open a door, stops to cross the street, stands up from her desk to walk to the printer or kitchen, etc. Thus, generally, large changes in user data cause significant / drastic changes in the cell composition and vice versa.
[0220] As shown in the table, different magnitudes of change in the user's angular direction cause different transition rules to be applied. An angular change of + / - 5° (relative to the user's previous direction of motion) can not warrant any change in the cell composition. Small changes in the user's direction (between + / - 6° and up to + / - 12°) can cause a chord shift to be implemented (e.g., changing the cell within a harmony module to a different chord). Changes in the user's direction between + / - 50° and + / - 89° can cause a module change to be implemented (e.g., changing to a module in an existing module group). Changes in the user's direction of + / - 90° or more are sufficient to cause a change in module group. Similarly, a module group change can be implemented when it is determined that the user is approaching a new place of interest (e.g., a famous landmark in London). For example, the module group change can be implemented for all module groups, or can simply be implemented for the atmosphere layer module group.
[0221] Those skilled in the art will realize that the technology described herein is not limited to the specific configurations and methods described herein, which are presented as examples of the technology. Those skilled in the art will further appreciate that the technology described herein can be practiced with a wide range of modifications and alterations, and that the technology described herein is not limited to the specific configurations and methods described herein. Accordingly, the technology described herein is not limited to that described in the foregoing description and / or shown in the drawings but is instead defined by the claims appended hereto.
[0222] Aspects of the disclosure can be implemented in one or more embodiments below:
[0223] 1) A method of unit composition, comprising:
[0224] At a first device:
[0225] receiving a request for unit composition;
[0226] receiving user data; and
[0227] transmitting a control signal including the request and user data to a second device;
[0228] At the second device:
[0229] receiving the control signal from the first device;
[0230] filtering at least one dataset containing a plurality of modules in response to the received user data, each module comprising a plurality of units;
[0231] selecting at least one unit from the filtered at least one dataset; and
[0232] arranging the at least one unit according to a path in response to the control signal.
[0233] 2) The method of 1), wherein the step of selecting at least one unit comprises selecting a first unit from a first filtered dataset and a second unit from a second filtered dataset at the second device based on attributes of the first unit, the method further comprising:
[0234] At the second device:
[0235] arranging the first unit according to a first path;
[0236] arranging the second unit according to a second path; and
[0237] wherein the first and second paths at least partially overlap.
[0238] 3) The method of 1) or 2), further comprising:
[0239] At the first device:
[0240] receiving at least one change in user data; and
[0241] transmitting a modified control signal.
[0242] 4) The method of 3), wherein the step of transmitting a modified control signal comprises:
[0243] for each change in user data, determining a change type and a change magnitude; and
[0244] generating a modified control signal comprising each determined change type and change magnitude.
[0245] 5) The method of 3) or 4), further comprising, at the second device:
[0246] receiving the modified control signal;
[0247] identifying at least one transition rule corresponding to each determined change type and change magnitude; and
[0248] applying the at least one transition rule to the cell composition.
[0249] 6) The method of 5), wherein the step of applying the at least one transition rule comprises:
[0250] identifying a cell to replace in the cell composition;
[0251] determining attributes of the identified cell;
[0252] selecting a new cell from the filtered at least one dataset based on the at least one transition rule and the determined attributes of the identified cell; and
[0253] replacing the identified cell in the cell composition with the selected new cell.
[0254] 7) A system for cell composition, the system comprising:
[0255] a first device for:
[0256] receiving a request for a cell composition;
[0257] receiving user data; and
[0258] generating a control signal comprising the request and user data; and
[0259] a second device for:
[0260] receiving the control signal from the first device; and
[0261] filtering at least one dataset containing a plurality of modules, each module comprising a plurality of cells, in response to the received user data;
[0262] selecting at least one cell from the filtered at least one dataset; and
[0263] generating a control signal comprising the selected at least one cell; and
[0264] responsive to the control signal, arranging the at least one unit in accordance with a path.
[0265] 8) An apparatus for composing music, the apparatus comprising:
[0266] a user interface configured to receive a request to compose music; and
[0267] a processor configured to, in response to the received request:
[0268] receive user data;
[0269] filter at least one data set containing a plurality of pre-recorded musical items in response to the received user data;
[0270] select at least one pre-recorded musical item from the filtered at least one data set;
[0271] use the or each selected pre-recorded musical item to compose music; and
[0272] generate metadata associated with the composed music.
[0273] 9) The apparatus of 8), wherein the processor is configured to:
[0274] select at least two pre-recorded musical items from at least two filtered data sets; and
[0275] combine the selected pre-recorded musical items to compose music.
[0276] 10) The apparatus of 8) or 9), wherein the processor is configured to compose music by:
[0277] modifying a characteristic of the or each selected pre-recorded musical item.
[0278] 11) The apparatus of 10), wherein the processor modifies the characteristic of the or each selected pre-recorded musical item by modifying at least one of pitch, tone, melody, rhythm, timbre, form and tempo.
[0279] 12) The apparatus of any one of 8) to 11), wherein the at least one data set comprises a harmony data set and the processor is configured to:
[0280] filter the harmony data set in response to the received user data; and
[0281] select the pre-recorded musical item from the filtered harmony data set.
[0282] 13) The apparatus of any of 8) through 11), wherein the at least one data set comprises a harmony data set, a beat data set, a solo data set, and a mood data set, and wherein the processor is configured to:
[0283] filter the harmony data set, the beat data set, the solo data set, and the mood data set in response to the received user data; and
[0284] select a first pre-recorded music item from the filtered harmony data set; and
[0285] select a further pre-recorded music item from one or more of the filtered beat data set, the filtered solo data set, and the filtered mood data set.
[0286] 14) The apparatus of 13), wherein the processor is configured to combine the selected first pre-recorded music item and the further pre-recorded music item or each further pre-recorded music item to compose music.
[0287] 15) The apparatus of any of 13) or 14), wherein the processor is configured to further filter the beat data set, the solo data set, and the mood data set based on the selected first pre-recorded music item.
[0288] 16) The apparatus of any of 8) through 15), wherein the processor is configured to:
[0289] receive a change in user data; and
[0290] modify the composed music in response to the change in user data.
[0291] 17) The apparatus of 16), wherein the processor modifies the composed music by:
[0292] modifying at least one characteristic of the composed music.
[0293] 18) The apparatus of 16) or 17), wherein the processor modifies the composed music by:
[0294] selecting at least one further pre-recorded music item from the at least one data set; and
[0295] replacing one pre-recorded music item in the composed music with the selected further pre-recorded music item.
[0296] 19) The apparatus of any of 8) through 18), wherein the user data is one or more of: a time a request to compose music was received, a date a request to compose music was received, a weather condition when a request to compose music was received, biometric data, pace, speed, mode of travel, heart rate, location, GPS location, and direction of movement.
[0297] 20) The apparatus of any of 8) through 19), wherein the processor is configured to:
[0298] receive a change in user data related to one or more of: pace, speed, and heart rate; and
[0299] modify the composed music in response to the change in user data.
[0300] 21) The apparatus of any of 13) through 20), wherein the processor is configured to:
[0301] receive a change in user data related to one or more of: pace, speed, and heart rate;
[0302] select an additional pre-recorded music item from the beat data set in response to the change in user data; and
[0303] modify the composed music to incorporate the additional pre-recorded music item from the beat data set.
[0304] 22) The apparatus of any of 8) through 21), wherein the processor is configured to:
[0305] receive a change in user data related to direction of travel; and
[0306] modify a tonality of the composed music in response to the change in user data.
[0307] 23) The apparatus of 22), wherein the processor:
[0308] determines an angle of the change in direction of travel;
[0309] determines a predetermined change in tonality corresponding to the determined angle from a lookup table; and
[0310] modifies the composed music to the determined predetermined tonality.
[0311] 24) The apparatus of any of 13) through 23), wherein the processor is configured to:
[0312] receive a change in user data related to location;
[0313] selecting a further pre-recorded music item from the mood data set in response to the change in user data; and
[0314] modifying the composed music to incorporate the further pre-recorded music item from the mood data set.
[0315] 25) The apparatus of any of 8) to 24), wherein the processor is configured to change at least one feature of the composed music after a predetermined time period if no change in user data is received within the predetermined time period.
[0316] 26) The apparatus of any of 8) to 25), wherein the user interface is configured to receive an operational mode selection, and the processor is configured to:
[0317] filter at least one data set containing a plurality of pre-recorded music items in response to the selected operational mode.
[0318] 27) The apparatus of any of 8) to 26), wherein the user interface is configured to receive a selection of one or more of a key, a mode, and a variation, and the processor is configured to:
[0319] filter at least one data set containing a plurality of pre-recorded music items in response to the received selection.
[0320] 28) The apparatus of any of 8) to 27), further comprising a data store to store generated metadata.
[0321] 29) The apparatus of 28), wherein the data store contains the at least one data set of pre-recorded music items.
[0322] 30) The apparatus of any of 8) to 29), further comprising a communication module configured to receive user data from an external device.
[0323] 31) The apparatus of 30), wherein the communication module is configured to:
[0324] transmit user data to a remote data store comprising the at least one data set containing the pre-recorded music items;
[0325] receive at least one pre-recorded music item from the remote data store.
[0326] 32) The apparatus of 31), wherein the communication module is configured to:
[0327] transmitting user data to a remote data store comprising the at least one data set, the at least one data set containing the pre-recorded music items;
[0328] receiving composed music from the remote data store based on the user data.
[0329] 33) The apparatus of any of 8) to 32), wherein the user interface is configured to receive feedback data regarding the composed music.
[0330] 34) The apparatus of 33), wherein the processor is configured to:
[0331] filter the at least one data set containing the pre-recorded music items in response to the received feedback data.
[0332] 35) The apparatus of any of 8) to 34), wherein the apparatus comprises an image capture device configured to capture images, and the processor is configured to:
[0333] output the composed music;
[0334] determine that the image capture device has captured an image when the composed music is outputted;
[0335] create a link between the captured image and the composed music.
[0336] 36) The apparatus of any of 8) to 35), wherein the user interface is configured to receive a request to replay the composed music, and the processor is configured to:
[0337] obtain metadata associated with the composed music;
[0338] use the metadata to obtain the pre-recorded music item or each pre-recorded music item forming the composed music from the at least one data set;
[0339] modify the obtained pre-recorded music item or each obtained pre-recorded music item using the metadata; and
[0340] recompose the composed music.
[0341] 37) A method for generating music, the method comprising:
[0342] receiving a request to compose music;
[0343] receiving user data;
[0344] filtering at least one data set containing a plurality of pre-recorded music items in response to the received user data.
[0345] selecting at least one pre-recorded music item from the filtered at least one data set;
[0346] generating music using the or each selected pre-recorded music item; and
[0347] generating metadata associated with the composed music.
[0348] 38) The method of 37), further comprising:
[0349] selecting at least two pre-recorded music items from at least two filtered data sets; and
[0350] combining the selected pre-recorded music items to compose music.
[0351] 39) The method of 37) or 38), wherein the step of composing music comprises:
[0352] modifying a characteristic of the or each selected pre-recorded music item.
[0353] 40) The method of any one of 37) to 39), further comprising:
[0354] receiving a change in user data; and
[0355] modifying at least one characteristic of the composed music in response to the change in user data.
[0356] 41) The method of any one of 37) to 40), further comprising:
[0357] receiving a change in user data relating to a direction of travel;
[0358] determining an angle of change in the direction of travel;
[0359] using a lookup table to determine a predetermined change in tonality corresponding to the determined angle; and
[0360] modifying the composed music to the determined predetermined tonality.
[0361] 42) The method of any one of 37) to 41), further comprising:
[0362] receiving feedback data regarding the composed music;
[0363] filtering the at least one data set containing the pre-recorded music items in response to the received feedback data.
[0364] 43) The method of any one of 37) to 42), further comprising:
[0365] playing the composed music;
[0366] receiving images captured from an image capture device while the composed music is being played; and
[0367] creating a link between the captured images and the composed music.
[0368] 44) A non-transitory data carrier carrying processor control code for implementing the method of any of 1) to 7) or 37) to 43).
[0369] 45) A system for generating music, the system comprising:
[0370] a remote data store comprising at least one data set containing a plurality of pre-recorded music items; and
[0371] a device comprising:
[0372] a user interface configured to receive a request to compose music;
[0373] a processor; and
[0374] a communication module coupled to the processor to:
[0375] receive user data;
[0376] transmit the received user data to the remote data store with the request to compose music; and
[0377] wherein the processor is configured to generate metadata associated with the composed music.
[0378] 46) The system of 45), wherein the remote data store is configured to:
[0379] filter the at least one data set containing the pre-recorded music items in response to the received user data; and
[0380] select at least one pre-recorded music item from the filtered at least one data set.
[0381] 47) The system of 46), wherein the remote data store is configured to transmit the selected at least one pre-recorded music item to the communication module of the device, and wherein the processor is configured to use the selected at least one pre-recorded music item to compose music.
[0382] 48) The system of either of 45) or 46), further comprising a remote processor configured to:
[0383] receiving at least one selected pre-recorded music item from the remote data store;
[0384] composing music using the or each selected pre-recorded music item; and
[0385] transmitting the composed music to the communication module of the device.
[0386] 49) The system of 48), wherein the remote processor is configured to:
[0387] receive at least two selected pre-recorded music items from the remote data store; and
[0388] combine the received pre-recorded music items to compose music.
[0389] 50) The system of 48) or 49), wherein the remote processor is configured to compose music by:
[0390] modifying a feature of the or each selected pre-recorded music item.
[0391] 51) The system of any one of 48) to 50), wherein the remote data store comprises a harmony data set, a beat data set, a solo data set, and a mood data set, and wherein the remote processor is configured to:
[0392] filter the harmony data set, the beat data set, the solo data set, and the mood data set in response to the received user data; and
[0393] select a first pre-recorded music item from the filtered harmony data set; and
[0394] select a further pre-recorded music item from one or more of the filtered beat data set, the filtered solo data set, and the filtered mood data set.
[0395] 52) The system of any one of 48) to 51), wherein the communication module is configured to:
[0396] receive a change in user data; and
[0397] transmit the received change in user data to the remote processor; and
[0398] wherein the remote processor is configured to:
[0399] modify the composed music in response to the change in user data; and
[0400] transmitting the modified composed music to the communication module.
[0401] 53) The system of any of 45) to 52), further comprising at least one sensor to sense user data.
[0402] 54) The system of 53), wherein the at least one sensor is contained within the device.
[0403] 55) The system of 53) or 54), wherein the at least one sensor is configured to sense one or more of biometric data, cadence, speed, heart rate, position, GPS position, and direction of movement.
[0404] 56) The system of any of 52) to 55), wherein the remote processor is configured to:
[0405] receive a change in user data related to one or more of cadence, speed, and heart rate; and
[0406] modify the beat of the composed music in response to the change in user data.
Claims
1. A method for composing a single piece of music, comprising: At the device: Acquire the sensed user data; The sensed user data is used to filter at least one dataset containing multiple modules, each module comprising multiple units, wherein each unit is a music item; Select at least one cell from at least one filtered dataset; The at least one unit is arranged according to a path to form the unit composition, wherein the path indicates the progression from one unit to another in the unit composition; The method further includes: Acquire the changed, sensed user data; For each change in the sensed user data, determine the type and magnitude of the change; Identify at least one transformation rule corresponding to each defined change type and magnitude; and Applying the at least one transformation rule to the unit composition, wherein applying the at least one transformation rule includes: Identify the unit to be replaced in the unit composition; Determine the attributes of the identified units; New units are selected from the filtered at least one dataset based on the at least one transformation rule and the determined attributes of the identified units; and Replace the identified unit in the unit composition with the selected new unit.
2. The method according to claim 1, wherein, The step of selecting at least one unit includes: selecting a first unit from a first filtered dataset, and selecting a second unit from a second filtered dataset based on the attributes of the first unit.
3. The method according to claim 2, further comprising: The first unit is arranged according to the first path; and The second unit is arranged according to the second path; The first path and the second path at least partially overlap.
4. The method according to claim 1, wherein, Acquiring the sensed user data includes: Receive the sensed user data from another device; or The sensed user data is received from one or more sensors of the device.
5. The method according to any one of claims 1-4, further comprising: Based on the changes in the sensed user data, one or more features of the at least one unit are modified.
6. The method according to any one of claims 1-4, wherein, Selecting the at least one cell from the at least one filtered dataset includes: In response to a user instruction, select the at least one cell from the at least one filtered dataset; Randomly select the at least one unit from the at least one filtered dataset; or Using the sensed user data, select the at least one unit from the at least one filtered dataset.
7. The method according to any one of claims 1-4, further comprising: Using at least one selected unit, the filtered at least one dataset is further filtered.
8. The method according to any one of claims 1-4, wherein, The sensed user data includes one or more of the following: biometric data, location data, weather data, and direction of movement data.
9. The method according to any one of claims 1-4, wherein, The device includes a vehicle.
10. The method according to any one of claims 1-4, further comprising: Generate metadata associated with the unit composition; Store the metadata.
11. The method of claim 10, further comprising: Obtain the metadata associated with the unit composition; Using the metadata, the at least one unit is obtained from the at least one filtered dataset.
12. The method of claim 11, further comprising: Based on the metadata, modify one or more features of the at least one unit.
13. The method according to claim 8, wherein, The biostatistics include one or more of the following: pace data, speed data, and heart rate data.
14. The method according to claim 8, wherein, The location data includes GPS location data.
15. A system for unit composition, the system comprising: The device is used to: Acquire the sensed user data; The sensed user data is used to filter at least one dataset containing multiple modules, each module comprising multiple units, wherein each unit is a music item; Select at least one cell from at least one filtered dataset; The at least one unit is arranged according to a path to form the unit composition, wherein the path indicates the progression from one unit to another in the unit composition; The device is also used to: Acquire the changed, sensed user data; For each change in the sensed user data, determine the type and magnitude of the change; Identify at least one transformation rule corresponding to each defined change type and magnitude; and Applying the at least one transformation rule to the unit composition, wherein applying the at least one transformation rule includes: Identify the unit to be replaced in the unit composition; Determine the attributes of the identified units; New units are selected from the filtered at least one dataset based on the at least one transformation rule and the determined attributes of the identified units; and Replace the identified unit in the unit composition with the selected new unit.
16. A non-volatile data carrier carrying processor control code to perform the method according to any one of claims 1-14.
Citation Information
Patent Citations
Method and apparatus for automatically creating musical compositions
CN101454824A
Method of retrieving and selecting content, content playback apparatus, and search server
US20070261538A1
System and Method for Producing a More Harmonious Musical Accompaniment
US20130025437A1
System and method for determining an accent pattern for a musical performance
US20150013533A1
Method, software and apparatus for creating audio compositions
WO2005057821A2