Sound synthesis file compression

By compressing sound synthesis files and deploying them across devices, the method addresses storage and processing limitations in audio-enabled consumer devices, enabling efficient updates and reduced resource usage.

WO2025095953A1PCT designated stage expired Publication Date: 2025-05-08HARMAN INT IND INC
View PDF 3 Cites 0 Cited by

Patent Information

Application Number
PCT/US2023/036684
Authority / Receiving Office
WO · WO
Patent Type
Applications
Current Assignee / Owner
Filing Date
2023-11-02
Publication Date
2025-05-08

AI Technical Summary

Technical Problem

Existing audio-enabled consumer devices face challenges with storage capacity and processing power, limiting their ability to store and update sound synthesis parameters efficiently, especially with low data transfer rates.

Method used

A computer-implemented method for compressing sound synthesis files, reducing their size, and deploying the compressed files across devices in a sound synthesis system, enabling quicker updates and reduced storage requirements.

Benefits of technology

The method allows for a significant reduction in storage capacity needed for sound synthesis parameters, facilitates quicker upgrade processes, and reduces bandwidth requirements during data transmission.

✦ Generated by Eureka AI based on patent content.

Smart Images

  • Figure US2023036684_08052025_PF_FP_ABST
    Figure US2023036684_08052025_PF_FP_ABST
Patent Text Reader

Abstract

Various embodiments disclose a computer-implemented method comprising: performing a compression operation on a first file for synthesizing an audio signal, wherein the compression operation generates a compressed file for synthesizing the audio signal; and deploying the compressed file from a first computing device included in the sound-synthesis system to a second computing device included in the sound-synthesis system.
Need to check novelty before this filing date? Find Prior Art

Description

SOUND SYNTHESIS FILE COMPRESSIONBACKGROUNDField of the Various Embodiments

[0001] The various embodiments relate generally to sound synthesis systems and, more specifically, to sound synthesis file compression.Description of the Related Art

[0002] Many consumer devices output sound to enhance the user experience when interacting with the consumer device. For example, some consumer devices produce one or more audio outputs (e.g.. sound effects and / or music) in response to certain events, such as a user input being received or an action being performed by the device. Commonly, such devices store a pre-recorded sound file for each audio output. Then, when the device detects that a particular event has occurred, a sound-producing circuit of the device loads the appropriate pre-recorded sound file and drives a speaker to output an audio reproduction of the sound file.

[0003] However, many audio-enabled consumer devices use low-power microcontrollers and / or storage systems to minimize costs, and therefore have limited processing and storage capacity. As a result, the use of pre-recorded sound files for enabling audio outputs in some consumer devices can be problematic. For example, pre-recorded sounds require a relatively large amount of storage space, thereby limiting the number of different sounds that can be played by many lower-cost consumer devices. In addition, due to their limited processing capability, many audio-enabled consumer devices are unable to alter the output of a prerecorded sound other than in simple ways, such as changing a volume or a playback rate. Thus, such consumer devices can only repetitively reproduce sounds with essentially the same characteristics, thereby detracting from the versatility and long-term entertainment value of the consumer device.

[0004] To address such shortcomings, some audio-enabled consumer devices now employ sound synthesis to produce sounds instead of replaying prerecorded sound files. Sound synthesis is the electronic production of sound where no acoustic source or recorded signal is used. In an example of sound synthesis, an electrical signal is generated by an electrical circuit, amplified, and fed to a loudspeaker to produce a desired acoustic signal, such as a sound effect. In another example of sound synthesis, the real electrical circuitry is replaced by equivalent mathematical algorithms that could be realized via computer programming togenerate the output signal that is fed to a loudspeaker to produce a desired acoustical signal. Voltage fluctuation in the electrical signal represents a desired sound pressure variation that corresponds to the desired acoustic signal or sound. Thus, with suitable sound-synthesis circuitry or simulation of such circuitry using programming, many desired acoustic signals can be generated without the need for high-capacity storage or digital signal processing. Further, using a sound-synthesis system, pre-programmed sounds can be readily altered as desired to produce additional sounds simply by modifying values for certain audio algorithm parameters.

[0005] When an audio-enabled consumer device that uses a sound-synthesis system is in the possession of the consumer, the device can still be modified to generate new and / or improved sounds that have been developed by the manufacturer. For example, through software or firmware upgrades, audio algorithm parameters of the sound synthesis system can be modified, thereby enabling the sound synthesis system to generate new sounds. One drawback of such an upgrade process for audio-enabled consumer devices is that, oftentimes, the amount of data that can be transmitted to the device in one upgrade event is limited. In addition, the data transfer rate to the audio-enabled consumer device can be very low, resulting in time-consuming upgrades and a poor user experience. Further, low-cost consumer devices frequently have such limited storage capacity that even the lightweight upgrades associated with updated sound-synthesis parameters can exceed this storage capacity. All of these factors can limit the ability to upgrade many audio-enabled consumer devices.

[0006] In light of the above, more effective techniques for performing sound- synthesis upgrades would be useful.SUMMARY

[0007] Various embodiments disclose a computer-implemented method comprising: performing a compression operation on a first file for synthesizing an audio signal, wherein the compression operation generates a compressed file for synthesizing the audio signal; and deploying the compressed file from a first computing device included in the sound- synthesis system to a second computing device included in the sound- synthesis system.

[0008] Further embodiments provide, among other things, non-transitoiy computer- readable storage media storing instructions for implementing the method set forth above, as well as an interactive toy, a device, and a system configured to implement the method set forth above.

[0009] At least one technical advantage of the disclosed techniques relative to the prior art is that the disclosed techniques enable a reduction in the size of files associated with sound synthesis in audio-enabled electronic devices. As a result, less storage capacity of such devices is consumed by the sound-synthesis parameters associated with an upgrade event In addition, upgrade events can be completed quickly, even when the data transfer rate to the audioenabled electronic device is very low. Further, significantly less bandwidth is required during an upgrade event to transmit update-related data. These technical advantages provide one or more technological advancements over prior art approaches.BRIEF DESCRIPTION OF THE DRAWINGS

[0010] So that the manner in which the above recited features of the various embodiments can be understood in detail, a more particular description of the inventive concepts, briefly summarized above, may be had by reference to various embodiments, some of which are illustrated in the appended drawings. It is to be noted, however, that the appended drawings illustrate only typical embodiments of the inventive concepts and are therefore not to be considered limiting of scope in any way, and that there are other equally effective embodiments.

[0011] Figure 1 illustrates a conceptual diagram of a sound-synthesis system configured to implement one or more aspects of the present disclosure;

[0012] Figure 2 illustrates a block diagram of an exemplary signal flow executed by the sound- synthesis system of Figure 1, according to various embodiments of the present disclosure;

[0013] Figure 3 sets forth a flow diagram of method steps for deploying a sound synthesis program for synthesizing an audio signal, according to various embodiments of the present disclosure.

[0014] Figure 4 illustrates a conceptual system diagram of a signal flow file associated with a signal flow of the sound- synthesis system of Figure 1, according to various embodiments.

[0015] Figure 5 illustrates a conceptual diagram of an original value for a synthesis parameter and compressed values for the synthesis parameter, according to various embodiments.

[0016] Figure 6 illustrates a conceptual diagram of a set of original values for various synthesis parameters, a first set of compressed values and a second set of compressed values, according to various embodiments.

[0017] Figure 7 illustrates a conceptual diagram of an original value for a synthesis parameter and compressed values for the synthesis parameter, according to various embodiments.

[0018] Figure 8 sets forth a flow diagram of method steps for synthesizing an audio signal using a compressed audio synthesis configuration, according to various embodiments of the present disclosure.

[0019] Figure 9 sets forth a flow diagram of method steps for synthesizing an audio signal using a compressed audio synthesis configuration, according to various embodiments of the present disclosure.

[0020] Figure 10 sets forth a flow diagram of method steps for synthesizing an audio signal using a compressed audio synthesis configuration, according to various embodiments of the present disclosure.DETAILED DESCRIPTION

[0021] In the following description, numerous specific details are set forth to provide a more thorough understanding of the various embodiments. However, it will be apparent to one skilled in the art that the inventive concepts may be practiced without one or more of these specific details.Overview

[0022] Embodiments disclosed herein include a sound-synthesis system that facilitates the use of sound synthesis in audio-enabled electronic devices. The herein-described soundsynthesis system includes a mechanism for developing an audio product based on an audio synthesis configuration for synthesizing a desired audio signal. The audio synthesis configuration specifies various audio objects from a library of predefined audio objects that are to be used to generate the desired audio signal. Synthesis parameter values associated with the selected configuration of audio objects modify how the respective audio objects operate in conjunction with each other to generate the desired audio signal. Upon receipt of an audio synthesis configuration, an audio-enabled electronic device of the sound- synthesis system can use the audio synthesis configuration to synthesize the desired audio signal in real time.

[0023] In addition, the sound-synthesis system facilitates deployment of upgraded audio products to audio-enabled electronic devices that are already in the field. The sound- synthesis system also expands the number of audio synthesis configurations that such audio-enabled electronic devices can store and use. Specifically, for a given audio product, the soundsynthesis system compresses one or more values or files associated with the audio synthesis configuration, including synthesis parameter values and / or files or values that specify the audio synthesis configuration. For example, in some embodiments, synthesis parameter values associated with the audio synthesis configuration are originally selected by a designer as a full bit-depth number (e.g., a 32-bit number), but when compressed some or all synthesis parameter values are approximated with a reduced bit-depth number (e g., a 16-bit or 8-bit number). The compressed values require less storage and can be deployed to a device as an update or expansion package either over-the-air or via low-cost, low storage-capacity media. Due to the smaller size of the compressed values, the update process can be performed more quickly, and / or more such updates can be stored by a given device.

