Vibration control system, program, controller, and control method
Patent Information
- Application Number
- JP2025060825
- Authority / Receiving Office
- JP · JP
- Patent Type
- Applications
- Current Assignee / Owner
- Filing Date
- 2025-04-01
- Publication Date
- 2026-10-14
AI Technical Summary
【0006】 (構成2) 構成1において、制御において、所定の更新周期の制御データに基づく制御が行われ、サウンドデータは、前記所定の更新周期と同一の周期でサンプリングされたPCMデータである。これにより、PCMデータのサンプリングレートが制御部に入力されて使用される制御データの更新レートと一致しているため、PCMデータを制御データとして用いる場合の効率がよくなる。制御部(アンプ)でアップサンプリングを行う場合、制御部が実際に振動デバイスを制御する周期はPCMのサンプリングレートより高い。なお、PCMデータのサンプリングデータは、制御部に入力される制御データの更新レートと一致していることに変わりはない。
Smart Images

Figure 2026167296000001_ABST
Abstract
Description
Technical Field
[0001] The present disclosure relates to a vibration control system, a program, a controller, and a control method.
Background Art
[0002] Conventionally, there exist game systems that provide vibration effects to users playing games. For example, Japanese Patent Laid-Open No. 2016-202486 (Patent Document 1) discloses a vibration signal generation system for use in games.
Prior Art Documents
Patent Documents
[0003]
Patent Document 1
Summary of the Invention
Problems to be Solved by the Invention
[0004] There has been room for improvement in the utilization of conventional vibration systems.
Means for Solving the Problems
[0005] (Configuration 1) A vibration control system according to an embodiment is a vibration control system including a vibration device capable of reproducing a sound frequency band. The vibration control system includes a storage unit in which identification information and sound data associated with the identification information are preset, a unit that executes an application program and issues a preset reproduction instruction by specifying the identification information in response to occurrence of a sound event, a unit that reads the sound data from the storage unit based on the identification information in response to the preset reproduction instruction, and a unit that controls the vibration device with control data based on the read sound data. Thereby, the application program can efficiently perform sound output using the vibration device without using a sound device.
[0006] (Configuration 2) In Configuration 1, control is performed based on control data with a predetermined update cycle, and the sound data is PCM data sampled at the same cycle as the predetermined update cycle. As a result, the sampling rate of the PCM data matches the update rate of the control data input to the control unit, thus improving efficiency when using PCM data as control data. When upsampling is performed in the control unit (amplifier), the cycle at which the control unit actually controls the vibration device is higher than the sampling rate of the PCM. However, the sampling rate of the PCM data remains the same as the update rate of the control data input to the control unit.
[0007] (Configuration 3) In Configuration 1 or Configuration 2, the sound data is PCM data sampled at the same period as the sampling rate of the amplifier that controls the vibration device.
[0008] (Configuration 4) In any of Configurations 1 to 3, the sound data is PCM data, and the preset playback instruction specifies parameters related to the output of the PCM data in addition to the identification information, and in the control, the control data is adjusted based on the parameters. This makes it possible to produce a variety of sound outputs using a single PCM data.
[0009] (Configuration 5) In any of Configurations 1 to 4, an information processing device and a controller are provided, and the storage means is provided by the controller. The information processing device executes the application program and issues the preset playback instructions, and the controller performs the reading and control. This makes it possible to perform error-tolerant sound playback using presets, even when a controller other than the information processing device is used.
[0010] (Configuration 6) The vibration control system according to claim 4, wherein the application program includes the identification information and the sound data, and further comprises means for transmitting a preset instruction to a controller to preset the identification information and the sound data by executing the application program, and means for storing the identification information and the sound data in the storage means based on the preset instruction. This allows the application program to use its own sound data.
[0011] (Configuration 7) In any of Configurations 1 to 6, the application program includes the identification information and the sound data, and the preset instruction is made by the execution of the application program at a time before the sound event occurs. This reduces the time lag during playback because the preset is made in advance.
[0012] (Configuration 8) Configuration 1 to Configuration 7 further includes means for issuing vibration instructions to vibrate the vibration device by specifying the amplitude and frequency in response to the occurrence of vibration events due to the execution of an application program. In the control, in response to the vibration instructions, control data is generated based on the specified amplitude and frequency, and the vibration device is controlled using the generated control data. This makes it possible to perform both preset sound playback and vibration playback with the same vibration device, so that the advantages of each can be used on a case-by-case basis.
[0013] (Configuration 9) In Configuration 8, the specified frequency in the vibration instruction is a frequency within the frequency band. This allows for selective playback of PCM sounds using presets and sound playback where amplitude and frequency are specified. Since each has its advantages, they can be used selectively on a case-by-case basis.
[0014] (Configuration 10) Configuration 9 further includes means for executing a system program, and by executing an application program, means for executing a first request based on the sound event and a second request based on the vibration event to the system program, and by executing the system program, a preset playback command is issued in response to the first request and a vibration command is issued in response to the second request, and in the control, control corresponding to the preset playback command and the vibration command is performed respectively. This makes it easier to develop the application program by processing the system program.
[0015] (Configuration 11) In any of Configurations 1 to 10, the sound data is PCM data, and the system further includes means for sequentially specifying a portion of the PCM data in response to a sound event and issuing a streaming playback instruction. In the control, control data is generated by sequentially using the specified portion of the PCM data in response to the streaming playback instruction. This allows for selective playback of PCM sound by preset and PCM playback by streaming. Since each has its advantages, they can be used selectively on a case-by-case basis.
[0016] (Configuration 12) The vibration control system according to claim 11, wherein in Configuration 11, multiple sampling data are specified at the same timing in the streaming playback instruction. This prevents delays in PCM playback via streaming.
[0017] (Configuration 13) In Configuration 11, if a preset playback instruction and the streaming playback instruction occur simultaneously, the preset playback instruction is processed with priority over the streaming playback instruction.
[0018] (Configuration 14) In Configuration 9, if a preset playback instruction and the vibration instruction occur simultaneously, the preset playback instruction is processed with priority over the vibration instruction.
[0019] (Configuration 15) The vibration control system according to Claim 1, wherein in any one of Configurations 1 to 14, the vibration device is a voice coil motor that performs reciprocating motion.
[0020] (Configuration 16) A program according to an embodiment is a program for use in a vibration control system provided with a vibration device. The program causes a computer to execute: a process of acquiring a preset playback instruction including identification information of sound data from an application program; a process of reading the sound data from a predetermined memory based on the identification information included in the acquired preset playback instruction in response to the acquired preset playback instruction; and a process of controlling the vibration device using control data based on the read sound data.
[0021] (Configuration 17) In Configuration 16, the sound data is PCM data sampled at the same cycle as the update cycle of the control data used by the control unit of the vibration device.
[0022] (Configuration 18) In Configuration 16 or Configuration 17, the preset playback instruction is configured to specify a parameter relating to output of the sound data in addition to the identification information, and the control data is adjusted based on the parameter.
[0023] (Configuration 19) In Configuration 18, the program further causes the computer to execute: a process of acquiring a preset instruction command that causes the computer to preset the identification information and the sound data; and a process of storing the identification information and the sound data in a predetermined memory based on the preset instruction.
[0024] (Configuration 20) In any one of Configurations 16 to 19, the program further causes the computer to execute: a process of acquiring a vibration instruction command for vibrating the vibration device by specifying an amplitude and a frequency; and a process of generating the control data based on the specified amplitude and frequency.
[0025] (Configuration 21) In any of Configurations 16 to 20, the computer is further instructed to perform a process to obtain a streaming playback command that sequentially specifies a portion of the PCM data, and the portion of the sequentially specified PCM data is used as control data in accordance with the streaming playback command.
[0026] (Configuration 22) The controller in one embodiment is a controller used in a vibration control system including an information processing device. The controller comprises a vibration device capable of reproducing sound frequency bands, and a storage means in which identification information and sound data associated with the identification information are pre-set. The controller comprises means for obtaining an instruction to reproduce sound data and reading the sound data from the storage means based on the identification information, and means for controlling the vibration device with control data based on the read sound data.
[0027] (Configuration 23) In Configuration 22, the sound data is PCM data sampled at the same frequency as the update cycle of the control data used by the control unit of the vibration device.
[0028] (Configuration 24) In Configuration 23, the instruction to play back specifies parameters related to the output of the sound data in addition to the identification information, and in the control, the control data is adjusted based on the parameters.
[0029] (Configuration 25) Configuration 24 further comprises means for acquiring a preset instruction to preset identification information and the sound data, and means for storing the identification information and the sound data in the storage means based on the acquired preset instruction.
[0030] (Configuration 26) Configuration 22 or Configuration 23 further comprises means for obtaining a vibration instruction to vibrate the vibration device by specifying the amplitude and frequency, and in control, in response to the vibration instruction, control data is generated based on the specified amplitude and frequency.
[0031] (Configuration 27) Configuration 22 to 26 further includes means for obtaining a streaming playback instruction that sequentially specifies a portion of the PCM data. In control, the specified PCM data is further used as control data in response to the streaming playback instruction.
[0032] (Configuration 28) A control method in one embodiment is a control method used in a vibration control system equipped with a vibration device capable of reproducing sound frequency bands. The control method presets identification information and sound data associated with the identification information in a predetermined memory, executes an application program, issues a preset playback instruction by specifying the identification information in response to the occurrence of a sound event, reads the sound data from the predetermined memory based on the identification information in response to the preset playback instruction, and controls the vibration device with control data based on the read sound data. [Brief explanation of the drawing]
[0033] [Figure 1] This is a schematic diagram showing an example of a vibration control system in this embodiment. [Figure 2] This figure shows an example of data stored in volatile memory. [Figure 3] This is a diagram illustrating the process of vibration generation. [Figure 4] This flowchart shows the processing procedure for requesting preset registration in a game program. [Figure 5] This flowchart shows the processing procedure for executing a preset registration command in a system program. [Figure 6] This flowchart shows the preset registration process in the MCU program. [Figure 7] This flowchart shows the procedure for processing API requests in response to events in a game program. [Figure 8]This flowchart shows the processing procedure for executing a preset playback command in a system program. [Figure 9] This is a flowchart showing the processing procedure for preset playback in an MCU program. [Figure 10] This is a flowchart showing the processing procedure for executing a streaming playback command in a system program. [Figure 11] This is a flowchart showing the processing steps for streaming playback in an MCU program. [Figure 12] This is a diagram illustrating vibration instruction data based on sound files. [Figure 13] This table shows the relationship between the frequencies of musical scales in 12-tone equal temperament and their encoded frequencies. [Figure 14] This is a diagram illustrating vibration instruction data based on vibration files. [Figure 15] This flowchart shows the encoding procedure for vibration instruction data executed by a game device. [Figure 16] This flowchart shows the procedure for decoding encoded vibration instruction data executed by a game controller. [Figure 17] This flowchart shows the process steps for generating control data executed by a game controller. [Figure 18] This is a flowchart showing the processing procedure for the start process in step S1018. [Figure 19] This is a flowchart showing the autonomous regeneration process in an MCU program. [Modes for carrying out the invention]
[0034] This embodiment will be described in detail with reference to the drawings. Note that identical or corresponding parts in the drawings are denoted by the same reference numerals, and their descriptions 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.
[0035] Figure 1 is a schematic diagram showing an example of the vibration control system 10 in this embodiment. The vibration control system 10 in this embodiment is applied to a game system. The vibration control system 10 comprises a game device 100 and a game controller 200. The game device 100 is the main unit for providing a game to the user. The game controller 200 is a device that the user playing the game holds and uses to receive input.
[0036] The game device 100 progresses the game by displaying video or images on a display device such as a TV monitor, LCD, organic EL (Electro Luminescence), or head-mounted display (HMD) according to the program. The user operates the game controller 200 in accordance with the video or images displayed on the display device. The game device 100 receives input from the user to the game controller 200 and progresses the game in accordance with that input.
[0037] 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 by being controlled, for example, by an 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 the 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 period of 0.125 ms. Hereinafter, data at intervals of 0.125 ms within the PCM data may be referred to as one unit of PCM data.
[0038] In this embodiment, the vibration control system 10 allows control based on both vibration instruction data and PCM data. For application developers, specifying amplitude and frequency may be preferable, while using PCM data may be preferable; application developers can choose which method to adopt. As will be described later, vibration instruction data is converted into control data by the MCU201, and in this embodiment, this control data is in PCM format. Therefore, when using PCM data as data for vibration, it can be used as control data without changing its format.
[0039] In this embodiment, the vibration motor 206 can vibrate at frequencies in the audible frequency range as well as the tactile frequency range. When vibration is instructed at frequencies in the tactile frequency range, it functions to provide vibration to the user's sense of touch, and when vibration is instructed at frequencies in the audible frequency range, it functions as a speaker that allows the user's hearing to perceive sound. The tactile frequency range refers, for example, to the frequency range in which a person can perceive vibration.
[0040] The vibration motor 206 is a type of vibration device, and in this embodiment, it 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 so that it is audible to the user at frequencies within the audible range, based on the PCM data described above. In other words, the vibration motor 206 can function as a speaker based on the PCM data. Furthermore, the vibration motor 206 can vibrate in both the tactile frequency range and the audible frequency range. That is, the vibration instruction data can specify both the tactile frequency range and the audible frequency range, and the vibration motor 206 functions as a vibrator that provides 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.
[0041] In this embodiment, the game controller 200 uses four different methods to make the vibration motor 206 function as a speaker. The first method is to pre-send PCM data along with identification information (such as an ID) from the game device 100 to the game controller 200 to preset it in the game controller 200's memory, and then the game device 100 specifies the identification information of the preset PCM data to play it back (hereinafter referred to as "preset playback"). The second method is to sequentially send PCM data from the game device 100 to the game controller 200 (hereinafter referred to as "streaming playback"). The third method is to play back the data by specifying the amplitude and frequency (frequency in the audible range) based on vibration instruction data from the game device 100 (hereinafter referred to as "amplitude-frequency specified playback"). The fourth method is to play back the data by processing by the processor within the game controller based on an operation on the game controller 200 (since this is done independently of the game device 100, it is hereinafter referred to as "autonomous playback"). The data for self-playback may be PCM data or vibration instruction data (data that specifies amplitude and frequency; frequencies within the audible range are specified).
[0042] [B. Game device configuration] The game device 100 includes a processor 101, non-volatile memory 102, volatile memory 103, and a communication interface (I / F) 104. The processor 101 is the processing unit for executing the processes provided by the game device 100. The processor 101 reads the system program 102P1 and game program 102P2 stored in the non-volatile memory 102, expands them into the volatile memory 103, and executes them.
[0043] The processor 101 is a processing circuit, such as a CPU (Central Processing Unit). In this specification, the term "processor" includes not only processing circuits such as CPUs, MPUs (Micro Processing Units), and GPUs (Graphics Processing Units) that execute processing according to instruction codes written in a program, but also hardwired circuits such as ASICs and FPGAs. Hardwired circuits such as ASICs and FPGAs have circuits pre-formed to correspond to the processing to be executed. Furthermore, the term "processor" in this specification may also include circuits that integrate multiple functions, such as SoCs (System on Chip). The processor 101 may be, for example, an SoC that integrates the functions of a CPU and a GPU. In addition, each process in this embodiment may be executed by a single processor, or it may be executed by multiple processors working together.
[0044] The non-volatile memory 102 is a non-volatile storage device accessible by the processor 101, and may include, for example, an SSD (Solid State Drive), flash memory, or a hard disk. The non-volatile memory 102 may also be a storage medium that can be attached to or removed from the game device 100, such as an optical disc or cartridge.
[0045] The system program 102P1 is a program that processes the system portion of the game device 100, realizing the basic functions of the game device 100 and providing 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 also include a menu program and certain application programs, and these programs may use vibration instruction data and PCM data to cause the vibration motor to produce vibration output or sound output.
[0046] (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. Below, we will first describe the vibration file 105A and sound file 105B included in the game program 102P2.
[0047] (b1-1. Vibration file 105A and sound file 105B) The vibration file 105A and sound file 105B contain vibration instruction data, that is, data that specifies the frequency and data that specifies the amplitude. A specific example of vibration file 105A is shown in Figure 14 below, and a specific example of sound file 105B is shown in Figure 12 below. As shown in Figures 12 and 14, each of the vibration file 105A and sound file 105B is a file that continuously specifies the frequency and amplitude for each event that occurs in the game program 102P2. In other words, each of the vibration file 105A and sound file 105B is not a single data point indicating a particular vibration, but rather a collection of data that specifies multiple consecutive vibrations.
[0048] The vibration file 105A contains data for each vibration event that causes the vibration motor 206 to function as a vibrator that delivers vibrations to the user's sense of touch, and includes parameters that specify the frequency (the frequency in the tactile region is specified) and amplitude.
[0049] Sound file 105B contains data for each sound event that causes the vibration motor 206 to function as a speaker that allows the user's hearing to perceive sound, and includes parameters indicating frequency (a frequency in the audible range is specified) and amplitude. In this embodiment, the format of the vibration instruction data contained in vibration file 105A and sound file 105B is the same, but the instruction frequency bands are different. However, the format of the vibration instruction data contained in vibration file 105A and sound file 105B may be different.
[0050] The frequency range specified by vibration file 105A is, for example, 40Hz to 400Hz. Specifying a low frequency will output a heavy vibration, and specifying a high frequency will output a sharp vibration. The frequency range specified by sound file 105B is, for example, 400Hz to 3500Hz. Specifying a low frequency will output a low sound, and specifying a high frequency will output a high sound. Note that 40Hz to 400Hz is an example of the "effective frequency range for vibration". 400Hz to 3500Hz is an example of the "frequency range in the audible region" in this disclosure. Frequencies other than 400Hz to 3500Hz are examples of the "frequency range in the inaudible region" in this disclosure. The boundary between the frequency range in the audible region and the frequency range in the tactile region may be changed as appropriate.
[0051] For example, vibration and sound events may include collisions between objects in the virtual game space, explosions, gunfire, or vehicles driving on the road. Vibrations and / or sounds corresponding to these events are output by the vibration of the vibration motor 206. Sound events may include a character speaking in the virtual space, object collisions, in-game phenomena, a UI (User Interface) button being selected by the user, or the timing of sound effects (SE). Furthermore, sounds generated in response to sound events may include voice data, SEs, BGM, instrument sounds, etc. In the sound file 105B, frequencies may be specified according to a predetermined musical scale. A predetermined musical scale is, for example, 12-tone equal temperament.
[0052] The frequencies included in the vibration instruction data can be changed depending on, for example, the magnitude of the collision in the virtual game space, the weight and material set for the colliding 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 colliding object. The frequency may be limited by various system conditions.
[0053] The vibration file 105A and 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 sound file 105B. In this specification, "generation" includes both reading data from non-volatile memory or volatile memory (which is then used directly in subsequent processing) and generating other data based on the read data.
[0054] The vibration instruction data is data that specifies the amplitude and frequency at a predetermined period. This predetermined period is, for example, 5ms. In other words, the vibration file 105A and the sound file 105B contain vibration instruction data for each predetermined period. As described later, the control of the vibration motor 206 based on the vibration instruction data is performed at a shorter period than the vibration instruction data period. As each vibration instruction data contained in the vibration file 105A and the sound file 105B is transmitted sequentially to the game controller 200, the game controller 200 vibrates continuously for a period of 5ms 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.
[0055] The vibration motor 206 has a predetermined maximum input voltage for each frequency. In this embodiment, the vibration instruction amplitude specified by the application program is normalized to the maximum voltage for each instruction frequency. Specifically, the amplitude included in the vibration instruction data is represented by a number between 0 and 1.0. When the amplitude is "1.0", control data is generated that is based on the maximum voltage at the instruction frequency included in the vibration instruction data. When the amplitude is "0.5", control data is generated that is based on 50% of the maximum voltage at the instruction frequency included in the vibration instruction data. The 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 the control data. Alternatively, the maximum output voltage of the amplifier controlling the vibration motor 206 may be used as the reference. Note that the manner of amplitude instruction in the vibration instruction data is not limited to this example, and it does not have to be normalized to the maximum input voltage for each frequency.
[0056] (b1-2. Preset PCM data PD1 and streaming PCM data SD1) Next, we will describe the preset PCM data PD1 and the streaming PCM data SD1. Each of the preset PCM data PD1 and the streaming PCM data SD1 is a collection of multiple PCM data samples that have been sampled at a predetermined period.
[0057] The preset PCM data PD1 is sent 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 sent to the game controller 200 sequentially in real time when a request for streaming playback is made.
[0058] As shown in Figure 1, the preset PCM data PD1 includes identification information Pi1. Identification information Pi1 is information used to identify each of the multiple preset PCM data PD1. For example, each preset PCM data PD1 is assigned a different ID as identification information Pi1. This allows the vibration control system 10 to identify the desired preset PCM data based on the identification information Pi1.
[0059] The preset PCM data and streaming PCM data may be included in the game program 102P2 or in the system program (menu program, etc.). They may also be stored in non-volatile memory beforehand or downloaded from a server, etc. Such data is used by the game program 102P2, the system program 102P1, etc.
[0060] For example, the game program 102P2 can request the game controller 200 to generate vibrations by using all or selectively all of the vibration file 105A, sound file 105B, preset PCM data PD1, and 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 set of instructions predefined as an API is provided for applications such as the game program 102P2 to request the system program 102P1 to execute a predetermined process. In this specification, "a processor or the like that which executes a certain program executes a certain process" may be expressed as "a certain program executes a certain process."
[0061] Specifically, the game program 102P2, based on detecting the occurrence of a vibration event or sound event in accordance with the game's progress, requests vibration from the system program using the vibration instruction API, passing vibration instruction data read from the vibration file 105A and sound file 105B as arguments. Alternatively, it requests the system program to play a preset using the preset playback API, passing the identification information of the preset PCM data PD1 as an argument. It also requests the system program to set a preset using the preset registration API, passing the preset PCM data as an argument. Or, it requests the system program to stream playback using the streaming playback API, passing the streaming PCM data SD1 sequentially as arguments. Since the vibration instruction data contained in the vibration file and sound file only differs in frequency band, vibration instruction requests can be made using a common API. In the following, requests using the API may simply be referred to as "API requests." Next, the system program 102P1, which receives API requests from the game program 102P2, will be described. Note that in a given situation, it is not necessary for the API to be prepared in advance for making these requests.
[0062] (b2. System Program 102P1) The system program 102P1 sends various commands to the game controller 200 in response to requests from the game program 102P2 via the API described above. 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, and an amplitude encoding program En2.
[0063] The system program 102P1 sends a preset playback command to the game controller 200 in response to a request made by the game program 102P2 using the preset playback API. The preset playback command includes identification information of the PCM data to be played back, which was passed by the game program 102P2 using the preset playback API. The system program 102P1 also sends a preset registration command to the game controller 200 in response to a request made by the game program 102P2 using the preset registration API. The preset registration command includes the PCM data and its identification information, which were passed by the game program 102P2 using the preset playback API.
[0064] The system program 102P1 sends a streaming playback command to the game controller 200 in response to the game program 102P2 executing a request using the streaming playback API. The streaming playback command includes PCM data (a predetermined number of samples) that the game program 102P2 has passed using the streaming playback API.
[0065] The system program 102P1 sends a vibration command to the game controller 200 in response to the game program 102P2 executing a request using the vibration command API. The vibration command includes the vibration command data that the game program 102P2 passed using the vibration command API.
[0066] When a request is made from the game program 102P2 using the vibration instruction API, the system program 102P1 executes the process of encoding the vibration instruction data obtained from the game program 102P1 and the process of sending the encoded vibration instruction data to the game controller 200. In the process of encoding the vibration instruction data, the system program 102P1 executes the frequency encoding program En1 and the 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 the process of encoding the PCM data obtained from the game program 102P2 using a predetermined audio codec. The encoded PCM data is then sent to the game controller 200.
[0067] In this embodiment, 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 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 as the "encoded amplitude," and the 20-bit data including the encoded frequency and 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.
[0068] 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. The number of bits used for encoding frequency and encoding amplitude can be any number. Hereafter, the frequency encoding program En1 and the amplitude encoding program En2 may be collectively referred to simply as "encoding program En". The encoding of vibration instruction data will be explained in detail later.
[0069] (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 a DRAM (Dynamic Random Access Memory) or SRAM (Static Random Access Memory), for example. 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.
[0070] The operation data area 103B2 is an area for temporarily storing operation data received from the game controller 200. Operation data is data indicating user input to the game controller 200, and consists of detected values from the accelerometer 208, gyro sensor 209, and operation switches 210, etc.
[0071] The vibration instruction data area 103B3 is an area for temporarily storing encoded vibration instruction data. The PCM data area 103B4 is an area for temporarily storing PCM data such as preset PCM data PD1 and streaming PCM data SD1 included in the game program 102P2. In this specification, the term "memory" includes at least both the non-volatile memory 102 and the volatile memory 103.
[0072] The game device 100 transmits data from the volatile memory 103 to the game controller 200 via the communication interface 104. The communication interface 104 communicates wirelessly with the game controller 200, for example, using an antenna (not shown). The communication method for wireless communication between the game device 100 and the game controller 200 is arbitrary, but in this embodiment, the game device 100 communicates with the game controller 200 in accordance with the Bluetooth® standard, although it may also conform to other standards such as IEEE 802.11, or it may use a proprietary communication protocol. Communication between the game device 100 and the game controller 200 may also be wired communication, in which case the communication interface 104 may be a terminal such as a USB (Universal Serial Bus) standard.
[0073] [C. Game Controller 200 Configuration] This section 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 accelerometer 208, a gyroscope 209, and an operation switch 210, among other components. The game controller 200 also has an optical sensor and other components, and has mouse functionality.
[0074] The game controller 200 may be a typical game controller that is held by the user with both hands or one hand and accepts user input by operating the operation switches 210 with the user's fingers, or it may be configured as a general-purpose mouse usable with a PC, for example, equipped with a vibration motor 206. Alternatively, the game controller 200 may have both the functions of a typical game controller as described above and the functions of a mouse usable with a PC, for example. Furthermore, the game controller 200 may be of other forms, for example, a type that is placed on the floor and accepts input when the user's soles come into contact with sensors, or a general-purpose keyboard, etc.
[0075] The MCU 201 includes a processor 202, non-volatile memory 203, and volatile memory 204. The processor 202, non-volatile memory 203, volatile memory 204, and communication interface 207 in the game controller 200 have the same hardware configuration as the processor 101, non-volatile memory 102, volatile memory 103, and communication interface 104 in the game device 100 described above. Therefore, a description of these hardware configurations will not be repeated. However, in order to reduce the cost of the game controller 200, the processor 202 may be a processor with lower processing power than the processor 101.
[0076] The non-volatile memory 203 stores preset PCM data and the MCU program 203P. The non-volatile memory 203 may also store the aforementioned PCM data for self-playback. The preset data area PD2 may store PCM data previously transmitted from the game program 102P2, or predetermined PCM data at the time of factory shipment of the game controller 200. Alternatively, the game device 100 may execute a system program, download PCM data from a server, and transmit it to the game controller 200 for storage. The PCM data for self-playback may also be stored as PCM data in the preset data area PD2 at the time of factory shipment of the game controller 200. The download from the 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.
[0077] 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. In addition, although not shown in Figure 1, the MCU program 203P also includes programs for transmitting detection values from the operation switch 210, the acceleration sensor 208, and the gyro sensor 209 to the game device 100 via the communication interface 207, and programs for performing various processes such as receiving encoded vibration instruction data from the game device 100.
[0078] The frequency decoding program De1 is a program for decoding encoded frequencies. The amplitude decoding program De2 is a program for decoding encoded amplitudes. Hereafter, the frequency decoding program De1 and the amplitude decoding program De2 may be collectively referred to simply as "decoding program De". The PCM decoding program DP1 is a program that decodes PCM data sent from the game device 100 along with streaming playback commands and preset registration commands. The processor 202 uses the frequency decoding program De1, the amplitude decoding program De2, and the PCM decoding program DP1 to decode encoded vibration instruction data and generate decoded vibration instruction data.
[0079] 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 the voltage values of the waveform for driving the vibration motor 206.
[0080] The preset playback program 2032 is a program for generating control data based on preset PCM data corresponding to the identification information Pi1 transmitted along with the preset playback command, in response to a preset playback command received from the game device 100.
[0081] The streaming playback program 2033 is a program for generating control data based on the streaming PCM data SD1 transmitted along with the streaming playback command received from the game device 100.
[0082] The autonomous regeneration program 2034 is a program that generates control data based on the corresponding PCM data when the predetermined conditions described later in Figure 19 are met. The PCM decoding program DP1 is a program that decodes the PCM data encoded by the PCM encoding program PE1.
[0083] Next, we will explain the data stored in the volatile memory 204 of the game controller 200 using Figure 2. Figure 2 is a diagram showing an example of the 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.
[0084] 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 along with the streaming playback command. Note that at a certain time, the data stored in the streaming playback area 204B5 is a few samples of data transmitted from the game device 100. The autonomous playback area 204B6 is an area for temporarily storing PCM data for autonomous playback.
[0085] The current amplitude data area 204V1, current frequency data area 204V2, current phase data area 204V3, previous amplitude data area 204V4, and 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.
[0086] The preset data area PD3, like the preset data area PD2, is a volatile area for storing preset PCM data. That is, the preset PCM data may be stored non-volatilely or volatilely. Preset PCM data temporarily used by a certain game program 102P2 may be stored in the volatile area. PCM data transmitted from the game program 102P2 may be stored in the preset data area PD3.
[0087] The mutual exclusion flag 2035 is a flag used to determine which of the four playback methods described above (preset playback, streaming playback, amplitude frequency specified playback, and autonomous playback) should be used to vibrate the vibration motor 206 when multiple such methods occur simultaneously. The mutual exclusion flag 2035 includes a preset playback flag Fg1, a streaming playback flag Fg2, and an autonomous playback flag Fg3. The preset playback flag Fg1 is set to True when the vibration motor 206 is being vibrated by a preset playback command, and to False otherwise.
[0088] The streaming playback flag Fg2 is set to True when the vibration motor 206 is being vibrated by a streaming playback command, and to False otherwise. The autonomous playback flag Fg3 is set to True when the vibration motor 206 is being vibrated by autonomous playback, and to False otherwise.
[0089] Returning to Figure 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) control data are transferred to the amplifier 205 simultaneously. The amplifier 205 in this embodiment is an amplifier that performs PWM (Pulse Width Modulation) control at a frequency of 8 kHz. The amplifier 205 determines the duty cycle every 0.125 ms based on the received control data and supplies power to the vibration motor 206. Hereinafter, the 0.125 ms period in which the duty cycle is determined using one control data may be referred to as the "control cycle". The vibration control system 10 is configured such that the control cycle (0.125 ms) matches the sampling rate of each of the PCM data described above. That is, in this embodiment, the sampling rate of each of the PCM data described above is a 0.125 ms period. Note that the frequency of the PWM control of the amplifier 205 does not have to be 8 kHz. For example, if the PWM control frequency of amplifier 205 is 48kHz, the sampling rate of the PCM data may be approximately 0.0208ms. Note that the sampling rate of amplifier 205 (the update frequency of the data input to the amplifier) is 0.125ms.
[0090] As described above, the vibration motor 206 is typically a voice coil motor, but it may also be a motor using a piezoelectric element, and the type of motor is not limited. The vibration motor 206 may also be equipped with an element that vibrates the surrounding air, such as a cone, but the vibration motor 206 may also have a structure in which the housing vibrates and produces sound. In other words, the vibration motor 206 is configured to produce sound by vibrating, depending on the design of the housing, etc. The vibration motor 206 can provide both physical vibration and sound to the user holding the game controller 200 in which the vibration motor 206 is housed.
[0091] The acceleration sensor 208 detects the magnitude of linear acceleration along three predetermined axes. The acceleration sensor 208 may also detect acceleration in one or two axes. The gyro sensor 209 detects the tilt, angular velocity, and angular acceleration of the game controller 200 and outputs the detection results to the operation data area 204B3.
[0092] The detection results from the accelerometer 208 and the gyroscope 209 are output to the processor 101. Based on the detection results from the accelerometer 208 and the gyroscope 209, the processor 101 in the game device 100 can calculate information regarding the movement and / or orientation of the game controller 200.
[0093] If the game controller 200 includes the functionality of a general-purpose mouse, the operation switch 210 may include, for example, a left-click receiver, a right-click receiver, and a cursor control unit. In addition to the left-click receiver, right-click receiver, and cursor control 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. The one button, key, and / or stick may include, for example, a button associated with letters such as A button and B button, a directional pad for inputting up, down, left, and right directions, and a 3D stick for inputting tilt direction and tilt amount. Furthermore, the operation switch 210 may also be a device for reading predetermined information, for example, an NFC (Near Field Communication) reader. Successful NFC reading may be included as a predetermined condition.
[0094] Figure 3 is a diagram illustrating the process of generating vibrations in the tactile or audible range using the vibration motor 206. First, the process for generating vibrations in the tactile range will be explained. Based on the occurrence of a vibration event, the game program 102P2 reads the 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.
[0095] The system program 102P1 sends a vibration command to the game controller 200 based on the vibration command data obtained from the game program 102P2. More specifically, the system program 102P uses the encoding program En to encode the obtained vibration command data and sends the encoded vibration command data and a vibration command containing the encoded vibration command data to the game controller 200. The MCU 201 uses the decoding program De to decode the encoded vibration command data.
[0096] Subsequently, the MCU 201 executes the vibration instruction program 2031 on the decoded vibration instruction data. The MCU 201 obtains the value of the mutual exclusion flag 2035 and performs processing according to the value of each flag included in the mutual exclusion flag 2035. If the vibration instruction program 2031 checks the value of the mutual exclusion flag 2035 and decides to perform vibration control based on the vibration instruction data, it generates control data based on the decoded vibration instruction data and stores it 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 tactile sensation. In this way, the vibration instruction data generated based on the vibration file 105A is encoded in the game device 100, decoded in the game controller 200, and processed to vibrate the vibration motor 206. Note that the encoding and decoding processes are not required.
[0097] Next, Figure 3 will be used to explain the output of the audible range by preset playback. At the preset registration timing, 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. The preset registration timing may be, for example, during loading when the execution of the game program 102P2 starts, at the start of gameplay, when entering a predetermined stage, or when a character in the virtual space moves to a predetermined map.
[0098] Based on receiving a preset registration request from the game program 102P2 via the preset registration API, the system program 102P1 sends a preset registration command to the game controller 200, which includes the preset PCM data PD1 and identification information handed over from the game program 102P2. Although not shown, in this embodiment, the system program 102P1 encodes the PCM data using the PCM encoding program PE1 and transmits the encoded PCM data. Alternatively, 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 area PD2 or preset data area PD3. This allows the game controller 200 to store the PCM data for outputting sound internally in advance.
[0099] The game program 102P2, when a sound event occurs that triggers the playback of preset PCM data, uses the preset playback API to request the system program 102P1 to play pre-registered preset PCM data on the game controller 200. When making this request, the game program 102P2 uses the preset playback API to pass identification information Pi1 associated with the preset PCM data PD1 to be played, and playback parameters indicating the playback parameters, to the system program 102P1. The playback parameters may include at least one of the following parameters for PCM data playback: volume, pitch, playback speed, equalizer, panning, and echo.
[0100] The system program 102P1 receives a request from the game program 102P2 using the preset playback API and sends a preset playback command containing the received identification information and playback parameters to the game device 100. When the MCU 201 receives the preset playback command, it 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. That is, the preset playback program 2032 stores the identified preset PCM data PD1 in the preset playback area 204B4.
[0101] At this time, the MCU 201 accesses the exclusive control flag 2035 and updates the preset playback flag Fg1 to True. Each sampled data of the identified preset PCM data PD1 is read sequentially and 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 value of the volume value data, which is a playback parameter. For example, if the volume value is 1, the sampled data is used as control data as is, and if the volume value is 0.5, the value obtained by multiplying the sampled data by 0.5 is stored as control data. The MCU 201 outputs each sampled data of the PCM data stored in the control data area 204B2 as control data to the amplifier 205. As a result, the vibration motor 206 vibrates based on the PCM 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 simply by transmitting the preset PCM data to the game controller 200 in advance, and the system program 102P1 sends identification information Pi1 to the game controller 200.
[0102] Next, we will explain the output of the audible range by the streaming playback described above. The game program 102P2, when a sound event occurs that triggers the playback of the streaming PCM data SD1, makes a request to the system program 102P1 using the streaming playback API to play the streaming PCM data SD1, such as when the game is running. This request includes one or more sampled data points that are sequentially read from the streaming PCM data SD1 to be played, and the playback parameters (volume value, etc.) described above.
[0103] The system program 102P1 sends 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, in this embodiment, the system program 102P1 encodes the streaming PCM data using the PCM encoding program PE1. However, the system program 102P1 may proceed with processing without encoding the streaming PCM data. The streaming playback command includes one or more sampled data points from the encoded streaming PCM data SD1 obtained from the game device 100 and playback parameters. Based on the receipt of 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 sampled data and playback parameters of the received streaming PCM data SD1 in the streaming playback area 204B5.
[0104] At this time, the MCU 201 accesses the exclusive control flag 2035 and updates the streaming playback 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 value of 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 sending streaming PCM data to the game controller 200 in response to the occurrence of a sound event.
[0105] Next, we will explain the output of the audible range using the amplitude-frequency specified playback described above. When a sound event occurs, such as during game execution, the game program 102P2 reads vibration instruction data (including parameters indicating frequency and amplitude) from the corresponding sound file 105B and passes it to the system program 102P1 using the vibration instruction API. Based on the fact that the vibration instruction data has been passed using the vibration instruction API, the system program 102P1 sends a vibration instruction command to the game controller 200. When using vibration instruction data, the processing is the same whether the frequency of the tactile range is specified (using vibration file 105A) or the frequency of the audible range is specified (using sound file 105B), so we will not repeat the explanation.
[0106] Next, the sound output by autonomous playback described above will be explained. The MCU 201 continues to execute the autonomous playback program 2034, for example, when power is supplied to the game controller 200. While the autonomous playback program 2034 is running, the MCU 201 determines whether predetermined conditions have been met. These predetermined conditions may be, for example, that the operation switch 210 has been operated, that the detected values of the acceleration sensor 208 and gyro sensor 209 are within a predetermined range, that a predetermined mouse operation has been performed, or a combination thereof.
[0107] When a predetermined condition is met, the MCU201 reads out autonomous playback data corresponding to that condition. The autonomous playback data is, 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. Figure 3 shows the case where the data is stored as PCM data in at least one of the preset data area PD2 and the preset data area PD3. The MCU201 accesses either the preset data area PD2 or the preset data area PD3 to obtain the PCM data which is the autonomous playback data, 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.
[0108] The following sections describe the processes executed for each game program 102P2, system program 102P1, and MCU201 using flowcharts.
[0109] [D. Preset Registration Process] Figure 4 is a flowchart showing the processing procedure for requesting preset registration in the game program 102P2. The processing shown in the flowchart in Figure 4 is realized when the processor 101 executes the game program 102P2, and execution begins based on the startup of the game program 102P2.
[0110] The processor 101 executing the game program 102P2 (hereinafter sometimes referred to as "the game program 102P2") determines whether or not it is a preset registration timing (step S100). If it is not a preset registration timing (NO in step S100), the game program 102P2 repeats the process in step S100. If it is a preset registration timing (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 process to step S100.
[0111] Figure 5 is a flowchart showing the processing procedure for issuing a preset registration command in the system program 102P1. The processing shown in the flowchart in Figure 5 is realized when the processor 101 executes the preset registration instruction program A1 included in the system program 102P1, and execution begins based on the supply of power to the game device 100.
[0112] The processor 101, which executes the preset registration instruction program A1 of the system program 102P1 (hereinafter sometimes referred to as "the system program 102P1"), determines whether or not 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 process in step 201. If the game program 102P2 has made a preset registration request (YES in step S201), the system program 102P1 obtains the preset PCM data PD1 to be registered, the identification information Pi1 corresponding to the preset PCM data PD1, and the playback parameters (step S202). The system program 102P1 sends a preset registration command including the obtained preset PCM data, identification information, and playback parameters to the game controller 200 (step S203), and returns the process to step S201. As described above, the system program 102P1 may encode the PCM data in step S203 and transmit the encoded PCM data.
[0113] Figure 6 is a flowchart showing the preset registration process in MCU program 203P. The flowchart shown in Figure 6 is realized when MCU 201 executes the preset registration program 2030. MCU 201, which executes the preset registration program 2030 of MCU program 203P (hereinafter sometimes referred to as "MCU program 203P"), determines whether or not it has received a preset registration command (step S251).
[0114] If 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 contained in the command in at least one of the preset data area PD2 and preset data area PD3 (step S252). If the PCM data received in step S251 is encoded, the MCU 201 decodes the encoded preset PCM data. If the MCU 201 of the game controller 200 does not receive a preset registration command (NO in step S251), it repeats the process in step S251. As a result, the MCU 201 of the game controller 200 can then output sound based on the previously registered preset PCM data when a preset playback command specifying identification information Pi1 is sent from the game device 100.
[0115] [E. Various playback requests by game program 102P2] Figure 7 is a flowchart showing various processing procedures performed by the game program 102P2 to control the vibration motor 206 in response to an event. The processor 101 that executes 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). A game object is, for example, an object operated by the user in the virtual space within the game, and may be a player character, a car in a car racing game, etc.
[0116] The game program 102P2 determines whether a vibration event 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 occurs 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 passes the vibration instruction data in the vibration file 105A corresponding to the vibration event that 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 pass the generated vibration instruction data to the system program 102P1.
[0117] If no vibration event has occurred (NO in step S303), the game program 102P2 determines whether a sound event 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).
[0118] If a sound event occurs (YES in step S305), the game program 102P2 determines whether preset playback, streaming playback, or amplitude-frequency-specified playback is associated with the sound event (step S306). Specifically, depending on whether the code of the game program 102P2 executed when the sound event occurs uses the preset playback API, the streaming playback API, or the vibration instruction API, either a request for preset playback instruction, a request for streaming playback instruction, or a request for playback instruction with specified amplitude and frequency is executed.
[0119] 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 passes the corresponding vibration instruction data (which includes frequency and amplitude parameters; frequencies in the audible range are specified) from the sound file 105B to the system program 102P1. The process in step S307 is the same as the process in step S304 (only the specified frequency is different).
[0120] If the code corresponding to the sound event that occurred is a code that uses 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 20ms of data contained in the streaming PCM data SD1 corresponding to the sound event that occurred and passes it to the system program 102P1, as well as passing playback parameters.
[0121] If the code corresponding to the sound event that occurred 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 the playback parameters to the system program 102P1.
[0122] After processing in steps S307, S308, and S309, the game program 102P2 determines whether there is any untransmitted streaming PCM data (step S310). That is, the game program 102P2 determines whether all the sampling data contained in the streaming PCM data SD1, which was started to play in step S308, has been passed to the system program 102P1. If all the sampling data contained in the streaming PCM data SD1 that is to be played has not been passed, the game program 102P2 determines that the streaming PCM data is still being played, i.e., that there is untransmitted streaming PCM data.
[0123] Then, the game program 102P2 sends the first 20ms of unsent streaming PCM data and playback parameters to request streaming playback (step S311). In this way, the game program 102P2 does not send all of the streaming PCM data SD1 at once, but passes one or more sampled data. In other words, the streaming PCM data SD1 is divided into 20ms of data and passed sequentially to the system program 102P1. After that, the game program 102P2 performs other processing necessary to advance the game (step S312), and then returns to step S301.
[0124] Thus, in the vibration control system 10 of this embodiment, the game program 102P2 can make control requests for the vibration motor 206 using various APIs in response to sound events.
[0125] [F. Preset playback processing by system program and MCU program] Figure 8 is a flowchart showing the processing procedure for issuing a preset playback command in the system program 102P1. The processing shown in the flowchart in Figure 8 is achieved when the processor 101 executes the preset playback command program A2 included in the system program 102P1. The processor 101 that executes 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 Figure 7 (step S401). If it has not received the preset playback request (NO in step S401), the processing in step S401 is repeated.
[0126] If a preset playback request is received (YES in step S401), the system program 102P1 obtains identification information Pi1 and playback parameters from the game program 102P2 (step S402). The system program 102P1 sends a preset playback command containing the obtained identification information Pi1 and playback parameters to the game controller 200 (step S403), and then returns the process to step S401.
[0127] Figure 9 is a flowchart showing the preset playback processing procedure by the MCU program 203P. The processing shown in the flowchart in Figure 9 is realized when the MCU 201 executes the MCU program 203P, and is initiated, for example, based on when power is supplied to the game controller 200 or when the game controller 200 is connected to the game device 100.
[0128] The MCU 201, which is executing the MCU program 203P (hereinafter sometimes referred to as "the MCU program 203P"), determines whether or not it has received a preset playback command (step S501). If it has not received a preset playback command (NO in step S501), the MCU program 203P repeats the process in step S501. If it has received a preset playback command (YES in step S501), the MCU program 203P updates the preset playback flag Fg1 in the exclusive control flag 2035 to True (step S502).
[0129] The MCU program 203P reads the preset PCM data PD1 corresponding to the identification information Pi1 contained 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).
[0130] The MCU program 203P sequentially reads the preset PCM data PD1 within the preset playback area 204B4 starting from the first sampled data, adjusts it according to the received playback parameters, and uses each sampled data (with a sampling rate of 0.125 ms period, i.e., a sampling rate of 8 kHz) as control data (step S505).
[0131] The MCU 201 determines whether the autonomous playback flag Fg3 is True or not (step S506). If the autonomous playback flag Fg3 is True (YES in step S506), the MCU program 203P reduces the voltage indicated by the control data set in S505 (for example, by 0.7 times). This prevents the voltage to be exceeded for the vibration motor 206 or amplifier 205 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% 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, but may be 8:2, 9:1, or 6:4.
[0132] If the autonomous playback flag Fg3 is False (NO in step S506), or after executing the process in step S507, the MCU program 203P writes one sample of the PCM data to the control data area 204B2 (step S508). The 0.125ms of control data written to the control data area 204B2 is transmitted to the amplifier 205 by DMA.
[0133] The MCU201 determines whether it has finished writing all the sampling data contained in the preset PCM data PD1 in the preset playback area 204B4 to the control data area 204B2 as control data (step S509). If the writing of all data is not complete (NO in step S509), the MCU201 returns to step 505. If the writing of all data is complete (YES in step S509), the MCU201 deletes the preset PCM data PD1 in the preset playback area 204B4, updates the preset playback flag Fg1 to False (step S510), and returns to step S501.
[0134] Thus, the MCU 201 can play preset PCM data simply by receiving identification information Pi1 from the system program 102P1. When multiple game controllers 200 are connected to the game device 100, sending the PCM data itself to each game controller 200 every time a sound event occurs may cause a delay in sound generation. In this embodiment, when a sound event occurs, only the identification information Pi1 is sent to each game controller 200, and the PCM data registered in advance on each game controller 200 is played, thereby suppressing a delay in sound generation on each game controller 200. Furthermore, since there is no communication of the PCM data itself between the game controller 200 and the game device 100 when a sound event occurs, sound output can be performed without data loss compared to sending PCM data in real time. Therefore, preset playback may be used for sounds that you want to output reliably.
[0135] [G. Streaming playback processing by system program and MCU program] Figure 10 is a flowchart showing the processing procedure for issuing a streaming playback command in the system program 102P1. The processing shown in the flowchart in Figure 10 is realized when the processor 101 executes the streaming playback instruction program A3 included in the system program 102P1. The processor 101 that executes the streaming playback instruction program A3 of the system program 102P1 (hereinafter sometimes referred to as "the system program 102P1") determines whether or not it has received a request using the streaming playback API shown in steps S308 and S311 of Figure 7 (step S601). If it has not received a request using the streaming playback API (NO in step S601), the processing in step S601 is repeated.
[0136] When a request using the streaming playback API is received (YES in step S601), the system program 102P1 obtains 20ms of streaming PCM data from the game program 102P2 (step S602). The system program 102P1 sends a streaming playback command containing the obtained 20ms of streaming PCM data to the game controller 200 (step S603), and then returns to step S601. That is, the processor 101 sends multiple sample data from the streaming PCM data SD1 to the game controller 200 at the same time. As described above, the system program 102P1 may encode the PCM data in step S603 and send the encoded PCM data.
[0137] Figure 11 is a flowchart showing the processing procedure for streaming playback in MCU program 203P. The MCU 201, which executes MCU program 203P (hereinafter sometimes referred to as "MCU program 203P"), determines whether or not it has received a streaming playback command (step S701). If it has not received a streaming playback command (NO in step S701), MCU program 203P repeats the process in step S701. If it has received a streaming playback command (YES in step S701), MCU program 203P determines whether or not the preset playback flag Fg1 is True (step S701A). If the preset playback flag Fg1 is True (YES in step S701A), MCU program 203P moves the process to step S710. As a result, the streaming playback process and the preset playback process are mutually exclusive, and the preset playback process takes precedence over the streaming playback process.
[0138] By replacing the preset playback flag Fg1 with the streaming playback flag Fg2, replacing the preset PCM data PD1 with the streaming PCM data SD1, and replacing the preset playback area 204B4 with the streaming playback area 204B5, steps S702 to S710 in Figure 11 correspond to steps S502 to S510 in Figure 9. Therefore, the explanation of steps S702 to S710 in Figure 11 will not be repeated.
[0139] In this way, the MCU201 can perform real-time sound output processing based on the occurrence of sound events by sequentially acquiring 20ms of streaming PCM data SD1. This eliminates the need to send PCM data in advance during the loading time of the game program 102P2, etc.
[0140] [H. Encoding and decoding processes when using vibration indication data] The following describes the generation of vibrations based on sound file 105B. Figure 12 is a diagram illustrating vibration instruction data based on sound file 105B. From left to right, Figure 12 shows sound file 105B, vibration instruction data 114 encoded from the sound file, and decoded vibration instruction data 110.
[0141] Sound file 105B stores vibration instruction data (data specifying the frequency and amplitude parameters of the vibration) that should be generated for each event. Figure 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 necessarily have to be stored in a file format in advance; it may be generated in real time.
[0142] Melody A is a sound related to music, such as background music during gameplay or the sound of instruments played in a virtual game space. In other words, a melody is a collection of sounds output sequentially, representing music. Melody A is a combination of multiple notes from the 12-tone equal temperament scale. Specifically, Melody A is composed of A0 output for 5ms, A#0 output for 5ms, and A1 output for 5ms. Melody A may also consist of many more notes, or it may be a single note. Sounds generated by sound events may include frequencies other than those of notes on the scale. Also, it may be a sound effect (SE) instead of a melody.
[0143] The frequencies of each musical note are predetermined. The frequency of A0 is 27.500 Hz, and in the example in Figure 12, an amplitude of 1.0 is specified for this A0 frequency. When you want to output the A0 note, a frequency of 27.500 Hz is specified, and a waveform signal with a frequency of 27.500 Hz, whose peak voltage is the maximum allowable voltage, is output to the vibration motor 206. However, the sound file 105B may specify the musical note itself instead of the frequency.
[0144] Next, frequency coding will be explained. The processor 101 generates the frequencies included in the coded vibration instruction data using the following frequency coding formula.
[0145] (Frequency coding formula) Coding frequency = 96 × log2(indicated frequency / 110) + 333...(Formula A) Since the frequency of A0 is 27.500 Hz, using the above frequency encoding formula, the encoded frequency is 141. In this embodiment, the encoded frequency is a non-negative integer. The value represented as "96" in the frequency encoding formula is sometimes referred to as the "first constant." The value represented as "110" in the encoding formula is sometimes referred to as the "second constant." The value represented as "333" in the encoding formula is sometimes referred to as the "third constant." The frequency encoding formula uses each note on the 12-tone equal temperament scale as the basis for encoding.
[0146] If a frequency of 29.135Hz is indicated, the frequency coding formula yields 149. In this case, the note "A#0" is indicated. If a frequency of 55.000Hz is indicated, the frequency coding formula yields 237. In this case, the note "A1" is indicated.
[0147] Next, the encoding of amplitude will be explained. The processor 101 encodes the amplitude included in the vibration instruction data using the following amplitude encoding formula. The amplitude is encoded linearly in the encoding process. Linear encoding means that the encoded value is proportional to the amplitude value. In this embodiment, the value is encoded into 1024 equal parts in proportion to the amplitude value, from 0 to 1.0.
[0148] (Amplitude encoding formula) Encoded amplitude = amplitude × 10²³ ... (Formula B) In the example shown in Figure 12, the amplitudes indicated by the vibration instruction data are all 1.0. Therefore, using the above amplitude encoding formula, the encoded amplitude becomes 1023.
[0149] The processor 101 generates coded vibration instruction data 114, which includes coded frequency and coded amplitude. The coded vibration instruction data 114, including coded frequency and coded amplitude, is then transmitted from the game device 100 to the game controller 200. The processor 202 of the game controller 200 decodes the coded vibration instruction data 114 using the frequency decoding program De1. The processor 202 decodes the coded frequency using the following frequency decoding formula. Note that the frequency decoding formula is a modified version of the frequency coding formula and is essentially the same formula.
[0150] (Frequency decoding formula) Decoded frequency = 110 × 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" in the frequency encoding formula, respectively.
[0151] If the coding frequency is 141, the decoding frequency calculated using the decoding formula is 27.500 Hz. If the coding frequencies are 149 and 237, the decoding frequencies calculated using the decoding formula are 29.135 Hz and 55.000 Hz, respectively.
[0152] The vibration instruction data shown in Figure 12 shows that the numerical values of the frequencies indicated before encoding and after decoding remain unchanged, and the 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 any of the notes of the 12-tone equal temperament scale is instructed, the frequency of each note of the 12-tone equal temperament scale is maintained, and the data can be output from the vibration motor 206 without degradation.
[0153] Next, we will explain amplitude decoding. Processor 202 decodes the encoded amplitude using the following amplitude decoding formula.
[0154] (Amplitude decoding formula) Decoded amplitude = Encoded amplitude / 1023 ... (Formula D) The processor 202 rounds the value calculated using the above amplitude decoding formula to the nearest whole number. As a result, as shown in Figure 12, the decoded amplitude is the same as the value before encoding.
[0155] Figure 13 is a table showing the relationship between the frequencies of musical scales in 12-tone equal temperament and their encoded frequencies. Figure 13 shows some musical scales in 12-tone equal temperament and the frequencies corresponding to those scales. 12-tone equal temperament is a musical scale that expresses one octave interval by dividing it into 12 equal parts. For example, the piano scale consists of 88 notes, including "A0", "A#0" to "B7", and "C8". A frequency is predetermined 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) It can be expressed as a geometric sequence.
[0156] The lowest of the 88 notes is "A0," with a frequency of 27.500 Hz. The next lowest note is "A#0," with a frequency of approximately 29.135 Hz. The frequency of "A#0," which is one tone higher than "A0," is equal to the frequency of "A0" (2). (1 / 12) This is the value obtained by multiplying by ). 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-tone equal temperament are also shown in Figure 13. In this embodiment, the frequency of the musical scale is indicated as a value rounded to the fourth decimal place, but in certain situations, a frequency value including values beyond the fourth decimal place may be indicated.
[0157] 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-tone equal temperament system, the frequency doubles when the note is one octave higher.
[0158] common ratio 2 (1 / 12)The "12" in the denominator of the exponent represents the number of notes contained within one octave. By changing the denominator in the exponent of the common ratio, other equal temperaments such as 5-tone, 7-tone, 15-tone, and 17-tone can be represented.
[0159] As explained above, in this embodiment, the coded frequency is decoded using the following frequency decoding formula to obtain the decoded frequency. (Frequency decoding formula) Decoded frequency = 110 × 2 (符号化周波数-333) / 96 In this embodiment, the coding frequency can take values from 0 to 1023. Therefore, the minimum value of the decoding frequency is 110. (-333 / 96) The value obtained by multiplying by , that is, "9.936Hz" when the coding frequency shown in Figure 13 is 0. The maximum value of the decoding frequency is 110 multiplied by 2 ((1023-333) / 96) The value obtained by multiplying by , that is, "16034.140Hz" when the coding frequency shown in Figure 13 is 1023. The common ratio of the sequence that can be represented by the decoding frequency is 2 (1 / 96) That is the case.
[0160] In the frequency decoding formula, 110 is a multiple of 27.5, the first term of the 12-tone equal temperament. In the frequency decoding formula, 96 is a multiple of 12, representing the number of notes contained in one octave. The minimum decoding frequency of 9.936 Hz is greater than the frequency of A0, the lowest note in the 12-tone equal temperament (27.500 Hz), and the maximum decoding frequency of 16034.140 Hz is less than the frequency of C8, the highest note in the 12-tone equal temperament (4186.009 Hz). From this, it can be seen that the above frequency decoding formula represents a sequence that includes all the frequencies of the 88 notes in the 12-tone equal temperament, and also includes more than 88 frequencies. The decoding frequency can represent all the frequencies of the 88 notes in the 12-tone equal temperament.
[0161] Therefore, as explained in Figure 13, the frequencies corresponding to "A0", "A#0", and "A1" in the 12-tone equal temperament scale are output while maintaining their respective frequencies during decoding. Using the above frequency encoding and decoding formulas, it is possible to encode and decode all of the 88 notes included in the 12-tone equal temperament while maintaining their frequencies.
[0162] Thus, in this embodiment, the encoding and decoding of vibration instruction data takes sound frequency into consideration, but it is also acceptable to do not take sound frequency into consideration.
[0163] Figure 14 is a diagram illustrating vibration instruction data based on vibration file 105A. Figure 14 illustrates that the vibration motor 206 is controlled based on vibration file 105A in addition to sound file 105B. Figure 14 shows vibration file 105A, sound file 105B, encoded vibration instruction data 114, and decoded vibration instruction data 110. The contents of vibration file 105A and sound file 105B in Figure 14 are described below.
[0164] Vibration file 105A, like sound file 105B, includes the event name, event occurrence conditions, and frequency and amplitude as data representing the vibration content. The data containing the first to third vibration events is an example of vibration file 105A. The data containing the first to third sound events is an example of sound file 105B in Figure 14.
[0165] Figure 14 shows an example of vibration file 105A and sound file 105B when the game program 102P2 is an adventure game. The processor 101 that runs the game program 102P2 generates vibration instruction data based on frequency and amplitude parameters that represent the vibration content in vibration file 105A and sound file 105B. For example, in response to the first vibration event, vibration instruction data (100, 1.0) is generated.
[0166] The event named "First Vibration Event" is associated with two objects, "Sword" (Object 1) and "Sword" (Object 2), 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 the virtual space. The event named "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 100Hz is output to the vibration motor 206, with the peak voltage being the maximum voltage that the vibration motor 206 can tolerate at a frequency of 100Hz.
[0167] The second vibration event is the collision of the sword and shield in the virtual space. During the second vibration event, a waveform signal with a frequency of 50Hz is output to the vibration motor 206, with a peak voltage of 80% of the maximum allowable voltage value at a frequency of 50Hz.
[0168] The third vibration event is the collision of a sword and a rock in the virtual space. During the third vibration event, a waveform signal with a frequency of 50Hz is output to the vibration motor 206, with a peak voltage of 70% of the maximum allowable voltage value at a frequency of 50Hz.
[0169] The event named "First Sound Event" is associated with object 1 "Sword" and object 2 "Sword". The first sound event is an event that generates sound to represent the sound of two sword objects colliding in the game's virtual space. The event named "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 2000Hz is output to the vibration motor 206, with the peak voltage being the maximum voltage value that the vibration motor 206 can tolerate at a frequency of 2000Hz.
[0170] The second sound event is the collision of a sword and a shield in the virtual space. In the second sound event, a waveform signal with a frequency of 1000Hz is output to the vibration motor 206, with a peak voltage of 80% of the maximum allowable voltage value at 1000Hz. The third sound event is the collision of a sword and a rock in the virtual space. In the third sound event, a waveform signal with a frequency of 700Hz is output to the vibration motor 206, with a peak voltage of 70% of the maximum allowable voltage value at 700Hz.
[0171] Thus, in this embodiment, when objects in the virtual space collide, two vibration instruction data are generated, one for vibration and the other for sound. 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. As a result, the game controller 200 can output both vibration and sound at the same time to represent the collision of objects in the virtual space.
[0172] Next, we will explain the encoding of the frequency in Figure 14. Since the frequency indicated 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 becomes 319.7996617, and the encoded value is an integer, which is 319. Subsequently, the processor 101 performs an approximation value determination process to determine whether "319" or "320" is appropriate as the encoded frequency. The approximation value determination process will be explained later. As a result of the approximation value determination process, as shown in Figure 14, the encoded frequency based on the first vibration event is 320.
[0173] For the second and third vibration events, which are indicated with a frequency of 50 Hz, the frequency coding formula (Equation A) yields 223.7996617, and the coded value is 223. As a result of the approximation process, the coded frequency is "224", as shown in Figure 14. Similarly, Figure 14 also shows the coded frequencies for 2000 Hz, 1000 Hz, and 700 Hz.
[0174] Since the amplitude indicated by the vibration indication data based on the first vibration event is 1.0, using the above amplitude encoding formula (Equation C), the encoded amplitude is 1023. For the second vibration event and second sound event, where an amplitude of 0.8 is indicated, using the amplitude encoding formula (Equation C), 818.4 is calculated. In the case of amplitude, decimal values are rounded to the nearest integer. Figure 14 shows the value "818" rounded to an integer as the encoded frequency. Examples of other data for amplitude encoding are omitted.
[0175] If the coding frequency is 320, the decoding frequency calculated using the decoding formula (Equation B) is 100.1447546 Hz. The processor 202 sets the number of significant digits for the floating point (for example, 6 decimal places). That is, the decoding frequency based on the first vibration event becomes 100.145 Hz. Figure 14 shows the decoding frequencies obtained using the above frequency decoding formula (Equation B) for events other than the first vibration event. The processor 202 rounds the value calculated using the above amplitude decoding formula (Equation D) to the nearest whole number. As a result, as shown in Figure 14, the decoding amplitude is the same value as before coding.
[0176] Figure 15 is a flowchart showing the encoding procedure for vibration instruction data executed by the game device 100. The system program 102P1 determines whether or not it has received a request using the vibration instruction API shown in steps S304 and S307 of Figure 7 (step S800). If it has not received a request using the vibration instruction API from the game program 102P2 (NO in step S800), the process in step S800 is repeated.
[0177] The system program 102P1 obtains 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 parameter is adjusted considering the maximum input voltage at the specified frequency (the specified amplitude is reduced at frequencies where vibration is more likely, depending on the ease of vibration at each frequency). The system program then performs frequency clamping (step S802). Clamping is an exception handling procedure for cases where the vibration instruction data specifies a frequency that exceeds the range of frequencies that can be represented by the decoding formula (formula C) described above.
[0178] As mentioned above, the minimum decoding frequency is "9.936Hz" and the maximum decoding frequency is "16034.140Hz". Therefore, in step S801, if the processor 101 receives a frequency smaller than "9.936Hz" from the game program 102P2, it rewrites the frequency included in the vibration instruction data to "9.936Hz". Also, in step S801, if the processor 101 receives a frequency larger than "16034.140Hz" from the game program 102P2, it rewrites the frequency included in the vibration instruction data to "16034.140Hz".
[0179] Next, the system program encodes the frequencies included in the vibration instruction data based on the above frequency encoding formula (Formula A) (step S803). That is, the encoded frequencies are calculated. Subsequently, the system program performs rounding to truncate the decimal part of the encoded frequencies calculated in step S803 (step S804).
[0180] The system program decodes the coded frequency calculated in step S804, and the value obtained by adding 1 to that coded frequency, using the above-described 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 decoded frequency obtained by decoding the coded frequency calculated in step S804, or the decoded frequency obtained by decoding the coded frequency with 1 added in step S805 (step S806). Note that in step S805, if a table of frequency values and coded values is available, it is not necessary to calculate the decoded value each time.
[0181] If the decoded frequency obtained by decoding the coded frequency added 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 coded frequency to the value of the coded frequency added in step S805 (step S807). If the decoded frequency obtained by decoding the coded 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 uses the coded frequency calculated in step S804 as the coded frequency. The process of calculating the fractional part of the frequency shown in steps S804 to S807 corresponds to the "approximate value identification process" described above.
[0182] The system program determines whether the sum of the amplitudes included in vibration instruction data that instruct vibrations at the same time exceeds 1 (step S808). Vibration instruction data that instruct vibrations at the same time include, for example, the vibration instruction data based on the first vibration event and the vibration instruction data based on the first sound event, as explained in Figure 14. Note that the start and end times of the vibrations do not have to be the same; it is sufficient if they partially overlap.
[0183] The system program updates the amplitude of each vibration instruction data to prevent vibrations from occurring at the same time with an amplitude greater than 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 is greater than 1 (YES in step S808). In this case, the processor 101 performs the amplitude update process (step S809).
[0184] The amplitude update process recalculates the amplitudes so that the sum of the indicated amplitudes becomes "1.0" while maintaining the ratio between the indicated amplitude of the first vibration event and the indicated amplitude of the first sound event. Since the ratio between the indicated amplitude of the first vibration event and the indicated amplitude of the first sound event is 1:1, the indicated amplitudes of the first vibration event and the first sound event are updated to "0.5" and "0.5", respectively.
[0185] Next, the system program encodes the amplitudes 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 and encodes the amplitudes 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 rounding on the encoded amplitude based on rounding to the nearest whole number (step S811). In addition, in the encoding of amplitude, similar to the frequency encoding process shown in steps S805 to S807, decoding may be performed on both the encoded amplitude and the value obtained by adding 1 to the encoded amplitude, and a value close to the original amplitude may be adopted.
[0186] The system program passes encoded vibration instruction data, including encoded frequency and encoded amplitude, to the game controller 200 (step S812), and returns the process to step S800.
[0187] Figure 16 is a flowchart showing the decoding procedure for encoded vibration instruction data executed by the game controller 200. The MCU program determines whether or not it has received encoded vibration instruction data (step S900). If it has not received encoded vibration instruction data (NO in step S900), the MCU program repeats the process in step S900. If it has received encoded vibration instruction data (YES in step S900), the MCU program obtains 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.
[0188] The MCU program decodes the encoded amplitude based on the above amplitude decoding formula (formula D) (step S903). That is, the decoded amplitude is calculated. Based on the decoded frequency and decoded amplitude, the MCU program stores the decoded vibration instruction data in the vibration instruction data area 204B1 (step S904).
[0189] Thus, in this embodiment, by using the above-described frequency encoding and decoding formulas, it becomes possible to perform encoding processing that takes sound into consideration while suppressing the amount of communication between the game device 100 and the game controller 200.
[0190] The following explains an example where some constants are changed from the above encoding formula. In the frequency encoding and decoding formulas, the first constant only needs to be a multiple of the number of notes in a single scale. In equal temperament, it is possible to determine the frequency ratio of a scale from the number of notes in a single scale. If the temperament to be represented is 12-tone equal temperament, the first constant only needs to be a multiple of 12. If the temperament to be represented is 7-tone 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: 5-tone equal temperament, 7-tone equal temperament, 12-tone equal temperament, 15-tone equal temperament, 17-tone equal temperament, 19-tone equal temperament, 22-tone equal temperament, 31-tone equal temperament, 34-tone equal temperament, 41-tone equal temperament, 53-tone equal temperament, and 72-tone equal temperament.
[0191] In the frequency encoding and decoding formulas, the second constant may be the frequency of any note in equal temperament, or it may be the value obtained by multiplying the frequency of any note in equal temperament 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 decoding frequency will include the frequencies of each note in equal temperament. The second constant may also be a multiple of the lowest note (27.500 Hz) included in equal temperament. For example, the second constant can be a value such as 55, 82.5, 110, 137.5, or 220.
[0192] The third constant shifts the range of representable frequencies in the coding formula (Equation A), and should be determined according to the lower and upper limits of the frequencies to be representable.
[0193] [Processing of amplitude-frequency-specified playback by I.MCU (processing when vibration instruction data is used)] The following describes how control data is generated using the decoded vibration instruction data stored in the vibration instruction data area 204B1 in step 904. Figure 17 is a flowchart showing the processing procedure for generating control data based on vibration instruction data, which is performed 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 the voltage value for driving the vibration motor 206, and is data indicating the voltage value at each moment of the waveform with a specified frequency and amplitude. In other words, the data indicating the voltage value at each moment is an instantaneous value. Hereinafter, the control data is output at predetermined intervals, and this interval is referred to as a "control cycle".
[0194] The MCU201 generates a number of control data points from one vibration instruction data point, calculated by dividing the vibration instruction cycle (the cycle of instruction based on the vibration instruction data) by the control cycle. In this embodiment, the vibration instruction cycle is 5 ms and the control cycle is 0.125 ms, so the processor 202 generates 40 control data points from one vibration instruction data point. Based on the frequency and amplitude values of the decoded vibration instruction data 110, a reference waveform is determined for each control cycle (0.125 ms). The reference waveform is a waveform determined for each control cycle and is used to identify the voltage value to be output as control data. The processor 202 determines the voltage value to be output as control data based on the reference waveform.
[0195] The process shown in the flowchart in Figure 17 is realized by the processor 202 executing the MCU program 203P. The process shown in the flowchart in Figure 17 is initiated, for example, based on the supply of power to the game controller 200.
[0196] The volatile memory 204 is provided with three areas for the decoded vibration instruction data: a current amplitude data area 204V1, a current frequency data area 204V2, and a current phase data area 204V3. These areas are for storing the current amplitude data, current frequency data, and current phase data, respectively.
[0197] 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 a separate area of the volatile memory 204. Specifically, the current amplitude data and current frequency data are stored in the previous amplitude data area 204V4 and the previous frequency data area 204V5 as previous amplitude data and previous frequency data, respectively (step S1001). Note that when the flowchart shown in Figure 17 is executed for the first time after the game controller 200 is started, the processor 202 stores "0V" as the value of the current amplitude data and the value of the previous amplitude data, "0Hz" as the value of the current frequency data and the value of the previous frequency data, and "0 degrees" as the value of the current phase data as part of the initialization process.
[0198] The processor 202 determines whether encoded vibration instruction data exists in the vibration instruction data area 204B1 (step S1002). If encoded vibration instruction data does not exist in the vibration instruction data area 204B1 (NO in step S1002), the processor 202 performs a termination process (step S1003). The termination process may, for example, involve setting the amplitude value of the vibration instruction data to "0", generating new vibration instruction data by setting the value of the previously saved frequency data area 204V5 in step S1001 as the frequency value of the vibration instruction data, and storing it in the vibration instruction data area 204B1.
[0199] As a result, after the vibration caused by the encoded vibration instruction data 110 instructed by the game program 102P2 has finished, control data that gradually decreases to 0 is generated by the processing of S1006 to S1014 described below. This vibration is also called the termination 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.
[0200] Furthermore, after the vibration instruction data stored in step S1003 is processed in S1004 to S1015, when 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 in subsequent processing, control data with a voltage value of zero is output. Thus, in this embodiment, when the vibration caused by the vibration instruction data instructed by the game program 102P2 ends and there is no vibration instruction data in the vibration instruction data area 204B1, control data with a voltage value of zero continues to be output.
[0201] Next, the processor 202 retrieves the first vibration instruction data in the vibration instruction data area 204B1 and deletes that vibration instruction data from the vibration instruction data area 204B1 (step S1004). The beginning of the vibration instruction data area 204B1 stores the vibration instruction data that was stored in the vibration instruction data area 204B1 earliest. In step S1002, if vibration instruction data exists in the vibration instruction data area 204B1 (YES in step S1002), the processor 202 executes the process in step S1004.
[0202] The processor 202 determines whether the preset playback flag Fg1 or the streaming playback flag Fg2 is True (step S1005). If the preset playback flag Fg1 or the streaming playback flag Fg2 is True (YES in step S1005), the processor 202 discards the acquired vibration instruction data (step S1017) and returns to step S1001. As a result, playback of control data based on vibration instructions is not performed during preset playback or streaming playback. In other words, mutual exclusion is performed between preset playback, streaming playback, and vibration instruction processing, with vibration instruction processing having the lowest priority.
[0203] If the preset playback flag Fg1 or the streaming playback 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 the vibration has been continuing from before, and the process proceeds to the vibration continuation flow from step S1006 onwards. In other words, the state of vibration continuing from before is a state where vibration has not started from a state of no vibration.
[0204] 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 used to repeat the process 40 times in order to generate 40 pieces of control data.
[0205] In step S1008, the processor 202 assigns a value to the current amplitude data. In step S1008, the processor 202 subtracts the value of the previous amplitude data from the indicated amplitude value. The indicated amplitude value refers to the amplitude value shown in the encoded vibration indication data, and the indicated frequency refers to the frequency shown in the encoded vibration indication data. The processor 202 multiplies the result of the subtraction by the value obtained by dividing the number stored in the count variable X by 40. The processor 202 adds the previous amplitude data to the result of the multiplication and stores the resulting value in the current amplitude data (step S1008).
[0206] 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 indicative frequency. The processor 202 multiplies the result of the subtraction by the value obtained by dividing the number 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).
[0207] In steps S1008 and S1009, the current amplitude data and current frequency data stores the amplitude and frequency of the reference waveform used to generate the control data. In step S1010, the processor 202 assigns a value to the current phase data. Specifically, the processor 202 advances the current phase data value by 0.125 ms based on the current frequency data value. Next, the 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, as described above, the instruction amplitude data is normalized data with respect to the maximum voltage for each instruction frequency, so the control data is generated by referring to the maximum voltage value corresponding to the frequency indicated by the current frequency data.
[0208] The processor 202 determines whether the autonomous regeneration flag Fg3 is True or not (step S1012). If the autonomous regeneration flag Fg3 is True (YES in step S1012), the processor 202 multiplies the voltage indicated by the generated 0.125ms of control data by 0.7. This makes it possible to simultaneously perform the autonomous regeneration process described later and vibration induced by vibration commands without exceeding the predetermined maximum voltage for the vibration motor 206 or amplifier 205, similar to step S507 in Figure 9.
[0209] If the autonomous playback flag Fg3 is False (NO in step S1012), or after executing the process in step S1013, the processor 202 determines the amplitude and current phase based on the current amplitude data value, current frequency data value, and current phase data value, and generates control data corresponding to the voltage value to be output to the amplifier 205. More specifically, the processor 202 determines a reference waveform from the current amplitude data value and the current frequency data value, generates 0.125ms of control data for the voltage value at the phase indicated by the current phase data value in that reference waveform, and writes the generated control data to the control data area 204B2 (step S1014). The 0.125ms of control data written to the control data area 204B2 is transmitted to the amplifier 205 by DMA. The control data written to the control data area 204B2 is transmitted to the amplifier 205 by DMA, and the amplifier 205 amplifies the voltage to a voltage value corresponding to the control data written to the control data area 204B2, and applies the amplified voltage to the vibration motor 206.
[0210] Processor 202 assigns the current value of count variable X plus 1 to the count variable X (step S1015). Processor 202 determines whether the value of count variable X has exceeded 40 (step S1016). If the value of count variable X has not exceeded 40 (NO in step S1016), processor 202 returns to step S1008.
[0211] If the value of the counting variable X exceeds 40 (YES in step S1016), the processor 202 returns to step S1001. The value of the counting variable X exceeding 40 means that the generation of 40 control data corresponding to the vibration instruction data acquired in step S1004 has been completed. In other words, it means that the processing of the acquired vibration instruction data has been completed.
[0212] As shown in steps S1008 to S1011, when the amplitude and frequency are specified by vibration instruction data, the vibration control system 10 of this embodiment performs a process that gradually approaches the specified amplitude and frequency from the previous amplitude and frequency values. This is called interpolation. Note that this interpolation is not performed at the start of vibration. Furthermore, the processing in steps S1008 to S1011 generates 40 control data points that are output every 0.125 ms for one vibration instruction data point.
[0213] Returning to step S1006, if the value of the previous amplitude data is 0 (NO in step S1006), the processor 202 determines that vibration has started and executes the start process (step S1018). The case where the value of the previous amplitude data is 0 is when the vibration motor 206 starts operating from a stopped state. Alternatively, in step S1006, it may be determined that the previous amplitude data is approximately zero. In addition, 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, the start process is executed if the previous amplitude data is 0, or if the previous amplitude data is not 0 but the control data is 0 due to the phase. In this case as well, it may be determined that it is approximately zero.
[0214] Figure 18 is a flowchart showing the processing procedure for the start process in step S1018. The processing in the flowchart shown in Figure 18 is started when the processor 202 executes step S1018 in Figure 17. That is, in step S205, if the value of the previous amplitude data saved in step S1001 is 0, the flowchart in Figure 18 is executed.
[0215] The processor 202 assigns 1 to the counting variable X (step S1101). The processor 202 assigns the instructed amplitude value to the current amplitude data (step S1102). This allows the amplitude value to quickly become the instructed value at the start of vibration, thereby enhancing the effect of the shock vibration. The processor 202 also assigns the instructed frequency to the current frequency data (step S1103). The processor 202 assigns a phase value to the current phase data that is 0.125 ms ahead of the value assigned to the current phase data, based on the frequency assigned to the current frequency data (step S1104).
[0216] The processor 202 calculates the voltage value that the amplifier 205 should output based on the current amplitude data and current phase data, and writes the control data corresponding to the calculated voltage value to the control data area 204B2 (step S1105). The processor 202 assigns the value of the count variable X to the current count variable X plus 1 (step S1106). Then, the processor 202 determines whether the value of the count variable X has exceeded 40 (step S1107).
[0217] If the value of the counting variable X is not greater than 40 (NO in step S1107), the processor 202 returns to step S1102. If the value of the counting variable X is greater than 40 (YES in step S1107), the processor 202 terminates the process shown in the flowchart of Figure 18. After that, the processor 202 executes the process shown in step S1001 of Figure 17.
[0218] As described above, the vibration control system 10 in this embodiment can finely control the vibration waveform by determining control data corresponding to the voltage value for each control cycle. When changing the amplitude value, noise may be generated if the voltage value is not changed from 0V. Therefore, the vibration control system 10 gradually changes the amplitude value in units of control cycles (0.125ms) by executing steps S1008 to S1011. On the other hand, in order to prevent the generation of noise, the change in amplitude value may be waited until the voltage value becomes 0V, but this would delay the timing of the change in amplitude value. The vibration control system 10 in this embodiment usually suppresses the generation of noise by gradually changing the amplitude value or frequency value within the vibration instruction cycle (5ms), and if the previous voltage value was 0V, it controls the system to become the instruction amplitude value, so that it can generate vibrations with a good rise time while suppressing the generation of noise.
[0219] [J. Autonomous Regeneration Process] Figure 19 is a flowchart showing the processing procedure for autonomous regeneration in the MCU program 203P. The processing shown in the flowchart in Figure 19 is realized when the MCU 201 executes the MCU program 203P, and is started based on, 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, the autonomous regeneration function can be turned on / off via the user interface during processing by the system program 102P1 of the game device 100. When the user sets it to "on", an autonomous regeneration function on / off flag (not shown) stored in the non-volatile memory of the MCU 201 is set to "on", and when the user sets it to "off", the flag is set to "off". Although not shown, in the processing of Figure 19, it may be determined first (for example, before processing S1201) whether this flag is on or off, and if it is on, processing from S1201 onwards may be started.
[0220] In this embodiment, the game controller 200's processor 202 determines whether a predetermined condition has been met based on the information input to the game controller 200. If the predetermined condition is met, it outputs 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.
[0221] The MCU program 203P specifies what kind of sound is output when the predetermined conditions are met. That is, for each condition, PCM data or frequency and amplitude parameters are associated with playback parameters. The game controller 200 may store the sound information for autonomous playback as preset PCM data as described above, or it may store the sound information for autonomous playback as frequency and amplitude parameters.
[0222] Furthermore, in the game controller 200, 30% of the predetermined maximum voltage for the amplifier 205 or vibration motor 206 is set as the upper limit of the voltage available for self-playback. This allows self-playback and other sound playback to be performed simultaneously, as described in steps S506, S507 in Figure 9, steps S706, S707 in Figure 11, and steps S1012, S1013 in Figure 17.
[0223] Referring to Figure 19, the MCU 201, which executes the MCU program 203P, determines whether the predetermined conditions for autonomous regeneration have been met (step S1201). If the predetermined conditions have not been met (NO in step S1201), the MCU 201 repeats the process in step S1201. If the predetermined conditions have been met (YES in step S1201), the MCU 201 updates the autonomous regeneration flag Fg3 in the mutual exclusion flag 2035 to True (step S1202).
[0224] The MCU 201 stores the sound information associated with the fulfilled predetermined condition in the autonomous playback area 204B6 (step S1203). As described above, in this embodiment, the sound information for autonomous playback is pre-stored in the preset data area PD2 as PCM data for autonomous playback, but the sound information for autonomous playback 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 identifies one PCM data from the PCM data stored in the preset data area PD2 that corresponds to the fulfilled condition using identification information.
[0225] 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, it reads the sampled data of the PCM data stored in the autonomous playback area 204B6 sequentially from the beginning and writes it to the control data area 204B2 (step S1206). The 0.125ms of control data written to the control data area 204B2 is transmitted to the amplifier 205 by DMA.
[0226] The MCU program 203P determines whether all the sampled data contained in the PCM data of the autonomous regeneration area 204B6 has been written to the control data area 204B2 as control data (step S1207). If the writing of all data is not complete (NO in step S1207), the MCU 201 returns to step S1205. If the writing of all data is complete (YES in step S1207), the MCU 201 deletes the PCM data of the autonomous regeneration area 204B6, updates the autonomous regeneration flag Fg3 to False (step S1208), and returns to step S1201.
[0227] Thus, the MCU 201 is configured to output sound using the vibration motor 206 as a function of the game controller 200 itself, without receiving instructions from the game device 100. This enhances the enjoyment of games played using the game controller 200. The above-mentioned predetermined conditions may be changed based on instructions from the game program 102P2, including the content of the predetermined conditions, the sound information associated with those predetermined conditions, and the playback parameters.
[0228] [K. Variant] The following describes variations. Above, an example was described 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 in the system program 102P1, and some or all of the processing performed in the system program 102P1 may be performed in the game program 102P2. Furthermore, the PCM data transmitted to the game controller 200 may differ, for example, depending on the type of game controller 200.
[0229] The flowchart described above may include other processes besides those illustrated, or it may omit some processes. Furthermore, the order of the processes is just an example; for example, the processes may be executed simultaneously or in reverse order. Also, although each process is described separately for convenience, it may be a single integrated process. Furthermore, each process may be executed at predetermined intervals (e.g., every processing frame, every 1 / 30th of a second). Also, even when the same terminology is used to describe data above, the data does not need to be exactly the same. At a minimum, if a substantial amount of information is conveyed between one piece of data and another, they may be considered the same data. The names of the data do not limit the scope of what the data represents.
[0230] Furthermore, "processor" may mean one or more processors within a single device, such as the main unit in a game device 100, or it may mean some or all of the one or more processors that each of multiple devices possesses, such as the main unit and a controller, or the main unit, a controller, and a server. The same applies to "memory."
[0231] Furthermore, the program that causes the computer to execute each process may be a single program or a group of programs. "A certain program" does not necessarily mean a single program, but may include a group of programs. Also, programs do not necessarily have to be stored in a single device. "A certain program" may, for example, mean the totality of each program stored in multiple devices included in an information processing system. At least a part of the series of processes described above may be executed by a server in an information processing system that includes a game device 100 and a server that can communicate via a network. The server may be composed of multiple information processing devices, and the processing may be divided and executed by multiple information processing devices.
[0232] The embodiments disclosed herein should be considered in all respects to be illustrative and not restrictive. The scope of the present invention is indicated by the claims rather than by the foregoing description, and all modifications within the meaning and scope equivalent to the claims are intended. [Explanation of Symbols]
[0233] 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 Accelerometer, 209 Gyroscope, 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 flag, Fg2 Streaming playback flag, Fg3 Autonomous playback flag, LnOFF dotted line, LnON solid line, Pi1 Identification information, Pi2 Identification information area.
Claims
1. A vibration control system comprising a vibration device capable of reproducing sound frequency bands, A storage means in which identification information and sound data associated with said identification information are pre-set, A means for executing an application program and, in response to the occurrence of a sound event, specifying the identification information and issuing a preset playback instruction, A means for reading the sound data from the storage means based on the identification information in response to the preset playback instruction, A vibration control system comprising means for controlling the vibration device using control data based on the sound data read out.
2. In the above control, control is performed based on control data with a predetermined update cycle. The vibration control system according to claim 1, wherein the sound data is PCM data sampled at the same frequency as the predetermined update cycle.
3. The vibration control system according to claim 1, wherein the sound data is PCM data sampled at the same period as the sampling rate of the amplifier that controls the vibration device.
4. The aforementioned sound data is PCM data. The aforementioned preset playback instruction specifies parameters related to the output of PCM data, in addition to the identification information. The vibration control system according to claim 1 or claim 2, wherein the control data is adjusted based on the parameters in the control.
5. It comprises an information processing device and a controller, The storage means is provided by the controller, The information processing device performs the execution of the application program and the preset playback instruction. The vibration control system according to claim 1 or claim 2, wherein the readout and control are performed by the controller.
6. The application program includes the identification information and the sound data, The execution of the application program provides a means for sending a preset instruction to the controller to preset the identification information and the sound data, The vibration control system according to claim 4, further comprising means for causing the storage means to store the identification information and the sound data based on the preset instructions.
7. The application program includes the identification information and the sound data, The vibration control system according to claim 1 or 2, wherein the preset instruction is made at a timing prior to the occurrence of the sound event by the execution of the application program.
8. The system further comprises means for issuing vibration instructions to vibrate the vibration device by specifying the amplitude and frequency in response to the occurrence of vibration events due to the execution of the application program, The vibration control system according to claim 1 or 2, wherein, in the control described above, control data is generated based on the specified amplitude and frequency in response to the vibration instruction, and the vibration device is controlled using the generated control data.
9. The vibration control system according to claim 8, wherein the specified frequency in the vibration instruction is a frequency of the frequency band.
10. The system further includes means for executing system programs, The execution of the application program provides means for executing a first request based on the sound event and a second request based on the vibration event to the system program. Upon execution of the system program, a preset playback command is issued in response to the first request, and a vibration command is issued in response to the second request. The vibration control system according to claim 9, wherein in the control described above, control corresponding to the preset playback command and the vibration command is performed, respectively.
11. The aforementioned sound data is PCM data. The system further includes means for sequentially specifying a portion of the PCM data in response to the aforementioned sound event and issuing a streaming playback instruction. The vibration control system according to claim 1 or 2, wherein, in the control described above, control data is generated by sequentially using a portion of the specified PCM data in response to the streaming playback instruction.
12. The vibration control system according to claim 11, wherein multiple sampling data are specified at the same timing in the streaming playback instruction.
13. The vibration control system according to claim 11, wherein when the preset playback instruction and the streaming playback instruction occur simultaneously, the preset playback instruction is processed with priority over the streaming playback instruction.
14. The vibration control system according to claim 9, wherein when the preset playback instruction and the vibration instruction occur simultaneously, the preset playback instruction is processed with priority over the vibration instruction.
15. The vibration control system according to claim 1, wherein the vibration device is a voice coil motor that performs reciprocating motion.
16. A program used in a vibration control system equipped with a vibration device, Computers, The process involves obtaining a preset playback instruction containing sound data identification information from an application program. The process involves reading the sound data from a predetermined memory based on the identification information included in the acquired preset playback instruction, in accordance with the acquired preset playback instruction. A program that performs a process for controlling the vibration device based on the control data derived from the sound data read out.
17. The program according to claim 16, wherein the sound data is PCM data sampled at the same frequency as the update cycle of the control data used by the control unit of the vibration device.
18. The preset playback instruction specifies parameters related to the output of the sound data, in addition to the identification information. The program according to claim 16 or claim 17, wherein the control data is adjusted based on the aforementioned parameters.
19. To the aforementioned computer, A process to obtain a preset instruction command to set the aforementioned identification information and the aforementioned sound data, The program according to claim 18, further comprising the process of storing the identification information and the sound data in a predetermined memory based on the preset instruction.
20. To the aforementioned computer, A process to obtain a vibration instruction command to vibrate the vibration device by specifying the amplitude and frequency, The program according to claim 16 or claim 17, further comprising the process of generating the control data based on the specified amplitude and frequency.
21. To the aforementioned computer, Further processing is performed to obtain streaming playback commands that sequentially specify a portion of the PCM data. The program according to claim 16 or claim 17, wherein a portion of the sequentially specified PCM data is used as the control data in response to the streaming playback command.
22. A controller used in a vibration control system including an information processing device, A vibration device capable of reproducing sound frequency ranges, It comprises a storage means in which identification information and sound data associated with said identification information are pre-set, A means for obtaining an instruction to play the sound data and reading the sound data from the storage means based on the identification information, A controller comprising means for controlling the vibration device using control data based on the sound data read out.
23. The controller according to claim 22, wherein the sound data is PCM data sampled at the same frequency as the update cycle period of the control data used by the control unit of the vibration device.
24. The playback instruction specifies parameters related to the output of the sound data, in addition to the identification information. The controller according to claim 22 or 23, wherein the control data is adjusted based on the parameters in the control described above.
25. means for acquiring a preset instruction to preset the aforementioned identification information and the aforementioned sound data, The controller according to claim 24, further comprising means for causing the storage means to store the identification information and the sound data based on the acquired preset instructions.
26. The system further comprises means for obtaining vibration instructions to vibrate the vibration device by specifying the amplitude and frequency, The controller according to claim 22 or 23, wherein, in the control described above, the control data is further generated based on the specified amplitude and frequency in response to the vibration instruction.
27. The system further includes means for obtaining streaming playback instructions that sequentially specify a portion of the PCM data. The controller according to claim 22 or 23, wherein, in the control described above, the specified PCM data is used as control data in response to the streaming playback instruction.
28. A control method used in a vibration control system equipped with a vibration device capable of reproducing sound frequency bands, The identification information and the sound data associated with that identification information are preset in a predetermined memory. The application program is executed, and in response to the occurrence of a sound event, the identification information is specified to issue a preset playback instruction. In response to the preset playback instruction, the sound data is read from the predetermined memory based on the identification information. A control method for controlling the vibration device using control data based on the sound data read out.
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