Vibration control system, program, and control method
By introducing a vibration control system and multiple playback modes, the problems of insufficient flexibility and user interactivity in vibration effect control in existing game systems have been solved, achieving a more immersive and interactive vibration effect output.
Patent Information
- Application Number
- JP2025060824
- Authority / Receiving Office
- JP · JP
- Patent Type
- Applications
- Current Assignee / Owner
- Filing Date
- 2025-04-01
- Publication Date
- 2026-01-30
AI Technical Summary
There is room for improvement in the vibration effect control of existing game systems, especially in the lack of flexibility and user interactivity in the frequency and amplitude control of vibration devices.
By introducing a vibration control system into the game system, including vibration equipment, vibration data processing, and user settings, the frequency and amplitude of the vibration equipment can be dynamically adjusted and controlled. It supports multiple playback modes, such as preset playback, streaming playback, and autonomous playback, and allows for personalized settings based on user operations.
It achieves more flexible vibration effect control, enhances the user experience, and can dynamically adjust vibration and sound output according to game events and user needs, thereby improving the immersion and interactivity of the game experience.
Smart Images

Figure 2026015708000001_ABST
Abstract
Description
[Technical Field]
[0001] The present disclosure relates to a vibration control system, a program, and a control method. [Background technology]
[0002] Conventionally, there are game systems that provide vibration effects to users playing games. For example, Japanese Patent Laid-Open Publication No. 2016-202486 (Patent Document 1) discloses a vibration signal generation system used in games. [Prior art documents] [Patent documents]
[0003] [Patent Document 1] Japanese Patent Application Laid-Open No. 2016-202486 Summary of the Invention [Problem to be solved by the invention]
[0004] There was room for improvement in the use of conventional vibration systems. [Means for solving the problem]
[0005] (Configuration 1) A vibration control system in one embodiment is a vibration control system including a vibration device capable of reproducing a sound frequency band. The vibration control system includes: means for acquiring vibration data for vibrating the vibration device from an application program; means for performing control processing of the vibration device based on the acquired vibration data; means for setting a setting value (first setting value) for the output of the sound frequency band of the vibration device (hereinafter, first setting); and means for performing processing to change the output of the sound frequency band output from the vibration device based on the first setting value.
[0006] (Configuration 2) In configuration 1, the vibration data is data indicating amplitude and frequency, the change process is a process of adjusting the indicated amplitude according to the first set value when the indicated frequency of the acquired vibration data specifies a frequency in a sound frequency band, and the control process is performed based on the vibration data after the change process has been performed.
[0007] (Configuration 3) In configuration 1 or 2, the vibration data is data indicating amplitude and frequency, and the change process is a process in which the acquired vibration data is not passed to the control process when the indicated frequency of the acquired vibration data specifies a frequency in the frequency band of sound.
[0008] (Configuration 4) In any of configurations 1 to 3, the vibration data is data indicating amplitude and frequency, and the device further includes a means for performing a control data generation process based on the acquired vibration data, the control process being performed based on the control data, and the change process being performed by generating control data according to the first set value when the indicated frequency of the acquired vibration data specifies a frequency in the frequency band of sound in the generation process.
[0009] (Configuration 5) In any of configurations 1 to 4, the change processing is performed by adjusting the control of the frequency band of the sound through a filter processing of an amplifier that controls the vibration device.
[0010] (Configuration 6) In any one of Configurations 1 to 5, the vibration data is PCM data; The change process is performed by not passing the PCM data to the control process.
[0011] (Configuration 7) In any of configurations 1 to 6, the vibration data is PCM data and a volume parameter can be added, and in the control process, control data is generated based on the PCM data and the volume parameter, control is performed using the generated control data, and the change process is performed by setting the volume parameter based on a first set value.
[0012] (Configuration 8) In any of configurations 1 to 7, the first setting is performed based on a user operation.
[0013] (Configuration 9) In configuration 8, a means for setting a setting value (second setting value) for an output of a frequency band in a tactile region of the vibration device based on a user operation (hereinafter, referred to as second setting); The device further includes a means for performing a process of changing the output of the frequency band of the tactile region output from the vibration device based on the second set value.
[0014] (Configuration 10) In configuration 8, the configuration further includes a means for setting (hereinafter, third setting) a setting value (third setting value) for the output of all frequency bands of the vibration device based on user operation, and a means for performing a process of changing the output of all frequency bands output from the vibration device based on the third setting value.
[0015] (Configuration 11) In one embodiment, a vibration control system is provided with a vibration device capable of reproducing a frequency band of sound and capable of speaker output. The vibration control system includes: means for acquiring vibration data for vibrating the vibration device from an application program; means for performing control processing of the vibration device based on the acquired vibration data; means for setting a setting value for speaker output (hereinafter, speaker setting value); and means for performing processing to change the output of the frequency band of sound output from the vibration device based on the speaker setting value.
[0016] (Configuration 12) In one embodiment, a program causes a computer of a vibration control system equipped with a vibration device capable of reproducing a sound frequency band to function as a means for acquiring vibration data for vibrating the vibration device from an application program, a means for performing setting processing of control data for the vibration device based on the acquired vibration data, a means for setting (hereinafter, first setting) a setting value (first setting value) for the output of the sound frequency band of the vibration device, and a means for performing processing to change the output of the sound frequency band output from the vibration device based on the first setting value.
[0017] (Configuration 13) In configuration 12, the vibration data is data indicating amplitude and frequency, the change process is a process of adjusting the indicated amplitude according to the first set value when the indicated frequency of the acquired vibration data specifies a frequency in a sound frequency band, and the control process is performed based on the vibration data after the change process has been performed.
[0018] (Configuration 14) In configuration 12, the vibration data is data indicating amplitude and frequency, and the change process is a process in which the acquired vibration data is not passed to the control process when the indicated frequency of the acquired vibration data specifies a frequency in the sound frequency band.
[0019] (Configuration 15) In configuration 12, the vibration data is data indicating amplitude and frequency, and the computer is further made to function as a means for performing a process of generating control data based on the acquired vibration data, and the change process is performed by generating control data corresponding to the first setting value when the indicated frequency of the acquired vibration data specifies a frequency in the frequency band of sound in the setting process.
[0020] (Configuration 16) In configuration 12, the change processing is performed by adjusting the control of the frequency band of the sound through a filter processing of an amplifier that controls the vibration device.
[0021] (Configuration 17) In configuration 12, the vibration data is PCM data, and the change process is performed by not passing the PCM data to the control process.
[0022] (Configuration 18) In configuration 12, the vibration data is PCM data and a volume parameter can be added, and in the control process, control data is generated based on the PCM data and the volume parameter, control is performed using the generated control data, and the change process is performed by setting the volume parameter based on the first setting value.
[0023] (Configuration 19) In any of configurations 12 to 18, the first setting is performed based on a user operation.
[0024] (Configuration 20) In configuration 19, the configuration further includes a means for setting (hereinafter, second setting) a setting value (second setting value) for the output of the frequency band of the tactile region of the vibration device based on user operation, and a means for performing processing to change the output of the frequency band of the tactile region output from the vibration device based on the second setting value.
[0025] (Configuration 21) In any of configurations 19, the configuration further includes a means for setting (hereinafter, third setting) a setting value (third setting value) for the output of all frequency bands of the vibration device based on user operation, and a means for performing a process of changing the output of all frequency bands output from the vibration device based on the third setting value.
[0026] (Configuration 22) In one embodiment, a program causes a computer of a vibration control system equipped with a vibration device capable of reproducing a frequency band of sound and capable of speaker output to function as a means for acquiring vibration data for vibrating the vibration device from an application program, a means for performing control processing of the vibration device based on the acquired vibration data, a means for setting a setting value for the speaker output (hereinafter referred to as the speaker setting value), and a means for performing processing to change the output of the frequency band of sound output from the vibration device based on the speaker setting value.
[0027] (Configuration 23) In one embodiment, a control method is a control method for controlling a vibration control system including a vibration device capable of reproducing a sound frequency band. The control method acquires vibration data for vibrating the vibration device from an application program, performs control processing for the vibration device based on the acquired vibration data, sets a setting value for output of the sound frequency band of the vibration device, and performs processing to change the output of the sound frequency band output from the vibration device based on a first setting value. [Brief explanation of the drawings]
[0028] [Figure 1] 1 is a schematic diagram illustrating an example of a vibration control system according to an embodiment of the present invention. [Figure 2] FIG. 10 is a diagram illustrating an example of data stored in a volatile memory. [Figure 3] FIG. 10 is a diagram for explaining a flow of vibration generation. [Figure 4] 10 is a flowchart showing a processing procedure for making a preset registration request in the game program. [Figure 5] 10 is a flowchart showing a processing procedure for executing a preset registration command in the system program. [Figure 6] 10 is a flowchart showing a procedure for registering presets in an MCU program. [Figure 7] 10 is a flowchart showing a processing procedure for an API request in response to an event in a game program. [Figure 8] 10 is a flowchart showing a processing procedure for executing a preset playback command in the system program. [Figure 9] 10 is a flowchart showing a procedure for preset playback in the MCU program. [Figure 10] 10 is a flowchart showing a processing procedure for executing a streaming playback command in the system program. [Figure 11]10 is a flowchart showing a processing procedure for streaming playback in the MCU program. [Figure 12] FIG. 10 is a diagram for explaining vibration instruction data based on a sound file. [Figure 13] 1 is a table showing the relationship between the frequency of a scale in 12-tone equal temperament and the encoded frequency. [Figure 14] FIG. 10 is a diagram for explaining vibration instruction data based on a vibration file. [Figure 15] 10 is a flowchart showing a procedure for encoding vibration instruction data executed by the game device. [Figure 16] 10 is a flowchart showing a decoding procedure of the encoded vibration instruction data executed by the game controller. [Figure 17] 10 is a flowchart showing a procedure for generating control data executed by a game controller. [Figure 18] 10 is a flowchart showing the processing procedure of the start process in step S1018. [Figure 19] 10 is a flowchart showing the procedure of an autonomous playback process in the MCU program. DETAILED DESCRIPTION OF THE INVENTION
[0029] The present embodiment will be described in detail with reference to the drawings, in which the same or corresponding parts are designated by the same reference numerals and description thereof will not be repeated. [Embodiment 1] [A. Overview] An example of the configuration of the vibration control system 10 that controls the vibration motor 206 in this embodiment will be described.
[0030] FIG. 1 is a schematic diagram showing an example of a vibration control system 10 according to the present embodiment. The vibration control system 10 according to the present embodiment is applied to a game system. The vibration control system 10 includes a game device 100 and a game controller 200. The game device 100 is a main unit for providing a game to a user. The game controller 200 is a device that is held by a user playing a game and receives input.
[0031] The game device 100 progresses through a game by displaying videos or images on a display device such as a TV monitor, LCD, organic EL (Electro Luminescence) display, or head mounted display (HMD) in accordance with a program. The user operates the game controller 200 in accordance with the videos or images displayed on the display device. The game device 100 receives input from the user via the game controller 200, and progresses through the game in accordance with the input.
[0032] The game controller 200 of this embodiment has a vibration motor 206 that vibrates in accordance with the progress of the game. The vibration motor 206 vibrates under control of, for example, the MCU 201 based on at least one of vibration instruction data and PCM (Pulse Code Modulation) data. The vibration instruction data is data that specifies the frequency and amplitude of vibration. PCM data is data that represents waves by quantizing the magnitude of the amplitude at a constant sampling rate, and can represent sound waves. The sampling rate of the PCM data may be, for example, a cycle of 0.125 ms. Hereinafter, data within the PCM data every 0.125 ms may be referred to as one unit of PCM data.
[0033] In addition, the vibration control system 10 of this embodiment is capable of control based on both vibration instruction data and PCM data. For application developers, there are cases where it is preferable to specify amplitude and frequency, and cases where it is preferable to use PCM data, and the application developer can select which method to adopt. As will be described later, the vibration instruction data is converted into control data by the MCU 201, and in this embodiment, this control data is in PCM format. Therefore, when PCM data is used as data for vibrating, it can be used as control data without changing the format.
[0034] In this embodiment, vibration motor 206 can vibrate at frequencies in the audible band in addition to the tactile frequency band, and when instructed to vibrate at a frequency in the tactile frequency band, it functions to impart vibration to the user's tactile sense, and when instructed to vibrate at a frequency in the audible band, it functions as a speaker that makes the user perceive sound with their hearing. The tactile frequency band means, for example, a frequency band in which a person can perceive vibration. Hereinafter, frequencies in the audible band may be referred to as "sound frequencies."
[0035] The vibration motor 206 is a type of vibration device, and in this embodiment is a voice coil motor. More specifically, it is a voice coil motor that performs reciprocating motion. The vibration motor 206 in this embodiment is a device that can vibrate at high speed and with high output at a frequency in the audible range that can be heard by the user, based on the above-mentioned PCM data. That is, the vibration motor 206 can function as a speaker based on the PCM data. The vibration motor 206 can also vibrate at both tactile frequencies and audible frequencies. That is, the vibration instruction data can specify both tactile frequencies and audible frequencies, and the vibration motor 206 functions as a vibrator that applies vibration to the user's sense of touch and also functions as a speaker. Note that a piezoelectric element may be used as the vibration device.
[0036] In this embodiment, the game controller 200 uses four different methods to cause the vibration motor 206 to function as a speaker. In the first method, PCM data is transmitted in advance from the game device 100 to the game controller 200 along with identification information (such as an ID) to preset the data in the memory of the game controller 200, and the game device 100 then plays the data by specifying the identification information of the preset PCM data (hereinafter referred to as "preset playback"). In the second method, the game device 100 sequentially transmits PCM data to the game controller 200 (hereinafter referred to as "streaming playback"). In the third method, the game device 100 plays the data by specifying an amplitude and frequency (an audible frequency) based on vibration instruction data (hereinafter referred to as "amplitude and frequency specified playback"). In the fourth method, playback is performed by a processor in the game controller based on an operation on the game controller 200 (because this is performed independently of the processing of the game device 100, this is hereinafter referred to as "autonomous playback"). The data for self-reproducing may be PCM data or vibration instruction data (data that specifies amplitude and frequency, specifying a frequency in the audible range).
[0037] [B. Game Device Configuration] The game device 100 has a processor 101, a non-volatile memory 102, a volatile memory 103, and a communication interface (I / F) 104. The processor 101 is a processing entity for executing the processes provided by the game device 100. The processor 101 reads a system program 102P1 and a game program 102P2 stored in the non-volatile memory 102, expands them into the volatile memory 103, and executes them.
[0038] The processor 101 is a processing circuit, such as a CPU (Central Processing Unit). In this specification, the term "processor" refers to a processing circuit such as a CPU, MPU (Micro Processing Unit), or GPU (Graphics Processing Unit) that executes processing according to instruction codes written in a program, and also encompasses hardwired circuits such as ASICs and FPGAs. Hardwired circuits such as ASICs and FPGAs have pre-formed circuits corresponding to the processing to be executed. Furthermore, the term "processor" in this specification may also encompass a circuit that integrates multiple functions, such as an SoC (System on Chip). The processor 101 may be, for example, an SoC that integrates the functions of a CPU and a GPU. Furthermore, each process in this embodiment may be executed by a single processor, or may be shared and executed by multiple processors working together.
[0039] The non-volatile memory 102 is a non-volatile storage device accessible by the processor 101, and may be, for example, a solid state drive (SSD), flash memory, or a hard disk. Note that the non-volatile memory 102 may also be a storage medium that is detachable from the game device 100, such as an optical disk or a cartridge.
[0040] The system program 102P1 is a program that processes the system parts of the game device 100, realizes the basic functions of the game device 100, and provides various functions to application programs. The system program 102P1 also includes a program for transmitting various data stored in the volatile memory 103 to the game controller 200. The game program 102P2, which is a type of application program, is a program for executing a game, and is stored, for example, in a storage medium that is detachably attached to the game device 100, or downloaded to the non-volatile memory 102 via the Internet. The system program 102P1 may include a menu program or certain types of application programs, and these programs may use vibration instruction data or PCM data to cause a vibration motor to output vibration or sound.
[0041] (b1. Game Program 102P2) The game program 102P2 in this embodiment includes a vibration file 105A, a sound file 105B, preset PCM data PD1, and streaming PCM data SD1. First, the vibration file 105A and sound file 105B included in the game program 102P2 will be described below.
[0042] (b1-1. Vibration file 105A and sound file 105B) The vibration file 105A and the sound file 105B contain vibration instruction data, i.e., data instructing a frequency and data instructing an amplitude. A specific example of the vibration file 105A is shown in FIG. 14, which will be described later, and a specific example of the sound file 105B is shown in FIG. 12, which will be described later. As shown in FIGS. 12 and 14, each of the vibration file 105A and the sound file 105B is a file that successively specifies a frequency and an amplitude for each event that occurs in the game program 102P2. In other words, each of the vibration file 105A and the sound file 105B is not a single piece of data indicating a certain vibration, but a collection of data instructing multiple consecutive vibrations.
[0043] The vibration file 105A includes data for each vibration event to cause the vibration motor 206 to function as a vibrator that applies vibration to the user's tactile sense, and includes parameters that specify the frequency (the frequency of the tactile region is specified) and amplitude.
[0044] The sound file 105B includes data for each sound event to cause the vibration motor 206 to function as a speaker that makes the user perceive sound with his / her hearing, and includes parameters indicating frequency (a frequency in the audible range is specified) and amplitude. In this embodiment, the vibration instruction data included in the vibration file 105A and the sound file 105B have the same format, but the frequency bands they specify are different. Note that the formats of the vibration instruction data included in the vibration file 105A and the sound file 105B may be different.
[0045] The frequency band specified by the vibration file 105A is, for example, 40 Hz to 400 Hz. When a low frequency is specified, a heavy vibration is output, and when a high frequency is specified, a sharp vibration is output. The frequency band specified by the sound file 105B is, for example, 400 Hz to 3500 Hz. When a low frequency is specified, a low sound is output, and when a high frequency is specified, a high sound is output. Note that 40 Hz to 400 Hz is an example of a "frequency in the effective vibration band." 400 Hz to 3500 Hz is an example of an "audible range frequency" in the present disclosure. Frequencies other than 400 Hz to 3500 Hz are an example of a "non-audible range frequency" in the present disclosure. The boundary between the audible range frequency and the tactile range frequency may be changed as appropriate.
[0046] For example, vibration events and sound events may be events in the virtual game space, such as objects colliding with each other, explosions, gun firing, or a car or the like driving on a road. Vibrations and / or sounds corresponding to these events are output by vibration of the vibration motor 206. Sound events may also include a character in the virtual space making a sound, an object colliding, an in-game phenomenon, a user selecting a UI (User Interface) button, or the timing of sound effects. Furthermore, sounds generated in response to sound events may include voice data, sound effects, background music, instrument sounds, etc. Sound file 105B may specify frequencies according to a predetermined musical scale. The predetermined musical scale may be, for example, 12-note equal temperament.
[0047] The frequency included in the vibration instruction data may be changed depending on, for example, the magnitude of the collision in the virtual game space, the weight and material of the collided object, etc. In other words, the effect can be changed by changing the frequency. The magnitude of the collision is determined based on, for example, the speed of the collision and the weight of the collided object, etc. The frequency may be limited by various system conditions.
[0048] The vibration file 105A and the sound file 105B contain two parameters, frequency and amplitude, for vibrating the vibration motor 206. The game device 100 generates vibration instruction data using the two parameters, frequency and amplitude, contained in the vibration file 105A and the sound file 105B. In this specification, "generation" includes both reading data from a non-volatile memory or a volatile memory (to be used as is in subsequent processing) and generating other data based on the read data.
[0049] The vibration instruction data is data that specifies amplitude and frequency at a predetermined period. This predetermined period is, for example, 5 ms. That is, the vibration file 105A and the sound file 105B contain vibration instruction data at predetermined periods. As described below, the control of the vibration motor 206 based on the vibration instruction data is performed at a period shorter than the period of the vibration instruction data. By sequentially and continuously transmitting the vibration instruction data contained in the vibration file 105A and the sound file 105B to the game controller 200, the game controller 200 vibrates continuously for a period of 5 ms or more. The vibration period of the vibration motor 206 may be set to be different for each generated vibration instruction data. The game controller 200 receives the vibration instruction data from the game device 100 and vibrates the vibration motor 206 based on the frequency and amplitude specified in the received vibration instruction data.
[0050] The vibration motor 206 has a predetermined maximum input voltage value for each frequency. In this embodiment, the specified vibration amplitude specified by the application program is normalized with respect to the maximum voltage for each specified frequency. Specifically, the amplitude included in the vibration instruction data is expressed as a numerical value between 0 and 1.0. When the amplitude is "1.0," control data is generated based on the maximum voltage at the specified frequency included in the vibration instruction data. When the amplitude is "0.5," control data is generated based on a voltage that is 50% of the maximum voltage at the specified frequency included in the vibration instruction data. Data indicating the maximum voltage for each frequency is stored in the non-volatile memory of the game device and / or the non-volatile memory of the game controller, and is referenced when generating control data. Note that the maximum value of the output voltage of the amplifier controlling the vibration motor 206 may also be used as the reference.
[0051] The form of the amplitude instruction in the vibration instruction data is not limited to this example, and does not have to be normalized with respect to the maximum input voltage for each frequency.
[0052] (b1-2. Preset PCM data PD1 and streaming PCM data SD1) Next, the preset PCM data PD1 and the streaming PCM data SD1 will be described. Each of the preset PCM data PD1 and the streaming PCM data SD1 is a collection of multiple PCM data samples that are sampled at a predetermined cycle.
[0053] The preset PCM data PD1 is transmitted to the game controller 200 in advance before a request for preset playback is made, and is stored in the memory of the game controller 200. On the other hand, the streaming PCM data SD1 is transmitted to the game controller 200 sequentially in real time at the timing when a request for streaming playback is made.
[0054] 1, the preset PCM data PD1 includes identification information Pi1. The identification information Pi1 is information for identifying each of the multiple preset PCM data PD1. For example, each of the preset PCM data PD1 is assigned a different ID as the identification information Pi1. This makes it possible to identify desired preset PCM data in the vibration control system 10 based on the identification information Pi1.
[0055] The preset PCM data and streaming PCM data may be included in the game program 102P2 or in a system program (such as a menu program). Alternatively, the data may be stored in a non-volatile memory in advance or downloaded from a server or the like. Such data is used by the game program 102P2, the system program 102P1, and the like.
[0056] For example, the game program 102P2 can request the game controller 200 to generate vibrations using all or a selection of the vibration file 105A, the sound file 105B, the preset PCM data PD1, and the streaming PCM data SD1. The game program 102P2 requests the system program 102P1 to vibrate the vibration motor 206 via an API (Application Programming Interface). In the vibration control system 10, a predefined command set is provided as an API so that applications such as the game program 102P2 can request the system program 102P1 to execute a predetermined process. Note that in this specification, "a processor or the like executing a certain program executes a certain process" may be expressed as "a certain program executes a certain process."
[0057] Specifically, upon detecting the occurrence of a vibration event or sound event during the game, the game program 102P2 uses the vibration instruction API to request vibration from the system program, passing vibration instruction data read from the vibration file 105A and the sound file 105B as arguments. Alternatively, the game program 102P2 uses the preset playback API to request preset playback from the system program, passing identification information for the preset PCM data PD1 as arguments. Alternatively, the game program 102P2 uses the preset registration API to request preset playback from the system program, passing preset PCM data as arguments. Alternatively, the game program 102P2 uses the streaming playback API to request streaming playback from the system program, passing the streaming PCM data SD1 sequentially as arguments. Note that the vibration instruction data contained in the vibration file and the sound file differ only in frequency band, so a vibration instruction request can be made using a common API. Below, a request using an API may simply be referred to as an "API request." Next, the system program 102P1 that receives the API request from the game program 102P2 will be described. Note that in some situations, an API may not be prepared in advance as a specification for making these requests.
[0058] (b2. System Program 102P1) The system program 102P1 transmits various commands to the game controller 200 in response to requests from the game program 102P2 via the API. The system program 102P1 also includes a preset registration command program A1, a preset playback command program A2, a streaming playback command program A3, a PCM encoding program PE1, a frequency encoding program En1, an amplitude encoding program En2, an output setting program F1, and an output setting program F2.
[0059] In response to the game program 102P2 executing a request using the preset playback API, the system program 102P1 transmits a preset playback command to the game controller 200. The preset playback command includes identification information of the PCM data to be played back, which the game program 102P2 has handed over using the preset playback API. In addition, in response to the game program 102P2 executing a request using the preset registration API, the system program 102P1 transmits a preset registration command to the game controller 200. The preset registration command includes the PCM data and its identification information, which the game program 102P2 has handed over using the preset playback API.
[0060] In response to the game program 102P2 executing a request using the streaming playback API, the system program 102P1 transmits a streaming playback command to the game controller 200. The streaming playback command includes PCM data (a predetermined sampling amount) that the game program 102P2 has handed over using the streaming playback API.
[0061] In response to the game program 102P2 executing a request using the vibration instruction API, the system program 102P1 transmits a vibration instruction command to the game controller 200. The vibration instruction command includes vibration instruction data handed over by the game program 102P2 using the vibration instruction API.
[0062] When a request is made from the game program 102P2 using the vibration instruction API, the system program 102P1 executes a process of encoding vibration instruction data acquired from the game program 102P1 and a process of transmitting the encoded vibration instruction data to the game controller 200. In the process of encoding the vibration instruction data, the system program 102P1 executes a frequency encoding program En1 and an amplitude encoding program En2. Note that the process of encoding the vibration instruction data may be executed by the game program 102P2 instead of the system program 102P1. Furthermore, when a request is made from the game program 102P2 using the streaming playback API, the system program 102P1 (PCM encoding program PE1) executes a process of encoding the PCM data acquired from the game program 102P2 using a predetermined audio codec. The encoded PCM data is transmitted to the game controller 200.
[0063] In this embodiment, the vibration instruction data is encoded so that it can be transmitted between the game device 100 and the game controller 200 with a capacity of 20 bits per vibration instruction data. More specifically, the game device 100 encodes the frequency included in the vibration instruction data with 10 bits, and encodes the amplitude included in the vibration instruction data with 10 bits. Hereinafter, the encoded frequency will be referred to as the "encoded frequency," the encoded amplitude will be referred to as the "encoded amplitude," and 20-bit data including the encoded frequency and the encoded amplitude will be referred to as the "encoded vibration instruction data." The game device 100 transmits the encoded vibration instruction data to the game controller 200.
[0064] This reduces the amount of communication between the game device 100 and the game controller 200 compared to when unencoded vibration instruction data is transmitted from the game device 100 to the game controller 200. Note that any number of bits may be used for the encoding frequency and the encoding amplitude. Hereinafter, the frequency encoding program En1 and the amplitude encoding program En2 may be collectively referred to simply as the "encoding program En." Encoding of the vibration instruction data will be described in detail later.
[0065] The output setting program F1 is a program for allowing a user to set the magnitude or availability of output from the vibration device. For example, it is a program included in the system program of a game device and allows the user to make this selection using a user interface such as a system menu. When setting whether to enable or disable output (hereinafter, this method may be referred to as an on / off setting method), the user may be allowed to select from two options, for example, "on" and "off." Hereinafter, this setting value may be referred to as an "on / off setting value (sound range)." When setting the magnitude of output (hereinafter, this method may be referred to as a volume setting method), the user may be allowed to select from "strong," "medium," "weak," and "off," or from 10 levels or the like (there may be more levels, or an analog setting may be used). When selecting the magnitude of output in this way, the setting value is a volume value. Hereinafter, this volume value may be referred to as a "volume value (sound range)."
[0066] Instead of a system menu, a running application program (such as a game program) may set the appropriate settings for the application, either in response to user selections via a user interface provided by the program, or automatically.
[0067] A value indicating the setting selected in this manner is stored as a setting value. In this embodiment, the output setting program F1 allows the user to separately set the magnitude or availability of the output in the tactile area and the magnitude or availability of the output in the sound frequency band. In this case, there are separate setting values for the tactile area and the sound frequency band. That is, in the case of the on / off setting method, the user can separately set the on / off of the tactile area and the on / off of the sound frequency band. Furthermore, in the case of the volume setting method, the user can separately adjust the volume of the tactile area and the volume of the sound frequency band.
[0068] The output setting program F1 may also allow the user to separately set the magnitude or availability of output in the entire range (a range including both the tactile range and the sound range) and the magnitude or availability of output in the sound frequency band. That is, in the case of an on / off setting method, the user can set the on / off for the entire range as well as the sound frequency band. In the case of a volume setting method, the user can adjust the volume for the entire range as well as the sound frequency band. In this case, there is a setting value for the sound frequency band in addition to the setting value for the entire range. The user may also set each of the three setting values: the output value for the entire range, the setting value for the tactile range, and the sound range.
[0069] It is optional whether to use the on / off setting method or the volume setting method, and one of the settings for the contact area and the sound area may be the on / off setting method and the other the volume setting method, or vice versa. The same applies to the settings for the entire area.
[0070] The output change program F2 is a program that changes the availability or magnitude of output from the vibration motor 206 based on the set values thus set. In this disclosure, "output change" includes both switching the availability of output and adjusting the magnitude of the output.
[0071] (b3. Volatile memory 103) Next, the volatile memory 103 in the game device 100 will be described. The volatile memory 103 is a volatile storage device accessible by the processor 101, and may be, for example, a dynamic random access memory (DRAM) or a static random access memory (SRAM). The volatile memory 103 has a data area 103B1, an operation data area 103B2, and a vibration instruction data area 103B3. The data area 103B1 is, for example, an area for temporarily storing data generated when the processor 101 executes the game program 102P2.
[0072] The operation data area 103B2 is an area that temporarily stores operation data received from the game controller 200. The operation data is data that indicates input to the game controller 200 by the user, and is detection values of the acceleration sensor 208, the gyro sensor 209, the operation switch 210, etc.
[0073] The vibration instruction data area 103B3 is an area for temporarily storing the encoded vibration instruction data. The PCM data area 103B4 is an area for temporarily storing PCM data such as the preset PCM data PD1 and the streaming PCM data SD1 included in the game program 102P2. Note that in this specification, the term "memory" encompasses at least both the non-volatile memory 102 and the volatile memory 103.
[0074] The game device 100 transmits data in the volatile memory 103 to the game controller 200 via the communication interface 104. The communication interface 104 performs wireless communication with the game controller 200 using, for example, an antenna (not shown). Any communication method may be used for wireless communication between the game device 100 and the game controller 200. In this embodiment, the game device 100 communicates with the game controller 200 in accordance with the Bluetooth (registered trademark) standard. However, other standards such as IEEE802.11 may also be used, or a proprietary communication protocol may be used. The communication between the game device 100 and the game controller 200 may be wired communication. In this case, the communication interface 104 may be, for example, a terminal conforming to the USB (Universal Serial Bus) standard.
[0075] C. Configuration of Game Controller 200 The following describes the game controller 200. The game controller 200 includes an MCU (Micro Controller Unit) 201, an amplifier 205, a vibration motor 206, a communication interface (I / F) 207, an acceleration sensor 208, a gyro sensor 209, and an operation switch 210. The game controller 200 also includes an optical sensor and has a mouse function.
[0076] Game controller 200 may be a typical game controller that is held in one or both hands of a user and accepts input from the user by operating operation switches 210 with the user's fingers, or may be configured as, for example, a mouse that is equipped with vibration motor 206 and can be used with a general-purpose PC or the like. Alternatively, game controller 200 may have both the function of the typical game controller described above and the function of a mouse that can be used with a PC or the like. Furthermore, game controller 200 may be of another type, such as a type that is placed on the floor and accepts input when the soles of the user's feet come into contact with sensors, or a general-purpose keyboard.
[0077] The MCU 201 has a processor 202, a non-volatile memory 203, and a volatile memory 204. The processor 202, the non-volatile memory 203, the volatile memory 204, and the communication interface 207 in the game controller 200 have the same hardware configurations as the processor 101, the non-volatile memory 102, the volatile memory 103, and the communication interface 104 in the game device 100 described above. Therefore, a description of these hardware configurations will not be repeated. However, to reduce the cost of the game controller 200, the processor 202 may have lower processing power than the processor 101.
[0078] The non-volatile memory 203 stores preset PCM data and an MCU program 203P. The non-volatile memory 203 may also store the above-mentioned PCM data for autonomous playback. The preset data area PD2 may store PCM data transmitted in advance from the game program 102P2 or the like, or may store predetermined PCM data at the time of shipping the game controller 200 from the factory. Alternatively, the game device 100 may execute a system program or the like, and PCM data downloaded from a server or the like may be transmitted to and stored in the game controller 200. The PCM data for autonomous playback may also be stored in the preset data area PD2 as PCM data at the time of shipping the game controller 200 from the factory. Downloading from a predetermined server may be, for example, a firmware update. The preset data area PD2 includes an identification information area Pi2 that stores identification information Pi1.
[0079] The MCU program 203P includes a frequency decoding program De1, an amplitude decoding program De2, a preset registration program 2030, a vibration instruction program 2031, a preset playback program 2032, a streaming playback program 2033, an autonomous playback program 2034, and a PCM decoding program DP1. The MCU program 203P also includes, although not shown in Fig. 1, a program for transmitting detection values of the operation switch 210, the acceleration sensor 208, and the gyro sensor 209 to the game device 100 via the communication interface 207, and a program for executing various processes such as receiving encoded vibration instruction data from the game device 100.
[0080] The frequency decoding program De1 is a program for decoding the encoded frequency. The amplitude decoding program De2 is a program for decoding the encoded amplitude. Hereinafter, the frequency decoding program De1 and the amplitude decoding program De2 may be collectively referred to simply as the "decoding program De." The PCM decoding program DP1 is a program for decoding PCM data sent from the game device 100 along with a streaming playback command or a preset registration command. The processor 202 uses the frequency decoding program De1, the amplitude decoding program De2, and the PCM decoding program DP1 to decode the encoded vibration instruction data and generate decoded vibration instruction data.
[0081] The vibration instruction program 2031 is a program for generating control data to be transmitted to the amplifier 205 based on the decoded vibration instruction data. The control data is typically data indicating a voltage value of a waveform for driving the vibration motor 206.
[0082] The preset playback program 2032 is a program for generating control data in response to a preset playback command received from the game device 100, based on preset PCM data corresponding to identification information Pi1 transmitted together with the preset playback command.
[0083] The streaming playback program 2033 is a program for generating control data in response to a streaming playback command received from the game device 100, based on the streaming PCM data SD1 transmitted together with the streaming playback command.
[0084] The autonomous playback program 2034 is a program for generating control data based on the corresponding PCM data in response to the establishment of a predetermined condition, which will be described later with reference to Fig. 19. The PCM decoding program DP1 is a program for decoding the PCM data encoded by the PCM encoding program PE1.
[0085] Next, the data stored in the volatile memory 204 of the game controller 200 will be described with reference to Fig. 2. Fig. 2 is a diagram showing an example of data stored in the volatile memory 204. The volatile memory 204 has a vibration instruction data area 204B1, a control data area 204B2, an operation data area 204B3, a preset playback area 204B4, a streaming playback area 204B5, an autonomous playback area 204B6, a current amplitude data area 204V1, a current frequency data area 204V2, a current phase data area 204V3, a previous amplitude data area 204V4, a previous frequency data area 204V5, a preset data area PD3, and an exclusive control flag 2035.
[0086] The vibration instruction data area 204B1 is an area for temporarily storing encoded vibration instruction data and decoded vibration instruction data received from the game device 100. The control data area 204B2 is an area for temporarily storing control data generated by the processor 202. The operation data area 204B3 is an area for temporarily storing operation data. The preset playback area 204B4 is an area for temporarily storing preset PCM data to be played back identified by the preset playback program 2032. The streaming playback area 204B5 is an area for temporarily storing streaming PCM data SD1 received together with a streaming playback command. Note that the streaming playback area 204B5 stores several samples of data transmitted from the game device 100 at a certain timing. The autonomous playback area 204B6 is an area for temporarily storing PCM data for autonomous playback.
[0087] The current amplitude data area 204V1, the current frequency data area 204V2, the current phase data area 204V3, the previous amplitude data area 204V4, and the previous frequency data area 204V5 are temporary areas used to generate control data based on vibration instruction data. These areas will be described in detail later.
[0088] Like the preset data area PD2, the preset data area PD3 is a volatile area for storing preset PCM data. That is, the preset PCM data may be stored in a non-volatile manner or a volatile manner. Preset PCM data temporarily used by a certain game program 102P2 may be stored in a volatile area. The preset data area PD3 may also store PCM data transmitted from the game program 102P2.
[0089] The exclusive control flag 2035 is a flag for determining which of the four playback methods described above (preset playback, streaming playback, amplitude frequency specified playback, and autonomous playback) is used to vibrate the vibration motor 206 when two or more of these playback methods occur simultaneously. The exclusive control flag 2035 includes a preset playback in progress flag Fg1, a streaming playback in progress flag Fg2, and an autonomous playback in progress flag Fg3. The preset playback in progress flag Fg1 is set to True when the vibration motor 206 is being vibrated by a preset playback command, and is set to False otherwise.
[0090] The streaming playback in progress flag Fg2 is set to True when the vibration motor 206 is vibrating in response to a streaming playback command, and is set to False otherwise. The autonomous playback in progress flag Fg3 is set to True when the vibration motor 206 is vibrating in response to autonomous playback, and is set to False otherwise.
[0091] Returning to FIG. 1 , the control data stored in the control data area 204B2 of the volatile memory 204 is transferred to the amplifier 205, for example, by DMA (Direct Memory Access). In this embodiment, multiple (specifically, for example, 40) pieces of control data are simultaneously transferred to the amplifier 205. The amplifier 205 in this embodiment performs PWM (Pulse Width Modulation) control at a frequency of 8 kHz. The amplifier 205 determines a duty ratio every 0.125 ms based on the received control data and supplies power to the vibration motor 206. Hereinafter, the 0.125 ms cycle in which the duty ratio is determined using one piece of control data may be referred to as a "control cycle." The vibration control system 10 is configured so that the control cycle (0.125 ms) matches the sampling rate of each of the above-mentioned PCM data. That is, in this embodiment, the sampling rate of each of the above-mentioned PCM data is 0.125 ms. Note that the PWM control frequency of the amplifier 205 does not have to be 8 kHz. For example, if the PWM control frequency of the amplifier 205 is 48 kHz, the sampling rate of the PCM data may be approximately 0.0208 ms. The sampling rate of the amplifier 205 (the update frequency of the data input to the amplifier) is 0.125 ms.
[0092] As described above, vibration motor 206 is typically a voice coil motor, but may also be a motor using a piezoelectric element, and the type of motor is not critical. Vibration motor 206 may also be provided with an element that vibrates the surrounding air, such as a paper cone, or may have a structure in which the housing vibrates to produce sound. In other words, vibration motor 206 is configured to vibrate and produce sound according to the design of the housing, etc. Vibration motor 206 can provide both physical vibration and sound to a user holding game controller 200 in which vibration motor 206 is housed.
[0093] The acceleration sensor 208 detects the magnitude of linear acceleration along predetermined three-axis directions. The acceleration sensor 208 may detect acceleration along one or two axes. The gyro sensor 209 detects the tilt, angular velocity, angular acceleration, etc. of the game controller 200, and outputs the detection results to the operation data area 204B3.
[0094] The detection results of the acceleration sensor 208 and the gyro sensor 209 are output to the processor 101. The processor 101 in the game device 100 is able to calculate information relating to the movement and / or attitude of the game controller 200 based on the detection results of the acceleration sensor 208 and the gyro sensor 209.
[0095] When the game controller 200 has a general-purpose mouse function, the operation switch 210 may include, for example, a left-click acceptance unit, a right-click acceptance unit, and a cursor operation unit. The operation switch 210 may also include at least one button, key, and / or stick provided on the surface of the game controller 200 in addition to the left-click acceptance unit, right-click acceptance unit, and cursor operation unit. The single button, key, and / or stick may include, for example, a button associated with a letter such as an A button or a B button, a cross key for inputting up, down, left, or right directions, or a 3D stick for inputting a tilt direction and tilt amount. The operation switch 210 may also be a device that reads predetermined information, such as an NFC (Near Field Communication) reader. The predetermined condition may include successful NFC reading.
[0096] 3 is a diagram for explaining the flow of causing the vibration motor 206 to generate vibrations in the tactile region or the audible region. First, the flow of generating vibrations in the tactile region will be explained. Based on the occurrence of a vibration event, the game program 102P2 reads corresponding vibration instruction data (including parameters indicating frequency and amplitude) from the vibration file 105A and passes it to the system program 102P1 via the vibration instruction API.
[0097] The system program 102P1 transmits a vibration instruction command to the game controller 200 based on the vibration instruction data acquired from the game program 102P2. More specifically, the system program 102P encodes the acquired vibration instruction data using the encoding program En, and transmits the encoded vibration instruction data and a vibration instruction command including the encoded vibration instruction data to the game controller 200. The MCU 201 decodes the encoded vibration instruction data using the decoding program De.
[0098] Thereafter, the MCU 201 executes the vibration instruction program 2031 on the decoded vibration instruction data. The MCU 201 acquires the value of the exclusive control flag 2035 and executes processing according to the value of each flag included in the exclusive control flag 2035. When the vibration instruction program 2031 checks the value of the exclusive control flag 2035 and determines to perform vibration control based on the vibration instruction data, the MCU 201 generates control data based on the decoded vibration instruction data and stores the control data in the control data area 204B2. The MCU 201 outputs the control data stored in the control data area 204B2 to the amplifier 205. As a result, the vibration motor 206 vibrates based on the control data and functions as a vibrator that provides a tactile sensation. In this way, the vibration instruction data generated based on the vibration file 105A is encoded by the game device 100, decoded by the game controller 200, and processed to vibrate the vibration motor 206. Note that the encoding and decoding processes may not be performed.
[0099] Next, the output of the audible range by preset playback will be described with reference to Figure 3. The game program 102P2 uses the preset registration API to pass the preset PCM data PD1 and its identification information to the system program 102P1 at the preset registration timing. The preset registration timing may be, for example, at the time of loading when the game program 102P2 starts to be executed, at the start of game play, when entering a specified stage, or when a character in the virtual space moves to a specified map.
[0100] Upon receiving a preset registration request from the game program 102P2 via the preset registration API, the system program 102P1 transmits a preset registration command to the game controller 200, including the preset PCM data PD1 and identification information passed from the game program 102P2. Although not shown, the system program 102P1 of this embodiment encodes the PCM data using the PCM encoding program PE1 and transmits the encoded PCM data. The system program 102P1 may transmit the PCM data without encoding it. Upon receiving the preset registration command, the MCU 201 decodes the encoded PCM data using the PCM decoding program DP1 and stores the decoded preset PCM data PD1 together with the identification information in at least one of the preset data areas PD2 and PD3. This allows the game controller 200 to store PCM data for sound output internally in advance.
[0101] When a sound event that causes playback of preset PCM data occurs during game execution, the game program 102P2 uses a preset playback API to request the system program 102P1 to play preset PCM data that has been pre-registered in the game controller 200. When making this request, the game program 102P2 uses the preset playback API to pass to the system program 102P1 identification information Pi1 associated with the preset PCM data PD1 to be played back and playback parameters that indicate the parameters to be used during playback. The playback parameters may include at least one of the following parameters for playback of the PCM data: volume, pitch, playback speed, equalizer, panning, and echo.
[0102] The system program 102P1 receives a request from the game program 102P2 using the preset playback API and transmits a preset playback command including the passed identification information and playback parameters to the game device 100. Upon receiving the preset playback command, the MCU 201 executes the preset playback program 2032. The preset playback program 2032 identifies the preset PCM data PD1 corresponding to the received identification information Pi1 and performs playback using the received playback parameters. In other words, the preset playback program 2032 stores the identified preset PCM data PD1 in the preset playback area 204B4.
[0103] At this time, the MCU 201 accesses the exclusive control flag 2035 and updates the preset playback flag Fg1 to True. Each piece of sampling data in the identified preset PCM data PD1 is sequentially read and stored in the control data area 204B2. At this time, for example, each piece of sampling data in the identified preset PCM data PD1 is adjusted according to the value of volume value data, which is a playback parameter. For example, if the volume value is 1, the sampling data is used as control data, and if the volume value is 0.5, the sampling data multiplied by 0.5 is stored as control data. The MCU 201 outputs each piece of sampling data of the PCM data stored in the control data area 204B2 to the amplifier 205 as control data. This causes the vibration motor 206 to vibrate based on the PCM data and function as a speaker that outputs sound. In this way, by transmitting the preset PCM data to the game controller 200 in advance, the vibration control system 10 can cause the vibration motor 206 to output sound simply by transmitting the identification information Pi1 from the system program 102P1 to the game controller 200.
[0104] Next, we will explain the output in the audible range due to the above-mentioned streaming playback. When a sound event that causes the streaming PCM data SD1 to be played occurs during game execution, the game program 102P2 uses the streaming playback API to make a request to the system program 102P1 to play the streaming PCM data SD1. The request includes one or more sampling data items that are sequentially read from the streaming PCM data SD1 to be played, and the above-mentioned playback parameters (volume value, etc.).
[0105] The system program 102P1 transmits a streaming playback command to the game controller 200 in response to a request from the game program 102P2 via the streaming playback API. Although not shown, the system program 102P1 of this embodiment encodes the streaming PCM data using the PCM encoding program PE1. The system program 102P1 may proceed without encoding the streaming PCM data. The streaming playback command includes one or more pieces of sampling data and playback parameters from the encoded streaming PCM data SD1 acquired from the game device 100. Upon receiving the streaming playback command, the MCU 201 decodes the encoded streaming PCM data using the PCM decoding program DP1 and then executes the streaming playback program 2033. The streaming playback program 2033 stores the sampling data and playback parameters of the received streaming PCM data SD1 in the streaming playback area 204B5.
[0106] At this time, the MCU 201 accesses the exclusive control flag 2035 and updates the streaming playback in progress flag Fg2 to True. The sampled data of the received PCM data is stored in the control data area 204B2. At this time, for example, each sampled data of the identified preset PCM data PD1 is adjusted according to the volume value data, which is a playback parameter, and stored in the control data area 204B2. The MCU 201 outputs the control data stored in the control data area 204B2 to the amplifier 205. As a result, the vibration motor 206 vibrates using the sampled data of the PCM data as control data and functions as a speaker that outputs sound. In this way, the vibration control system 10 can cause the vibration motor 206 to output sound in real time by transmitting streaming PCM data to the game controller 200 in response to the occurrence of a sound event.
[0107] Next, the output of the audible range by the above-mentioned amplitude frequency specified playback will be described. When a sound event occurs during game execution, etc., the game program 102P2 reads vibration instruction data (including parameters indicating frequency and amplitude) from the corresponding sound file 105B and transfers it to the system program 102P1 using the vibration instruction API. The system program 102P1 transmits a vibration instruction command to the game controller 200 based on the vibration instruction data being transferred using the vibration instruction API. When vibration instruction data is used, the processing is the same whether the frequency of the tactile range is specified (by the vibration file 105A) or the frequency of the audible range is specified (by the sound file 105B), so the description will not be repeated.
[0108] Next, the sound output by the above-mentioned autonomous reproduction will be described. For example, when power is supplied to the game controller 200, the MCU 201 continues to execute the autonomous reproduction program 2034. While the autonomous reproduction program 2034 is being executed, the MCU 201 determines whether a predetermined condition is met. The predetermined condition may be, for example, that the operation switch 210 has been operated, that the detection values of the acceleration sensor 208 and the gyro sensor 209 have fallen within a predetermined range, that a predetermined mouse operation has been performed, or a combination of these.
[0109] When a predetermined condition is met, the MCU 201 reads out the autonomous playback data corresponding to the met condition. The autonomous playback data may be, for example, PCM data and may be stored in at least one of the preset data area PD2 and the preset data area PD3. Alternatively, the autonomous playback data may be vibration instruction data (data specifying amplitude and frequency) and may be stored in at least one of the non-volatile memory 203 and the volatile memory 204. FIG. 3 shows a case where the autonomous playback data is stored as PCM data in at least one of the preset data area PD2 and the preset data area PD3. The MCU 201 accesses the preset data area PD2 or the preset data area PD3 to obtain the PCM data, which is the autonomous playback data, and stores it in the autonomous playback area 204B6, and sequentially reads out the sampled data to use as control data. In this way, during autonomous playback, the vibration motor 206 outputs sound based on the operation on the game controller 200, regardless of whether or not there is an instruction from the game device 100.
[0110] The following describes the processing executed by each of the game program 102P2, the system program 102P1, and the MCU 201 using flowcharts.
[0111] [D. Preset registration process] 4 is a flowchart showing the processing procedure for making a preset registration request in game program 102P2. The processing of the flowchart shown in FIG. 4 is realized by processor 101 executing game program 102P2, and begins when game program 102P2 is started.
[0112] The processor 101 executing the game program 102P2 (hereinafter sometimes referred to as "the game program 102P2") determines whether it is time to register a preset (step S100). If it is not time to register a preset (NO in step S100), the game program 102P2 repeats the processing of step S100. If it is time to register a preset (YES in step S100), the game program 102P2 uses the preset registration API to make a request to the system program 102P1 using the preset registration API (step S101). That is, the game program 102P2 passes the preset PCM data PD1 to be registered and the identification information Pi1 corresponding to the preset PCM data PD1 to the system program 102P1 using the preset registration API (step S101), and returns the processing to step S100.
[0113] 5 is a flowchart showing the processing procedure for issuing a preset registration command in system program 102P1. The processing of the flowchart shown in FIG. 5 is realized by processor 101 executing preset registration command program A1 included in system program 102P1, and begins when power is supplied to game device 100.
[0114] The processor 101 executing the preset registration instruction program A1 of the system program 102P1 (hereinafter sometimes referred to as "the system program 102P1") determines whether the game program 102P2 has made a preset registration request via the preset registration API (step S201). If the game program 102P2 has not made a preset registration request (NO in step S201), the system program 102P1 repeats the processing of step S201. If the game program 102P2 has made a preset registration request (YES in step S201), the system program 102P1 acquires the preset PCM data PD1 to be registered, and the identification information Pi1 and playback parameters corresponding to the preset PCM data PD1 (step S202). The system program 102P1 transmits a preset registration command including the acquired preset PCM data, identification information, and playback parameters to the game controller 200 (step S203), and returns the processing to step S201. As described above, in step S203, system program 102P1 may encode the PCM data and transmit the encoded PCM data.
[0115] Fig. 6 is a flowchart showing the procedure for preset registration in the MCU program 203P. The flowchart shown in Fig. 6 is implemented by the MCU 201 executing the preset registration program 2030. The MCU 201 executing the preset registration program 2030 of the MCU program 203P (hereinafter sometimes referred to as "the MCU program 203P") determines whether or not a preset registration command has been received (step S251).
[0116] When the MCU 201 of the game controller 200 receives a preset registration command (YES in step S251), it stores the preset PCM data and identification information included in the command in at least one of the preset data areas PD2 and PD3 (step S252). If the PCM data received in step S251 is encoded, the MCU 201 decodes the encoded preset PCM data. When the MCU 201 of the game controller 200 does not receive a preset registration command (NO in step S251), it repeats the process of step S251. Thereby, when a preset playback command specifying the identification information Pi1 is transmitted from the game device 100, the MCU 201 of the game controller 200 becomes able to output sound based on the pre-registered preset PCM data.
[0117] [E. Various playback requests by game program 102P2] 7 is a flowchart showing various processing steps performed by the game program 102P2 to control the vibration motor 206 in response to an event. The processor 101 executing the game program 102P2 (hereinafter simply referred to as "the game program 102P2") acquires operation data from the game controller 200 (step S301). The game program 102P2 operates a game object based on the acquired operation data (step S302). The game object is, for example, an object operated by a user in a virtual space within a game, and may be a player character, a car in a car racing game, or the like.
[0118] The game program 102P2 determines whether a vibration event has occurred during the game based on the movement of a game object or due to an in-game event unrelated to the movement of a game object (step S303). If a vibration event has occurred during the game (YES in step S303), the game program 102P2 makes a request to the system program 102P1 using the vibration instruction API (step S304). That is, the game program 102P2 transfers the vibration instruction data stored in the vibration file 105A corresponding to the vibration event that has occurred to the system program 102P1 via the vibration instruction API. At this time, the game program 102P2 may generate vibration instruction data based on the vibration file 105A and transfer the generated vibration instruction data to the system program 102P1.
[0119] If a vibration event has not occurred (NO in step S303), the game program 102P2 determines whether a sound event has occurred during the game based on the movement of a game object or due to an in-game event unrelated to the movement of a game object (step S305).
[0120] When a sound event occurs (YES in step S305), the game program 102P2 determines whether the sound event is associated with preset playback, streaming playback, or amplitude / frequency-specified playback (step S306). Specifically, depending on whether the code of the game program 102P2 executed when the sound event occurs is code using a preset playback API, code using a streaming playback API, or code using a vibration instruction API, one of a request for a preset playback instruction, a request for a streaming playback instruction, or a request for a playback instruction with specified amplitude and frequency is executed.
[0121] If the code corresponding to the generated sound event is a code using the vibration instruction API, the game program 102P2 makes a request to the system program 102P1 using the vibration instruction API (step S307). That is, the game program 102P2 delivers the corresponding vibration instruction data (including frequency and amplitude parameters, specifying a frequency in the audible range) in the sound file 105B to the system program 102P1. The process of step S307 is the same as the process of step S304 (only the specified frequency is different).
[0122] If the code corresponding to the sound event that has occurred is a code using the streaming playback API, the game program 102P2 makes a request to the system program 102P1 using the streaming playback API (step S308). In step S308, the game program 102P2 uses the streaming playback API to read the first 20 ms of data included in the streaming PCM data SD1 that corresponds to the sound event that has occurred, and passes the data to the system program 102P1, as well as passing playback parameters.
[0123] If the code corresponding to the generated sound event is a code using the preset playback API, the game program 102P2 makes a request to the system program 102P1 using the preset playback API (step S309). That is, the game program 102P2 passes the identification information Pi1 and playback parameters to the system program 102P1.
[0124] After processing steps S307, S308, and S309, the game program 102P2 determines whether there is any streaming PCM data that has not been transmitted (step S310). That is, the game program 102P2 determines whether all of the sampling data included in the streaming PCM data SD1 that started to be reproduced in step S308 has been handed over to the system program 102P1. If all of the sampling data included in the streaming PCM data SD1 to be reproduced has not been handed over, the game program 102P2 determines that the streaming PCM data is in the middle of being reproduced, that is, that there is any streaming PCM data that has not been transmitted.
[0125] The game program 102P2 then transmits the first 20 ms of the untransmitted streaming PCM data along with playback parameters to request streaming playback (step S311). Thus, the game program 102P2 does not transmit all of the streaming PCM data SD1 at once, but delivers one or more pieces of sampling data. In other words, the streaming PCM data SD1 is divided into 20 ms worth of data, which are then delivered sequentially to the system program 102P1. The game program 102P2 then executes other processes for progressing the game (step S312), and returns the process to step S301.
[0126] In this way, in the vibration control system 10 of this embodiment, the game program 102P2 can issue a control request for the vibration motor 206 using various APIs in response to a sound event.
[0127] [F. Preset playback processing by system program and MCU program] Fig. 8 is a flowchart showing the processing procedure for issuing a preset playback command in the system program 102P1. The processing of the flowchart shown in Fig. 8 is realized by the processor 101 executing the preset playback command program A2 included in the system program 102P1. The processor 101 executing the preset playback command program A2 of the system program 102P1 (hereinafter sometimes referred to as "the system program 102P1") determines whether or not it has received the preset playback request shown in step S309 of Fig. 7 (step S401). If it has not received the preset playback request (NO in step S401), it repeats the processing of step S401.
[0128] When a preset playback request is received (YES in step S401), the system program 102P1 acquires the identification information Pi1 and playback parameters from the game program 102P2 (step S402). The system program 102P1 transmits a preset playback command including the acquired identification information Pi1 and playback parameters to the game controller 200 (step S403), and returns the process to step S401.
[0129] Fig. 9 is a flowchart showing the procedure for preset playback by the MCU program 203 P. The processing of the flowchart shown in Fig. 9 is realized by the MCU 201 executing the MCU program 203 P, and is started when, for example, power is supplied to the game controller 200 or the game controller 200 is connected to the game device 100.
[0130] The MCU 201 executing the MCU program 203P (hereinafter sometimes referred to as "the MCU program 203P") determines whether or not a preset playback command has been received (step S501). If the preset playback command has not been received (NO in step S501), the MCU program 203P repeats the process of step S501. If the preset playback command has been received (YES in step S501), the MCU program 203P updates the preset playback in progress flag Fg1 in the exclusive control flag 2035 to True (step S502).
[0131] The MCU program 203P reads out the preset PCM data PD1 corresponding to the identification information Pi1 included in the received preset playback command from the preset data areas PD2 and PD3, and stores it in the preset playback area 204B4 (step S503).
[0132] The MCU program 203P sequentially reads out the preset PCM data PD1 in the preset playback area 204B4, starting from the first sampling data, adjusts it according to the received playback parameters, and uses each sampling data (the sampling rate is 0.125 ms, i.e., the sampling rate is 8 kHz) as control data (step S505).
[0133] The MCU 201 determines whether the autonomous playback in progress flag Fg3 is True (step S506). If the autonomous playback in progress flag Fg3 is True (YES in step S506), the MCU program 203P reduces (for example, multiplies by 0.7) the voltage indicated by the control data set in S505. This prevents the vibration motor 206 or the amplifier 205 from exceeding a predetermined maximum voltage even when autonomous playback and preset playback occur simultaneously. For example, 70% of the maximum voltage is allocated to the preset playback process, and 30% of the maximum voltage is allocated to the autonomous playback process. Note that the maximum voltages allocated to the preset playback process and the autonomous playback process are not limited to 7:3, and may be 8:2, 9:1, or 6:4.
[0134] If the autonomous playback flag Fg3 is False (NO in step S506), or after executing the process of step S507, the MCU program 203P writes one sampling data of the PCM data to the control data area 204B2 (step S508). The 0.125 ms worth of control data written to the control data area 204B2 is transmitted to the amplifier 205 by DMA.
[0135] The MCU 201 determines whether all sampling data included in the preset PCM data PD1 in the preset playback area 204B4 has been written as control data to the control data area 204B2 (step S509). If writing of all data has not been completed (NO in step S509), the MCU 201 returns the process to step S505. If writing of all data has been completed (YES in step S509), the MCU 201 deletes the preset PCM data PD1 in the preset playback area 204B4, updates the preset playback in progress flag Fg1 to False (step S510), and returns the process to step S501.
[0136] In this way, the MCU 201 can play preset PCM data simply by receiving only the identification information Pi1 from the system program 102P1. When multiple game controllers 200 are connected to the game device 100, transmitting the PCM data itself to each game controller 200 each time a sound event occurs may result in a delay in sound generation. In this embodiment, only the identification information Pi1 is transmitted to each game controller 200 when a sound event occurs, and the PCM data pre-registered in each game controller 200 is played, thereby preventing delays in sound generation in each game controller 200. Furthermore, since the PCM data itself is not communicated between the game controller 200 and the game device 100 when a sound event occurs, sound can be output without data loss, compared to transmitting PCM data in real time. Therefore, preset playback may be used for sounds that need to be reliably output.
[0137] [G. Streaming playback processing by system program and MCU program] 10 is a flowchart showing the processing procedure for issuing a streaming playback command in the system program 102P1. The processing of the flowchart shown in FIG. 10 is realized by the processor 101 executing the streaming playback instruction program A3 included in the system program 102P1. The processor 101 executing the streaming playback instruction program A3 of the system program 102P1 (hereinafter sometimes referred to as "the system program 102P1") determines whether or not a request using the streaming playback API shown in steps S308 and S311 of FIG. 7 has been received (step S601). If a request using the streaming playback API has not been received (NO in step S601), the processing of step S601 is repeated.
[0138] When a request using the streaming playback API is received (YES in step S601), the system program 102P1 acquires 20 ms of streaming PCM data from the game program 102P2 (step S602). The system program 102P1 transmits a streaming playback command including the acquired 20 ms of streaming PCM data to the game controller 200 (step S603), and returns the process to step S601. That is, the processor 101 transmits multiple sampling data of the streaming PCM data SD1 to the game controller 200 at the same timing. As described above, the system program 102P1 may encode the PCM data and transmit the encoded PCM data in step S603.
[0139] 11 is a flowchart showing the processing procedure for streaming playback in the MCU program 203P. The MCU 201 executing the MCU program 203P (hereinafter sometimes referred to as "the MCU program 203P") determines whether a streaming playback command has been received (step S701). If the streaming playback command has not been received (NO in step S701), the MCU program 203P repeats the processing of step S701. If the streaming playback command has been received (YES in step S701), the MCU program 203P determines whether the preset playback flag Fg1 is True (step S701A). If the preset playback flag Fg1 is True (YES in step S701A), the MCU program 203P proceeds to step S710. As a result, the streaming playback processing and the preset playback processing are exclusively controlled, and the preset playback processing has priority over the streaming playback processing.
[0140] By replacing the preset playback flag Fg1 with the streaming playback flag Fg2, the preset PCM data PD1 with the streaming PCM data SD1, and the preset playback area 204B4 with the streaming playback area 204B5, steps S702 to S710 in Fig. 11 correspond to steps S502 to S510 in Fig. 9. Therefore, the description of steps S702 to S710 in Fig. 11 will not be repeated.
[0141] In this way, the MCU 201 can execute sound output processing in real time based on the occurrence of a sound event by sequentially acquiring 20 ms worth of streaming PCM data SD1. This eliminates the need to transmit PCM data in advance, such as during loading of the game program 102P2.
[0142] [H. Encoding and Decoding Processes When Vibration Instruction Data is Used] The following describes the generation of vibrations based on sound file 105B. Fig. 12 is a diagram for explaining vibration instruction data based on sound file 105B. Fig. 12 shows, from the left, sound file 105B, vibration instruction data 114 obtained by encoding the sound file, and decoded vibration instruction data 110.
[0143] Sound file 105B stores vibration instruction data (data specifying parameters for vibration frequency and amplitude) to be generated for each event. Fig. 12 illustrates an example of sound file 105B in which melody A is output when a specific sound event occurs. Note that the vibration instruction data does not need to be stored in advance in a file format, and may be generated in real time.
[0144] Melody A is a sound related to music, such as background music played during the game or a sound representing the sound of an instrument placed in the virtual game space. In other words, a melody is a collection of multiple sounds output in succession, and is a sound that expresses music. Melody A combines multiple notes from the scale included in the 12-note equal temperament system. Specifically, melody A is composed of A0 (A0) output for 5 ms, A#0 (A#0) output for 5 ms, and A1 (A1) output for 5 ms. Note that melody A may be a combination of more notes, or may be a single note. The sound generated by a sound event may include sounds with frequencies other than those of the notes on the scale. Furthermore, it may be a sound effect rather than a melody.
[0145] The frequency of each note is predetermined. The frequency of A0 is "27.500," and in the example of FIG. 12, an amplitude of "1.0" is specified for the frequency of A0. When it is desired to output the sound of A0, a frequency of 27.500 Hz is specified, and a waveform signal of 27.500 Hz, with a peak voltage equal to the maximum allowable voltage, is output to vibration motor 206. However, sound file 105B may specify the note itself rather than the frequency.
[0146] Next, the encoding of the frequency will be described. The processor 101 generates the frequency included in the encoded vibration instruction data using the following frequency encoding formula:
[0147] (Frequency encoding formula) Encoded frequency = 96 × log2 (indicated frequency / 110) + 333 (Formula A) Since the frequency of A0 is 27.500 Hz, when the above frequency encoding formula is used, the encoding frequency becomes 141. In this embodiment, the encoding frequency is a non-negative integer. Note that the value represented as "96" in the frequency encoding formula may be referred to as the "first constant." The value represented as "110" in the encoding formula may be referred to as the "second constant." The value represented as "333" in the encoding formula may be referred to as the "third constant." The frequency encoding formula performs encoding based on each note on the 12-note equal temperament scale.
[0148] If a frequency of 29.135 Hz is specified, the frequency coding formula will calculate 149, which indicates the note "A#0." If a frequency of 55.000 Hz is specified, the frequency coding formula will calculate 237, which indicates the note "A1."
[0149] Next, the encoding of amplitude will be described. The processor 101 encodes the amplitude included in the vibration instruction data using the following amplitude encoding formula. The amplitude is linearly encoded in the encoding process. Linear encoding means that the encoded value is proportional to the amplitude value. In this embodiment, a value between 0 and 1.0 is encoded into values divided into 1024 equal parts in proportion to the amplitude value.
[0150] (Amplitude coding formula) Coded amplitude = amplitude × 1023 (Equation B) In the example of FIG. 12, all amplitudes instructed by the vibration instruction data are 1.0, so if the above amplitude encoding formula is used, the encoded amplitude will be 1023.
[0151] The processor 101 generates encoded vibration instruction data 114 including an encoded frequency and an encoded amplitude. Then, the encoded vibration instruction data 114 including the encoded frequency and the encoded amplitude is transmitted from the game device 100 to the game controller 200. The processor 202 of the game controller 200 decodes the encoded vibration instruction data 114 using a frequency decoding program De1. The processor 202 decodes the encoded frequency using the following frequency decoding formula. Note that the frequency decoding formula is a modified formula of the frequency encoding formula and is substantially the same formula.
[0152] (Frequency decoding formula) Decoding frequency = 110 x 2 (符号化周波数-333) / 96 ...(Formula C) The value represented as "96" in the frequency decoding formula corresponds to "96" in the frequency encoding formula. Similarly, the values represented as "110" and "333" in the frequency decoding formula correspond to "110" and "333" respectively in the frequency encoding formula.
[0153] When the encoding frequency is 141, the decoding frequency is calculated using the decoding formula to be 27.500 Hz. When the encoding frequency is 149 or 237, the decoding frequencies are calculated using the decoding formula to be 29.135 Hz or 55.000 Hz, respectively.
[0154] 12, the frequency values shown before and after encoding do not change, and the vibration instruction data is reproduced at the frequencies of "A0", "A#0", and "A1". In this way, in the vibration control system 10 of this embodiment, when one of the notes of the 12-tone equal temperament scale is instructed, the frequency of each note of the 12-tone equal temperament scale can be maintained and output from the vibration motor 206 without degrading the data.
[0155] Next, amplitude decoding will be described. The processor 202 decodes the coded amplitude using the following amplitude decoding formula:
[0156] (Amplitude decoding formula) Decoded amplitude = Encoded amplitude / 1023 (Equation D) The processor 202 rounds off the value calculated using the amplitude decoding formula above to the nearest integer, resulting in the decoded amplitude being the same value as before encoding, as shown in FIG.
[0157] FIG. 13 is a table showing the relationship between the frequency of a scale in 12-tone equal temperament and the frequency after encoding. FIG. 13 shows some of the scales in 12-tone equal temperament and the frequencies corresponding to the scales. 12-tone equal temperament is a scale that expresses the interval of one octave by dividing it into 12 equal parts. For example, the piano scale is made up of 88 notes including "A0", "A#0" to "B7", and "C8". Frequencies are determined in advance for all 88 notes. Each note included in 12-tone equal temperament has a first term of 27.500 Hz and a common ratio of 2 (1 / 12) This can be expressed by a geometric progression:
[0158] The lowest note among the 88 notes is "A0" and its frequency is 27.500Hz. The next lowest note is "A#0" and its frequency is approximately 29.135Hz. The frequency of "A#0", which is one note higher than "A0", has a common ratio (2 (1 / 12) ) is the value obtained by multiplying the frequency of the 88 notes by the number of decimal places. The highest note among the 88 notes is "C8," and its frequency is approximately 4186.009 Hz. Some of the other notes included in the 12-note equal temperament scale are also shown in FIG. 13. In this embodiment, the frequency of the scale is indicated as a value rounded to the fourth decimal place, but in some cases, a frequency value including a value having four decimal places or less may be indicated.
[0159] Furthermore, as shown in Figure 13, the frequency of "A1", which is one octave (12 notes) higher than "A0", is twice the frequency of "A0". For other notes included in the 12-note equal temperament system, the frequency also doubles when the note is raised by one octave.
[0160] common ratio 2 (1 / 12)The "12" in the denominator of the exponent part of the common ratio represents the number of notes contained in one octave. By changing the denominator in the exponent part of the common ratio, other equal temperaments such as 5-, 7-, 15-, and 17-note equal temperaments can be expressed.
[0161] As described above, in this embodiment, the encoding frequency is decoded to obtain the decoding frequency using the following frequency decoding formula: (Frequency decoding formula) Decoding frequency = 110 x 2 (符号化周波数-333) / 96 In this embodiment, the encoding frequency can take a value from 0 to 1023. Therefore, the minimum value of the decoding frequency is 110 times 2. (-333 / 96) The maximum value of the decoding frequency is 110 multiplied by 2. ((1023-333) / 96) That is, when the encoding frequency shown in Figure 13 is 1023, it is "16034.140Hz". The common ratio of the sequence that can be expressed by the decoding frequency is 2 (1 / 96) is.
[0162] The number 110 in the frequency decoding formula is a multiple of 27.5, the first term of the 12-note equal temperament system. The number 96 in the frequency decoding formula is a multiple of 12, representing the number of notes in an octave. The minimum decoded frequency, 9.936 Hz, is greater than the frequency of the lowest note, A0, in the 12-note equal temperament system (27.500 Hz), and the maximum decoded frequency, 16034.140 Hz, is less than the frequency of the highest note, C8, in the 12-note equal temperament system (4186.009 Hz). Therefore, the above frequency decoding formula represents a sequence that includes all 88 notes in the 12-note equal temperament system, and includes frequencies greater than or equal to 88 notes. The decoded frequency can represent all 88 notes in the 12-note equal temperament system.
[0163] Therefore, as explained in Fig. 13, the frequencies corresponding to "A0", "A#0", and "A1" in the 12-note equal temperament scale are output while maintaining the frequencies of "A0", "A#0", and "A1", respectively, even during decoding. By using the above frequency encoding and decoding formulas, encoding and decoding can be performed while maintaining the frequencies of all of the 88 notes included in the 12-note equal temperament scale.
[0164] In this way, in this embodiment, the vibration instruction data is encoded and decoded taking into consideration the frequency of the sound, but it may be encoded and decoded without taking into consideration the frequency of the sound.
[0165] Fig. 14 is a diagram for explaining vibration instruction data based on the vibration file 105A. Fig. 14 explains that the vibration motor 206 is controlled based on the vibration file 105A in addition to the sound file 105B. Fig. 14 illustrates the vibration file 105A, the sound file 105B, the encoded vibration instruction data 114, and the decoded vibration instruction data 110. The contents of the vibration file 105A and the sound file 105B in Fig. 14 will be explained below.
[0166] Like the sound file 105B, the vibration file 105A also includes an event name, an event occurrence condition, and frequency and amplitude as data representing vibration content. The data including the first to third vibration events is an example of the vibration file 105A. The data including the first to third sound events is an example of the sound file 105B in FIG. 14.
[0167] 14 shows examples of vibration file 105A and sound file 105B when game program 102P2 is an adventure game. Processor 101 executing game program 102P2 generates vibration instruction data based on frequency and amplitude parameters representing vibration content in vibration file 105A and sound file 105B. For example, vibration instruction data (100, 1.0) is generated in response to the first vibration event.
[0168] The event name "first vibration event" is associated with object 1 "sword" and object 2 "sword" as event occurrence conditions. The first vibration event is an event in which vibration occurs when an object representing a sword collides with another object representing a sword in virtual space. The event name "first vibration event" is associated with a frequency of "100" and an amplitude of "1.0". In other words, when the first vibration event occurs, a waveform signal with a frequency of 100 Hz, whose peak voltage is the maximum voltage allowable by vibration motor 206 at a frequency of 100 Hz, is output to vibration motor 206.
[0169] The second vibration event is a clash between a sword and a shield in virtual space. In the second vibration event, a waveform signal with a frequency of 50 Hz is output to vibration motor 206, the peak voltage of which is 80% of the maximum voltage value allowable by vibration motor 206 at a frequency of 50 Hz.
[0170] The third vibration event is a collision between a sword and a rock in virtual space. In the third vibration event, a waveform signal with a frequency of 50 Hz is output to vibration motor 206, the peak voltage of which is 70% of the maximum allowable voltage value at a frequency of 50 Hz.
[0171] The event name "first sound event" is associated with object 1 "sword" and object 2 "sword." The first sound event is an event that generates a sound to represent the sound of two objects representing swords colliding in the virtual space of the game. The event name "first sound event" is associated with a frequency of "2000" and an amplitude of "1.0." In the first sound event, a waveform signal with a frequency of 2000 Hz, whose peak voltage is the maximum voltage value that vibration motor 206 can tolerate at a frequency of 2000 Hz, is output to vibration motor 206.
[0172] The second sound event is a clash between a sword and a shield in virtual space. In the second sound event, vibration motor 206 outputs a waveform signal with a frequency of 1000 Hz, whose peak voltage is 80% of the maximum allowable voltage value at a frequency of 1000 Hz, to vibration motor 206. The third sound event is a clash between a sword and a rock in virtual space. In the third sound event, vibration motor 206 outputs a waveform signal with a frequency of 700 Hz, whose peak voltage is 70% of the maximum allowable voltage value at a frequency of 700 Hz, to vibration motor 206.
[0173] In this manner, in this embodiment, two sets of vibration instruction data are generated to output vibration and sound, respectively, when objects collide in the virtual space. Specifically, when two swords collide in the virtual space, vibration instruction data based on a first vibration event and vibration instruction data based on a first sound event are generated. This allows the game controller 200 to output both vibration and sound at the same time to represent the collision of objects in the virtual space.
[0174] Next, the encoding of the frequency in Fig. 14 will be described. Because the frequency specified by the vibration instruction data based on the first vibration event is 100 Hz, using the above frequency encoding formula (Formula A), the encoded frequency is 319.7996617, and the encoded value is an integer value, which is 319. Next, the processor 101 executes an approximate value determination process to determine whether "319" or "320" is appropriate as the encoding frequency. The approximate value determination process will be described later. As a result of the approximate value determination process, the encoding frequency based on the first vibration event is 320, as shown in Fig. 14.
[0175] For the second and third vibration events, which specify a frequency of 50 Hz, the frequency encoding formula (Formula A) calculates 223.7996617, resulting in an encoded value of 223. As a result of the approximate value determination process, the encoded frequency is 224, as shown in Figure 14. Similarly, Figure 14 also shows the encoded frequencies for frequencies of 2000 Hz, 1000 Hz, and 700 Hz.
[0176] Since the amplitude specified by the vibration instruction data based on the first vibration event is 1.0, the encoded amplitude is 1023 when using the amplitude encoding formula (Formula C) described above. In the case of the second vibration event and the second sound event, which specify an amplitude of 0.8, the amplitude encoding formula (Formula C) calculates 818.4. In the amplitude, decimal values are rounded off. In Figure 14, the value "818" rounded to an integer is shown as the encoded frequency. For amplitude encoding, other data examples are omitted.
[0177] When the encoding frequency is 320, the decoding frequency calculated using the decoding formula (Formula B) is 100.1447546 Hz. The processor 202 sets the number of significant digits of the floating point (for example, six decimal places). That is, the decoding frequency based on the first vibration event is 100.145 Hz. FIG. 14 also shows the decoding frequencies calculated using the frequency decoding formula (Formula B) for events other than the first vibration event. The processor 202 rounds off the decimal points of the value calculated using the amplitude decoding formula (Formula D). As a result, as shown in FIG. 14, the decoded amplitude is the same value as before encoding.
[0178] 15 is a flowchart showing the procedure for encoding vibration instruction data executed by the game device 100. The system program 102P1 determines whether or not a request using the vibration instruction API shown in steps S304 and S307 of FIG. 7 has been received (step S800). If a request using the vibration instruction API has not been received from the game program 102P2 (NO in step S800), the process of step S800 is repeated.
[0179] The system program 102P1 acquires vibration instruction data (including frequency and amplitude parameters) from the game program 102P2 via the vibration instruction API (step S801). In step S801, the specified amplitude parameters are adjusted taking into account the maximum input voltage at the specified frequency (the specified amplitude is reduced at frequencies that are prone to vibration, depending on the ease of vibration at each frequency). The system program then executes frequency clamping processing (step S802). The clamping processing is an exceptional process for when the vibration instruction data specifies a frequency that exceeds the range of frequencies that can be expressed by the decoding formula (formula C) described above.
[0180] As described above, the minimum value of the decoded frequency is "9.936 Hz" and the maximum value of the decoded frequency is "16034.140 Hz." Therefore, in step S801, if the processor 101 receives a frequency smaller than "9.936 Hz" from the game program 102P2, it rewrites the frequency included in the vibration instruction data to "9.936 Hz." Furthermore, in step S801, if the processor 101 receives a frequency larger than "16034.140 Hz" from the game program 102P2, it rewrites the frequency included in the vibration instruction data to "16034.140 Hz."
[0181] Next, the system program encodes the frequency included in the vibration instruction data based on the above frequency encoding formula (Formula A) (step S803). That is, the encoding frequency is calculated. Next, the system program performs fractional processing to round down the decimal points of the encoding frequency calculated in step S803 (step S804).
[0182] The system program decodes the encoding frequency calculated in step S804 and the value obtained by adding 1 to the encoding frequency using the above-mentioned decoding formula (Formula B) (step S805). Furthermore, the system program determines whether the frequency included in the vibration instruction data acquired in step S801 is closer to the decoding frequency obtained by decoding the encoding frequency calculated in step S804 or the decoding frequency obtained by decoding the encoding frequency to which 1 has been added in step S805 (step S806). Note that in step S805, if a table of frequency values and encoding values is available, it is not necessary to calculate the decoded value each time.
[0183] If the decoded frequency obtained by decoding the encoding frequency incremented by 1 in step S805 is closer to the frequency included in the vibration instruction data acquired in step S801 (YES in step S806), the system program updates the encoding frequency to the value of the encoding frequency incremented by 1 in step S805 (step S807). If the decoded frequency obtained by decoding the encoding frequency calculated in step S804 is closer to the frequency included in the vibration instruction data acquired in step S801 (NO in step S806), the system program sets the encoding frequency calculated in step S804 as the encoding frequency. The process of calculating the frequency fraction shown in steps S804 to S807 corresponds to the above-mentioned "approximate value identification process."
[0184] The system program determines whether the sum of the amplitudes included in the vibration instruction data instructing vibration at the same timing exceeds 1 (step S808). The vibration instruction data instructing vibration at the same timing is, for example, the vibration instruction data based on the first vibration event and the vibration instruction data based on the first sound event described in FIG. 14. Note that the start and end times of the vibration do not have to be the same, as long as they partially overlap.
[0185] The system program updates the amplitude of each vibration instruction data so as not to vibrate at the same timing with an amplitude exceeding 1. Specifically, the sum of the instruction amplitude of the first vibration event and the instruction amplitude of the first sound event is "2.0", which exceeds 1 (YES in step S808). In this case, the processor 101 performs an amplitude update process (step S809).
[0186] The amplitude update process is a process of recalculating the command amplitudes so that the total value of the command amplitudes becomes "1.0" while maintaining the ratio between the command amplitude of the first vibration event and the command amplitude of the first sound event. Because the ratio between the command amplitude of the first vibration event and the command amplitude of the first sound event is 1:1, the command amplitude of the first vibration event and the command amplitude of the first sound event are updated to "0.5" and "0.5", respectively.
[0187] Next, the system program encodes the amplitude included in the updated vibration instruction data based on the above amplitude encoding formula (Formula B) (step S810). If the sum of the instruction amplitudes does not exceed 1 (NO in step S808), the processor 101 does not perform the amplitude update process, but encodes the amplitude included in the vibration instruction data based on the above amplitude encoding formula (Formula B) (step S810). That is, the encoded amplitude is calculated. The processor 101 performs fractional rounding on the encoded amplitude by rounding off the decimal point (step S811). Note that, in encoding the amplitude, as in the frequency encoding process shown in steps S805 to S807, a decoding process may be performed on two values: the encoded amplitude and a value obtained by adding 1 to the encoded amplitude, and a value close to the original amplitude may be adopted.
[0188] The system program passes the encoded vibration instruction data including the encoded frequency and encoded amplitude to the game controller 200 (step S812), and returns the process to step S800.
[0189] 16 is a flowchart showing the procedure for decoding encoded vibration instruction data executed by the game controller 200. The MCU program determines whether or not encoded vibration instruction data has been received (step S900). If encoded vibration instruction data has not been received (NO in step S900), the MCU program repeats the process of step S900. If encoded vibration instruction data has been received (YES in step S900), the MCU program acquires the encoded vibration instruction data (step S901). The processor 202 decodes the encoded frequency based on the above frequency decoding formula (Formula C) (step S902). That is, the decoded frequency is calculated. The decoded frequency may be truncated or rounded to the nearest significant digit.
[0190] The MCU program decodes the coded amplitude based on the amplitude decoding formula (Formula D) (step S903). That is, the decoded amplitude is calculated. The MCU program stores the decoded vibration instruction data in the vibration instruction data area 204B1 based on the decoding frequency and the decoded amplitude (step S904).
[0191] In this way, in this embodiment, by using the above frequency encoding and decoding formulas, it is possible to perform encoding processing that takes sound into consideration while reducing the amount of communication between the game device 100 and the game controller 200.
[0192] Below, we will explain an example in which some constants are changed from the above encoding formula. In the frequency encoding formula and decoding formula, the first constant only needs to be a multiple of the number of notes contained in one scale. In equal temperament, it is possible to calculate the frequency ratio of a scale from the number of notes contained in one scale. If the temperament to be represented is 12-note equal temperament, the first constant only needs to be a multiple of 12. If the temperament to be represented is 7-note equal temperament, the first constant only needs to be a multiple of 7. Therefore, by adjusting the first constant, it is possible to represent any of the following equal temperaments: 5-note equal temperament, 7-note equal temperament, 12-note equal temperament, 15-note equal temperament, 17-note equal temperament, 19-note equal temperament, 22-note equal temperament, 31-note equal temperament, 34-note equal temperament, 41-note equal temperament, 53-note equal temperament, and 72-note equal temperament.
[0193] In the frequency encoding and decoding formulas, the second constant may be the frequency of any note in the equal temperament system, or may be a value obtained by multiplying the frequency of any note in the equal temperament system by 21 / first constant or 2-1 / first constant a predetermined number of times. That is, the second constant is 2N / first constant, where N is an integer. In this way, the decoded frequency includes the frequency of each note in the equal temperament system. The second constant may also be a multiple of the lowest note (27.500 Hz) included in the equal temperament system. For example, the second constant may be a value such as 55, 82.5, 110, 137.5, or 220.
[0194] The third constant shifts the range of frequencies that can be represented in the encoding formula (Formula A), and can be determined according to the lower and upper limits of frequencies that are desired to be representable.
[0195] [I. Processing of amplitude frequency specification playback by MCU (processing when vibration instruction data is used)] The following describes how control data is generated in step 904 using the decoded vibration instruction data stored in the vibration instruction data area 204B1. FIG. 17 is a flowchart showing the processing steps for generating control data based on vibration instruction data, executed by the game controller 200. In amplitude frequency specified playback, the control data is generated by the processor 202 based on the decoded vibration instruction data stored in the vibration instruction data area 204B1. The control data is typically data indicating a voltage value for driving the vibration motor 206, and is data indicating the voltage value at each instant of a waveform with a specified frequency and amplitude. In other words, the data indicating the voltage value at each instant is an instantaneous value. Hereinafter, the control data is output at a predetermined interval, and this interval is referred to as a "control cycle."
[0196] The MCU 201 generates, from one vibration instruction data, a number of control data obtained by dividing the vibration instruction cycle (the cycle of instructions by the vibration instruction data) by the control cycle. In this embodiment, the vibration instruction cycle has a period of 5 ms and the control cycle is 0.125 ms, so the processor 202 generates 40 pieces of control data from one vibration instruction data. A reference waveform is determined for each control cycle (0.125 ms) based on the frequency value and amplitude value of the decoded vibration instruction data 110. The reference waveform is a waveform determined for each control cycle and is a waveform for specifying a voltage value to be output as control data. The processor 202 determines a voltage value to be output as control data based on the reference waveform.
[0197] The processing of the flowchart shown in Fig. 17 is realized by the execution of the MCU program 203P by the processor 202. The processing of the flowchart shown in Fig. 17 is started, for example, when power is supplied to the game controller 200.
[0198] The volatile memory 204 has areas for storing the decoded vibration instruction data, namely, a current amplitude data area 204V1, a current frequency data area 204V2, and a current phase data area 204V3, which are areas for storing the current amplitude data, current frequency data, and current phase data, respectively.
[0199] In step S1001, the processor 202 copies the current amplitude data in the current amplitude data area 204V1 and the current frequency data in the current frequency data area 204V2 to separate areas of the volatile memory 204. Specifically, the current amplitude data and the current frequency data are stored as previous amplitude data and previous frequency data in the previous amplitude data area 204V4 and the previous frequency data area 204V5, respectively (step S1001). When the processor 202 executes the flowchart shown in Fig. 17 for the first time after starting up the game controller 200, as initialization processing, the processor 202 stores "0V" as the values of the current amplitude data and the previous amplitude data, "0 Hz" as the values of the current frequency data and the previous frequency data, and "0 degrees" as the value of the current phase data.
[0200] The processor 202 determines whether or not the encoded vibration instruction data exists in the vibration instruction data area 204B1 (step S1002). If the encoded vibration instruction data does not exist in the vibration instruction data area 204B1 (NO in step S1002), the processor 202 executes termination processing (step S1003). The termination processing may be, for example, a process of setting the amplitude value of the vibration instruction data to "0" and setting the value of the previous frequency data area 204V5 saved in step S1001 as the frequency value of the vibration instruction data to newly generate vibration instruction data and storing the data in the vibration instruction data area 204B1.
[0201] As a result, control data that gradually decreases to 0 after the vibration based on the encoded vibration instruction data 110 instructed by the game program 102P2 ends is generated by the processes of S1006 to S1014 described below. This vibration is also called end vibration. The previous frequency value means the frequency value used in the previous control or the frequency value indicated by the previous vibration instruction data. Similarly, the previous amplitude value means the amplitude value used in the previous control or the amplitude value indicated by the previous vibration instruction data.
[0202] Note that when the vibration instruction data stored in step S1003 is processed in steps S1004 to S1015 and the process returns to S1002, it is possible that the decoded vibration instruction data is no longer present in the vibration instruction data area 204B1. In this case, vibration instruction data with an amplitude value of "0" is stored in S1003, and control data with a voltage value of zero is output in the subsequent processing. Thus, in this embodiment, when vibration based on the vibration instruction data instructed by the game program 102P2 ends and no vibration instruction data is present in the vibration instruction data area 204B1, control data with a voltage value of zero continues to be output.
[0203] Next, processor 202 acquires the first vibration instruction data in vibration instruction data area 204B1 and deletes the vibration instruction data from vibration instruction data area 204B1 (step S1004). The vibration instruction data stored earliest in vibration instruction data area 204B1 is stored at the top of vibration instruction data area 204B1. In step S1002, if vibration instruction data exists in vibration instruction data area 204B1 (YES in step S1002), processor 202 executes the process of step S1004.
[0204] Processor 202 determines whether preset playback in progress flag Fg1 or streaming playback in progress flag Fg2 is True (step S1005). If preset playback in progress flag Fg1 or streaming playback in progress flag Fg2 is True (YES in step S1005), processor 202 discards the acquired vibration instruction data (step S1017) and returns the process to step S1001. As a result, playback processing of control data based on a vibration instruction is not performed during preset playback processing or streaming playback processing. In other words, exclusive control is performed between preset playback processing, streaming playback processing, and vibration instruction processing, and vibration instruction processing has the lowest priority.
[0205] If the preset playback in progress flag Fg1 or the streaming playback in progress flag Fg2 is not True (NO in step S1005), the processor 202 determines whether the value of the previous amplitude data saved in step S1001 is greater than 0 (step S1006). If the value of the previous amplitude data is greater than 0 (YES in step S1006), it can be determined that vibration has been continuing for a while, and the process proceeds to the flow for when vibration is continuing from step S1006 onwards. A state in which vibration has been continuing for a while means that vibration has not started from a state in which there was no vibration.
[0206] In step S1007, the processor 202 assigns 1 to the count variable X (step S1007). The count variable X is an area prepared in the volatile memory 204, and is a counter variable for repeating the process 40 times to generate 40 pieces of control data.
[0207] In step S1008, processor 202 assigns a value to the current amplitude data. In step S1008, processor 202 subtracts the value of the previous amplitude data from the command amplitude value. The command amplitude value means the amplitude value indicated in the encoded vibration command data, and the command frequency means the frequency indicated in the encoded vibration command data. Processor 202 multiplies the result of the subtraction by a value obtained by dividing the numerical value stored in count variable X by 40. Processor 202 adds the previous amplitude data to the result of the multiplication and stores the result as the current amplitude data (step S1008).
[0208] In step S1009, the processor 202 assigns a value to the current frequency data. In step S1009, the processor 202 subtracts the value of the previous frequency data from the command frequency. The processor 202 multiplies the result of the subtraction by a value obtained by dividing the numerical value stored in the count variable X by 40. The processor 202 adds the value of the previous frequency data to the result of the multiplication and stores the result in the current frequency data (step S1009).
[0209] Through the processing of steps S1008 and S1009, the current amplitude data and current frequency data store the amplitude value and frequency of the reference waveform referenced to generate control data. In step S1010, processor 202 assigns a value to current phase data. Specifically, processor 202 advances the value of the current phase data by 0.125 ms based on the value of the current frequency data. Next, processor 202 calculates a voltage value based on the current amplitude data, current frequency data, and current phase data, and generates control data corresponding to the calculated voltage value (step S1011). At this time, since the command amplitude data is data normalized with respect to the maximum voltage for each command frequency, as described above, the control data is generated by referencing the maximum voltage value corresponding to the frequency indicated by the current frequency data.
[0210] Processor 202 determines whether autonomous reproduction in progress flag Fg3 is True (step S1012). If autonomous reproduction in progress flag Fg3 is True (YES in step S1012), processor 202 multiplies the voltage indicated by the generated control data for 0.125 ms by 0.7. This makes it possible to simultaneously execute the autonomous reproduction process (described later) and vibration in response to a vibration instruction without exceeding the maximum voltage predetermined for vibration motor 206 or amplifier 205, as in step S507 of Fig. 9 .
[0211] When the autonomous reproduction in progress flag Fg3 is False (NO in step S1012), or after executing the process of step S1013, the processor 202 determines the amplitude and the current phase based on the values of the current amplitude data, the current frequency data, and the current phase data, and generates control data corresponding to the voltage value to be output by the amplifier 205. More specifically, the processor 202 determines a reference waveform from the values of the current amplitude data and the current frequency data, generates a voltage value at the phase indicated by the value of the current phase data in the reference waveform as control data for 0.125 ms, and writes the generated control data to the control data area 204B2 (step S1014). The control data for 0.125 ms written to the control data area 204B2 is transmitted to the amplifier 205 by DMA. The control data written in the control data area 204B2 is sent to the amplifier 205 by DMA, and the amplifier 205 amplifies the voltage to a voltage value corresponding to the control data written in the control data area 204B2 and applies the amplified voltage to the vibration motor 206.
[0212] The processor 202 assigns a value obtained by adding 1 to the current count variable X to the count variable X (step S1015). The processor 202 determines whether the value of the count variable X exceeds 40 (step S1016). If the value of the count variable X does not exceed 40 (NO in step S1016), the processor 202 returns the process to step S1008.
[0213] If the value of count variable X exceeds 40 (YES in step S1016), processor 202 returns the process to step S1001. If the value of count variable X exceeds 40, this means that generation of 40 pieces of control data corresponding to the vibration instruction data acquired in step S1004 has been completed. In other words, this means that processing of the acquired vibration instruction data has been completed.
[0214] As shown in steps S1008 to S1011, when the amplitude and frequency are specified by the vibration instruction data, the vibration control system 10 of this embodiment performs a process of gradually approaching the specified amplitude and frequency from the previous amplitude value and frequency. This is called an interpolation process. Note that this interpolation process is not performed at the start of vibration. Furthermore, the processes of steps S1008 to S1011 generate 40 pieces of control data that are output every 0.125 ms for one vibration instruction data.
[0215] Returning to step S1006, if the value of the previous amplitude data is 0 (NO in step S1006), processor 202 determines that vibration has started, and executes start processing (step S1018). The case where the value of the previous amplitude data is 0 means that vibration motor 206 starts operating from a stopped state. Note that in step S1006, it may be determined that the previous amplitude data is approximately zero. Also, in step S1006, instead of determining that the previous amplitude data is greater than 0, it may be determined that the previous control data is greater than 0. In this case, start processing is executed when the previous amplitude data is 0, or when the previous amplitude data is not 0 but the control data is 0 due to the phase. In this case, it may also be determined that the data is approximately zero.
[0216] Fig. 18 is a flowchart showing the processing procedure of the start processing in step S1018. The processing of the flowchart shown in Fig. 18 is started by processor 202 executing step S1018 in Fig. 17. That is, in step S205, if the value of the previous amplitude data saved in step S1001 is 0, the flowchart of Fig. 18 is executed.
[0217] Processor 202 assigns 1 to count variable X (step S1101). Processor 202 assigns a command amplitude value to current amplitude data (step S1102). This allows the amplitude value to quickly reach the commanded value at the start of vibration, thereby enhancing the effect of impact vibration. Processor 202 also assigns a command frequency to current frequency data (step S1103). Processor 202 assigns a phase value to current phase data that is advanced by 0.125 ms from the value assigned to current phase data, based on the frequency assigned to current frequency data (step S1104).
[0218] Processor 202 calculates a voltage value to be output by amplifier 205 based on the current amplitude data and current phase data, and writes control data corresponding to the calculated voltage value to control data area 204B2 (step S1105). Processor 202 assigns a value obtained by adding 1 to the current count variable X to count variable X (step S1106). Thereafter, processor 202 determines whether the value of count variable X has exceeded 40 (step S1107).
[0219] If the value of count variable X does not exceed 40 (NO in step S1107), processor 202 returns the process to step S1102. If the value of count variable X exceeds 40 (YES in step S1107), processor 202 ends the process of the flowchart in Fig. 18. Thereafter, processor 202 executes the process of step S1001 in Fig. 17.
[0220] In this manner, the vibration control system 10 of the present embodiment determines control data corresponding to the voltage value for each control cycle, enabling precise control of the vibration waveform. When changing the amplitude value, noise may occur if the voltage value is not changed from 0 V. Therefore, the vibration control system 10 executes steps S1008 to S1011 to gradually change the amplitude value in units of a control cycle (0.125 ms). Alternatively, to prevent noise from occurring, it may be possible to wait until the voltage value reaches 0 V before changing the amplitude value, but this would delay the timing of the amplitude value change. The vibration control system 10 of the present embodiment typically suppresses noise by gradually changing the amplitude or frequency value within a vibration command cycle (5 ms). Furthermore, if the previous voltage value was 0 V, the system controls the amplitude value to the commanded amplitude value. This allows for the generation of vibration with a smooth rise time while suppressing noise.
[0221] [J. Self-recycling Processing] FIG. 19 is a flowchart showing the processing procedure of autonomous playback in the MCU program 203P. The processing of the flowchart shown in FIG. 19 is realized by the MCU 201 executing the MCU program 203P, and is started, for example, when power is supplied to the game controller 200 or when the game controller 200 is connected to the game device 100. In this embodiment, in processing by the system program 102P1 of the game device 100, the autonomous playback function can be turned on / off via a user interface. If the user sets the autonomous playback function to on, a autonomous playback function on / off flag (not shown) stored in non-volatile memory in the MCU 201 is set to on, and if the user sets the autonomous playback function to off, the flag is set to off. Although not shown, in the processing of FIG. 19, it may be determined first (for example, before processing of S1201) whether this flag is on, and if it is on, processing from S1201 onwards may be started.
[0222] In the game controller 200 of this embodiment, the processor 202 of the game controller 200 itself determines whether or not a predetermined condition is met based on information input to the game controller 200, and when the predetermined condition is met, outputs a sound by vibrating the vibration motor 206. For example, the game controller 200 can output a specific sound each time the operation switch 210 is operated.
[0223] The type of sound to be output when the predetermined condition is met is defined by the MCU program 203P. That is, for each condition, PCM data or frequency and amplitude parameters are associated with playback parameters. The game controller 200 may store the autonomously reproduced sound information as preset PCM data as described above, or may store the autonomously reproduced sound information as frequency and amplitude parameters.
[0224] Furthermore, in the game controller 200, 30% of the maximum voltage predetermined for the amplifier 205 or the vibration motor 206 is set as the upper limit of the voltage that can be used for autonomous playback. This allows autonomous playback and playback of other sounds to be performed simultaneously, as described above in steps S506 and S507 of Fig. 9, steps S706 and S707 of Fig. 11, and steps S1012 and S1013 of Fig. 17.
[0225] 19, the MCU 201 executing the MCU program 203P determines whether a predetermined condition for autonomous playback is met (step S1201). If the predetermined condition is not met (NO in step S1201), the MCU 201 repeats the process of step S1201. If the predetermined condition is met (YES in step S1201), the MCU 201 updates the autonomous playback in progress flag Fg3 in the exclusive control flag 2035 to True (step S1202).
[0226] The MCU 201 stores sound information associated with the established predetermined condition in the autonomous reproduction area 204B6 (step S1203). As described above, in this embodiment, the sound information for autonomous reproduction is pre-stored in the preset data area PD2 as PCM data for autonomous reproduction, but the sound information for autonomous reproduction may also be stored as vibration instruction data (frequency and amplitude parameters). In this case, the MCU program 203P may store the vibration instruction data in the vibration instruction data area 204B1. The MCU program 203P uses identification information to specify one piece of PCM data corresponding to the established condition from the PCM data stored in the preset data area PD2.
[0227] The MCU program 203P adjusts the specified preset PCM data according to the playback parameters and stores the adjusted PCM data in the autonomous playback area 204B6. Then, the MCU program 203P reads out the sampling data of the PCM data stored in the autonomous playback area 204B6 in order from the beginning and writes it to the control data area 204B2 (step S1206). The 0.125 ms worth of control data written to the control data area 204B2 is transmitted to the amplifier 205 by DMA.
[0228] The MCU program 203P determines whether all sampling data included in the PCM data in the autonomous playback area 204B6 has been written as control data to the control data area 204B2 (step S1207). If writing of all data has not been completed (NO in step S1207), the MCU 201 returns the process to step S1205. If writing of all data has been completed (YES in step S1207), the MCU 201 deletes the PCM data in the autonomous playback area 204B6, updates the autonomous playback in progress flag Fg3 to False (step S1208), and returns the process to step S1201.
[0229] In this way, the MCU 201 is configured to be able to output sound using the vibration motor 206 as a function of the game controller 200 itself, without receiving an instruction from the game device 100. This can increase the enjoyment of a game using the game controller 200. Note that the content of the above-mentioned predetermined condition, sound information associated with the predetermined condition, playback parameters, etc. may be changed based on an instruction from the game program 102P2.
[0230] The following describes the process of changing the output from the vibration device by the output change program. First, the process of changing the output based on the vibration instruction data will be described. Any of the following processes (1) to (3) may be adopted.
[0231] (1) If the user has set the on / off setting value (sound region) to off, when the system program 102P1 of the game device 100 receives a request from the game program 102P2 using the vibration instruction data described in Fig. 7, if the frequency specified in the vibration instruction is in the sound frequency band, the system program 102P1 does not transmit the vibration instruction data to the game controller. For example, in Fig. 15, after processing S801, the system program 102P1 determines whether the on / off setting value (sound region) is set to off, and whether the frequency specified in the acquired vibration instruction data is in the sound frequency band, and if both of these determinations are positive, does not execute the processes of S802 to S812.
[0232] (2) If the on / off setting value (sound region) is set to off and the instruction frequency of the acquired vibration instruction data is in the sound frequency band, the system program 102P1, after processing S801, changes the amplitude of the vibration instruction data acquired in step S801 to zero or approximately zero, and then executes the processes of S802 to S812. When the volume adjustment method is adopted, if the instruction frequency of the vibration instruction data acquired in S801 is in the sound frequency band, the instruction amplitude of the acquired vibration instruction data is adjusted according to the volume value (sound region). For example, if the volume value (sound region) that sets the output to 50% is set, the system program 102P1 may multiply the amplitude of the vibration instruction data acquired in step S801 by 0.5.
[0233] (3) Data on the on / off setting value (sound range) is sent to the MCU 201, and the MCU stores the setting value. For example, when generating control data based on vibration instruction data, the MCU 201 refers to the setting value, and if the setting is "off," sets the value of the control data to zero or nearly zero. When the volume adjustment method is adopted, the MCU 201 adjusts the magnitude of the control data according to the volume value (sound range).
[0234] Next, a process for changing the output based on PCM data will be described. Any of the following processes (1) to (3) may be adopted.
[0235] (1) When the on / off setting value (audio range) is set to off, the system program 102P1 does not transmit a command based on the request to the game controller even if it receives a streaming playback request and / or a preset playback request described in Fig. 7 from the game program 102P2. For example, in Fig. 8, after receiving a preset playback request in step S401, the system program 102P1 does not execute the processes of steps S402 and S403 if the on / off setting value (audio range) is set to off. Also, in Fig. 10, after receiving a streaming playback request in S601, the system program 102P1 does not execute the processes of steps S602 and S603 if the on / off setting value (audio range) is set to off.
[0236] (2) If the on / off setting value (sound range) is set to off, the system program 102P1 changes the volume value specified by the playback parameters to zero or nearly zero in steps S403 and S603, and then transmits it to the game controller. In the case of a volume adjustment method, the volume value specified by the playback parameters may be adjusted according to the size of the volume value (sound range).
[0237] (3) The on / off setting value (sound range) or the volume value (sound range) is sent from the game console to the MCU, and the MCU stores the setting value or the volume value. If the on / off setting value (sound range) is set to off, the MCU 201 sets the value of the control data to zero or approximately zero when using the PCM data as control data to be output to the amplifier 205. In the case of the volume adjustment method, the MCU 201 may adjust the value of the PCM data used as control data according to the volume value (sound range).
[0238] If the amplifier 205 has a filter function or an equalizer function, these functions may be used to adjust the voltage output from the amplifier 205 to the vibration motor 206 according to the on / off setting value (sound range) and the volume adjustment value (sound range). Adjustment using the functions of the amplifier 205 may be applied to both control based on vibration instruction data and control based on PCM data. For example, when the on / off setting value (sound range) is set to "off," the MCU 201 may use the filter function of the amplifier 205 to cut the sound frequency band. Furthermore, when a volume adjustment method is used, the MCU 201 may use an amplifier with an equalizer function to adjust the voltage output to the vibration motor 206 in the sound frequency band according to the volume value (sound range). The above describes output change (on / off switching) or output adjustment (volume adjustment) for the sound frequency band, but output change or adjustment for the tactile region and output change or adjustment for the entire range can also be controlled in the same way (separately).
[0239] Furthermore, the PCM data may include not only the sound frequency band but also the haptic frequency band. In this case, the system program 102P1 or the MCU program may filter the PCM data to extract sound frequency band data, and then perform the above-described processing on the extracted sound frequency band data based on the on / off setting value (sound frequency band) or the volume value (sound frequency band). If the haptic frequency band data has a setting value or a volume value, the PCM data may be filtered to extract haptic frequency band data, and then the extracted haptic frequency band data may be processed in the same manner. In this case, control data is generated or produced using PCM data that combines the processed sound frequency band data and the processed haptic frequency band data. The game controller 200 of this embodiment may also have an on / off flag for the autonomous playback function, allowing the user to turn the autonomous playback function on or off. In the present disclosure, "vibration instruction data" and "PCM data" may be collectively referred to as "vibration data." The volume setting of the game console's speaker may be used to adjust the output of the sound frequency band of the vibration device. That is, the user may be allowed to set the volume value of the speaker using a system menu or the like, and the output of the frequency band of the sound of the vibration device may be adjusted using that volume value as described above.
[0240] [K. Variation] Modified examples are described below. The above describes an example in which a request is made from the game program 102P2 to the system program 102P1 via an API, and the system program 102P1 executes processing in response to the request. However, some or all of the processing performed in the game program 102P2 may be performed by the system program 102P1, and some or all of the processing performed in the system program 102P1 may be performed by the game program 102P2. Furthermore, the PCM data transmitted to the game controller 200 may differ depending on the type of game controller 200, for example.
[0241] Note that the flowcharts described above may include processes other than those shown in the drawings, or may not include some processes. The order of each process is merely an example; for example, the processes may be executed simultaneously or in the reverse order. Although each process is described separately for convenience, it may be an integrated process. For example, each process may be executed at a predetermined interval (e.g., every processing frame, every 1 / 30 seconds). Even when the same terminology is used to describe data above, the data do not necessarily have to be completely identical. At least, if certain data and other data substantially convey certain information, they may be considered to be the same data. The name of the data does not limit the scope of the data.
[0242] Furthermore, "processor" may refer to one or more processors within a single device, such as the main device in game device 100, or may refer to some or all of one or more processors provided in each of multiple devices, such as the main device and controller, or the main device, controller and server, etc. The same applies to "memory."
[0243] Furthermore, the program that causes a computer to execute each process may be a single program, or a group of programs including multiple programs. "A certain program" does not necessarily mean a single program, but may include a group of programs. Also, a program does not necessarily have to be stored in a single device. "A certain program" may refer to, for example, the entire set of programs stored in multiple devices included in an information processing system. At least a portion of the series of processes described above may be executed by a server in an information processing system that includes the game device 100 and a server that can communicate with the game device 100 via a network. Note that the server may be composed of multiple information processing devices, and the processes may be shared and executed by the multiple information processing devices.
[0244] The embodiments disclosed herein should be considered to be illustrative in all respects and not restrictive. The scope of the present invention is defined by the claims, not by the above description, and is intended to include all modifications within the meaning and scope of the claims. [Explanation of symbols]
[0245] 10 vibration control system, 100 game device, 101, 202 processor, 102P2 game program, 102, 203 non-volatile memory, 102P1 system program, 103, 204 volatile memory, 104, 207 communication interface, 105A vibration file, 105B sound file, 110 vibration instruction data, 200 game controller, 204B2 control data area, 204B4 preset playback area, 204B5 streaming playback area, 204B6 autonomous playback area, 204V1 current amplitude data area, 204V2 current frequency data area, 204V3 current phase data area, 204V4 previous amplitude data area, 204V5 previous frequency data area, 205 amplifier, 206 vibration motor, 208 acceleration sensor, 209 gyro sensor, 210 operation switch, 2031 vibration instruction program, 2032 Preset playback program, 2033 streaming playback program, 2034 autonomous playback program, 2035 exclusive control flag, De decoding program, De1 frequency decoding program, De2 amplitude decoding program, En encoding program, En1 frequency encoding program, En2 amplitude encoding program, F maximum voltage setting program, Fg1 preset playback in progress flag, Fg2 streaming playback in progress flag, Fg3 autonomous playback in progress flag, LnOFF, LnON lines, Pi1 identification information, Pi2 identification information area.
Claims
1. A vibration control system including a vibration device capable of reproducing a sound frequency band, means for acquiring vibration data for vibrating the vibration device from an application program; a means for performing a control process for the vibration device based on the acquired vibration data; a means for setting a setting value (first setting value) for the output of the sound frequency band of the vibration device (hereinafter referred to as "first setting"); and means for performing processing to change the output of the frequency band of the sound output from the vibration device based on the first set value.
2. the vibration data is data indicating amplitude and frequency; the change process is a process of changing the command amplitude in accordance with the first set value when the command frequency of the acquired vibration data specifies a frequency in a sound frequency band, The vibration control system according to claim 1 , wherein the control process is performed based on the vibration data after the change process.
3. the vibration data is data indicating amplitude and frequency; The vibration control system of claim 1 , wherein the change processing is performed by not passing the acquired vibration data to the control processing when the indicated frequency of the acquired vibration data specifies a frequency in a sound frequency band.
4. the vibration data is data indicating amplitude and frequency; a means for generating control data based on the acquired vibration data, the control process is performed based on the control data, The vibration control system of claim 1, wherein the change process is performed by generating control data corresponding to the first set value when the indicated frequency of the acquired vibration data specifies a frequency in a sound frequency band in the generation process.
5. The vibration control system according to claim 1 , wherein the change processing is performed by changing control of a frequency band of sound through filtering processing of an amplifier that controls the vibration device.
6. the vibration data is PCM data, The vibration control system according to claim 1 , wherein the change process is performed by not passing the PCM data to the control process.
7. The vibration data is PCM data, and a volume parameter can be added to the vibration data; In the control process, control data is generated based on the PCM data and the volume parameters, and control is performed using the generated control data. The vibration control system according to claim 1 , wherein the change process is performed by setting the volume parameter based on the first setting value.
8. 8. The vibration control system according to claim 1, wherein the first setting is performed based on a user operation.
9. a means for setting a setting value (second setting value) for an output of a frequency band in a tactile region of the vibration device based on a user operation (hereinafter referred to as second setting); The vibration control system according to claim 8 , further comprising: a means for changing an output of a frequency band in a tactile region output from the vibration device based on the second set value.
10. a means for setting a setting value (third setting value) for the output of the vibration device over all frequency bands based on a user operation (hereinafter referred to as third setting); The vibration control system according to claim 8 , further comprising: a means for changing the output of all frequency bands output from said vibration device based on said third set value.
11. A vibration control system that includes a vibration device capable of reproducing a sound frequency band and is capable of speaker output, means for acquiring vibration data for vibrating the vibration device from an application program; a means for performing a control process for the vibration device based on the acquired vibration data; a means for setting a setting value for the speaker output (hereinafter referred to as a speaker setting value); and means for performing processing to change the output of a frequency band of sound output from the vibration device based on the speaker setting value.
12. A computer of a vibration control system having a vibration device capable of reproducing a sound frequency band, means for acquiring vibration data for vibrating the vibration device from an application program; a means for performing a setting process of control data for the vibration device based on the acquired vibration data; a means for setting a setting value (first setting value) for the output of the sound frequency band of the vibration device (hereinafter referred to as "first setting"); a program that causes the program to function as a means for performing processing to change the output of a frequency band of sound output from the vibration device based on the first setting value;
13. the vibration data is data indicating amplitude and frequency; the change process is a process of changing the command amplitude in accordance with the first set value when the command frequency of the acquired vibration data specifies a frequency in a sound frequency band, The program according to claim 12 , wherein the control process is performed based on the vibration data after the change process.
14. the vibration data is data indicating amplitude and frequency; The program according to claim 12 , wherein the change processing is processing by not passing the acquired vibration data to a control processing when the designated frequency of the acquired vibration data specifies a frequency in a sound frequency band.
15. the vibration data is data indicating amplitude and frequency; The computer further comprises: and causing the device to function as a means for performing a process of generating control data based on the acquired vibration data. The program according to claim 12, wherein the change process is performed by generating control data according to the first setting value when the instruction frequency of the acquired vibration data specifies a frequency in a sound frequency band in the setting process.
16. The program according to claim 12 , wherein the change processing is performed by changing control of a frequency band of sound through filtering processing of an amplifier that controls the vibration device.
17. the vibration data is PCM data, 13. The program according to claim 12, wherein the change process is performed by not passing the PCM data to a control process.
18. The vibration data is PCM data, and a volume parameter can be added to the vibration data; In the control process, control data is generated based on the PCM data and the volume parameters, and control is performed using the generated control data; The program according to claim 12 , wherein the change processing is performed by setting the volume parameter based on the first setting value.
19. The program according to any one of claims 12 to 18, wherein the first setting is performed based on a user operation.
20. a means for setting a setting value (second setting value) for an output of a frequency band in a tactile region of the vibration device based on a user operation (hereinafter referred to as second setting); The program according to claim 19 , further comprising: means for changing an output of a frequency band in a tactile region output from the vibration device based on the second set value.
21. a means for setting a setting value (third setting value) for the output of the vibration device over all frequency bands based on a user operation (hereinafter referred to as third setting); The program according to claim 19 , further comprising: a means for changing an output of all frequency bands output from the vibration device based on the third set value.
22. A computer with a vibration control system equipped with a vibration device capable of reproducing sound frequency bands and capable of speaker output, means for acquiring vibration data for vibrating the vibration device from an application program; a means for performing a control process for the vibration device based on the acquired vibration data; a means for setting a setting value for the speaker output (hereinafter referred to as a speaker setting value); a program that functions as a means for performing processing to change the output of a frequency band of sound output from the vibration device based on the speaker setting value;
23. A control method for controlling a vibration control system including a vibration device capable of reproducing a sound frequency band, comprising: acquiring vibration data for vibrating the vibration device from an application program; performing a control process for the vibration device based on the acquired vibration data; setting a setting value for the output of the vibration device in a sound frequency band; A control method for changing the output of a frequency band of sound output from the vibration device based on a first set value.
Citation Information
Patent Citations
Vibration signal creation program, vibration signal creation system, vibration signal creation device, vibration signal creation method and data output program
JP2016202486A