[0024] The sound-synthesis system can be implemented in various forms, such as an interactive device including a processor and local memory, personal computers, and so forth. The sound-synthesis system can perform the processing functions using a dedicated processing device and / or a separate computing device, such as a mobile computing device of a user or a cloud-computing system. The sound-synthesis system can deliver updated audio synthesis configuration values to a client computing device of the system via an over-the-air (OTA) update and / or via an external device, such as a radio frequency identification (RFID) tag.System Overview

[0025] Figure 1 illustrates a conceptual diagram of a sound-synthesis system 100 configured to implement one or more aspects of the present disclosure. As shown, soundsynthesis system 100 includes, without limitation, a designer computing device 110, an audio synthesis configuration 140(1), a client computing device 150, an audio output device 170, and one or more external devices 180. Designer computing device 110 includes, without limitation, a processing unit 112 and a memory 114. Memory 114 includes, without limitation, an audio tuning tool 120, an audio object library 122 including one or more audio objects 124, and a compression application 126. Client computing device 150 includes, without limitation, a memory 154, and a processor 152. Memory 154 includes, without limitation, a sound synthesis application 160, a local audio object library 162 including one or more audio objects 164, one or more local audio synthesis configurations 140(3), and a decompression application156. The one or more external devices 180 include, without limitation, one or more audio synthesis configurations 140(2). One or more of audio synthesis configurations 140(2) respectively include, without limitation, a signal flow 142(2) and one or more synthesis parameters 146(2). In some embodiments, the one or more audio synthesis configurations 140(2) can be compressed versions of the one or more of audio synthesis configurations 140(1) generated via audio tuning tool 120.

[0026] In operation, when audio tuning tool 120 executes on designer computing device 110, audio tuning tool 120 accesses audio object library 122 to generate an audio synthesis configuration 140(1). For example, a designer can use audio tuning tool 120 to specify which audio objects 124 from audio object library 122 are included in audio synthesis configuration 140(1) to generate a particular sound. Audio synthesis configuration 140(1) includes a set of synthesis parameters 146(1) and a signal flow 142(1) that specifies a configuration of one or more audio objects 124 that are in audio object library 122. Upon activation, audio synthesis configuration 140(1) generates a synthesized audio signal 173 that can cause an audio output device, such as audio output device 170, to generate a sound output, such as sound output 172.

[0027] Audio synthesis configuration 140(1) is generated on designer computing device 110 and includes one or more files that specify a particular arrangement of audio objects 124 and synthesis parameters required to synthesize audio signal 173. Thus, audio synthesis configuration 140(1) includes signal flow 142(1) and synthesis parameters 146(1). Signal flow 142(1) specifies a subset of audio objects 124 from audio object library 122 and the interconnections between each audio object 124 in the subset. Thus, in some embodiments, signal flow 142(1) includes a listing of audio objects 124 and interconnections therebetween. Synthesis parameters 146(1) are applied to the arrangement of audio objects 124 specified in signal flow 142(1) to generate a specific sound. Thus, in various embodiments, synthesis parameters 146(1) configure the subset of audio objects 124 from audio object library 122 associated with audio synthesis configuration 140(1). For example, in some embodiments, synthesis parameters 146(1) include a set of tuning parameters and / or control parameters. In some embodiments, the set of tuning parameters includes, among other things, gain values, frequencies, envelope parameters (such as amplitude-vs-time values), frequency modulation parameters, filter coefficients, filter corner frequencies, Qs and gains, limiter profiles, distortion coefficients, length of delay values (in ms or s), and / or lookup tables. In some embodiments, the set of control parameters includes controls, signals, or values that control the functionality of individual objects, such as “enable,” “disable,” or “mute.” Alternatively oradditionally, in some embodiments, the set of control parameters includes table index values to select which table of tuning parameters associated with an audio object are selected, as “active,” “loop,” or “one-shot,” to determine an operating state of an audio object, etc.

[0028] Designer computing device 110 transmits a compressed version of an audio synthesis configuration 140(1) to client computing device 150 for storage as one of a group of locally stored audio synthesis configurations 140(3). In an embodiment, designer computing device 110 transmits a compressed version of synthesis parameters 146(1) to client computing device 150 for storage as one of a group of locally stored synthesis parameters 146(3). When executing on client computing device 150, sound synthesis application 160 generates a particular synthesized audio signal 173 based on a stored audio synthesis configuration 140(3) or synthesis parameters 146(3) that corresponds to that particular synthesized audio signal 173. Therefore, when synthesizing a particular audio signal 173 for output, sound synthesis application 160 selects an audio synthesis configuration 140(3) from the set of locally stored audio synthesis configurations 140(3) that corresponds to that particular audio signal 173. The selected audio synthesis configuration 140(3) specifies one or more audio objects 164 defined in audio object library 162 and connections between these specified audio objects 164 and the synthesis parameters 146(3) used to configure the audio objects. According to various embodiments, a locally stored audio synthesis configuration 140(3) can be a locally stored compressed version of a corresponding audio synthesis configuration 140(1) generated by designer computing device 110 and compressed by compression application 126. Alternatively, in some embodiments, a locally stored audio synthesis configuration 140(3) can be a decompressed version of the corresponding audio synthesis configuration 140(1) generated by designer computing device 110 which has been decompressed by decompression application 156.

[0029] Sound synthesis application 160, which executes on client computing device 150, configures local audio objects 164 in an arrangement corresponding to the selected audio synthesis configuration 140(3) and synthesis parameters 146(3). Sound synthesis application 160 generates the arrangement of local audio objects 164 as specified by signal flow 142(3). For example, sound synthesis application 160 can be an extendable audio framework (xAF) application produced by Harman International®. Sound synthesis application 160 drives audio output device 170 to provide a sound output 172 that is a reproduction of the synthesized audio signal 173.

[0030] Designer computing device 110 is a computing device that a designer uses togenerate one or more audio synthesis configurations 140(1). In various embodiments, designer computing device 110 communicates with client computing device 150 directly or via a wired or wireless network (not shown) or removable media (not shown) to update client computing device 150 with a new or updated sound synthesis application 160, a new or updated audio object library 162 (which can be a copy or a subset of audio object library 122), and / or new or updated audio synthesis configurations 140(3).

[0031] Processing unit 112 can be any suitable processor, such as a central processing unit (CPU), a graphics processing unit (GPU), an application-specific integrated circuit (ASIC), a field programmable gate array (FPGA), a digital signal processor (DSP), and / or any other type of processing unit, or a combination of different processing units, such as a system on a chip (SoC), or a CPU configured to operate in conjunction with a GPU. In general, processing unit 112 can be any technically feasible hardware unit capable of processing data and / or executing software applications.

[0032] Memory 114 can include a random-access memory (RAM) module, a flash memory unit, or any other type of memory unit or combination thereof. Processing unit 112 is configured to read data from and write data to memory 114. In various embodiments, memory 114 includes non-volatile memory, such as optical drives, magnetic drives, flash drives, electrically erasable programmable read-only memory (EEPROM) or other storage. In some embodiments, separate data stores, such as external data stores included in a network (“cloud storage”) can supplement or constitute memory 114. In some embodiments, audio tuning tool 120 residing in memory 114 can be executed by processing unit 112 to implement the overall functionality of designer computing device 110. In various embodiments, an interconnect bus (not shown) connects processing unit 112, memory 114, and any other components of designer computing device 110.

[0033] Audio tuning tool 120 generates one or more audio synthesis configurations 140(1), where a given audio synthesis configuration 140(1) specifies how a computing device (e.g., designer computing device 110, client computing device 150, external devices 180, etc.) is to synthesize audio signal 173 for playback using a set of predefined audio objects and synthesis parameters. In various embodiments, designer computing device 110 uses audio tuning tool 120 to generate an audio synthesis configuration 140(1) and simulate the operation of client computing device 150 to simulate the reproduction of sound output 172 based on the generated audio synthesis configuration. For example, audio tuning tool 120 can be a graphical user interface, such as the Global Tuning Tool (GTT) produced by Harman International,which enables users to visually load predefined audio objects and add connections between the audio objects and configure tuning parameters. In various embodiments, audio tuning tool 120 enables a designer to modify synthesis parameters used by the predefined audio objects 124 when synthesizing a sound. For example, audio tuning tool 120 can load a waveform generator from audio object library 122 and can modify the synthesis parameters (e.g., amplitude, frequency, waveform type, phase, etc.) employed by the waveform generator when synthesizing a waveform.

[0034] Audio object library 122 includes predefined audio objects that act as sound synthesis blocks that can be combined to generate a sound. For example, audio object library 122 defines the functionalities of various audio objects including pink and white noise generators, waveform generators (oscillators, triangle wave generators, etc.), amplitude controls (e.g., gain, volume, mute, limiter and envelope), mixers to combine signals, control signal mixers, routers, scalers, splitters and selectors, control signal modulators, control signal generators, control signal tables, distortion effects, delay elements, music file players, lookup tables (LUTs), frequency equalization blocks, and filters, including high-pass filters (HPF), low-pass filters (LPF), bandpass filters (BP), shelf filters, biquads, finite impulse response (FIR) filters, and so forth. These various audio objects are embodied in lines of code that, when executed, process, generate, filter or otherwise create and / or modify the audio or control signals using their accompanying tuning parameters and control signals as inputs. In various embodiments, audio tuning tool 120 displays the audio objects from the audio library for use in generating an audio synthesis configuration (1).

[0035] In various embodiments, a designer can produce a plurality of distinct audio synthesis configurations 140(1) that can be transmitted to client computing device 150 for use. Client computing device 150 stores audio synthesis configurations 140(1) locally as audio synthesis configurations 140(3) as shown. In operation, sound synthesis application 160 loads a particular locally stored audio synthesis configuration 140(3) and synthesizes audio signal 173 that corresponds to that particular audio synthesis configuration 140(3). In some embodiments, the audio synthesis configuration 140 can include multiple files. For example, a given audio synthesis configuration 140 can include one file (e.g., a signal flow diagram [.sfd] file) that specifies the audio objects, connections between the audio objects and control signals that are to be used in an arrangement of audio objects, and a separate file (e.g., a set of tuning parameters [.set] files) that specifies the synthesis parameters that configure the respective audio objects.

[0036] Compression application 126 performs a lossy or lossless compression process on an audio synthesis configuration 140(1). In an embodiment, compression application 126 performs a lossy or lossless compression process on an all or portions of audio synthesis configuration 140(1) including all or portions of either or both of signal flow 142(1) and synthesis parameters 146(1). For example, prior to a particular audio synthesis configuration 140(1) being deployed to client computing device 150 and / or external device 180, compression application 126 generates a compressed version of the particular audio synthesis configuration 140(1) by reducing the size of values and / or files included in or associated with the particular audio synthesis configuration 140(1). Thus, the compressed version of audio synthesis configuration 140(1) can be deployed, which involves less data transfer.

[0037] Client computing device 150 is a device that executes the sound synthesis application 160 and drives audio output device 170 to generate sound output 172. In various embodiments, one or more of client computing device(s) 150 and / or audio output device(s) 170 are included in one or more devices, such as an interactive device, soundbar, portable speaker, or smart home device (e.g., a digital assistant). In some embodiments, client computing device 150 can be included in an audio-enabled consumer product, such as an interactive toy (e.g., a race car that produces a sound). In various embodiments, client computing device 150 is located in various environments including, without limitation, indoor environments (e.g., living room, bedroom, classroom, etc.), and / or outdoor environments, (e.g., patio, garden, etc.). In some embodiments, client computing device 150 is a low-power, limited-processing, and / or limited-memory device that implements a lightweight processing of incoming data. For example, client computing device 150 may be a Raspberry Pi (e.g.. Pi 1®, Pi 2®, Pi 3®, or Pi 4®) that includes a processor, such as a digital signal processor, memory (e.g., 1-4 MB RAM), and storage (e.g., a flash storage card). In another example, client computing device 150 may be a development board, such as a Teensey® 4.0 microcontroller development board, or any other board that contains a processor that is used as a digital signal processor, such as an ARM® Cortex M4, or other lightweight computing device.

[0038] Processor 152 can be any suitable processor, such as a central processing unit (CPU), a graphics processing unit (GPU), an application-specific integrated circuit (ASIC), a field programmable gate array (FPGA), a digital signal processor (DSP), and / or any other type of processing unit, or a combination of different processing units, such as a CPU configured to operate in conjunction with a GPU. In general, processing unit 112 can be any technically feasible hardware unit capable of processing data and / or executing software applications. Insome embodiments, processor 152 could be a low-power processor. In such instances, the digital signal processor performs lightweight computations, including real-time processing of sensor data and / or electrical signals to generate an audio signal.

[0039] Memory 154 can include a random-access memory (RAM) module, a flash memory unit, an EEPROM, or any other type of memory unit or combination thereof. Processor 152 is configured to read data from and write data to memory 154. In various embodiments, memory 154 includes non-volatile memory, such as optical drives, magnetic drives, flash drives, or other storage. In some embodiments, separate data stores, such as external data stores included in a network (“cloud storage”) can supplement or constitute memory 154. In some embodiments, sound synthesis application 160 residing in memory 154 can be executed by processor 152 to implement the overall functionality of client computing device 150. In various embodiments, an interconnect bus (not shown) connects processor 152, memory 154, and any other components of client computing device 150. In some embodiments, decompression application 156 residing in memory 154 can be executed by processor 152 to decompress a compressed version of audio synthesis configuration 140(1) or synthesis parameters 146(1). For example, in some embodiments, decompression application 156 decompresses audio synthesis configuration 140(3) after being executed by client computing device 150. In some embodiments, sound synthesis application 160 residing in memory 154 can be executed by processor 152 to implement the overall functionality of client computing device 150 described herein.

[0040] Sound synthesis application 160 executes various techniques to synthesize an audio signal 173 and drive audio output device 170 to reproduce synthesized audio signal 173 as sound output 172. In various embodiments, sound synthesis application 160 stores one or more audio synthesis configurations 140(3) received from external sources, including receiving audio synthesis configuration 140(1) from designer computing device 110 and / or receiving audio synthesis configuration 140(2) stored in the external device 180. For example, sound synthesis application 160 can cause client computing device 150 to download audio synthesis configuration 140(2) from external device 180 when proximate to external device 180. In the embodiment illustrated in Figure 1, client computing device 150 downloads and stores multiple audio synthesis configurations from a single external device 180. In other embodiments, client computing device 150 downloads and stores multiple audio synthesis configurations from multiple external devices 180 (not shown). In various embodiments, sound synthesis application 160 causes client computing device 150 to locally store receivedaudio synthesis configurations 140(1), 140(2) as one or more audio synthesis configurations 140(3) within memory 154.

[0041] In various embodiments, sound synthesis application 160 initiates sound output 172 by producing an arrangement of audio objects 164 in the manner specified in a given audio synthesis configuration 140(3) and then configuring and activating the arrangement to synthesize audio signal 173. Sound synthesis application 160 then drives audio output device 170 to reproduce the synthesized audio signal as sound output 172.

[0042] The audio synthesis configurations 140(3) are locally stored in the memory 154 of client computing device 150. In various embodiments, audio synthesis configurations 140(3) include a default audio synthesis configuration that the sound synthesis application 160 loads without intervention, and one or more additional audio synthesis configurations that sound synthesis application 160 selects in response to intervention by a user (e.g., providing an input to select a non-default audio synthesis configuration). In various embodiments, audio synthesis configurations 140(3) stored in client computing device 150 correspond to audio synthesis configuration 140(1) created by designer computing device 110, and / or audio synthesis configuration 140(2) that were stored in other external devices 180 and copied to client computing device 150. In some embodiments, audio synthesis configurations 140(3) stored in client computing device 150 is a compressed version of audio synthesis configuration 140(1) created by designer computing device 110. In any of these embodiments, a compressed version of audio synthesis configuration 140(1) can include compression of all or portions of audio synthesis configuration 140(1), including all or portions of either or both the signal flow 142(1) and synthesis parameters 146(1).

[0043] Audio output device 170 includes a device capable of providing a sound output, such as a loudspeaker. For example, audio output device 170 can be wired or wireless headphones, wired or wireless ear buds, a wired or wireless speaker system (e.g., one or more loudspeakers, amplifiers, etc.), or any other device that generates sound output 172. In various embodiments, audio output device 170 can be incorporated into client computing device 150 (e.g., disposed in the body of a form factor including processor 152 and audio output device 170), or can be external to client computing device 150. In various embodiments, audio output device 170 is implemented using any number of different conventional form factors, such as a single consumer product, discrete loudspeaker devices, personal speakers, body-worn speaker devices (head, shoulder, arm, etc.), and so forth. In some embodiments, audio output device 170 can be connected to output devices that additionally provide other forms of outputs, suchas display devices that provide visual outputs.

[0044] External device(s) 180 includes one or more objects that store audio synthesis configurations 140(2). For example, external device 180 can be a consumer device that includes a memory (not shown) that stores audio synthesis configuration 140(2). In some embodiments, external device 180 can be an object that includes an affixed tag (e.g., barcode, QR code, RFID tag, label, etc.) that includes an encoded version of portions or all of a particular audio synthesis configuration, such as audio synthesis configuration 140(2), signal flow 142(2), and / or synthesis parameters 146(2). External device(s) 180 can also include versions of the audio object library (162) or audio object(s) 164.

[0045] In some embodiments, external device 180 can store all or portions of multiple audio synthesis configurations 140(2), of which all or a portion of which are loaded by client computing device 150 after client computing device 150 is communicatively coupled to external device 180. In some embodiments, multiple external devices 180 can be communicatively coupled to the client computing device 150 sequentially for transfer of multiple audio synthesis configurations 140(2) to be stored locally in memory 154. In various embodiments, client computing device 150 can acquire audio synthesis configuration 140(2) from external device 180 using various techniques associated with the manner in which the audio synthesis configuration 140(2) is stored. For example, when the audio synthesis configuration 140(2) is encoded in a tag, client computing device 150 can use a camera, or other appropriate sensor, such as an RFID chip reader, to acquire the tag and extract the audio synthesis configuration 140(2) from the tag. In another example, when audio synthesis configuration 140(2) is stored in a storage device within external device 180, client computing device 150 can establish communications with external device 180 and download audio synthesis configuration 140(2). In such instances, client computing device 150 can limit establishing a communication link with external device 180 until sound synthesis application 160 detects that external device 180 is proximate to client computing device 150.

[0046] Figure 2 illustrates a block diagram of an exemplary signal flow 200 executed by sound-synthesis system 100 of Figure 1, according to various embodiments of the present disclosure. As shown, signal flow 200 includes a group of audio objects 202 - 210, which are a subset of predefined audio objects included in audio object library 122 (shown in Figure 1). In the embodiment illustrated in Figure 2, signal flow 200 includes, without limitation, a control input object 202, a control modulator 204, an oscillator 206, an audio envelope 208, an audio output module 210, control signals 220, an oscillator audio output signal 222, and amodified oscillator audio output signal 224.

[0047] Audio objects 202 - 210 are a subset of predefined audio objects included in audio object library 122, where audio objects 124 correspond to audio objects 164 included in the audio object library 162. Signal flow 200 specifies a specific group of audio objects 202 - 210 from audio object library 122 that are to be executed and the routing of control signals 220 to specify an arrangement of audio objects 202 - 210. Signal flow 200 also specifies audio output signals 222, 224 that connect the group of audio objects 202 - 210. In various embodiments, signal flow 200 can include other types of audio objects 124. For example, signal flow 200 can include various noise generators, waveform generators, amplitude controllers, mixers, control signal modulators, frequency equalizers, filters, and so forth to synthesize a synthesized audio signal for output by audio output device 170.

[0048] In operation, sound synthesis application 160 populates signal flow 200 with a synthesis parameter set (e.g., tuning parameters and control parameters) to specify an arrangement of audio objects 164. This arrangement of audio objects can be used to generate a specific synthesized audio signal usable by audio output device 170 to produce sound output 172. In various embodiments, a designer generates signal flow 200 (e.g., the signal flow 142(1)) using audio tuning tool 120 to select one or more predefined audio objects 124 from audio object library 122. In an example, via audio tuning tool 120, a designer adds various control signal and audio signal connections between the selected audio objects, and specifies how the selected audio objects 124 are to generate a synthesized audio signal by defining one or more synthesis parameters, including tuning parameters and / or control parameters.

[0049] As shown, signal flow 200 includes a control input object 202, a control modulator 204, an oscillator 206, an audio envelope 208, and an audio output module 210. When activated, the control input object 202 generates a set of control signals. For example, when loaded on the client computer device 150, the control input object 202 is activated by a manual input from the user (e.g., a button press) and can generate initiation control signals 220 that cause one or more of the other audio objects 206, 208 to operate. The oscillator 206 generates an oscillator audio output signal 222 based on the set of tuning parameters. In various embodiments, the oscillator 206 is also based on control parameters that the oscillator 206 receives from the control input object 202 or control modulator 204. For example, in the embodiment illustrated in Figure 2, control modulator 204 outputs two control signals that are sent to the oscillator 206. These control signals can vary in time and control the instantaneous frequency and amplitude of the sine wave that is output by oscillator 206. The audio envelope208 generates a specific time dependent envelope that shapes the oscillator audio output signal 222 to generate a modified oscillator audio output signal 224. The audio output module 210 converts the modified oscillator signal into a synthesized audio signal for output via the audio output device 170. In this manner, a designer can use the signal flow 200 to output a large range of synthesized audio signals using the same configuration of audio objects 202 - 210.

[0050] In some embodiments, the signal flow 200 can be stored as a netlist that specifies the connections between audio objects. In some embodiments, one or more of the audio objects 202 - 210 includes a set of tuning parameters (e.g.. the synthesis parameters 146 included in audio synthesis configuration 140) that configure the parameters used to operate the respective audio objects 202 - 210.

[0051] In some embodiments, signal flow 200 includes some of the synthesis parameters, including a tuning parameter set and control signals. In some embodiments, signal flow 200 includes all the synthesis parameters; in such instances, the sound synthesis application 160 can load the signal flow and / or the synthesis parameters in lieu of an audio synthesis configuration 140.Compression of Sound Synthesis Parameter Values

[0052] According to various embodiments, sound- synthesis system 100 facilitates deployment of new and / or upgraded audio synthesis configurations 140(1) to audio-enabled electronic devices that are already in the field, such as an electronic device associated with or including client computing device 150 and audio output device 170. In the embodiments, for a particular audio synthesis configuration 140(1), sound-synthesis system 100 compresses one or more values and / or files associated with that particular audio synthesis configuration 140(1) prior to transmitting audio synthesis configuration 140(1) to client computing device 150. Examples of such values include synthesis parameter values and / or files or values that specify a configuration of one or more audio objects 124 that are included in audio synthesis configuration 140(1). Various example embodiments are described below in conjunction with Figures 3 - 7.

[0053] Figure 3 sets forth a flow diagram of method steps for deploying a sound synthesis program for synthesizing an audio signal, according to various embodiments of the present disclosure. Although the method steps are described with reference to the systems of Figures 1 and 2, persons skilled in the art will understand that any system configured to implement the method steps, in any order, falls within the scope of the present disclosure.

[0054] As shown, a computer-implemented method 300 begins at step 302, where designer computing device 110 receives a new or updated audio synthesis configuration 140(1). For example, in some instances, a user of designer computing device 110 generates a new audio synthesis configuration 140(1) or modifies an existing audio synthesis configuration 140(1).

[0055] In step 304, compression application 126, which is executing on designer computing device 110, selects a value included in the new or updated audio synthesis configuration 140(1) received in step 302. In some embodiments, the value that is selected is included in a file associated with the new or updated audio synthesis configuration 140(1). For example, in such embodiments, the value can be included in a file associated with a signal flow 142(1) or a file associated with synthesis parameters 146(1) of the new or updated audio synthesis configuration 140(1).

[0056] In step 306, compression application 126 generates a compressed value by performing a compression process on the value selected in step 304. In some embodiments, a lossless compression process is performed on the selected value in step 304, and in other embodiments, a lossy compression process is performed on the selected value in step 304. For example, in some embodiments, when the value selected in step 304 is included in a file associated with signal flow 142(1), the lossless compression process can be performed on the selected value, meaning that when the compressed version of the selected value is decompressed and used to synthesize an audio signal 173, that audio signal 173 is identical to an audio signal 173 synthesized using the original value prior to the lossless compression process. In some embodiments, the decompressed version of the selected value is identical to the original value prior to the lossless compression process. Alternatively, in some embodiments, the decompressed version of the selected value varies from the original value prior to the lossless compression process in a way that does not affect an audio signal 173. In either case, when used to generate sound output 172, no audible difference can be detected between the synthesized audio signal 173 based on the original value prior to the lossless compression process and the synthesized audio signal 173 based on the decompressed version of the losslessly compressed value. By contrast, in some embodiments, when the value selected in step 304 is included in a file associated with synthesis parameters 146(1), the lossy compression process can be performed on the selected value, meaning that when the compressed version of the selected value is decompressed and used to synthesize an audio signal 173, that audio signal 173 is not identical to an audio signal 173 synthesized using the original value prior to the lossy compression process. In some embodiments, when thecompressed version of the selected value is decompressed and used to synthesize an audio signal 173 that generates sound output 172, some audible difference can be detected in sound output 172 compared to when the original value prior to the lossy compression is used to synthesize an audio signal 173 that generates sound output 172. It is noted that this audible difference can range from very slight, which is detectable only by electrical or acoustical signal analysis, to mild, which may only be detectable by trained listeners, to medium, which may be detected by average listeners, to severe, which may be detectable by most people.

[0057] In the embodiment shown in Figure 3, steps 304 and 306 are performed on a single value included in a file associated with signal flow 142(1). Alternatively, in some embodiments, steps 304 and 306 are performed on multiple values included in a file (or files) associated with signal flow 142(1).

[0058] In some embodiments, in a lossless compression process, a selected value or file is reduced in size, for example via the removal of certain bits or other information, to generate a compressed value or file that includes less information than the original selected value or file. The compressed value can then be used to deploy the new and / or upgraded audio synthesis configuration 140(1) to one or more audio-enabled electronic devices as audio synthesis configuration 140(2) and / or audio synthesis configuration 140(3). In such embodiments, the compressed value or file can subsequently be decompressed so that a value is generated that includes the same information as the selected value or file prior to the lossless compression process. In such embodiments, the bits or other information that is removed in the lossless compression process is available to decompression application 156, therefore decompression application 156 adds these bits or information to the compressed value or file at a suitable time. Examples of such bits or other information that can be removed in such a lossless compression process in step 304 are described below in conjunction with Figure 4.

[0059] Figure 4 illustrates a conceptual system diagram of a signal flow file 400 associated with signal flow 142(1) of sound-synthesis system 100, according to various embodiments. Signal flow file 400 includes information associated with signal flow 142(1), such as information specifying a configuration of one or more audio objects 124. In the embodiment illustrated in Figure 4, signal flow file 400 includes, without limitation, an audio object listing 410, a connection listing 420, an optional input channel total 430, an output channel total 440, header information 450, and unused mode indicators 460. In a lossless compression process, compression application 126 removes one or more selected values or other information from signal flow file 400 to generate a compressed file (not shown). Because the removed values orother information are known to decompression application 156, the removed values or other information can be added to form the decompressed file, in a decompression process, prior to the use of signal flow 142(2) by sound synthesis application 160. For example, in some embodiments, the removed values or other information are default values that are associated with a particular audio object 124 included in signal flow 142(2), audio output device 170, and / or other sound-producing hardware associated with client computing device 150. Examples of such values or other information that can be removed from signal flow file 400 in a lossless compression process are described below.

[0060] Object listing 410 includes, without limitation, audio object identification (ID) numbers 412, audio object names 414, and / or other information associated with specific audio objects 124 that are included in audio synthesis configuration 140(1). Audio object ID numbers 412 indicate specific audio objects 124 that are included in audio synthesis configuration 140(1), and audio object names 414 indicate names for such audio objects 124. In some instances, the information conveyed by audio object ID numbers 412 and / or audio object names 414 may already be available to sound synthesis application 160. In one example instance, one or more audio synthesis configurations 140(1) include a known, specific set of audio objects 124. Thus, in such an instance, based on which particular audio synthesis configuration 140(1) is associated with signal flow file 400, sound synthesis application 160 and / or decompression application 156 can determine the information included in audio object ID numbers 412 and / or audio object names 414 based on the particular audio synthesis configuration 140(1) associated with signal flow file 400. Consequently, in such an instance, the information included in audio object ID numbers 412 and / or audio object names 414 can be removed from signal flow file 400 via a lossless compression process and decompression application 156 can subsequently add the removed information to the resulting compressed file in a decompression process, which is described below.

[0061] Connection listing 420 includes, without limitation, values and other information specifying the interconnections between each audio object 124 referenced in signal flow file 400. Generally, connection listing 420 and / or values included in connection listing 420 are not reduced in size or removed from signal flow file 400 during the compression process described herein.

[0062] Input channel total 430 includes a total number of input channels (e.g., 0, 1, 2, etc.) employed by audio output device 170 and / or other sound-producing hardware associated with client computing device 150. Similarly, output channel total 440 includes a total number ofoutput channels (e.g., 1, 2, etc.) employed by audio output device 170 and / or other soundproducing hardware associated with client computing device 150. In some embodiments, the information provided by input channel total 430 and output channel total 440 is already available to sound synthesis application 160 and / or client computing device 150. That is, based on audio output device 170 and / or other sound-producing hardware associated with client computing device 150, decompression application 156 can determine such information. Consequently, in such embodiments, the information included in input channel total 430 and output channel total 440 can be removed from signal flow fde 400 via a lossless compression process and decompression application 156 can subsequently add the removed information to the resulting compressed fde in a decompression process. Similarly, hardware configurations with no input devices can default to zero input channels, so information related to input channel total 430 can be removed from signal flow file 400.

[0063] Header information 450 includes metadata and other similar information associated with signal flow file 400, such as header values 452. Unused mode indicators 460 include information indicating particular modes that, in the signal flow associated with signal flow file 400, are not employed by audio output device 170 and / or other sound-producing hardware (e.g., a bypass state, an active state, a mute state, etc.). In some embodiments, certain information provided by header information 450 and / or unused mode indicators 460 is already available to sound synthesis application 160 and / or client computing device 150. That is, decompression application 156 can determine such information prior to the use of the audio synthesis configuration 140(1) associated with signal flow file 400. Consequently, in such embodiments, such information included in header information 450 and / or unused mode indicators 460 can be removed from signal flow file 400 via a lossless compression process and decompression application 156 can subsequently add the removed information to the resulting compressed file in a decompression process. For example, one or more header values 452 can be removed in this way during a compression process.

[0064] Returning to Figure 3, in some embodiments, in step 306, compression application 126 generates a compressed value by performing a lossy compression process on the value selected in step 304. In the lossy compression process, a selected value is reduced in size, for example via the removal of certain bits or other information, to generate a compressed value that includes less information than the original selected value. Therefore, when deploying the new and / or upgraded audio synthesis configuration 140(1) to one or more audio-enabled electronic devices as audio synthesis configuration 140(2), the compressed value can beemployed instead of the original value. Because such compressed values can be significantly smaller, transmission of the new and / or upgraded audio synthesis configuration 140(1) to client computing device 150 and / or external device 180 can be performed more quickly and storage of audio synthesis configuration 140(1) requires less storage capacity.

[0065] It is noted that, when using the herein-described lossy compression process on one or more values, certain information is lost by approximating the one or more values using compressed values that have a smaller bit-depth than the bit-depth of the originally determined values. For example, in some embodiments, values for synthesis parameters 146(1) that are determined via audio tuning tool 120 are developed using values having a first bit depth (e.g., 32 bits), and the herein-described lossy compression process approximates these 32-bit values with values having a second bit depth (e.g.. 16 bits or 7 bits or 3 bits). However, in many instances, the use of the smaller bit-depth values (i.e., the compressed values) in lieu of the original 32-bit values can be inaudible in certain audio applications or environments. Alternatively or additionally, in many instances, the use of the smaller bit-depth values in lieu of the original 32-bit values can be suitable for certain audio output devices 170 and / or other sound-producing hardware associated with client computing device 150, such as lower- fidelity, quiet or compact audio output devices 170.

[0066] In some embodiments, in the lossy compression process of step 306, compression application 126 generates a compressed value based on the value selected in step 304 by truncating one or more bits from the value selected in step 304. Example embodiments of such a lossy compression process are described below in conjunction with Figures 5 - 7.

[0067] Figure 5 illustrates a conceptual diagram of an original value 510 for a synthesis parameter and compressed values 520 and 530 for the synthesis parameter, according to various embodiments. As shown, original value 510 is represented by 32 bits 511, and therefore has a bit depth of 32 bits. By contrast, compressed value 520 and compressed value 530 each have a smaller bit depth than original value 510. In the embodiment illustrated in Figure 5, compressed value 520 is an approximation of original value 510 that represents original value 510 with 16 bits 521, and therefore has a bit depth of 16 bits. Similarly, value 530 is an approximation of original value 510 that represents original value 510 with 16 bits 531, but also includes five flag bits 532. Therefore, compressed value 530 has a bit depth of 21 bits.

[0068] In some embodiments, compression application 126 generates compressed value520 based on original value 510 by truncating a number of bits 513 from original value 510, e.g„ a number of least-significant bits. Thus, when compressed value 520 is transmitted to client computing device 150 and / or external device 180 in lieu of original value 510, the quantity of data being transferred is reduced by half Similarly, when compressed value 520 is transmitted from external device 180 to client computing device 150 in lieu of original value 510, the quantity of data being transferred is reduced by half. When compressed value 520 is employed by client computing device 150, a suitable number of dummy values 523 (e g., 16) can be added to compressed value 520 so that compressed value 520 correctly approximates original value 510. In a similar vein, compression application 126 generates compressed value 530 based on original value 510 by truncating bits 513 from original value 510, and dummy values 533 can be added to compressed value 530 so that compressed value 530 correctly approximates original value 510.

[0069] In some embodiments, values, such as original value 510, are stored as binary floating points which consist of a mantissa and an exponent. In some embodiments, 16-bit numbers are stored as a 10-bit mantissa with a 5-bit exponent and a one-bit sign. In some embodiments, 32-bit numbers are stored as a 23-bit mantissa, an 8-bit exponent, plus one sign bit. In some embodiments, representing a 32-bit number in a smaller number of bits can involve either a reduction in bit depth for the mantissa, the exponent, or for both. A reduction in the number of bits for the exponent causes a reduction in the range of values that can be encoded, and so may be a lossless or lossy compression technique. In some methods to store binary numbers, there exists a sign bit that indicates whether the number is positive or negative. In some embodiments, this sign bit can be omitted in a compression process for values that are all positive. In some embodiments, in a compression process, the sign bit can be omitted for a negative value if the decompression application 156 can be so notified. In an embodiment, the flag bits are used by the encoder and decoder to signify the number of bits used to encode the compressed mantissa or exponent or both. In an embodiment, the flag bits are used by the encoder and decoder to signify the number of bits for the original, uncompressed mantissa, the exponent, or both. In some embodiments, fixed point binary numbers can include a scaling factor. All the techniques of compression described herein are directly applicable and can be performed on any other standard binary number format.

[0070] In some embodiments, for all synthesis parameters 146(1), compression application 126 truncates the same number of bits 513 for each original value 510. Note that this can include a reduction in the number of bits in either or both the mantissa and exponent in thecase of floating point values. Thus, for each synthesis parameter included in synthesis parameters 146(1), the compressed value 520 generated by compression application 126 has the same bit depth (e.g., 16 bits). In other embodiments, the compressed value 520 generated by compression application 126 can have a different bit depth depending on the specific synthesis parameter 146(1) for which original value 510 is being compressed. In either case, the number of bits 513 that are truncated from a particular synthesis parameter 146(1) can be based on quantitative and / or qualitative methods to determine if that particular encoding bit depth for that particular synthesis parameter produces acceptable results. In some embodiments, a method to simulate truncating of bits can be simply to replace bits with zeros for the purpose of auditioning. Alternately, in some embodiments, a bit depth can be selected and the file can be encoded and then decoded, and then the resulting decoded values can be auditioned. For example, in some embodiments, a trial-and-error approach can be employed by the user of designing computing device 110, in which the user approximates a particular tuning parameter value with a value having a smaller bit depth and then auditions the approximated version of that particular tuning parameter value for perceived impact on audio quality. In some embodiments, the auditioning process can be manual, where the user (e.g., the signal flow creator) executes the sound synthesis with the approximated version of the particular tuning parameter and listens to the resulting sound output. Alternatively or additionally, in some embodiments, the auditioning process can include an expert listener and / or a panel of listeners. Alternatively or additionally, in some embodiments, an automated auditioning process can performed that includes analyzing the properties of the resulting output sound using spectral or other quantitative analysis methods such as total harmonic distortion, low order harmonic distortion, direct waveform comparison, or psychoacoustic metrics, and / or the like. In either case, a suitable number of bits 513 that can be truncated from original value 510 can be determined. In an embodiment, this method will produce a suitable number of leading and / or trailing bits from the mantissa and / or exponent that can be truncated.

[0071] In some embodiments, the number of bits 513 can vary that are truncated from different synthesis parameters included in synthesis parameters 146(1). In such embodiments, compressed value 530 can be employed as an approximation of original value 510. In such embodiments, compression application 126 adds a suitable number of flag bits 532 to compressed value 530 for indicating to decompression application 156 the number of bits that form the compressed value 530. Thus, in such embodiments, for each different synthesis parameter included in synthesis parameters 146(1), a different number of least-significant bits can be truncated in a lossy compression process. In an embodiment, these trailing (or leastsignificant) digits are truncated from a mantissa of a floating point number.

[0072] In some embodiments, in the lossy compression process of step 306, compression application 126 generates a compressed value based on the value selected in step 304 by truncating a different number of bits from different values selected in step 304, where the number of truncated bits is tracked without flag bits 532. Example embodiments of such a lossy compression process are described below in conjunction with Figure 6.

[0073] Figure 6 illustrates a conceptual diagram of a set 610 of original values 611 for various synthesis parameters, a first set 620 of compressed values 621 and a second set 630 of compressed values 631, according to various embodiments. First set 620 of compressed values 621 corresponds to a first portion 610A of set 610, and second set 630 of compressed values 631 corresponds to a second portion 610B of set 610. In the embodiment shown in Figure 6, each original value 611 is represented by 32 bits, and therefore has a bit depth 612 of 32 bits. By contrast, compressed values 621 of first set 620 have a first bit depth 622 (e.g., 24 bits) that is smaller than bit depth 612 and compressed values 631 of second set 630 have a second bit depth 632 (e.g., 16 bits) that is smaller than bit depth 612 and different than bit depth 622.

[0074] In some instances, a first reduced bit depth can be suitable for some values for synthesis parameters 146(1), while a second reduced bit depth can be suitable for other values for synthesis parameters 146(1). Accordingly, in some embodiments, compression application 126 generates first set 620 of compressed values 621 by truncating a first number of bits (e.g., 8) from corresponding original values 611 and generates second set 630 of compressed values 631 by truncating a second number of bits (e.g., 16) from corresponding original values 611. The truncated bits can be the least-significant bits, leading bits that are zero, bits from the mantissa, the sign bit, or bits from the exponent, etc. In such embodiments, when a particular ordering of compressed values 621 and compressed values 631 is known by decompression application 156, flag bits for each compressed value are not required. Instead, in such embodiments, decompression application 156 can add a suitable number of dummy values 623 (e.g., 8) to compressed values 621 so that compressed values 621 correctly approximate their corresponding original values 611. Similarly, in such embodiments, decompression application 156 can add a suitable number of dummy values 633 (e.g., 16) to compressed values 631 so that compressed values 631 correctly approximate their corresponding original values 611. In such embodiments, compressed values 621 and 631 are not increased in size by the addition of flag bits, and therefore can be easier to transmit and / or store. Note that decompression application 156 may have to adjust the exponent of 631 so that thedecompressed value can correctly approximate the corresponding original value 611.

[0075] In the embodiment illustrated in Figure 6, set 610 of original values 611 is used to generate first set 620 of compressed values 621 that have a first bit depth and a second set 630 of compressed values 631 that have a second bit depth. In other embodiments, set 610 of original values 611 is used to generate more than two sets of compressed values, where each set includes compressed values having a different bit depth.

[0076] In some embodiments, in the lossy compression process of step 306, compression application 126 generates a compressed value based on the value selected in step 304 by truncating a number of leading bits from the value selected in step 304. Example embodiments of such a lossy compression process are described below in conjunction with Figure 7.

[0077] Figure 7 illustrates a conceptual diagram of an original value 710 for a synthesis parameter and compressed values 720 and 730 for the synthesis parameter, according to various embodiments. As shown, original value 710 is represented by 32 bits 711, and therefore has a bit depth of 32 bits. By contrast, compressed value 720 and compressed value 730 each have a smaller bit depth than original value 710. In the embodiment illustrated in Figure 7, compressed value 720 includes bits 721 that correspond to original value 710 with 10 leading bits 712 of original value 710 removed. Therefore, compressed value 720 has a bit depth of 22 bits. By contrast, compressed value 730 includes bits 731 that correspond to original value 710 with 10 leading bits 712 of original value 710 removed, but also includes four flag bits 732 that indicate how many leading bits have been removed from original value 710. Therefore, compressed value 730 has a bit depth of 26 bits.

[0078] In some embodiments, compression application 126 generates compressed value 720 or compressed value 730 based on original value 710 by truncating a plurality of leading bits 712 from original value 710. For example, in some embodiments, compression application 126 truncates a fixed number of leading bits 712 that have a value of 0 to generate compressed value 720. Therefore, the numerical value of compressed value 720 is equal to the numerical value of original value 710, even though compressed value 720 has a smaller bit depth than original value 710. In another example, in some embodiments, compression application 126 truncates a variable number of leading bits 712 from original value 710. In such embodiments, compression application 126 can generate compressed value 730 by truncating most or all leading bits 712 of original value 710 that have a value of 0. Therefore, the numerical value of compressed value 730 is equal to the numerical value of original value 710, even thoughcompressed value 730 has a smaller bit depth than original value 710. In such embodiments, the variable number of leading bits 712 that are removed from original value 710 to generate compressed value 730 can be indicated to decompression application 156 via flag bits 732. In an embodiment, these leading zero digits are truncated from an exponent of a floating point number.

[0079] When compressed value 720 or compressed value 730 is transmitted to client computing device 150 and / or external device 180 in lieu of original value 710, the quantity of data being transferred is greatly reduced. When compressed value 720 or compressed value 730 is employed by client computing device 150 and a value having the same bit depth as original value 710 is expected, a suitable number of leading bits having a value of 0 can be added to compressed value 720 or compressed value 730. In an embodiment, these leading bits are added by the decompression application 156.

[0080] Returning to Figure 3, in step 308, after compression application 126 generates a compressed value by performing a decompression process on a selected value, compression application 126 determines whether there are any more values associated with the new or updated audio synthesis configuration 140(1) to be compressed. If yes, computer-implemented method 300 returns to step 304; if no, computer-implemented method 300 proceeds to step 310.

[0081] In step 310, compression application 126 generates a compressed audio synthesis configuration. Compression application 126 generates the compressed audio synthesis configuration based on the compressed values generated in step 306. For example, for transmission to an external device 180, compression application 126 generates audio synthesis configuration 140(2), and for transmission to client computing device 150, compression application 126 generates audio synthesis configuration 140(3).

[0082] In step 312, client computing device 150 deploys the compressed audio synthesis configuration 140. In some instances, client computing device 150 transmits audio synthesis configuration 140(2) to one or more external devices 180. Alternatively or additionally, in some instances, client computing device 150 transmits audio synthesis configuration 140(3) to one or more client computing devices 150. Example embodiments of the use of the compressed audio synthesis configuration 140 after such deployment are described below in conjunction with Figures 8 - 10.Decompression of Sound Synthesis Parameter Values

[0083] According to various embodiments, compression application 126 and decompression application 156 enable a compressed version of an audio synthesis configuration for synthesizing an audio signal to be deployed to client computing device 150 and / or external devices 180. In some embodiments, the compressed version of the audio synthesis configuration is then stored and is decompressed to the original form when needed to synthesize the audio signal. In other embodiments, the compressed version of the audio synthesis configuration is stored and subsequently used to synthesize the audio signal without being decompressed to the original form prior. Examples of such embodiments are described below in conjunction with Figures 8 — 10.

[0084] Figure 8 sets forth a flow diagram of method steps for synthesizing an audio signal using a compressed audio synthesis configuration, according to various embodiments of the present disclosure. Although the method steps are described with reference to the systems of Figures 1 - 7, persons of ordinary skill in the art will understand that any system configured to implement the method steps, in any order, falls within the scope of the present disclosure.

[0085] As shown, a computer-implemented method 800 begins at step 802, where client computing device 150 receives a compressed version of a new or updated audio synthesis configuration 140(3). For example, in some instances, a compressed version of audio synthesis configuration 140(3) is received from designer computing device 110 or from external device 180, where the compressed version of audio synthesis configuration 140(3) is generated via a lossless compression process.

[0086] In step 804, decompression application 156 generates an original version of audio synthesis configuration 140(3) using the compressed version received in step 802. Because the compressed version of audio synthesis configuration 140(3) is generated via a lossless compression process, the original version of audio synthesis configuration 140(3) can be generated by decompression application 156. As described above, a lossless compression process includes the removal of selected information in audio synthesis configuration 140(3) that can be replaced by decompression application 156. In step 806, client computing device 150 stores the original (decompressed) audio synthesis configuration 140(3) in memory 154..

[0087] In step 808, client computing device 150 receives a request for the audio signal associated with audio synthesis configuration 140(3). For example, client computing device 150 may receive a manual input from a user, such as a button press or other input. In step 810,client computing device 150 loads into active memory the stored version of audio synthesis configuration 140(3), which is equivalent to the original version generated by audio tuning tool 120. In step 812, client computing device 150 generates the audio signal 173 that is associated with audio synthesis configuration 140(3) using the decompressed (original) version of audio synthesis configuration 140(3).

[0088] Because audio synthesis configuration 140(3) is stored in an uncompressed state, the compression of audio synthesis configuration 140(3) does not reduce the storage capacity required to store audio synthesis configuration 140(3) locally on client computing device 150. Consequently, computer-implemented method 800 is generally more suitable for instances of client computing device 150 in which storage capacity is not as limited, such as in high- fidelity audio systems or systems with large on-board memory or in newer systems with a small number of audio synthesis configurations.

[0089] Figure 9 sets forth a flow diagram of method steps for synthesizing an audio signal using a compressed audio synthesis configuration, according to various embodiments of the present disclosure. Although the method steps are described with reference to the systems of Figures 1 - 7, persons of ordinary skill in the art will understand that any system configured to implement the method steps, in any order, falls within the scope of the present disclosure.

[0090] As shown, a computer-implemented method 900 begins at step 902, where client computing device 150 receives a compressed version of a new or updated audio synthesis configuration 140(3). For example, in some instances, a compressed version of audio synthesis configuration 140(3) is received from designer computing device 110 or from external device 180, or via a wire or wireless link (not shown), where the compressed version of audio synthesis configuration 140(3) is generated via a lossless compression process.

[0091] In step 904, client computing device 150 stores the compressed version of audio synthesis configuration 140(3) received in step 902. It is noted that the compressed version of audio synthesis configuration 140(3) can be a fraction of the size of the original version audio synthesis configuration 140(1) from before the compression application 126 acted on the synthesis configuration.

[0092] In step 906, client computing device 150 receives a request for the audio signal associated with audio synthesis configuration 140(3). For example, client computing device 150 may receive a manual input from a user, such as a button press or other input. In step 908,decompression application 156 generates and stores in memory 154 an original version of audio synthesis configuration 140(3) using the compressed version stored in step 904. Because the compressed version of audio synthesis configuration 140(3) is generated via a lossless compression process, the original version of audio synthesis configuration 140(1) can be generated by decompression application 156.

[0093] In step 910, client computing device 150 loads into active memory the decompressed version of audio synthesis configuration 140(3), which is equivalent to the original version generated by audio tuning tool 120. In step 912, client computing device 150 generates the audio signal 173 that is associated with audio synthesis configuration 140(3) using the decompressed version of audio synthesis configuration 140(3).

[0094] Figure 10 sets forth a flow diagram of method steps for synthesizing an audio signal using a compressed audio synthesis configuration, according to various embodiments of the present disclosure. Although the method steps are described with reference to the systems of Figures 1 - 7, persons of ordinary skill in the art will understand that any system configured to implement the method steps, in any order, falls within the scope of the present disclosure.

[0095] As shown, a computer-implemented method 1000 begins at step 1002, where client computing device 150 receives a compressed version of a new or updated audio synthesis configuration 140(3). For example, in some instances, a compressed version of audio synthesis configuration 140(3) is received from designer computing device 110 or from external device 180, or via a wire or wireless link (not shown), where the compressed version of audio synthesis configuration 140(3) is generated via a lossy compression process.

[0096] In step 1004, client computing device 150 stores the compressed version of audio synthesis configuration 140(3) received in step 1002. It is noted that the compressed version of audio synthesis configuration 140(3) can be a fraction of the size of the original version audio synthesis configuration 140(3). In step 1006, client computing device 150 receives a request for the audio signal associated with audio synthesis configuration 140(3). For example, client computing device 150 may receive a manual input from a user, such as a button press or other input. In step 1008, client computing device 150 loads into active memory the compressed version of audio synthesis configuration 140(3) stored locally in step 1004. In step 1010, client computing device 150 generates the audio signal 173 that is associated with audio synthesis configuration 140(3) using the compressed version of audio synthesis configuration 140(3). In this use case, the decompression application 156 does not store the decompressed version ofthe compressed audio synthesis configuration in ordinary memory 154, as this would require the use of additional memory on client computing device 150. Instead, the decompression application 156 decompresses each value and stores it only in active RAM while synthesizing the audio signal 173

[0097] Because audio synthesis configuration 140(3) is stored in memory 154 and then employed in a compressed state, a smaller amount of memory 154 is required. This enables more synthesis configurations 140(3) to be stored in memory 154, which may be a benefit. If lossy compression is employed by compression application 126, then the original values for synthesis parameters are approximated by decompression application 156 and the exact value or the dynamic range of certain synthesis parameters may be altered. In many applications, such as low-fidelity audio devices, these approximations may result in inaudible changes to audio signal 173, and so the use of lossy compression will go unnoticed.

[0098] In sum, a first computing device in a sound-synthesis system compresses one or more values or files associated with the audio synthesis configuration, including synthesis parameter values and / or files or values that specify the audio synthesis configuration. For example, in some embodiments, some or all synthesis parameter values associated with the audio synthesis configuration are compressed by being approximated with a reduced bit-depth number and / or by the removal of information that is already available to the second computing device. The compressed version of the audio synthesis configuration is then deployed to a second computing device in the sound-synthesis system for use. Once deployed to the second computing device, the compressed version can be stored locally as-is or decompressed and stored using the same number of bits as the original version. In some embodiments, the compressed version can be stored locally and decompressed at time of use.

[0099] At least one technical advantage of the disclosed techniques relative to the prior art is that the disclosed techniques enable a reduction in the size of files associated with sound synthesis in audio-enabled electronic devices. As a result, less storage capacity of such devices is consumed by the sound-synthesis parameters associated with an upgrade event. In addition, upgrade events can be completed quickly, even when the data transfer rate to the audioenabled electronic device is very low. Further, significantly less bandwidth is required during an upgrade event to transmit update-related data. These technical advantages provide one or more technological advancements over prior art approaches.

[0100] 1. In some embodiments, a computer-implemented method of distributing a soundsynthesis program to a sound-synthesis system includes: performing a compression operation on a first file for synthesizing an audio signal, wherein the compression operation generates a compressed file for synthesizing the audio signal; and deploying the compressed file from a first computing device included in the sound-synthesis system to a second computing device included in the sound-synthesis system.

[0101] 2. The computer-implemented method of clause 1, wherein the first file comprises one or more of a synthesis parameter file or a signal flow file.

[0102] 3. The computer-implemented method of clauses 1 or 2, wherein the synthesis parameter file includes one or more values for modifying an audio output of the soundsynthesis system.

[0103] 4. The computer-implemented method of any of clauses 1-3, wherein deploying the compressed file from the first computing device to the second computing device comprises transmitting the compressed file to a client computing device that is included in an audioenabled electronic device.

[0104] 5. The computer-implemented method of any of clauses 1-4, wherein deploying the compressed file from the first computing device to the second computing device comprises transmitting the compressed file to a computing device included in a device external to an audio-enabled electronic device that is configured to receive the compressed file from the computing device included in the device external to the audio-enabled electronic device.

[0105] 6. The computer-implemented method of any of clauses 1-5, wherein the compression operation comprises truncating a fixed number of bits from a set of multiple values included in the first file.

[0106] 7. The computer-implemented method of any of clauses 1-6, wherein the fixed number of bits comprises at least one of a fixed number of leading bits, a fixed number of trailing bits, a fixed number of bits of a mantissa associated with the set of multiple values, or a fixed number of bits of an exponent associated with the set of multiple values.

[0107] 8. The computer-implemented method of any of clauses 1-7, wherein the number of least significant bits truncated from the first file corresponds to one of an inaudible change to the first file or an acceptable change to the first file based on an audio output device associated with the second computing device.

[0108] 9. The computer-implemented method of any of clauses 1-8, wherein the compression operation comprises truncating a fixed number of bits from one or more sets of multiple values included in the first file, each set having a respective fixed number of bits removed.

[0109] 10. The computer-implemented method of any of clauses 1-9, wherein the first file comprises a signal flow file and the compression operation includes removing one or more default values from the signal flow file.

[0110] 11. The computer-implemented method of any of clauses 1-10, wherein the one or more default values are stored in the second computing device.

[0111] 12. The computer-implemented method of any of clauses 1-11, wherein the compression operation comprises truncating a first fixed number of bits from a first set of multiple values included in the first file and truncating a second fixed number of bits from a second set of multiple values included in the first file.

[0112] 13. A non-transitory computer-readable medium that includes a set of instructions which, in response to execution by a processor of a computer system, cause the processor to perform the steps of: receiving, by a first computing device included in a sound-synthesis system, a first compressed file from a second computing device included in the soundsynthesis system, wherein the first compressed file is for synthesizing an audio signal; and synthesizing the audio signal with the second computing device based on the first compressed file.

[0113] 14. The non-transitory computer-readable medium of clause 13, wherein synthesizing the audio signal based on the first compressed file comprises: prior to synthesizing the audio signal, performing a decompression operation on the compressed file to generate a second decompressed file; and synthesizing the audio signal based on the second decompressed file.

[0114] 15. The non-transitory computer-readable medium of clauses 13 or 14, further comprising instructions which, in response to execution by the processor, cause the processor to perform the step of, prior to performing the decompression operation, storing the decompressed file at the first computing device.

[0115] 16. The non-transitory computer-readable medium of any of clauses 13-15,wherein the decompression operation comprises adding one or more bits to the first compressed file.

[0116] 17. The non-transitory computer-readable medium of any of clauses 13-16, wherein synthesizing the audio signal based on the first compressed file comprises: prior to synthesizing the audio signal, storing the compressed file at the first computing device; and synthesizing the audio signal based on the stored second decompressed file.

[0117] 18. The non-transitory computer-readable medium of any of clauses 13-17, wherein the decompression operation comprises one or more of: adding a first fixed number of bits to a first set of multiple values included in the first file; and adding a second fixed number of bits to a second set of multiple values included in the first file.

[0118] 19. The non-transitory computer-readable medium of any of clauses 13-18, wherein the first compressed file comprises a signal flow file and the decompression operation includes adding one or more default values to the signal flow file.

[0119] 20. In some embodiments, a sound-synthesis system includes: a memory that stores instructions; and a processor that is communicatively coupled to the memory and is configured to, when executing the instructions, perform the steps of: receiving, by a first computing device included in a sound-synthesis system, a first compressed file from a second computing device included in the sound- synthesis system, wherein the first compressed file is for synthesizing an audio signal; and synthesizing the audio signal with the second computing device based on the first compressed file.

[0120] Any and all combinations of any of the claim elements recited in any of the claims and / or any elements described in this application, in any fashion, fall within the contemplated scope of the present invention and protection.

[0121] The descriptions of the various embodiments have been presented for purposes of illustration but are not intended to be exhaustive or limited to the embodiments disclosed. Many modifications and variations will be apparent to those of ordinary skill in the art without departing from the scope and spirit of the described embodiments.

[0122] Aspects of the present embodiments may be embodied as a system, method, or computer program product. Accordingly, aspects of the present disclosure may take the form of an entirely hardware embodiment, an entirely software embodiment (including firmware,resident software, micro-code, etc.) or an embodiment combining software and hardware aspects that may all generally be referred to herein as a “module,” a “system,” or a “computer.” In addition, any hardware and / or software technique, process, function, component, engine, module, or system described in the present disclosure may be implemented as a circuit or set of circuits. Furthermore, aspects of the present disclosure may take the form of a computer program product embodied in one or more computer readable medium(s) having computer readable program code embodied thereon.

[0123] Any combination of one or more computer readable medium(s) may be utilized. The computer readable medium may be a computer readable signal medium or a computer readable storage medium. A computer readable storage medium may be, for example, but not limited to, an electronic, magnetic, optical, electromagnetic, infrared, or semiconductor system, apparatus, or device, or any suitable combination of the foregoing. More specific examples (a non-exhaustive list) of the computer readable storage medium would include the following: an electrical connection having one or more wires, a portable computer diskette, a hard disk, a random access memory (RAM), a read-only memory (ROM), an erasable programmable read-only memory (EPROM or Flash memory), an optical fiber, a portable compact disc read-only memory (CD-ROM), an optical storage device, a magnetic storage device, or any suitable combination of the foregoing. In the context of this document, a computer readable storage medium may be any tangible medium that can contain or store a program for use by or in connection with an instruction execution system, apparatus, or device.

[0124] Aspects of the present disclosure are described above with reference to flowchart illustrations and / or block diagrams of methods, apparatus (systems) and computer program products according to embodiments of the disclosure. It will be understood that each block of the flowchart illustrations and / or block diagrams, and combinations of blocks in the flowchart illustrations and / or block diagrams, can be implemented by computer program instructions. These computer program instructions may be provided to a processor of a general-purpose computer, special purpose computer, or other programmable data processing apparatus to produce a machine. The instructions, when executed via the processor of the computer or other programmable data processing apparatus, enable the implementation of the functions / acts specified in the flowchart and / or block diagram block or blocks. Such processors may be, without limitation, general purpose processors, special-purpose processors, applicationspecific processors, or field-programmable gate arrays.

[0125] The flowchart and block diagrams in the figures illustrate the architecture, functionality, and operation of possible implementations of systems, methods, and computer program products according to various embodiments of the present disclosure. In this regard, each block in the flowchart or block diagrams may represent a module, segment, or portion of code, which comprises one or more executable instructions for implementing the specified logical function(s). It should also be noted that, in some alternative implementations, the functions noted in the block may occur out of the order noted in the figures. For example, two blocks shown in succession may, in fact, be executed substantially concurrently, or the blocks may sometimes be executed in the reverse order, depending upon the functionality involved. It will also be noted that each block of the block diagrams and / or flowchart illustration, and combinations of blocks in the block diagrams and / or flowchart illustration, can be implemented by special purpose hardware-based systems that perform the specified functions or acts, or combinations of special purpose hardware and computer instructions.

[0126] While the preceding is directed to embodiments of the present disclosure, other and further embodiments of the disclosure may be devised without departing from the basic scope thereof, and the scope thereof is determined by the claims that follow.

Claims

WHAT IS CLAIMED IS:

1. A computer-implemented method of distributing a sound synthesis program to a sound-synthesis system, the method comprising: performing a compression operation on a first file for synthesizing an audio signal, wherein the compression operation generates a compressed file for synthesizing the audio signal; and deploying the compressed file from a first computing device included in the soundsynthesis system to a second computing device included in the sound- synthesis system.

2. The computer-implemented method of claim 1, wherein the first file comprises one or more of a synthesis parameter file or a signal flow file.

3. The computer-implemented method of claim 2, wherein the synthesis parameter file includes one or more values for modifying an audio output of the sound-synthesis system.

4. The computer-implemented method of claim 1, wherein deploying the compressed file from the first computing device to the second computing device comprises transmitting the compressed file to a client computing device that is included in an audio-enabled electronic device.

5. The computer-implemented method of claim 1, wherein deploying the compressed file from the first computing device to the second computing device comprises transmitting the compressed file to a computing device included in a device external to an audio-enabled electronic device that is configured to receive the compressed file from the computing device included in the device external to the audio-enabled electronic device.

6. The computer-implemented method of claim 1, wherein the compression operation comprises truncating a fixed number of bits from a set of multiple values included in the first file.

7. The computer-implemented method of claim 6, wherein the fixed number of bits comprises at least one of a fixed number of leading bits, a fixed number of trailing bits, a fixed number of bits of a mantissa associated with the set of multiple values, or a fixed number ofbits of an exponent associated with the set of multiple values.

8. The computer-implemented method of claim 7, wherein the number of least significant bits truncated from the first file corresponds to one of an inaudible change to the first file or an acceptable change to the first file based on an audio output device associated with the second computing device.

9. The computer-implemented method of claim 1, wherein the compression operation comprises truncating a fixed number of bits from one or more sets of multiple values included in the first file, each set having a respective fixed number of bits removed.

10. The computer-implemented method of claim 1, wherein the first file comprises a signal flow file and the compression operation includes removing one or more default values from the signal flow file.

11. The computer-implemented method of claim 10, wherein the one or more default values are stored in the second computing device.

12. The computer-implemented method of claim 1, wherein the compression operation comprises truncating a first fixed number of bits from a first set of multiple values included in the first file and truncating a second fixed number of bits from a second set of multiple values included in the first file.

13. A non-transitory computer-readable medium that includes a set of instructions which, in response to execution by a processor of a computer system, cause the processor to perform the steps of: receiving, by a first computing device included in a sound-synthesis system, a first compressed file from a second computing device included in the soundsynthesis system, wherein the first compressed file is for synthesizing an audio signal; and synthesizing the audio signal with the second computing device based on the first compressed file.

14. The non-transitory computer-readable medium of claim 13, wherein synthesizing theaudio signal based on the first compressed file comprises: prior to synthesizing the audio signal, performing a decompression operation on the first compressed file to generate a second decompressed file; and synthesizing the audio signal based on the second decompressed file.

15. The non-transitory computer-readable medium of claim 14, further comprising instructions which, in response to execution by the processor, cause the processor to perform the step of, prior to performing the decompression operation, storing the second decompressed file at the first computing device.

16. The non-transitory computer-readable medium of claim 15, wherein the decompression operation comprises adding one or more bits to the first compressed file.

17. The non-transitory computer-readable medium of claim 15, wherein synthesizing the audio signal based on the first compressed file comprises: prior to synthesizing the audio signal, storing the first compressed file at the first computing device; and synthesizing the audio signal based on the second decompressed file.

18. The non-transitory computer-readable medium of claim 14, wherein the decompression operation comprises one or more of: adding a first fixed number of bits to a first set of multiple values included in the first compressed file; and adding a second fixed number of bits to a second set of multiple values included in the first compressed file.

19. The non-transitory computer-readable medium of claim 14, wherein the first compressed file comprises a signal flow file and the decompression operation includes adding one or more default values to the signal flow file.

20. A sound-synthesis system comprising: a memory that stores instructions; and a processor that is communicatively coupled to the memory and is configured to, when executing the instructions, perform the steps of:receiving, by a first computing device included in a sound-synthesis system, a first compressed file from a second computing device included in the soundsynthesis system, wherein the first compressed file is for synthesizing an audio signal; and synthesizing the audio signal with the second computing device based on the first compressed file.

Citation Information

Patent Citations

  • Audio stream processing method and related devices

    EP3407180A1

  • Method and apparatus for enabling advanced manipulation of audio

    US20050145099A1

  • Sound effect synthesis

    US20210082391A1