Vibration control system, computer program product, and method

CN122828352APending Publication Date: 2026-09-29NINTENDO CO LTD
View PDF 1 Cites 0 Cited by

Patent Information

Application Number
CN202610388369.7
Authority / Receiving Office
CN · China
Patent Type
Applications(China)
Current Assignee / Owner
Priority Date
2025-03-27
Filing Date
2026-03-27
Publication Date
2026-09-29

Smart Images

  • Figure CN122828352A_ABST
    Figure CN122828352A_ABST
Patent Text Reader

Abstract

The present invention relates to a vibration control system, a computer program product, and a method. Provided are: a unit that generates vibration instruction data based on occurrence of a vibration event, wherein the vibration instruction data contains amplitude instruction data that indicates a vibration amplitude of a vibration motor; a unit that controls the vibration motor using a control amplitude generated based on the amplitude instruction data; and a unit that performs an increase process in which at least one of whether the amplitude indicated by previous amplitude instruction data is zero or substantially zero and whether a previous control amplitude is zero or substantially zero is determined, and the amplitude indicated by the amplitude instruction data is increased.
Need to check novelty before this filing date? Find Prior Art

Description

Technical Field

[0001] This disclosure relates to a vibration control system, a computer program product, and a method. Background Technology

[0002] Previously, there have been game systems that provide vibration effects to users playing games. For example, Japanese Patent Application Publication No. 2016-202486 discloses a vibration signal generation system used in games. Summary of the Invention

[0003] Previous game systems had room for improvement in terms of the realism and variation of vibration feedback.

[0004] (Structure 1) A vibration control system in one embodiment includes the following units: a unit for generating vibration indication data based on the occurrence of a vibration event, wherein the vibration indication data includes amplitude indication data indicating the vibration amplitude of a vibration motor; a unit for controlling the vibration motor using a control amplitude generated based on the amplitude indication data; and a unit for performing an increase process, wherein the increase process determines at least one of whether the amplitude indicated by the previous amplitude indication data is zero or approximately zero, and whether the previous control amplitude is zero or approximately zero, and increases the amplitude indicated by the amplitude indication data.

[0005] (Structure 2) In Structure 1, during the increase process, if the amplitude indicated by the previous vibration indication data is zero or approximately zero, or if the previous control amplitude is zero or approximately zero, the amplitude indicated by the vibration indication data is increased throughout the specified period.

[0006] (Structure 3) In Structure 1, the vibration indication data also includes frequency indication data indicating the vibration frequency. The additional processing is performed when the frequency indicated by the generated frequency indication data meets the specified conditions.

[0007] (Structure 4) In Structure 3, during the increase process, regardless of the frequency indicated by the generated vibration indication data, the amplitude indicated by the amplitude indication data is increased by a certain amount.

[0008] (Structure 5) In Structure 1, there is a main body and a controller including a vibration motor, and the processor of the controller performs additional processing.

[0009] (Structure 6) In any of the structures 1 to 5, multiple vibration indication data are generated for one timing. The vibration control system further includes a unit for performing a first adjustment process, wherein the sum of the amplitudes associated with the multiple vibration indication data for the same timing is adjusted in the first adjustment process, and the increase process is performed before the first adjustment process.

[0010] (Structure 7) In Structure 6, during the increase process, for each of the multiple vibration indication data generated for the same timing, if the amplitude indicated by the previous amplitude indication data is zero or approximately zero, or if the previous control amplitude is zero or approximately zero, the amplitude indicated by the amplitude indication data is increased.

[0011] (Structure 8) In any of the structures 1 to 7, the vibration control system can control the first vibration motor and the second vibration motor. The additional processing is performed when the second vibration motor is controlled, and the additional processing is not performed when the first vibration motor is controlled.

[0012] (Structure 9) In any of the structures from Structure 1 to Structure 7, during the addition process, the addition is carried out within the range that does not exceed the maximum amplitude of the vibration motor.

[0013] (Structure 10) In any of the structures 1 to 5, there is also a unit that selects, based on a decision, whether to generate control data that gradually approaches the amplitude related to the current vibration indication data, or to generate control data corresponding to the amplitude related to the current vibration indication data.

[0014] (Structure 11) In one embodiment, a program used in a vibration control system causes one or more processors to perform the following steps: controlling a vibration motor using a control amplitude generated based on vibration indication data, wherein the vibration indication data is generated based on the occurrence of a vibration event and includes amplitude indication data indicating the vibration amplitude of the vibration motor; and performing an increment process, in which it is determined whether at least one of the amplitude indicated by the previous amplitude indication data is zero or approximately zero and whether the previous control amplitude is zero or approximately zero is determined, and the amplitude indicated by the amplitude indication data is increased.

[0015] (Structure 12) In Structure 11, during the increase process, if the amplitude indicated by the previous vibration indication data is zero or approximately zero, or if the previous control amplitude is zero or approximately zero, the amplitude indicated by the vibration indication data is increased throughout the specified period.

[0016] (Structure 13) In Structure 11, the vibration indication data also includes frequency indication data indicating the vibration frequency, and the additional processing is performed when the frequency indicated by the generated frequency indication data meets the specified conditions.

[0017] (Structure 14) In Structure 13, during the increase process, regardless of the frequency indicated by the generated vibration indication data, the amplitude indicated by the amplitude indication data is increased by a certain amount.

[0018] (Structure 15) In Structure 11, the vibration control system has a main body and a controller including a vibration motor. The controller has one or more processors, which perform additional processing.

[0019] (Structure 16) In any of Structures 11 to 15, multiple vibration indication data are generated for one timing, and the program causes one or more processors to further perform the following steps: perform a first adjustment process, in which the sum of the amplitudes associated with the multiple vibration indication data for the same timing is adjusted, and an addition process is performed before the first adjustment process.

[0020] (Structure 17) In Structure 16, during the increase process, for each of the multiple vibration indication data generated for the same timing, if the amplitude indicated by the previous amplitude indication data is zero or approximately zero, or if the previous control amplitude is zero or approximately zero, the amplitude indicated by the amplitude indication data is increased.

[0021] (Structure 18) In any of the structures 11 to 17, one or more processors can control the first vibration motor and the second vibration motor by executing program processing. The additional processing is executed when the second vibration motor is controlled, and is not executed when the first vibration motor is controlled.

[0022] (Structure 19) In any of the structures 11 to 17, during the increase process, the increase is carried out within the range of the maximum amplitude of the vibration motor.

[0023] (Structure 20) In a method used in a vibration control system in one embodiment, as a process executed by one or more processors, the steps include: controlling a vibration motor using a control amplitude generated based on vibration indication data, wherein the vibration indication data is generated based on the occurrence of a vibration event and includes amplitude indication data indicating the vibration amplitude of the vibration motor; and performing an increase process, in which it is determined whether at least one of the amplitude indicated by the previous amplitude indication data is zero or approximately zero and whether the previous control amplitude is zero or approximately zero is determined, and the amplitude indicated by the amplitude indication data is increased.

[0024] (Structure 21) In Structure 20, the vibration indication data also includes frequency indication data indicating the vibration frequency, and the additional processing is performed when the frequency indicated by the generated frequency indication data meets the specified conditions.

[0025] (Structure 22) In Structure 21, multiple vibration indication data are generated for one timing, and the program causes one or more processors to further perform the following steps: perform a first adjustment process, in which the sum of the amplitudes associated with the multiple vibration indication data for the same timing is adjusted, and an increase process is performed before the first adjustment process.

[0026] (Structure 23) In Structure 22, one or more processors can control the first vibration motor and the second vibration motor by executing program processing. The additional processing is executed when the second vibration motor is controlled, and is not executed when the first vibration motor is controlled.

[0027] (Structure 24) In Structure 23, during the increase process, the increase is carried out within the range that does not exceed the maximum amplitude of the vibration motor.

[0028] The above and other objects, features, aspects and advantages of the present invention will become clear from the following detailed description of the invention as understood in conjunction with the accompanying drawings. Attached Figure Description

[0029] Figure 1 This is a schematic diagram illustrating an example of the vibration control system in this embodiment.

[0030] Figure 2 This is a flowchart illustrating the process of obtaining information representing the type of game controller in this embodiment.

[0031] Figure 3 This is a diagram illustrating an example of generating vibration indication data based on vibration files in Implementation 1.

[0032] Figure 4 This is a graph showing the frequency characteristic data used in the frequency characteristic adjustment process of the first controller.

[0033] Figure 5 This is a graph showing the frequency characteristic data used in the frequency characteristic adjustment process of the second controller.

[0034] Figure 6 This is a diagram used to illustrate the adjustment process.

[0035] Figure 7 This is a flowchart illustrating the process of generating vibration indication data containing standardized amplitude values, performed in Implementation 1.

[0036] Figure 8 This is a flowchart illustrating the process of adjusting vibration indication data performed by the gaming device in Embodiment 1.

[0037] Figure 9This is a flowchart illustrating the process of the enhancement process (step S105Z).

[0038] Figure 10 This is a flowchart illustrating the process of frequency characteristic adjustment (step S106) for each type of game controller.

[0039] Figure 11 This is a flowchart illustrating the processing procedure for generating control data executed by the game controller in Implementation 1.

[0040] Figure 12 This is a flowchart illustrating the process of ending the process (step S203).

[0041] Figure 13 This is a flowchart illustrating the process of starting the processing in step S214.

[0042] Figure 14 This is an example of a waveform based on the first control data generated from the first impact event.

[0043] Figure 15 This is a diagram showing the reference waveform during the period from timing T103 to T104.

[0044] Figure 16 It is a diagram showing the waveform of the end vibration output as the result of processing in units of control cycles, corresponding to the period of timing T103~T104.

[0045] Figure 17 This is a diagram showing the waveform of a modified example.

[0046] Figure 18 This is a diagram used to illustrate a variation of the frequency response adjustment process.

[0047] Figure 19 This is a diagram showing a variation of the processing procedure at the start of the process.

[0048] Figure 20 This is a flowchart illustrating the process of generating vibration indication data 114 containing standardized amplitude values ​​in the gaming device in Embodiment 2.

[0049] Figure 21 This is a diagram illustrating an example of generating adjusted vibration indication data 110 based on vibration files in Embodiment 2.

[0050] Figure 22 This is a flowchart illustrating the execution process of the rhythm game in Implementation Method 3.

[0051] Figure 23This is a flowchart illustrating the process of generating vibration indication data 114 containing standardized amplitude values ​​in the gaming device of Embodiment 3.

[0052] Figure 24 This is a flowchart illustrating the transformation process of vibration indication data performed by the gaming device in Embodiment 4.

[0053] Figure 25 This is a flowchart illustrating the processing procedure for generating control data executed by the game controller in Embodiment 4. Detailed Implementation

[0054] This embodiment will be described in detail with reference to the accompanying drawings. Furthermore, the same or equivalent parts in the drawings are labeled with the same reference numerals and their descriptions are not repeated.

[0055] [Implementation Method 1]

[0056] [A. summary]

[0057] An example of the structure of the vibration control system 10 that controls the vibration motor 206 in this embodiment will be described.

[0058] Figure 1 This is a schematic diagram illustrating an example of the vibration control system 10 in this embodiment. The vibration control system 10 in this embodiment is, for example, applicable to a game system. The processor, memory, communication interface, etc., of the vibration control system 10 constitute a computer. Furthermore, the processor, memory, communication interface, etc., of the game device 100 are also examples of computers, as are the processor, memory, communication interface, etc., of the game controller 200. In addition, a computer may also be composed of multiple information processing devices, device processors, etc.

[0059] The gaming device 100 is programmed to display images or pictures to the user from a display device such as a TV monitor, LCD, OLED (Electroluminescence), or HMD (Head-Mounted Display) to advance the game. The user operates the game controller 200 based on the images or pictures displayed on the display device. The gaming device 100 receives input from the user to the game controller 200 and advances the game based on that input.

[0060] [B. The structure of the game device]

[0061] The gaming device 100 includes a processor 101, a non-volatile memory 102, a volatile memory 103, and a communication interface (I / F) 104. The processor 101 is the processing unit (processing entity) for executing the processing provided by the gaming device 100. The processor 101 reads the system program 102P1 and the game program 102P2 stored in the non-volatile memory 102 and expands them in the volatile memory 103 for execution. In this disclosure, "program" has two meanings: a single program and a program group containing multiple programs. In the case of a program group, the programs can be stored in different memories and executed by different processors; for example, one part of the program can be executed by the processor 101, and another part can be executed by the MCU 201.

[0062] Processor 101 is a processing circuit, such as a CPU (Central Processing Unit). Furthermore, in this specification, the term "processor" includes not only the general meaning of processing circuits that execute processing according to command codes described in a program, such as CPUs, MPUs (Micro Processing Units), and GPUs (Graphics Processing Units), but also hard-wired circuits such as ASICs and FPGAs. Hard-wired circuits such as ASICs and FPGAs have pre-formed circuitry corresponding to the processing to be executed. Moreover, the term "processor" in this specification can also include circuits that integrate multiple functions, such as SoCs (System on Chip). Processor 101 may, for example, be an SoC integrating the functions of a CPU and a GPU. Additionally, in this embodiment, the method in which processing executed by a single processor is collaboratively executed by multiple processors is also included as a variation in this specification.

[0063] Non-volatile memory 102 is a non-volatile storage device (storage medium) accessible to processor 101, such as an SSD (Solid State Drive), NAND flash memory, or hard disk. Alternatively, non-volatile memory 102 can be a storage medium removable from the game device 100, such as an optical disc or cartridge. System program 102P1 and game program 102P2 are stored in non-volatile memory 102. System program 102P1 is the program that performs basic processing of the game device 100. System program 102P1 also includes programs for sending various data stored in volatile memory 103 to game controller 200. Game program 102P2 is the program for executing the game, for example, stored in a game cartridge or disc that is removably installed in the game device 100, or downloaded to non-volatile memory 102 via a network. Game program 102P2 includes vibration files 105.

[0064] Vibration file 105 contains information indicating vibration effects for each vibration event. Vibration events include events that produce impact vibrations, but also other vibration-generating events. Impact vibration effects are effects that make the user feel the impact of vibrations during game progression; they are short-lived, strong vibrations. For example, they are indicated based on events such as collisions between objects in the virtual game space, explosions, or gunshots. They are also used to represent beats. More specifically, for amplitude, an amplitude equivalent to the maximum allowable voltage of vibration motor 206 is specified. The specified amplitude does not need to be exactly the same as the maximum allowable voltage of vibration motor 206; it only needs to be close to that maximum allowable voltage.

[0065] The specified amplitude can be set to, for example, 80% or more of the maximum allowable voltage. Alternatively, for a vibration motor with a large output, the output can be 60% or more of the maximum allowable voltage. Regarding the vibration duration, it can be set to a period of less than one wavelength at the lower frequency specified by the game program 102P2, or it can be set to a period of less than two wavelengths. Furthermore, the vibration duration can be set to less than 50ms (milliseconds), or less than 25ms. The frequency can be left unrestricted; specifying a low frequency results in a slow shock vibration, while specifying a high frequency results in a violent shock vibration. Moreover, when a control input of a wavelength larger than one wavelength (e.g., two wavelengths) is made within a period of less than 50ms, it results in a stronger shock vibration compared to a control input of one wavelength. With a short vibration duration such as 50ms, humans can distinguish the difference between one wavelength and two wavelengths as a difference in vibration intensity.

[0066] For example, the frequency can be changed based on the magnitude of collisions in the virtual game space (collision speed, the weight of the collided objects, etc.). That is, the effect of the impact vibration effect can be altered by changing the frequency. The frequency can also be limited by various system conditions. The impact event is the primary factor contributing to the occurrence of the impact vibration effect; in other words, it is the condition for the impact vibration effect to occur.

[0067] Vibration events, other than impact vibration events, include normal vibration events. Normal vibration events can be, for example, events that produce vibrations of a specified duration (e.g., a duration greater than two wavelengths) or vibrations below a specified maximum allowable voltage relative to the vibration motor. Similar to impact vibration events, a desired frequency, desired amplitude, and desired duration are specified for normal vibration events. Game program 102P2 can specify appropriate frequencies, amplitudes, and durations based on the nature of the vibration event.

[0068] Volatile memory 103 is a volatile storage device (storage medium) accessible to processor 101, such as DRAM (Dynamic Random Access Memory) or SRAM (Static Random Access Memory). Volatile memory 103 has a data area 103B1, an operation data area 103B2, a vibration indication data area 103B3, and a controller type data area 103B4. Data area 103B1, for example, is an area that temporarily stores various data generated when processor 101 executes game program 102P2.

[0069] Operation data area 103B2 is a temporary storage area for operation data received from the game controller 200. Operation data represents the input data from the user to the game controller 200, and includes detection values ​​from the accelerometer 208, gyroscope 209, and operation switch 210, etc.

[0070] Vibration indication data area 103B3 is an area that temporarily stores vibration indication data used to cause the vibration motor 206 of the game controller 200 to vibrate. Vibration indication data area 103B3 can store at least one vibration indication data corresponding to a given moment. In this embodiment, vibration indication data area 103B3 is configured to store two vibration indication data corresponding to a given moment. Furthermore, in this specification, the term "memory" includes at least both non-volatile memory 102 and volatile memory 103.

[0071] The controller type data area 103B4 is used to store information indicating the type of the game controller 200 connected to the game device 100. The game controller 200 can also be configured to be detachable from the game device 100. Therefore, multiple game controllers 200 can be connected to the game device 100. When a new game controller 200 is connected to the game device 100, the processor 101 obtains information indicating the type of the connected game controller 200. The processor 101 can obtain the information indicating the type of the game controller 200 either from the connected game controller 200 itself or by accessing a network.

[0072] The information indicating the type of game controller 200 includes at least information indicating the type of vibration motor 206 housed in the game controller 200. For example, a first type of game controller 200 has a first type of vibration motor, and a second type of game controller 200 has a second type of vibration motor. Hereinafter, the first type of game controller 200, the second type of game controller 200, the first type of vibration motor, and the second type of vibration motor will sometimes be referred to as "first controller," "second controller," "first vibration motor," and "second vibration motor," respectively. As described later, when the game device 100 is newly connected to the game controller 200, the processor 101 obtains information related to the type from the connected game controller 200.

[0073] The gaming device 100 communicates with the game controller 200 via a communication interface 104. The communication interface 104 uses, for example, an antenna (not shown) to wirelessly communicate with the game controller 200. The communication method between the gaming device 100 and the game controller 200 is arbitrary; however, in this embodiment, the communication between the gaming device 100 and the game controller 200 conforms to the Bluetooth (registered trademark) standard. Communication between the gaming device 100 and the game controller 200 can also be wired, in which case the communication interface 104 can be, for example, a terminal of the USB (Universal Serial Bus) standard.

[0074] The game device 100 advances the game based on the execution of the game program 102P2. During the game's progression, large impact events, such as explosions and collisions, may occur within the virtual game space. The game device 100 also generates vibration indication data based on the occurrence of these impact events and sends this vibration indication data to the game controller 200. The vibration indication data will be described in detail later. The game device 100 may also generate multiple vibration indication data to cause the vibration motor 206 to vibrate at a specific time. That is, the vibration motor 206 can vibrate based on multiple vibration indication data at a single time. In this embodiment, the vibration motor 206 vibrates based on two vibration indication data at a single time. Furthermore, the vibration motor 206 may also vibrate based on three or more vibration indication data at a single time.

[0075] [C. The structure of the game controller]

[0076] 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 sensor 208, a gyroscope sensor 209, and an operation switch 210.

[0077] The game controller 200 is typically a controller that is held by the user with both hands or one hand, and accepts input from the user by operating the switch 210 with the user's fingers. However, the game controller 200 is not limited to a game controller held by the user's hands; for example, it could be a general-purpose keyboard or mouse with a vibration motor 206, or it could be placed on the ground and accept input by a sensor placed on the user's foot.

[0078] MCU 201 includes a processor 202, non-volatile memory 203, volatile memory 204, an I2C (InterIntegrated Circuit) unit i2c, and an I2S (InterIntegrated Circuit Sound) unit i2s. The processor 202, non-volatile memory 203, volatile memory 204, and communication interface 207 have the same hardware structure as the processor 101, non-volatile memory 102, volatile memory 103, and communication interface 104 described above. Therefore, these structures will not be described again. However, to reduce costs, the processor 202 may also be a processor with lower processing power compared to the processor 101.

[0079] The MCU program 203P is stored in the non-volatile memory 203. The MCU program 203P includes programs for performing various processes described later, as well as programs for sending the detection values ​​of the operation switch 210, the accelerometer sensor 208, and the gyroscope sensor 209 to the game device 100 via the communication interface 207. Furthermore, in this embodiment, the MCU program 203P includes programs for generating control data to be sent to the amplifier 205 based on vibration indication data received from the game device 100. The control data is typically data representing the voltage value of the waveform used to drive the vibration motor 206. The control data is output at a predetermined period (unit time). This period is called the control period. The MCU 201 generates the control data based on the vibration indication data. Alternatively, the processor 101 of the game device 100 may generate the control data directly instead of the vibration indication data.

[0080] The volatile memory 204 includes a vibration indication data area 204B1, a control data area 204B2, an operation data area 204B3, a current amplitude data area 204V1, a current frequency data area 204V2, a current phase data area 204V3, a previous amplitude data area 204V4, and a previous frequency data area 204V5. The vibration indication data area 204B1 is used to temporarily store vibration indication data received from the gaming device 100. The control data area 204B2 is used to temporarily store control data generated by the processor 202. The operation data area 204B3 is used to temporarily store operation data. 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 will be explained later. Each region within the volatile memory 204 used for storing various types of data can store at least one piece of data corresponding to a given time. In this embodiment, each region within the volatile memory 204 used for storing various types of data can store two pieces of data corresponding to a given time.

[0081] The contents of the control data area 204B2 in the volatile memory 204 are forwarded to the amplifier 205, for example, using the I2S unit i2s. The I2S unit i2s is configured to implement communication based on a bus interface standard for serial communication, primarily for connecting digital audio devices. The I2C unit i2c is used for setting the registers of the amplifier 205. The I2C unit i2c is also configured to implement communication based on a bus interface standard for serial communication. The I2S unit i2s and the I2C unit i2c each have multiple signal lines, including clock signal lines and data signal lines. The amplifier 205 in this embodiment is an amplifier controlled by PWM (Pulse Width Modulation) at a frequency of 8kHz. The amplifier 205 determines the duty cycle every 0.125ms based on the received control data and supplies power to the vibration motor 206.

[0082] The vibration motor 206 can be, for example, a voice coil motor, an eccentric motor, or a linear resonant motor (so-called an LRA (Linear Resonant Actuator)), regardless of the type of motor. The vibration motor 206 can also be a button motor, etc. In the case where the vibration motor 206 is an eccentric motor, a weighted block is mounted on the rotating shaft, and vibration is generated by rotation. Thus, the vibration motor 206 can provide vibration to the user holding the game controller 200 containing the vibration motor 206.

[0083] Accelerometer 208 detects the magnitude of linear acceleration along three specified axes. Furthermore, accelerometer 208 can also detect acceleration in one or two axes. Gyroscope 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.

[0084] The detection results from the accelerometer 208 and the gyroscope 209 are output to the processor 101. The processor 101 in the gaming device 100 is able to calculate information related to the motion and / or posture of the game controller 200 based on the detection results from the accelerometer 208 and the gyroscope 209.

[0085] The operation switch 210 is typically at least one button, key, and / or joystick disposed on the surface of the game controller 200. The operation switch 210 may be, for example, a button A, a button B, etc., that corresponds to characters, a cross-shaped key for inputting up, down, left, and right directions, a 3D joystick for inputting tilt direction and tilt amount, etc.

[0086] Figure 2This is a flowchart illustrating the process of obtaining information representing the type of game controller 200 in this embodiment. Figure 2 The process shown in the flowchart is achieved by the processor 101 executing the game program 102P2, which begins execution when the game device 100 is powered on.

[0087] Processor 101 determines whether a connection to game controller 200 is detected (step S10). If no connection to game controller 200 is detected ("No" in step S10), processor 101 repeats step S10. If a connection to game controller 200 is detected ("Yes" in step S10), processor 101 acquires information indicating the type of the connected game controller 200 (step S20) and saves this information to the controller type data area 103B4. Then, processor 101 repeats step S10. Furthermore, if the connection to game controller 200 is terminated, processor 101 may also discard the information indicating the type of game controller 200 corresponding to the terminated game controller 200.

[0088] [D. The process of generating vibration indication data based on vibration files]

[0089] Figure 3 This diagram illustrates an example of generating vibration indication data based on vibration file 105 in Embodiment 1. "Generating vibration indication data" means reading the vibration indication data stored in vibration file 105 and processing it as data for causing the vibration motor to vibrate. Furthermore, the generation of vibration indication data includes not only reading pre-saved vibration indication data but also generating vibration indication data through calculations, etc. Figure 3 The following describes an example of generating standardized vibration indication data 114 based on the occurrence of an impact vibration event. The vibration indication data includes a value for a specified frequency (hereinafter referred to as the frequency value) and a value for a specified amplitude (hereinafter referred to as the amplitude value). One set of vibration indication data contains one frequency value and one amplitude value. The frequency value and amplitude value are sometimes referred to as frequency indication data and amplitude indication data, respectively. The processor 101 generates the standardized vibration indication data 114 based on the vibration file 105.

[0090] In this embodiment, the amplitude value is standardized in the vibration file 105 and vibration indication data 114. On the other hand, the frequency value is not standardized in this embodiment. In this embodiment, the amplitude value is between 0 and 1. Then, the processor 101, as detailed later, performs aggregate adjustment processing, frequency characteristic adjustment processing, and clamping adjustment processing on the standardized amplitude value in the vibration indication data 114 to adjust the amplitude value. Furthermore, these adjustment processes are not mandatory. In particular, when the frequency characteristic adjustment processing is performed by the processor 202 on the game controller 200 side (described later), clamping adjustment processing is not required. Standardizing the amplitude value is not necessary. Additionally, the content of these adjustment processes may vary depending on the type of vibration motor 206 connected to the game device 100, as described later.

[0091] The overall adjustment process is used to proportionally allocate the amplitude values ​​of the two vibration indication data points, with a base of 1.0, when two vibration indication data points are generated to make the vibration motor 206 vibrate at the same time. When the connected game controller 200 is a first controller with a first vibration motor, the frequency characteristic adjustment process is used to adjust the amplitude value contained in the vibration indication data in accordance with the maximum voltage allowed to be input at that frequency, as specified by the frequency value contained in the vibration indication data. When the connected game controller 200 is a second controller with a second vibration motor, the frequency characteristic adjustment process is used to make the intensity of the vibration provided to the user holding the second controller close to the intensity of the vibration provided to the user holding the first controller.

[0092] In this embodiment, the second controller is less prone to vibration compared to the first controller, for example, because the second controller is heavier than the first controller. Therefore, the intensity of vibration occurring when a certain vibration indication data is input to the second controller is sometimes weaker than the intensity of vibration occurring when that same vibration indication data is input to the first controller. For example, even if vibration indication data capable of causing the first controller to vibrate slightly is input to the second controller, the second controller sometimes does not vibrate.

[0093] In this embodiment, by performing frequency characteristic adjustment processing on the second controller as described later, the intensity of the vibration provided to the user holding the second controller can be made close to the intensity of the vibration provided to the user holding the first controller. Furthermore, the adjustment performed by the frequency characteristic adjustment processing is not limited to increasing the intensity of the vibration of the second controller, but can also be an adjustment that decreases the intensity of the vibration of the second controller.

[0094] The clamping adjustment process is used to determine the amplitude value adjustment process to suppress unintentional changes in the frequency of the vibration motor 206 during the gradual change of the frequency when the frequency value contained in the vibration indication data is different from that contained in the previous vibration indication data. By performing amplitude value adjustment processing in this way, game programs can be easily created and the intensity of vibration can be increased, thereby improving the effect of impact vibration. Then, the game device 100 sends the adjusted vibration indication data 110, which will be described later, to the game controller 200. The contents of various data will be explained below.

[0095] In this embodiment, regarding the vibration indication data, the vibration effect over a period of T×N (msec) is specified by specifying one or more (N) vibration indication data points for each vibration indication period T (msec) in a time-series order. By using this data format, vibration effects with changes in amplitude and frequency can be easily specified. The vibration duration can also be specified by the duration and the number of waves.

[0096] Next, use Figure 3 To explain the specific content of various data. In the vibration control system 10 of this embodiment, the game device 100 first generates vibration indication data 114 by referring to the vibration file 105 in the game program 102P2.

[0097] In this embodiment, when the amplitude value is "1", the vibration control system 10 operates the amplifier 205 to apply a voltage value to the vibration motor 206 corresponding to the upper limit of the output voltage of the amplifier 205. For example, in the case of a linear design, if the amplitude value is "0.5", the vibration control system 10 applies a voltage value to the vibration motor 206 corresponding to 50% of the upper limit of the output voltage of the amplifier 205. That is, the values ​​of 0 to 1 represented by the amplitude values ​​in the vibration indication data 114 do not represent the voltage value itself, but rather the proportion relative to the upper limit of the output voltage of the amplifier 205. However, as will be described later, the amplitude values ​​contained in the vibration indication data 114 are adjusted through total adjustment processing, frequency characteristic adjustment processing, and clamping adjustment processing.

[0098] The gaming device 100 performs the various adjustment processes described above to transform the vibration indication data 114 into the adjusted vibration indication data 110 described later.

[0099] In this process, the gaming device 100 generates adjusted vibration indication data 110 and sends the generated adjusted vibration indication data 110 to the game controller 200. Details relating to the various data are explained below.

[0100] exist Figure 3 On the left, vibration file 105 is shown in tabular form. Figure 3 The image shows an example of vibration file 105 in the case of game program 102P2 being an adventure game. Figure 3 In the example vibration file 105, the data representing the event name, event occurrence conditions, and vibration content are interconnected. The data representing the event occurrence conditions includes, for example, two object types. The data representing the vibration content includes frequency, wavelength number, and amplitude. The vibration duration can also be specified instead of the wavelength number.

[0101] Figure 3 In the example, the table representing vibration file 105 is a table with event name as the primary key. The event name "First Impact Event" is associated with object 1 "Sword" and object 2 "Sword". That is, the first impact event is an event that occurs when an object representing a sword collides with another object representing a sword in the virtual space of the game. In addition, the event name "First Impact Event" is associated with frequency "100", wavelength number "1", and amplitude "1". That is, when the first impact event occurs, a waveform signal with an amplitude of 100Hz and a frequency of 100Hz, corresponding to one wavelength at a frequency of 100Hz, is output to the vibration motor 206.

[0102] The event name "Second Impact Event" is associated with object 1 "Sword" and object 2 "Shield". That is, the Second Impact Event occurs when the object representing the sword collides with the object representing the shield within the game's virtual space. Furthermore, the event name "Second Impact Event" is associated with a frequency of "50", a wavelength of "1", and an amplitude of "1". This means that when the Second Impact Event occurs, a waveform signal with an amplitude of 50Hz and a frequency of 50Hz, corresponding to one wavelength at a frequency of 50Hz, is output to the vibration motor 206.

[0103] The event name "Third Impact Event" is associated with object 1 "Sword" and object 2 "Rock". That is, the Third Impact Event occurs when the object representing the sword collides with the object representing the rock within the game's virtual space. Furthermore, the event name "Third Impact Event" is associated with a frequency of "50", a wavelength of "2", and an amplitude of "1". This means that when the Third Impact Event occurs, a waveform signal with an amplitude of 50Hz and a frequency of 50Hz, corresponding to the maximum output voltage of amplifier 205 or the maximum allowable input voltage to vibration motor 206, is output to vibration motor 206, along with two wavelengths at a frequency of 50Hz. Additionally, the wavelength number may not be an integer multiple.

[0104] Next, the contents of vibration indication data 114 will be explained. Figure 3 The right side shows vibration indication data 114 generated by processor 101 based on vibration file 105. Two vibration indication data are generated in the first impact event, four vibration indication data are generated in the second impact event, and eight vibration indication data are generated in the third impact event.

[0105] exist Figure 3 In the vibration indication data 116A shown, "1" is specified as the amplitude value and "100" is specified as the frequency value. In addition, in the vibration indication data 116B, "1" is specified as the amplitude value and "50" is specified as the frequency value.

[0106] Regarding the vibration indication data 114 generated based on the occurrence of the first impact event, the two vibration indication data points "(1, 100)" are arranged in a time sequence. Multiple vibration indication data points contained in vibration indication data 114 are stored in the order they are output to the vibration motor 206. The set of vibration indication data points arranged in the time sequence according to the order of output to the vibration motor 206 is called the "time-series vibration indication data set".

[0107] The time-series vibration indication data set generated based on the occurrence of the second impact event consists of four vibration indication data points: "(1,50), (1,50), (1,50), (1,50)". The time-series vibration indication data set generated based on the occurrence of the third impact event consists of eight vibration indication data points: "(1,50), (1,50), (1,50), (1,50), (1,50), (1,50), (1,50), (1,50)".

[0108] The number of vibration indication data points included in the time-series vibration indication data set is defined based on the frequency and wavelength number within the vibration file 105. One vibration indication data point represents the waveform data output to the vibration motor 206 over a period of 5 ms, indicating the frequency and amplitude specified by that data point. The first impact event in the vibration file 105 is associated with a frequency value of "100 Hz". When the vibration motor 206 vibrates at 100 Hz, the duration of one wavelength of the vibration waveform is 10 ms. Therefore, the vibration indication data 114 generated based on the first impact event includes two vibration indication data points obtained by dividing 10 ms by 5 ms.

[0109] The second impact event in vibration file 105 is associated with a frequency value of "50Hz". When the vibration motor 206 vibrates at 50Hz, the duration of one wavelength of the vibration waveform is 20ms. Therefore, the vibration indication data 114 generated based on the second impact event includes four vibration indication data points obtained by dividing 20ms by 5ms.

[0110] The third impact event in vibration file 105 is associated with a frequency value of "50Hz". When the vibration motor 206 vibrates at 50Hz, the duration of the two wavelengths of the vibration waveform is 40ms. Therefore, the vibration indication data 114 generated based on the third impact event contains eight vibration indication data points obtained by dividing 40ms by 5ms.

[0111] Next, the method for determining the period for outputting control data to the vibration motor 206 based on one vibration indication data will be described. In this disclosure, the period for outputting control data to the vibration motor 206 based on one vibration indication data is referred to as the "vibration indication period". The vibration indication period is determined by the processor 101 based on the characteristics of the vibration motor 206. In this embodiment, as described above, the vibration indication period is 5 ms.

[0112] The processor 101 executes the game program 102P2 to generate vibration indication data 114 and hands over at least one vibration indication data 114 to the system program 102P1. The system program 102P1 adjusts the received vibration indication data 114 through adjustment processing, transforming it into adjusted vibration indication data 110. In this embodiment, as described above, the content of the adjustment processing varies depending on the type of game controller 200 connected to the game device 100. Hereinafter, the frequency characteristic data used in the frequency characteristic adjustment processing of the first controller will be described first.

[0113] Figure 4 This is a graph showing the frequency characteristic data used in the frequency characteristic adjustment process of the first controller. Figure 4The frequency response data, represented by a graph, is the ratio of the upper limit of the allowable input voltage value at each frequency to the maximum output voltage of the amplifier. The frequency response adjustment rate on the vertical axis is a value calculated by dividing the upper limit of the allowable input voltage value at each frequency by the maximum output voltage of the amplifier. This frequency response data is used in the frequency response adjustment process when the game controller 200 connected to the game device 100 is a first controller having a first vibration motor. The range of frequencies at which the vibration motor 206 can operate is determined based on the characteristics of the vibration motor 206, etc., and in this embodiment, the first vibration motor is in the range of 40Hz to 400Hz. Figure 4 As shown, in this embodiment, the permissible lower limit frequency for driving the first vibration motor is 40Hz. In this embodiment, the "permissible lower limit frequency" refers to the frequency of the first vibration motor that the application is allowed to utilize. Furthermore, in this embodiment, if the game program 102P2 specifies a frequency outside the range of 40Hz to 400Hz, the system software or the like corrects it to a value within the range of 40Hz to 400Hz. In this embodiment, when the impact vibration is set to one wavelength, a frequency of 200Hz or less is specified.

[0114] For the first vibration motor, a maximum input voltage is defined as the voltage that can be input at each frequency, as a characteristic feature. The upper limit of the allowable input voltage (the voltage input to the first vibration motor) at each frequency can be defined based on the input voltage when the displacement of the oscillator of the first vibration motor is at its limit. The amount of vibration of the first vibration motor to the input varies with frequency; therefore, the upper limit of the allowable input voltage (the input voltage when the displacement of the oscillator is at its limit) at each frequency varies with frequency. The vibration control system 10 of this embodiment is equipped with a mechanism for considering these upper limits of input voltage and adjusting the amplitude value represented by vibration indication data according to frequency. Figure 4 The frequency response data shown.

[0115] exist Figure 4 The frequency response regulation rate of the first controller, shown as the vertical axis, is a value obtained by dividing the upper limit of the allowable input voltage at each frequency by the upper limit of the output voltage of amplifier 205, and can take a value in the range of 0 to 1. A frequency with a low frequency response regulation rate can be considered a frequency that increases the amount of vibration of the oscillator relative to the input voltage.

[0116] It can also make at least one of the system program 102P1 and the game program 102P2 have the same Figure 4 The curve graph contains data similar to that. For example... Figure 4As shown, the first vibration motor in Embodiment 1 has the following characteristics: it has good vibration efficiency when operating at 100Hz, but the vibration becomes too large when a large voltage is input at that frequency. Therefore, when operating at 100Hz, the frequency characteristic adjustment rate drops to 0.5. In addition, at frequencies with poor vibration efficiency, the frequency characteristic adjustment rate is increased to prevent the vibration from weakening. When operating at frequencies above 400Hz, the allowable voltage value gradually decreases.

[0117] Next, the following situation will be explained: The processor 101 performs the above-described adjustment process on the amplitude value in the vibration indication data 114 to generate the adjusted vibration indication data 110. The amplitude value or frequency value of the indicated vibration data after the adjustment process has been performed is sometimes referred to as the adjusted amplitude value or the adjusted frequency value.

[0118] Figure 5 This is a graph showing the frequency characteristic data used in the frequency characteristic adjustment process of the second controller. Figure 5 The frequency characteristic data shown is used in the frequency characteristic adjustment process when the game controller 200 connected to the game device 100 is a second controller with a second vibration motor. Figure 5 The frequency response data represented by the curve in the middle is the data of the adjustment indication amplitude specified at each frequency. The adjustment indication amplitude on the vertical axis is the amplitude value of the second controller after frequency response adjustment at each frequency.

[0119] Figure 5 Lines Ln1 to Ln4 are shown. Line Ln1 represents the minimum indicated amplitude value (the minimum indicated amplitude value that allows the user to feel vibration when using the second controller) at each frequency. On the other hand, lines Ln2 to Ln4 are each data used to match the intensity of vibration when the second controller is vibrated using a certain vibration indication data with the intensity of vibration when the first controller is vibrated using the same vibration indication data. The intensity of vibration can be either the actual feeling when the user holds the game controller 200 or the intensity of vibration level measured by the vibration sensor.

[0120] Line Ln2 represents the adjusted amplitude value when the intensity of the vibration is matched to the intensity of the vibration when the indicated amplitude is "0.1" and the first controller is vibrating at each frequency. For example, when vibration indication data with a specified indicated amplitude value of "0.1" and an indicated frequency value of "140Hz" is generated, processor 101 refers to... Figure 5Line Ln2, as shown, adjusts the indicated amplitude value from "0.1" to "0.17". Line Ln3 is used to match the intensity of the vibration when the indicated amplitude is "0.5". Line Ln4 is used to match the intensity of the vibration when the indicated amplitude is "1.0". When the indicated amplitude is greater than or equal to 0.1 and less than 0.5, the processor 101 determines the adjustment of the indicated amplitude by performing linear interpolation using lines Ln2 and Ln3. When the indicated amplitude is greater than or equal to 0.5 and less than 1.0, the processor 101 determines the adjustment of the indicated amplitude by performing linear interpolation using lines Ln3 and Ln4. The frequency characteristic adjustment of the second controller will be explained later.

[0121] and Figure 5 The data is comparable to the curve and the data is similar to the curve. Figure 5 The data corresponding to lines Ln1 to Ln4 can also be stored in at least one of the system program 102P1 and the game program 102P2. In this embodiment, although in Figure 5 Although not shown in the diagram, data representing the minimum indicated amplitude value that causes the first controller to vibrate (the minimum indicated amplitude value that allows the user to feel vibration when using the first controller) is stored in a storage medium accessible to the processor 101. This data representing the minimum indicated amplitude value that causes the first controller to vibrate stores the minimum indicated amplitude value at each frequency, similar to line Ln1. In this embodiment, the minimum indicated amplitude value that causes the first controller to vibrate is used in the frequency characteristic adjustment of the second controller, described later. Lines Ln1 to Ln4, and the data representing the minimum indicated amplitude value that causes the first controller to vibrate, are predetermined through experiments, etc. Furthermore, the amplitude value represented by line Ln1 and the data representing the minimum indicated amplitude value that causes the first controller to vibrate represents a threshold between vibration indication data that can be perceived by vibration and vibration indication data that cannot be perceived by vibration. This can be either an amplitude value greater than or less than the indicated amplitude value that cannot be perceived by vibration.

[0122] Figure 6 This is a diagram used to illustrate the adjustment process. Figure 6The diagram illustrates an example of data adjustment processing when the game controller 200 connected to the game device 100 is a first controller with a first vibration motor. The adjustment processing is implemented by the processor 101 executing the system program 102P1. As described above, the vibration control system 10 of this embodiment is configured to control the vibration motor 206 based on two vibration indication data. That is, the system program 102P1 is configured to accept an indication dataset containing two vibration indication data for a given time. Hereinafter, the two vibration indication data contained in the indication dataset will be referred to as "first vibration indication data" and "second vibration indication data". Furthermore, the amplitude value specified by the first vibration indication data will be referred to as "first indication amplitude value", and the frequency value specified by the first vibration indication data will be referred to as "first indication frequency value". Similarly, the amplitude value specified by the second vibration indication data will be referred to as "second indication amplitude value", and the frequency value specified by the second vibration indication data will be referred to as "second indication frequency value".

[0123] System program 102P1 processes the indication dataset according to each of the aforementioned vibration indication cycles. For example, in Figure 3 If the first and second impact events occur simultaneously, vibration indication data 116A can be handed over to system program 102P1 as first vibration indication data, and vibration indication data 116B can be handed over to system program 102P1 as second vibration indication data. In this case, system program 102P1 vibrates the vibration motor 206 in a manner that provides the user with the vibration obtained by combining the vibration based on vibration indication data 116A and the vibration based on vibration indication data 116B. That is, system program 102P1 processes vibration indication data 116A and vibration indication data 116B for one vibration indication cycle.

[0124] exist Figure 6 In the example, to simplify the explanation of the adjustment process, the following is shown: Figure 3 The example shown illustrates how different vibration indication data are handed over to system program 102P1. Figure 6 The diagram shows the first, second, and third vibration indication periods. These periods are consecutive 15 ms intervals, progressing sequentially along a time series according to the order of the first, second, and third vibration indication periods. Figure 6 The example illustrates how different indicator datasets are handed over to system program 102P1 during each vibration indication cycle.

[0125] The following describes the transformation of vibration indication data within the first vibration indication cycle. During the first vibration indication cycle, a dataset containing first vibration indication data specifying a first indication amplitude value of "0.0" and a first indication frequency value of "0", and second vibration indication data specifying a second indication amplitude value of "0.0" and a second indication frequency value of "0", is handed over to system program 102P1. That is, during the first vibration indication cycle, system program 102P1 is not handed over any vibration indication data, or is handed over vibration indication data indicating that the vibration motor 206 will not vibrate. In this case, no adjustment is performed in any of the adjustment processes, including the total adjustment process, the frequency characteristic adjustment process, and the clamping adjustment process, and the amplitude and frequency are transformed into vibration indication data 110, ultimately remaining at "0.0".

[0126] During the second vibration indication cycle, an indication dataset containing first vibration indication data with a specified first indication amplitude value of "0.7" and a first indication frequency value of "50Hz", and second vibration indication data with a specified second indication amplitude value of "0.5" and a second indication frequency value of "80Hz", is handed over to system program 102P1. Upon receiving an indication dataset containing two vibration indication data sets with non-zero amplitude values, system program 102P1 performs a total adjustment process to adjust the amplitude values ​​indicated by the first and second vibration indication data sets. The total adjustment process is a proportional allocation process that, when the sum of the amplitude values ​​indicated by the two vibration indication data sets within the same vibration indication cycle exceeds 1, makes the sum of the amplitude values ​​indicated by the two vibration indication data sets equal to 1.

[0127] Specifically, the processor 101 determines whether the sum of the amplitude values ​​indicated by the first vibration indication data and the amplitude values ​​indicated by the second vibration indication data exceeds 1. If the sum does not exceed 1, the processor 101 ends the total adjustment process without changing any individual amplitude values. If the sum exceeds 1, the processor 101 divides the amplitude values ​​indicated by each vibration indication data by the sum of the amplitude values ​​indicated by each vibration indication data. As a result, the amplitude value of the first vibration indication data after total adjustment is adjusted to "0.58", and the amplitude value of the second vibration indication data after total adjustment is adjusted to "0.42".

[0128] Next, the frequency response adjustment process will be explained. In the frequency response adjustment process, the following steps are used: Figure 4 The frequency response data described herein is used to adjust the amplitude value. Processor 101 uses... Figure 4 The processor 101 uses data equivalent to the curve to obtain the frequency response adjustment rate at a specified frequency value. For the first vibration indication data, the processor 101 refers to... Figure 4The frequency response data corresponding to the curve is used to determine the frequency response adjustment rate as "1.0" when the vibration motor 206 operates at a frequency of 50Hz. The processor 101 multiplies the amplitude value "0.58" indicated by the first vibration indication data by the frequency response adjustment rate "1.0" to adjust the amplitude value to "0.58". That is, in this case, the frequency response adjustment rate of 50Hz is "1.0", so the amplitude value of the first vibration indication data in the second vibration indication cycle does not change through the frequency response adjustment processing.

[0129] Similarly, for the second vibration indication data, the processor 101 determines the frequency response adjustment rate to be "0.7" when the vibration motor 206 operates at a frequency of 80Hz. The processor 101 multiplies the amplitude value "0.42" indicated by the second vibration indication data after total adjustment by the frequency response adjustment rate "0.7" to adjust the amplitude value to "0.29". In this embodiment, the third decimal place is rounded, but it is also possible to calculate the number after the third decimal place.

[0130] Next, the first vibration indication data and the second vibration indication data within the third vibration indication cycle will be explained. In the third vibration indication cycle, an indication dataset containing first vibration indication data specifying a first indication amplitude value of "0.7" and a first indication frequency value of "150Hz", and second vibration indication data specifying a second indication amplitude value of "0.5" and a second indication frequency value of "200Hz", is handed over to system program 102P1. In the third vibration indication cycle, similarly to the second vibration indication cycle, the amplitude values ​​indicated by the first and second vibration indication data are adjusted through a total adjustment. The amplitude value of the first vibration indication data after the total adjustment within the third vibration indication cycle is adjusted to "0.58", and the amplitude value of the second vibration indication data is adjusted to "0.42".

[0131] Next, processor 101 refers to and Figure 4 Based on the frequency response data corresponding to the curve, when the vibration motor 206 operates at a frequency of 150Hz, the processor 101 determines the frequency response adjustment rate to be "1.0". The processor 101 multiplies the amplitude value "0.58" indicated by the first vibration indication data by the frequency response adjustment rate "1.0" to adjust the amplitude value to "0.58". For the second vibration indication data within the third vibration indication cycle, when the vibration motor 206 operates at a frequency of 200Hz, the processor 101 determines the frequency response adjustment rate to be "1.0". The processor 101 multiplies the amplitude value "0.42" indicated by the second vibration indication data by the frequency response adjustment rate "1.0" to adjust the amplitude value to "0.42".

[0132] As described later, the clamping adjustment process is used in the game controller 200 to gradually change the frequency when the current indicated frequency value differs from the previous indicated frequency value, but to suppress the input voltage to the vibration motor 206 from exceeding the allowable value during this process. The process performed in the game controller 200, as described later, is a process that gradually approaches the indicated amplitude and frequency from the previous amplitude value and previous frequency. The clamping adjustment process is a process that adjusts the first indicated amplitude value and the second indicated amplitude value to match the frequency with the lowest frequency characteristic adjustment rate (i.e., the frequency with the best vibration efficiency) when the frequency gradually changes within the vibration indication period.

[0133] First, the processor 101 determines a first clamping value and a second clamping value for the first vibration indication data and the second vibration indication data, respectively. Regarding the clamping value, the frequency with the lowest frequency characteristic adjustment rate between the frequency values ​​of the vibration indication data in the previous vibration indication cycle and the frequency values ​​of the vibration indication data in the current vibration indication cycle is determined as the clamping value. Taking the third vibration indication cycle as an example, for the first vibration indication data, the first indication frequency value at the time point of the second vibration indication cycle is 50Hz, and the first indication frequency value at the time point of the third vibration indication cycle is 150Hz. Returning to... Figure 4 The frequency with the lowest frequency response adjustment rate among the frequencies between 50Hz and 150Hz is 100Hz. Therefore, as the first clamping value, the processor 101 determines "0.5" as the frequency response adjustment rate of 100Hz as the first clamping value.

[0134] Regarding the second vibration indication data, the second indication frequency value at the second vibration indication cycle time point is 80Hz, and the second indication frequency value at the third vibration indication cycle time point is 200Hz. Return to... Figure 4 The frequency with the lowest frequency response adjustment rate among the frequencies between 80Hz and 200Hz is 100Hz. Therefore, as the first clamping value, the processor 101 determines "0.5" as the second clamping value, which is the frequency response adjustment rate of 100Hz.

[0135] For the first vibration indication data, the processor 101 divides the frequency-adjusted first indication amplitude value by the sum of the frequency-adjusted first indication amplitude value and the frequency-adjusted second indication amplitude value. The processor 101 multiplies the value obtained from the division operation by the aforementioned first clamping value to determine the clamping value. For example, the first clamping value is calculated as: first clamping value × frequency-adjusted first indication amplitude value / (frequency-adjusted first indication amplitude value + frequency-adjusted second indication amplitude value), which is "0.29". If the frequency-adjusted first indication amplitude value is greater than the determined clamping value, the processor 101 sets the clamping value to the clamped first indication amplitude value. That is, since the frequency-adjusted amplitude value "0.58" is greater than the determined first clamping value "0.29", the processor 101 determines "0.29" as the clamped first indication amplitude value.

[0136] Similarly, for the second vibration indication data, the processor 101 divides the frequency-adjusted second indication amplitude value by the sum of the frequency-adjusted first indication amplitude value and the frequency-adjusted second indication amplitude value. The processor 101 multiplies the value obtained by the division operation by a second clamping value. Specifically, the clamping value determined by this calculation is 0.21, and the processor 101 determines this value as the clamping value. Since the frequency-adjusted amplitude value "0.42" is greater than the determined clamping value "0.21", the processor 101 determines "0.21" as the clamped second indication amplitude value.

[0137] As a result, the first vibration indication data after clamping adjustment is transformed into vibration indication data 110 indicating a first indication amplitude value of "0.29" and a first indication frequency value of "150", and the second vibration indication data after clamping adjustment is transformed into vibration indication data 110 indicating a second indication amplitude value of "0.21" and a second indication frequency value of "200". Following system program 102P1, after saving the indication dataset containing the adjusted vibration indication data 110 to the vibration indication data area 103B3, the processor 101 sends the indication dataset to the game controller 200 in the order it was saved. The MCU 201 in the game controller 200 generates control data based on the received transformed vibration indication data 110 and drives the vibration motor 206 based on this control data.

[0138] [E. The process of generating and processing vibration indication data in gaming devices]

[0139] The following flowchart illustrates the processes performed by the processor 101 of the game device 100. Figure 7This is a flowchart illustrating the process of generating vibration indication data 114 containing standardized amplitude values, performed in Embodiment 1. Figure 7 The process shown in the flowchart is implemented by the processor 101 executing the game program 102P2, which begins execution upon the start of the game program 102P2.

[0140] Processor 101 acquires operation data (step S101). Processor 101 causes game objects to move based on the received operation data (step S102). Game objects refer to objects manipulated by the user in the virtual space within the game, typically including player characters, cars in racing games, etc.

[0141] The processor 101 determines whether an impact event has occurred in the game based on whether a game object has performed an action or based on an in-game event unrelated to the action of the game object (step S103). An impact event is an event that serves as a condition for generating a vibration effect. Depending on the game content, there are various types of events. For example, in an adventure game, it is when a weapon such as a sword possessed by the player character comes into contact with an enemy object, or in a racing game, it is when the car operated by the user collides with other vehicles.

[0142] If no impact event occurs in the game ("No" in step S103), processor 101 returns the process to step S101. If an impact event occurs in the game ("Yes" in step S103), processor 101 generates vibration indication data 114 (typically a time-series vibration indication data set) and hands over the generated vibration indication data 114 to system program 102P1 (step S104). At this time, vibration indication data (or a time-series vibration indication data set) can also be generated by reading the aforementioned vibration file 105.

[0143] After handing over the indication dataset containing vibration indication data 114 to the system program 102P1, the processor 101 returns to step S101, and repeats the processing of steps S101 to S104 during game execution. When two impact events occur simultaneously, the processor 101, based on the two impact events, hands over the indication dataset containing first vibration indication data and second vibration indication data to the system program 102P1. When one impact event occurs, the processor 101, based on the one impact event, hands over the indication dataset containing only first vibration indication data to the system program 102P1. In this case, the processor 101 may also include second vibration indication data specifying a second indication amplitude value "0" and a second indication frequency value "0" in the indication dataset. Furthermore, the first and second vibration indication data may be generated based on a single impact event. In this way, the game device 100 in this embodiment generates vibration indication data 114 based on impact events occurring as the game progresses, and hands it over to the system program 102P1. After executing step S104, processor 101 performs other processes to advance the game.

[0144] Figure 8 This is a flowchart illustrating the process of adjusting vibration indication data performed by the gaming device 100 in Embodiment 1. Figure 8 The processing shown in the flowchart is achieved by the processor 101 executing system program 102P1. Figure 8 In this process, the aforementioned adjustments will be implemented. Furthermore, Figure 8 The flowchart shown has branching processes depending on the type of game controller 200 connected to the game device 100.

[0145] Figure 8 The flowchart shown is executed based on the handover of the instruction dataset from the game program 102P2 to the system program 102P1. The processor 101 selects the first vibration instruction data and the second vibration instruction data handed over from the game program 102P2 (step S105).

[0146] The processor 101 determines whether the connected game controller 200 is a second controller (step S105Y). If the connected game controller 200 is a second controller, the processor 101 performs an upgrade process (step S105Z).

[0147] Figure 9This is a flowchart illustrating the enhancement process (step S105Z). In the enhancement process shown in step S105Z, the processor 101 determines whether the previous first vibration indication data does not exist (step S105Z1). That is, the processor 101 determines whether no vibration based on the first vibration indication data occurred during the previous vibration indication cycle. If the previous first vibration indication data does not exist ("yes" in step S105Z1), the processor 101 determines whether the indication frequency of the selected first vibration indication data in the current vibration indication cycle is below 150Hz (step S105Z2).

[0148] If the frequency of the first vibration indication data is below 150Hz ("Yes" in step S105Z2), the processor 101 sets the amplitude of the selected first vibration indication data to 1.2 times in the current vibration indication cycle (S105Z3). If the result of setting it to 1.2 times in step S105Z3 exceeds "1.0", the processor 101 corrects the amplitude to "1.0". It is then determined whether vibration based on the first vibration indication data has occurred. If there is previous first vibration indication data ("No" in step S105Z1), or if the frequency of the selected first vibration indication data exceeds 150Hz ("No" in step S105Z2), the processor 101 does not execute the processing in S105Z3. In steps S105Z4 to S105Z6, the processing in steps S105Z1 to S105Z3 is executed for the second vibration indication data. The processes in steps S105Z4 to S105Z6 are the same as those in steps S105Z1 to S105Z3, except that the objects being processed are different, so they will not be described again.

[0149] Each of steps S105Z1 and S105Z4 includes at least one of the following processes: determining that the amplitude indicated by the previous amplitude indication data is zero; determining that the amplitude indicated by the previous amplitude indication data is approximately zero; determining that the previous control amplitude is zero; and determining that the previous control amplitude is approximately zero. It is possible to determine that any one of these conditions is met, or multiple processes can be performed and at least one condition can be determined to be met. "Approximately zero" includes the case where the amplitude is below a threshold near zero.

[0150] Thus, in this embodiment, when a second controller is connected, a boosting process that increases the indicated amplitude by 1.2 times is performed when vibration based on vibration indication data begins. Therefore, even when the second controller, which is less prone to vibration than the first controller, begins to vibrate, a good upward vibration can begin. Furthermore, in Figure 8The example shown illustrates an instance where the boosting process is performed only during one vibration indication cycle, i.e., 5 ms. However, the duration of the boosting process is not limited to 5 ms. For example, the boosting process can also be performed continuously over three vibration indication cycles, i.e., 15 ms. Furthermore, regarding the indication amplitude, it is not necessary to update the indication amplitude to 1.2 times from the first vibration indication cycle. Instead, the indication amplitude can be gradually increased by controlling it to be 1.1 times in the first vibration indication cycle and 1.2 times in the second vibration indication cycle.

[0151] Furthermore, when the second vibration motor of the second controller vibrates at a frequency below 150Hz, the rise becomes gradual. Therefore, the indicated amplitude is set to 1.2 times only at frequencies below 150Hz, as shown in step S105Z2, thereby enabling processing to be performed only when needed, thus reducing the processing burden. Moreover, the processing in step S105Z2 may not be necessary, and the indicated amplitude may be set to 1.2 times regardless of frequency. Additionally, when the game device 100 generates only one vibration indication data point as vibration indication data for vibrating the vibration motor 206 at a certain time, it can perform boosting processing on that single vibration indication data point.

[0152] Next, return to Figure 8 The processor 101 performs a total adjustment process (step S105A) on the first vibration indication data and the second vibration indication data. The total adjustment process is performed regardless of the type of controller connected.

[0153] Next, the processor 101 determines the frequency characteristic adjustment rate of each according to the first indication frequency value and the second indication frequency value contained in the total adjusted first vibration indication data and second vibration indication data respectively (step S106). Figure 10 This is a flowchart illustrating the process of frequency characteristic adjustment processing (step S106) for each type of game controller 200. Figure 10 In the process, the processing of steps S1062 to S1069 is performed for each first vibration indication data and each second vibration indication data. However, it can also be set to perform the processing for the first vibration indication data and the second vibration indication data in parallel to simplify the illustration of the processing for each first vibration indication data and each second vibration indication data.

[0154] In the frequency characteristic adjustment process, processor 101 determines the type of the connected controller (step S1061). If the type of the connected controller is a first controller, processor 101 determines the type based on... Figure 4The processor 101 uses data equivalent to the curve graph to determine the frequency response adjustment rate. The processor 101 multiplies the total adjusted first and second indicated amplitude values ​​by the frequency response adjustment rates corresponding to the first and second indicated frequency values, respectively, to determine the frequency response adjusted first and second indicated amplitude values ​​(step S1062A). That is, the frequency response adjustment process of the first controller described above is performed through steps S1062 and S1062A.

[0155] When the controller connected in step S1061 is a second controller, the processor 101 is based on... Figure 5 The processor 101 determines whether the indicated amplitude is adjusted based on data corresponding to the curve graph. The processor 101 determines whether the indicated amplitude value is above the minimum threshold of the first controller (step S1063). Furthermore, in step S1063, based on the indicated frequency, a value corresponding to the indicated frequency is used with reference to the aforementioned data on the "minimum indicated amplitude value that causes the first controller to vibrate". The game device 100 refers to data representing the minimum indicated amplitude value that causes the first controller to vibrate at each frequency to determine whether the indicated amplitude value of the vibration indicated data selected in step S105 is higher than the minimum indicated amplitude value. That is, when the vibration indicated data selected in step S105 is input to the first controller, the processor 101 determines whether the first controller vibrates.

[0156] If the indicated amplitude value is less than the minimum threshold of the first controller (No in step S1063), that is, if the selected vibration indication data does not cause the first controller to vibrate, the processor 101 updates the indicated amplitude value of the selected vibration indication data to zero (step S1064) and returns to the previous state. If the indicated amplitude value is greater than or equal to the minimum threshold of the first controller (Yes in step S1063), the processor 101 determines whether the indicated amplitude value is less than 0.1 (step S1065). If the indicated amplitude value is less than 0.1 (Yes in step S1065), the processor 101 uses... Figure 5 Linear interpolation is performed on lines Ln1 and Ln2 to determine the adjustment indication amplitude (step S1066). Processor 101 updates the indication amplitude value of the selected vibration indication data to the determined adjustment indication amplitude value, and returns to the previous state.

[0157] If the indicated amplitude value is 0.1 or higher (No in step S1065), the processor 101 determines whether the indicated amplitude value is less than 0.5 (step S1067). If the indicated amplitude value is less than 0.5 (Yes in step S1067), the processor 101 uses... Figure 5Linear interpolation is performed on lines Ln2 and Ln3 to determine the adjustment of the indicated amplitude (step S1068). For example, when processing vibration indication data with a specified indicated amplitude value of "0.3" and an indicated frequency value of "300Hz", linear interpolation is performed, referring to... Figure 5 The value between lines Ln2 and Ln3 at a frequency of 300Hz is used to determine the adjustment of the indicator amplitude. That is, as... Figure 5 As shown, the processor 101 determines a value of approximately 0.33 as the adjustment of the indication amplitude, updates the indication amplitude value of the vibration indication data from "0.3" to "0.33", and returns to the previous state.

[0158] If the indicated amplitude value is 0.5 or higher (No in step S1067), by using Figure 5 Linear interpolation is performed on lines Ln3 and Ln4 to determine the adjustment of the indicated amplitude (step S1069). For example, when processing vibration indication data with a specified indicated amplitude value of "0.75" and an indicated frequency value of "80Hz", linear interpolation is performed, referring to... Figure 5 The value between lines Ln3 and Ln4 at frequency "80Hz" is used to determine the adjustment of the indicator amplitude. That is, as... Figure 5 As shown, processor 101 determines a value of approximately 0.50 to adjust the indication amplitude, updates the indication amplitude value of the vibration indication data from "0.75" to "0.50", and returns to the previous state. Regarding the indication amplitude, it is not limited to always being updated in an increasing manner. For example, when the indication amplitude value is "0.5", in the region where the indication frequency is less than 100Hz, the indication amplitude is updated in a decreasing manner; in the region where the indication frequency is above 100Hz and less than 355Hz, the indication amplitude is updated in a increasing manner.

[0159] In this way, the second controller utilizes Figure 5 The curves and lines shown are used to determine the adjustment of the indicator amplitude. The process for determining the adjustment of the indicator amplitude is also based on the value of the indicator amplitude, but in the region higher than 100Hz, it is updated in a way that increases the amplitude value. Therefore, the process for determining the adjustment of the indicator amplitude can be described as an adjustment that increases the indicator amplitude. Furthermore, in the process of determining the adjustment of the indicator amplitude, the adjustment of the indicator amplitude is determined according to the value of the indicator frequency, but at any frequency, it does not exceed "1.0" representing the maximum amplitude of the second vibration motor. Therefore, the process for determining the adjustment of the indicator amplitude can be described as an adjustment that does not exceed "1.0" representing the maximum amplitude.

[0160] As described above, lines Ln2 to Ln4 are each data used to match the vibration intensity when the second controller is vibrated using a certain vibration indication data with the vibration intensity when the first controller is vibrated using the same vibration indication data. Furthermore, in this embodiment, the second controller is less prone to vibration compared to the first controller. In this embodiment, when both the second and first controllers vibrate with an indicated amplitude value of "0.5", the vibration intensity in the second controller is weaker than that in the first controller across the entire frequency band. However, when the second controller vibrates in a region where the indicated amplitude value is "0.5" and the indicated frequency is below "100Hz", the displacement of the oscillator may exceed the limit. Therefore, in this embodiment, the vibration control system 10 updates the indicated amplitude value to a value less than "0.5" when the indicated frequency is below 100Hz. Similarly, when the second controller vibrates in a region where the indicated amplitude value is "0.5" and the indicated frequency is "350Hz" or higher, the displacement of the oscillator may exceed the limit value. Therefore, the vibration control system 10 updates the indicated amplitude value to a value less than "0.5" when the indicated frequency is 350Hz or higher. In other words, when the second controller has an indicated amplitude value of "0.5" and an indicated frequency of "100Hz" or higher but lower than "350Hz", the indicated amplitude value is updated by increasing it. Similarly, for line Ln2, there is also a case where the indicated amplitude value is updated by considering the displacement of the oscillator to decrease it. For line Ln4 in this embodiment, the indicated amplitude value is updated to a value less than "1.0" across the entire frequency band, but in other aspects, the indicated amplitude may also be maintained at "1.0".

[0161] In this embodiment, the adjustment to increase the indicated amplitude value is performed based on the indicated amplitude specified by the application. More specifically, when the indicated amplitude specified by the application has a margin relative to the maximum amplitude, the adjustment is performed to increase the indicated amplitude. This can improve the vibration sensation, for example, in controllers with weak vibration. Furthermore, when the indicated amplitude is determined by the application based on a standard controller, the vibration sensation of a controller with weaker vibration than the standard controller can be matched (approached) with the vibration sensation of the standard controller. Additionally, the adjustment to decrease the indicated amplitude value can also be performed based on the indicated amplitude specified by the application. This can reduce the vibration sensation, for controllers with strong vibration. Moreover, this control is based on the indicated frequency, so the indicated amplitude can be adjusted appropriately for each frequency. For example, the indicated amplitude can be increased at frequencies with weak vibration, and decreased at frequencies with strong vibration. Furthermore, the adjustment process can be switched between performing adjustment processing and not performing adjustment processing based on the controller used, thus allowing amplitude adjustment based on the characteristics of the controller. The content of the amplitude adjustment can also be changed depending on the type of controller. Furthermore, in the case of the second controller, if the indicated amplitude value indicated by the application is greater than or equal to the minimum indicated amplitude value that causes the first controller to vibrate, it is changed to be greater than or equal to the minimum indicated amplitude value that causes the second controller to vibrate. Therefore, when the application determines the indicated amplitude based on the first controller, the vibration sensation is not lost when using the second controller to play the same application. Additionally, while the minimum indicated amplitude values ​​that cause the first controller to vibrate and the minimum indicated amplitude values ​​that cause the second controller to vibrate may differ for each indicated frequency, in this embodiment, these minimum indicated amplitude values ​​use data that differs for each indicated frequency, thus allowing processing to be set to correspond to the indicated frequency. Furthermore, if the indicated amplitude value is less than the minimum indicated amplitude value that causes the first controller to vibrate, the indicated amplitude value is set to zero, thus avoiding unnecessary control.

[0162] Branch processing in steps S1063, S1065, and S1067 Figure 5 The number of lines contained in the curve graph corresponds to the number of lines in the graph. Figure 5The number of lines in the curve is not limited to four; it can be five, eight, or more than four, or two, three, or less than four. In one aspect, when the indicated amplitude value is "1.0," the frequency characteristic adjustment of the second controller may not be performed. In this case, the indicated amplitude value remains "1.0." That is, the processor 101 causes the second controller to vibrate at maximum output. Furthermore, when the indicated amplitude value is less than 0.5, the frequency characteristic adjustment of the second controller may not be performed. In this case, the indicated amplitude value remains above 0.5. The indicated amplitude value is updated only when the indicated amplitude value is less than 0.5 in step S1067. That is, when the indicated amplitude value is above 0.5, the adjustment may not be performed. Figure 5 Adjustments to the curve graph.

[0163] Furthermore, the processor 101 performs clamping adjustment processing on the first and second indicated amplitude values ​​after frequency characteristic adjustment (step S107A). The processor 101 writes the indicated data set containing the clamped first and second vibration indicated data into the vibration indicated data area 103B3 (step S108). The processor 101 determines whether all indicated data sets transferred from the game program 102P2 have been processed (step S109). If the first vibration indicated data with an indicated amplitude value of zero is written in step S108, and the amplitude value indicated by the last written first vibration indicated data is zero, the processor 101 does not perform the process of writing the first vibration indicated data with an indicated amplitude value of zero. That is, the re-writing process is omitted. The same processing is performed on the second vibration indicated data. Thus, the continuous transmission of first vibration indicated data with an indicated amplitude value of zero from the game device 100 to the game controller 200 is suppressed, reducing the processing burden in the vibration control system.

[0164] In the case where it is connected to the first controller, such as through... Figure 6 Use as described Figure 4 The clamping adjustment process of the curve graph. On the other hand, for the case where a second controller is connected, the use of... Figure 5 The clamping adjustment process for line Ln1. Processor 101 determines the smallest adjustment indication amplitude among the adjustment indication amplitudes represented by line Ln4 during the period from the previous indication frequency to the current indication frequency. Processor 101 compares the determined adjustment indication amplitude with the value of the indication amplitude updated in step S106. If the value of the indication amplitude updated in step S106 is greater than the determined adjustment indication amplitude, processor 101 updates the indication amplitude value to the determined adjustment indication amplitude.

[0165] More specifically, refer to Figure 5Given a previous frequency of 50Hz and a current frequency of 150Hz, processor 101 determines that the minimum adjustment indication amplitude indicated by line Ln4 within the 50Hz to 150Hz range is "0.66". If the indication amplitude of the selected vibration indication data is 0.66 or higher, processor 101 updates the indication amplitude value to 0.66. This suppresses unintentional changes in behavior during the gradual frequency change process described later.

[0166] Return to Figure 8 If the adjustment process for all vibration indication data 114 has not yet been completed (No in step S109), the processor 101 returns the process to step S105. If the adjustment process for all vibration indication data 114 has been completed (Yes in step S109), the processor 101 ends the flowchart processing. Thus, as Figure 6 The adjusted vibration indication data 110, as shown in the lower left part, is written into the vibration indication data area 103B3.

[0167] The processor 101 sends the adjusted vibration indication data 110 stored in the vibration indication data area 103B3 to the game controller 200 via the communication interface 104. The game controller 200 saves the received adjusted vibration indication data 110 to the vibration indication data area 204B1 in the volatile memory 204.

[0168] [F. The process of generating and processing control data in the game controller]

[0169] The following flowchart illustrates the processes performed by the MCU 201 of the game controller 200. Figure 11 This is a flowchart illustrating the process of generating control data executed by the game controller 200 in Embodiment 1. Figure 11 The flowchart shown can be executed concurrently by both the first and second controllers, or some processing may differ depending on the type of controller. Control data refers to data generated by the processor 202 based on the adjusted first and second vibration indication data. Typically, control data represents the voltage value used to drive the vibration motor 206, specifically the instantaneous voltage value (instantaneous value) of a waveform based on a specified frequency and amplitude. Hereinafter, the control data is output at predetermined intervals, referred to as the "control cycle."

[0170] In this embodiment, regarding the control cycle, since amplifier 205 operates at 8kHz, control data is supplied to vibration motor 206 every 0.125ms, and this cycle is 0.125ms. MCU 201 generates control data from one vibration indication data, the number of which is the vibration indication cycle divided by the control cycle. In this embodiment, the vibration indication cycle is 5ms and the control cycle is 0.125ms, therefore processor 202 generates 40 control data from one vibration indication data. Based on the frequency and amplitude values ​​of the adjusted vibration indication data 110, a reference waveform is determined for each control cycle (0.125ms). The reference waveform, determined for each control cycle, is used to determine the voltage value output as control data. Processor 202 determines the voltage value output as control data based on the reference waveform.

[0171] Figure 11 The process shown in the flowchart is implemented by the processor 202 executing the MCU program 203P. Figure 11 The process shown in the flowchart begins, for example, based on the supply of power to the game controller 200.

[0172] In the volatile memory 204, for each vibration indication data in the indication dataset, including the first vibration indication data and the second vibration indication data, there are a current amplitude data region 204V1, a current frequency data region 204V2, and a current phase data region 204V3, which respectively store the current amplitude data, current frequency data, and current phase data. That is, the current amplitude data region 204V1 is configured to store the first current amplitude data based on the first vibration indication data and the second current amplitude data based on the second vibration indication data. Hereinafter, without distinguishing between the first current amplitude data and the second current amplitude data, they will be simply referred to as "current amplitude data".

[0173] Furthermore, the current frequency data region 204V2 is configured to store first current frequency data based on the first vibration indication data and second current frequency data based on the second vibration indication data. Hereinafter, without distinguishing between the first and second current frequency data, it will be simply referred to as "current frequency data". On the other hand, the current phase data stored in the current phase data region 204V3 is shared in the processing of both the first and second vibration indication data; therefore, the current phase data region 204V3 is configured to store one current phase data. Alternatively, the current phase data region 204V3 may also be configured to store first current phase data based on the first vibration indication data and second current phase data based on the second vibration indication data. These data represent the current amplitude, current frequency, and current phase in the control data of the vibration motor 206 vibrating based on the first and second vibration indication data, respectively.

[0174] In step S201, the processor 202 copies the values ​​of the current amplitude data and the current frequency data from the first vibration indication data and the second vibration indication data to different areas of the volatile memory 204. Specifically, the previous amplitude data and the previous frequency data are stored in the previous amplitude data area 204V4 and the previous frequency data area 204V5, respectively (step S201).

[0175] The previous amplitude data region 204V4 is configured to store first previous amplitude data based on first vibration indication data and second previous amplitude data based on second vibration indication data. Hereinafter, without distinguishing between the first and second previous amplitude data, it will be simply referred to as "previous amplitude data". The previous frequency data region 204V5 is configured to store first previous frequency data based on first vibration indication data and second previous frequency data based on second vibration indication data. Hereinafter, without distinguishing between the first and second previous frequency data, it will be simply referred to as "previous frequency data". Furthermore, the processor 202 executes for the first time after the game controller 200 is started. Figure 11 In the case of the flowchart shown, as an initialization process, "0V" is saved as the value of the current amplitude data and the previous amplitude data, "0Hz" is saved as the value of the current frequency data and the previous frequency data, and "0 degrees" is saved as the value of the current phase data.

[0176] Processor 202 determines whether an indication dataset exists in vibration indication data area 204B1 (step S202). It then determines whether neither the first vibration indication data nor the second vibration indication data exists in vibration indication data area 204B1 (step S202). If at least one of the first vibration indication data and the second vibration indication data exists in vibration indication data area 204B1 (no in step S202), processor 202 executes step S204.

[0177] If neither the first vibration indication data nor the second vibration indication data exists in the vibration indication data area 204B1 ("Yes" in step S202), the processor 202 executes the termination process (step S203). Details regarding the termination process will be described later. Next, the processor 202 acquires the first vibration indication data from the indication dataset within the vibration indication data area 204B1 and deletes this indication dataset from the vibration indication data area 204B1 (step S204). The earliest indication dataset saved to the vibration indication data area 204B1 is stored at the beginning of the vibration indication data area 204B1.

[0178] Hereinafter, the first indication amplitude value and the second indication amplitude value contained in the indication dataset obtained by the processor 202 in step S204 will not be distinguished and will be referred to as "indication amplitude value". Similarly, the first frequency value and the second frequency value contained in the indication dataset obtained by the processor 202 in step S204 will not be distinguished and will be referred to as "indication frequency value".

[0179] Processor 202 determines whether both the value of the first previous amplitude data and the value of the second previous amplitude data stored in step S201 exceed 0 (step S205). If at least one of the values ​​of the first previous amplitude data and the second previous amplitude data exceeds 0 ("yes" in step S205), it can be determined that the vibration has been ongoing since the beginning (not starting from a state of no vibration), and the process transitions to the vibration continuation after step S206. As described later, steps S207 to S210 are executed for each first vibration indication data and each second vibration indication data. The determination in step S205 of whether the vibration started from the state of ongoing vibration is also executed for each first vibration indication data and each second vibration indication data. In step S206, processor 202 substitutes 1 into the counting variable X (step S206). The counting variable X is a counter variable prepared in the volatile memory 204 and is used to repeat the process 40 times to generate 40 control data.

[0180] The following uses steps S201-S210 to explain updating the first current amplitude data and the second current amplitude data, the first current frequency data and the second current frequency data, and the current phase data, and generating first control data corresponding to the first vibration indication data and second control data corresponding to the second vibration indication data. That is, the processor 202 executes the processing steps S201-S210 illustrated for both the first vibration indication data and the second vibration indication data. Figure 11 In the flowchart, for the sake of simplicity, the processing method of S201 to S210 for one vibration indication data is illustrated. Steps S201 to S210 performed for the first vibration indication data and steps S201 to S210 performed for the second vibration indication data can also be performed in parallel. As explained in step S210A later, the sum of the first control data and the second control data is written as control data into the control data area 204B2.

[0181] The following explanation focuses solely on the first vibration indication data to illustrate steps S207-S210. In step S207, processor 202 substitutes the value into the first current amplitude data. In step S207, processor 202 subtracts the value of the first previous amplitude data from the first indication amplitude value. Processor 202 multiplies the result of the subtraction operation by the value obtained by dividing the value stored in the counting variable X by 40. Processor 202 adds the result of the multiplication operation to the value obtained by the first previous amplitude data and saves it to the first current amplitude data (step S207).

[0182] In step S208, processor 202 substitutes the value into the first current frequency data. In step S208, processor 202 subtracts the value of the first previous frequency data from the first indicated frequency. Processor 202 multiplies the result of the subtraction operation by the value obtained by dividing the value stored in the counting variable X by 40. Processor 202 adds the result of the multiplication operation to the value of the first previous frequency data and saves the result to the first current frequency data (step S208).

[0183] Through steps S207 and S208, the amplitude and frequency values ​​of the reference waveform used to generate the first control data are saved for the first current amplitude data and the first current frequency data. In step S209, the processor 202 substitutes values ​​into the current phase data. Specifically, the processor 202 sets the current phase data value to be 0.125ms ahead of the current phase data value based on the value of the first current frequency data.

[0184] Processor 202 determines the amplitude and current phase based on the values ​​of the first current amplitude data, the first current frequency data, and the current phase data, and generates first control data corresponding to the calculated voltage value to be output by amplifier 205 (step S210). More specifically, processor 202 determines a reference waveform based on the values ​​of the first current amplitude data and the first current frequency data, and generates a voltage value at the phase represented by the value of the first current phase data in the reference waveform as the first control data. Regarding the reference waveform, in Figure 15 The details are as follows. As described above, the processor 202 generates second control data by performing steps S207 to S210 in the same manner as with the first vibration indication data for the second vibration indication data. The processor 202 writes control data representing the voltage value obtained by adding the voltage value represented by the first control data to the voltage value represented by the second control data into the control data area 204B2 (step S210A). As a result, the vibration motor 206 can vibrate based on both the first vibration indication data and the second vibration indication data. In addition, in the vibration control system 10, when the vibration motor 206 vibrates based on the occurrence of a single vibration event, the indicated amplitude value and indicated frequency value of either the first vibration indication data or the second vibration indication data are 0.

[0185] The control data written to the control data area 204B2 is sent to the amplifier 205 through the I2S unit i2s. The amplifier 205 amplifies the voltage to the voltage value corresponding to the control data written to the control data area 204B2 and applies the amplified voltage to the vibration motor 206.

[0186] Processor 202 substitutes the value obtained by adding 1 to the current counting variable X into the counting variable X (step S211). Processor 202 determines whether the value of the counting variable X exceeds 40 (step S212). If the value of the counting variable X does not exceed 40 ("No" in step S212), processor 202 returns the process to step S207.

[0187] If the value of the counting variable X exceeds 40 ("Yes" in step S212), the processor 202 returns the processing to step S201. The value of the counting variable X exceeding 40 means that the generation of 40 control data points corresponding to the vibration indication data obtained in step S204 has been completed. In other words, it means that the processing of the obtained indication dataset has been completed.

[0188] As shown in steps S206 to S212, the vibration control system 10 of this embodiment performs a process that gradually approaches the indicated amplitude and frequency from the previous amplitude value and previous frequency when the amplitude and frequency are indicated by the vibration indication data. This process is called interpolation processing. Furthermore, this interpolation processing is not performed at the start of vibration. Additionally, through the processing in steps S206 to S212, 40 control data points are generated for each vibration indication data point, output every 0.125 ms.

[0189] Returning to step S205, when the value of the previous amplitude data is 0 ("No" in step S205), the processor 202 determines that vibration has begun and executes the start process (step S214). The case where the previous amplitude data is 0 indicates that the vibration motor 206 has started operating from a stopped state. Alternatively, in step S205, it can be determined that the previous amplitude data is approximately zero. Furthermore, in step S205, it can be determined that the previous control data is greater than 0 instead of determining that the previous amplitude data is greater than 0. In this case, the start process is executed if the previous control data is determined to be 0 based on the phase, regardless of whether the previous amplitude data is 0 or not. Alternatively, in this case, it can also be determined that it is approximately zero.

[0190] The following describes the termination process (step S203) and the start process (step S214). Figure 12 This is a flowchart illustrating the process of ending the processing (step S203). Figure 12 In the process, the processing of steps S2034 to S20345 is performed for each first vibration indication data and the second vibration indication data. However, it is set to perform the processing for the first vibration indication data and the second vibration indication data in parallel, which simplifies the illustration of the processing for each first vibration indication data and the second vibration indication data.

[0191] Processor 202 determines whether 105ms has elapsed since the start of time measurement (step S2031). Time measurement begins in step S2033, described later. If less than 105ms has elapsed since the start of time measurement ("No" in step S2031), processor 202 determines whether time measurement is currently in progress (step S2032). If time measurement is not in progress ("No" in step S2032), processor 202 begins time measurement (step S2033). That is, time measurement begins when the state changes from the presence of at least one of the first vibration indication data and the second vibration indication data in the vibration indication data area 204B1 to the absence of both the first and second vibration indication data, and the end process is executed for the first time.

[0192] Processor 202 generates vibration indication data (step S2034) that uses the value obtained by multiplying the previous amplitude data by 0.8 as the amplitude value and indicates the previous frequency data, and processes this generated data as the current vibration indication data. During the period from when the vibration indication data is no longer received until 105ms have elapsed, processor 202 uses the value obtained by multiplying the previous amplitude data by 0.8 as the current amplitude data for vibration control every 5ms. That is, the vibration of vibration motor 206 decreases every 5ms.

[0193] If 105ms has elapsed since the start of the time measurement (Yes in step S2031), the processor 202 generates vibration indication data that uses zero or approximately zero as the amplitude value and indicates the previous frequency data (step S2035), and processes this generated data as the current vibration indication data. That is, the processor 202 stops the vibration of the vibration motor 206.

[0194] Next, the processor 202 performs power-saving processing (step S2036). Power-saving processing is the process of switching the vibration control system to power-saving mode through communication between the control amplifier 205 and the MCU 201. More specifically, in step S2036, the processor 202 stops the output from the clock line of the I2S unit i2s. This reduces the power consumed in the I2S unit i2s for outputting control data. In this embodiment, when there is no vibration indication data, the amplitude is gradually reduced over a certain period. Moreover, entering power-saving mode after the amplitude becomes zero ensures that both control at the end and control at the end of the cycle are maintained.

[0195] On the other hand, in step S2036, the processor 202 does not stop the output of the slave clock line of the I2C unit i2c. As described above, the I2C unit i2c is used for setting the registers of the amplifier 205. In power-saving mode, if the output of the I2C unit i2c is stopped, thus discarding the register setting of the amplifier 205, time is required until the output of the I2C unit i2c is restarted to set the registers of the amplifier 205. As a result, the start of the vibration provided by the user may be delayed. In this embodiment, in step S2036, by stopping the output of the slave clock line of the I2S unit i2s without stopping the output of the slave clock line of the I2C unit i2c, control data can be output to the amplifier 205 again simply by restarting the output of the slave clock line of the I2S unit i2s. For example, when the processor 202 wants to end the power-saving mode, it restarts the output of the slave clock line of the I2S unit i2s within 5ms. Thus, the output of control data to the amplifier 205 can be quickly restarted.

[0196] Furthermore, in the example above, regarding the time measurement in step S2031, an example of determining whether it is 105ms was described. However, it is not necessarily 105ms; it is also possible to determine whether 50ms, 100ms, 150ms, etc., have elapsed. In this embodiment, the amplitude data is continuously set to 0.8 times for the entire 105ms period, and power-saving processing is performed based on the condition that 105ms has elapsed. However, the period during which the amplitude data is continuously set to 0.8 times and the period that becomes the condition for executing the power-saving mode can be different. Additionally, the amplitude data may not be continuously multiplied by 0.8 times, but rather by 0.7 times, 0.9 times, etc.

[0197] Figure 13 This is a flowchart illustrating the process of starting the processing in step S214. Figure 13 The processing of the flowchart shown is performed by processor 202. Figure 11 The process begins with step S214. That is, in step S205, if either the value of the first previous amplitude data or the value of the second previous amplitude data saved in step S201 is 0, the following steps are executed: Figure 13 The flowchart illustrates the processing of the first vibration indication data and the second vibration indication data. The following explanation focuses on the first vibration indication data, but the same applies to the second vibration indication data.

[0198] Processor 202 substitutes 1 into the count variable X (step S2151). Processor 202 substitutes the first indicated amplitude value into the first current amplitude data (step S2152). Thus, at the start of vibration, the amplitude value rapidly changes to the indicated value, improving the effect of the impact vibration. Additionally, processor 202 substitutes the indicated frequency into the first current frequency data (step S2153). Processor 202 substitutes a phase value into the current phase data that is ahead of the value substituted into the current phase data by an amount corresponding to 0.125 ms, based on the frequency substituted into the first current frequency data (step S2154).

[0199] The processor 202 calculates the voltage value that the amplifier 205 should output based on the first current amplitude data and the current phase data, and writes the first control data corresponding to the calculated voltage value into the control data area 204B2 (step S2155). The processor 202 substitutes the value obtained by adding 1 to the current count variable X into the count variable X (step S2156). Then, the processor 202 determines whether the value of the count variable X exceeds 40 (step S2157).

[0200] If the value of the counting variable X does not exceed 40 (No in step S2157), processor 202 returns the process to step S2152. If the value of the counting variable X exceeds 40 (Yes in step S2157), processor 202 terminates. Figure 13 The flowchart is processed. Then, processor 202 executes... Figure 11 The processing of step S201.

[0201] In this way, the vibration control system 10 in this embodiment determines control data corresponding to the voltage value for each control cycle, enabling precise control of the vibration waveform. Furthermore, through aggregate adjustment processing, the vibration control system 10 can generate appropriate control data by proportionally allocating the first and second indicated amplitude values, even when processing both the first and second vibration indication data. Moreover, through frequency characteristic adjustment processing, the vibration control system 10 can operate the vibration motor 206 in a manner that ensures the displacement of the oscillator does not exceed its limit. Additionally, through clamping adjustment processing, the vibration control system 10 can generate appropriate control data even when the frequency is gradually changed.

[0202] When changing the amplitude value, noise may occur if the change does not start from a voltage value of 0V. Therefore, the vibration control system 10 in Embodiment 1 can gradually change the amplitude value in units of control cycle (0.125ms) by executing steps S207 to S210. On the other hand, in order to prevent the generation of noise, the amplitude value change can be waited until the voltage value becomes 0V, but if this is done, the timing of the amplitude value change will be delayed. The vibration control system 10 of this embodiment generally suppresses the generation of noise by gradually changing the amplitude value or frequency value within a vibration indication cycle (5ms), and controls the change to the indication amplitude value when the previous voltage value is 0V, thereby suppressing the generation of noise and generating vibration with good rise.

[0203] [G. An example of vibration waveform generated based on vibration indication data]

[0204] Figure 14 This is an example of a waveform of the first control data generated based on the first impact event. The time-series vibration indication data group based on the first impact event is data such as "(1, 100), (1, 100)". The following example illustrates the processing of the second vibration indication data with a specified second indication amplitude value "0" and a second indication frequency value "0" based on the occurrence of only the first vibration event, as well as the first vibration indication data based on the first vibration event.

[0205] Figure 14The diagram shows the case where the first controller is connected. Therefore, by performing the aforementioned adjustment process, the time-series vibration indication data set based on the first impact event is transformed into data such as "(0.5, 100), (0.5, 100)". The vibration waveform generated based on the first impact event is output during the period from timing T101 to T103. The period from timing T101 to timing T103 is 10 ms. During the period from timing T101 to T103, by performing... Figure 11 and Figure 13 The flowchart generates a vibration waveform corresponding to a frequency value of "100Hz" and an amplitude value of "0.5V". That is, the frequency of the vibration waveform during the period from time T101 to T103 is "100Hz" and the maximum amplitude value is "0.5V".

[0206] The waveform generated during timings T101 to T102 is generated by processor 202 processing the first vibration indication data "(0.5, 100)" at the beginning of the time-series vibration indication data group based on the first impact event. The waveform generated during timings T102 to T103 is generated by processor 202 processing the second first vibration indication data "(0.5, 100)" contained in the time-series vibration indication data group based on the first impact event.

[0207] The waveform of the control data generated during the period from T103 to T23 is generated by performing the termination process in S203 above when there is no more vibration indication data to be processed. Hereinafter, using... Figure 15 and Figure 16 The waveform generated during timings T103 to T104 will be explained. The vibration generated after the processing of the adjusted vibration indication data 110 received from the game device 100 ends is called the "end vibration". The control data generated during timings T103 to T104 is an example of control data used to generate the end vibration. In addition, the control data sent to the amplifier 205 to generate the end vibration is called the "end control data". In this embodiment, the processor 202 generates the end control data so that the vibration motor 206 performs the end vibration immediately after the vibration control based on the adjusted vibration indication data 110 received from the game device 100 ends. The processor 202 can also cause the end vibration to be generated after the vibration of the vibration indication data generated based on the occurrence of a normal vibration event rather than an impact vibration event.

[0208] Reference Figure 11 and Figure 12The processing of the vibration indication data 110 after the final adjustment of the time series vibration indication data group based on the first impact event ends. In step S212, when the counting variable X exceeds 40, the processor 202 saves the current amplitude data ("0.5") as the previous amplitude data and the current frequency data ("100Hz") as the previous frequency data in step S201.

[0209] Therefore, when all the first vibration indication data stored in the vibration indication data area 204B1 has been processed and no longer exists (No in step S202), the processor 202 sets 0.8 times "0.5", i.e., "0.4", as the indication amplitude in step S2034, and sets the frequency "100Hz", which is the same as the value of the first previous frequency data, as the first indication frequency, and saves it to the first vibration indication data area. The processor 202 substitutes "1" into the variable for counting (step S206).

[0210] Subsequently, since the first previous amplitude data is "0.5" and the first indicated amplitude value is "0.4", the processor 202 performs the processing in step S207 to substitute the value obtained by subtracting 1 / 400 from 0.5 into the first current amplitude data. That is, it substitutes 0.4975 into the first current amplitude data. In addition, since the first previous frequency data is "100Hz" and the first indicated frequency is also "100Hz", the processor 202 performs the processing in step S208 to substitute "100Hz" into the first current frequency data. The processor 202 advances the current phase data by an amount equivalent to 0.125ms.

[0211] Figure 15 This is a reference waveform showing the period from T103 to T104. Figure 15 The 40 reference waveforms Rw1, Rw2, Rw3… are represented by dashed lines. Hereinafter, these 40 reference waveforms Rw1, Rw2, Rw3… will be collectively referred to as “reference waveform Rw”. The processor 202 determines the reference waveform Rw1 based on the first current amplitude data “0.4975” and the first current frequency “100Hz”. That is, the reference waveform Rw1 is a waveform with a frequency of 100Hz and a maximum amplitude of 0.4975.

[0212] In step S210, processor 202 obtains the voltage value D1 in the reference waveform Rw1 when the phase of the phase relative to timing T103 is ahead by 0.125ms as the first control data and writes it into the control data area 204B2. Figure 15 The voltage value D1 is shown. The processor 202 increments the counting variable X, thereby substituting the value of the counting variable X into "2".

[0213] The same process will be used to explain the timing when the voltage value is obtained when the phase is further advanced by 0.125ms (0.250ms ahead of timing T103). Since the first previous amplitude data is "0.5" and the first indicated amplitude value is "0.4", the processor 202 performs the processing in step S207 to substitute the value obtained by subtracting 2 / 400 from 0.5 into the first current amplitude data. That is, 0.4950 is substituted into the first current amplitude data. Furthermore, since the first previous frequency is "100Hz" and the first indicated frequency is also "100Hz", the processor 202 performs the processing in step S208 to substitute "100Hz" into the first current frequency data. The processor 202 advances the current phase data by an amount corresponding to 0.125ms.

[0214] The processor 202 determines the reference waveform Rw2 based on the first current amplitude data "0.4950" and the first current frequency "100Hz". The reference waveform Rw2 is a waveform with a frequency of 100Hz and a maximum amplitude of 0.4950.

[0215] In step S210, processor 202 obtains the voltage value D2 in the reference waveform Rw2 when the phase of the phase relative to timing T103 is ahead by 0.250ms as the first control data and writes it into the control data area 204B2. Figure 15 The voltage value D2 is shown. The processor 202 further increments the counting variable X, so that the value substituted into the counting variable X is "3".

[0216] Through the same process, processor 202 obtains the voltage value D3 when the phase is further advanced by 0.125ms, and writes the first control data corresponding to the voltage value D3 into the control data area 204B2. Processor 202 repeats the output of the first control data 40 times during the period from timing T103 to T104. Figure 16 This is a diagram showing the waveform of the final oscillation output as a result of processing in units of control cycles, corresponding to the period from timing T103 to T104. At each of the multiple time points during the period from timing T103 to T104, the processor 202 reduces the maximum amplitude value of the reference waveform Rw and causes the phase to lead as time passes.

[0217] Thus, in the vibration control system 10 of this embodiment, by executing... Figure 11 , 12The flowchart shown illustrates the process where vibration control terminates based on the adjusted vibration indication data 110 received from the gaming device 100, and control data is output to the vibration motor 206 to stop its vibration. In this embodiment, the vibration duration at the end is 100ms.

[0218] like Figure 16 As shown, control data is generated such that the amplitude value of the reference waveform gradually decreases from the amplitude value "0.5" contained in the vibration indication data (0.5, 100) previously processed by the processor 202 during the period from T13 to T14 after the vibration control based on the adjusted vibration indication data 110 ends. Hereinafter, the 40 processing operations per control cycle during which the reference waveform Rw gradually changes during the vibration indication period (5ms) are referred to as "interpolation processing". In this embodiment, the frequency of the reference waveform Rw remains constant at "100Hz" during the period from T13 to T14.

[0219] Additionally, during the period from timing T101 to T103, by executing Figure 13 The flowchart shown illustrates the processing where, during the time intervals T101 to T103, the reference waveform Rw maintains an amplitude of "0.5" and a frequency of "100Hz". Therefore, during the time intervals T11 to T13, [the following occurs]... Figure 14 A sine wave as shown.

[0220] In vibration control corresponding to the first impact event, the vibration indication data contained in the time-series vibration indication data set are identical, so the effect of interpolation is not reflected. However, the amplitude and frequency of the vibration indication data contained in the time-series vibration indication data set can also vary. In this case, interpolation is also used during the duration of vibration to smooth out the changes in amplitude and frequency.

[0221] As described above, in the vibration control system 10 of this embodiment, control is performed to gradually change the reference waveform Rw through interpolation processing during and at the end of the vibration. On the other hand, in the vibration control system 10 of this embodiment, control to gradually change the reference waveform Rw is not performed at the beginning of the vibration. As a result, a steep vibration waveform can be generated at the beginning, thereby providing the user with vibrations corresponding to collisions, explosions, etc.

[0222] Furthermore, in the vibration control system 10 of this embodiment, by generating a termination vibration when the vibration motor 206 transitions from an operating state to a stopped state, the generation of noise such as unintended vibrations can be suppressed compared to the case where the vibration motor 206 is stopped by inertia without applying control to it.

[0223] [H. Variations]

[0224] Hereinafter, other embodiments obtained by some modifications relative to the above-described embodiments will be described.

[0225] The above example illustrates the application of the vibration control system 10 in a game system, but the system to which it is applied is not limited to game systems. For example, the vibration control system 10 in this embodiment can also be used in practical applications other than video games, children's toys, or training systems that use VR to virtually drive cars.

[0226] In the above example, a gaming system applied to the vibration control system 10 is shown to include a single gaming controller 200. However, a gaming system applied to the vibration control system 10 may also include multiple gaming controllers 200.

[0227] In the example above, the display device connected to the game device 100 is described as an organic EL or head-mounted display, but it could also be a holographic display device, for example.

[0228] The above example illustrates the execution of [something] in the gaming device 100. Figure 7 , Figure 8 , Figure 9 The corresponding flowchart processing, and execution in the game controller 200. Figure 10 , Figure 11 , Figure 12 Examples of corresponding flowchart processing. However, it could also be, Figures 7-12 All processes included in the flowchart are executed by either the game device 100 or the game controller 200. Furthermore, the processes in the flowchart executed by the game device 100 are not limited to... Figure 7 , Figure 8 , Figure 9 The flowchart, or simply Figure 7 The processing of flowcharts can also be Figure 7 , Figure 8 , Figure 9 , Figure 10 The processing of flowcharts.

[0229] In addition, the processors included in the gaming device 100 and the gaming controller 200 can be composed of a single chip or multiple chips.

[0230] In the example above, the situation where multiple data entries are stored in the same row within the same table is called "establishing a relationship". However, the term "establishing a relationship" is not limited to this; it also includes situations where multiple data entries are indirectly linked across multiple tables.

[0231] In the example above, for the sake of simplicity, an example was given where all the vibration indication data contained in the time series vibration indication data group contained the same content. However, the multiple vibration indication data contained in the time series vibration indication data group can also contain different content. For example, vibration indication data 114 can contain data such as "(1, 100), (1, 100), (0.7, 50), (0.5, 50)".

[0232] In the above example, the waveform of the control data corresponding to the final vibration is set to the same frequency as the previously executed control data. However, the vibration waveform corresponding to the final vibration can also be a different frequency than the previously executed frequency. For example, the frequency of the waveform corresponding to the final vibration can be predefined as "40Hz", "70Hz", or "200Hz". In this case, the processor 202 gradually changes not only the amplitude value of the reference waveform Rw during the interpolation process, but also the frequency.

[0233] In the example above, a sine wave waveform for the control data was described, but other waveforms such as rectangular waves are also possible. Furthermore, the vibration indication period can be a period shorter than one wavelength of the lower limit frequency of the vibration motor 206 (25 ms in the example of Embodiment 1), and is not limited to a period of 5 ms. By setting the vibration indication period to be shorter, the vibration control system 10 can perform precise control.

[0234] In the above example, one vibration indication data is data that causes power to be output for the entire period of less than one wavelength of the vibration waveform. However, the period for outputting control data based on one vibration indication data can also be less than two wavelengths or less than three wavelengths. Furthermore, in the above example, the game device 100 and the game controller 200 are configured as independent game systems, but the game device 100 and the game controller 200 can also be configured as an integrated unit.

[0235] In the example above, game program 102P2 is set to indicate the standardized amplitude data, but it can also be set to directly specify the amplitude data representing the control voltage value. Regarding frequency response data, an example is given where frequency is set on the horizontal axis and frequency response adjustment rate is set on the vertical axis. However, the vertical axis of the frequency response data can also be the upper limit (V) of the input voltage at each frequency.

[0236] exist Figure 14In the example, the duration of vibration (during the period from T101 to T103) when a single impact event occurs is 10 ms. However, the duration of vibration when a single impact event occurs can be any period less than 50 ms, or any other period. Furthermore, for the sake of caution, the following note is added: not only the method of directly specifying the time, but also the method of substantially specifying a period less than 50 ms by specifying the number of waves or the number of vibration indication data is also included in this disclosure.

[0237] Additionally, vibration indication data can also specify the amount of change in amplitude and frequency. In this case, the processor calculates the current amplitude and frequency using the values ​​of the previous amplitude and frequency. This processing can be performed in either the game console's processor or the game controller's processor.

[0238] Furthermore, in the above Figure 14 The example illustrates the following scenario: after an end-of-cycle oscillation occurs between timings T103 and T123, control data with a continuously zero voltage value is output after timing T123. However, it is also possible to output control data with a zero voltage value starting from timing T103 without generating an end-of-cycle oscillation. Figure 17 This is a diagram showing the waveform of a modified example. That is, in the modified example, after the vibration based on the vibration indication data indicated by the game program 102P2 ends ( Figure 17 The control data with a voltage value of zero is output immediately after the timing T103. Alternatively, it can be set to output control data with a voltage value of zero immediately after the vibration based on the vibration indication data indicated by the game program 102P2 ends (e.g., after the vibration indication data is indicated by the game program 102P2 ends). Figure 14 After timing T103, control data with the opposite phase to the previous phase is output. Thus, in Embodiment 1, by performing end-of-cycle control, the vibration motor 206 can be stopped earlier than when no control is applied to the vibration motor 206 without vibration indication data being input from the game program 102P2. In Embodiment 1, the vibration control system 10 stops the vibration motor 206 within the vibration indication cycle.

[0239] In the above example, an example was illustrated where the processor 101 performed adjustment processing in the order of total adjustment processing, frequency characteristic adjustment processing, and clamping adjustment processing. However, the order in which the adjustment processing is performed is not limited to this. For example, the processor 101 may also perform adjustment processing in the order of clamping adjustment processing, total adjustment processing, and frequency characteristic adjustment processing, or it may perform adjustment processing in other orders. Furthermore, in Embodiment 1, the total adjustment processing is performed before the frequency characteristic adjustment processing and the clamping adjustment processing, thereby enabling control that emphasizes the frequency characteristics of the vibration motor 206.

[0240] Various game controllers 200 can be applied to the vibration control system 10. The frequency characteristic data mentioned above may also vary depending on the type of game controller 200. In addition, various game controllers 200 may also have amplifiers 205 and vibration motors 206 of different types.

[0241] In the above example, in Figure 10 The document explains the following situation: In step S1065, when the indicated amplitude value is less than 0.1, linear interpolation is performed using lines Ln1 and Ln2 to determine the adjustment of the indicated amplitude. However, in step S1065, when the indicated amplitude value is less than 0.1, linear interpolation can also be performed using the adjustment of the indicated amplitude zero and line Ln2. Figure 18 This is a diagram used to illustrate a variation of the frequency response adjustment process. For example... Figure 18 As shown, in a modified example, if the amplitude value indicated in step S1065 is less than 0.1 ("Yes" in step S1065), linear interpolation is performed using the zero-sum line Ln2 of the adjustment indication amplitude (step S1066A) to determine the adjustment indication amplitude.

[0242] Next, processor 101 determines whether the adjustment indication amplitude determined by linear interpolation in step S1066A is less than the adjustment indication amplitude represented by line Ln1 (step S1066B). If the adjustment indication amplitude is less than the adjustment indication amplitude represented by line Ln1 ("Yes" in step S1066B), the second controller does not vibrate, therefore processor 202 increases the adjustment indication amplitude determined by linear interpolation in step S1066A to the adjustment indication amplitude represented by line Ln1 (step S1066C). That is, processor 202 updates the adjustment indication amplitude determined by linear interpolation in step S1066A to the adjustment indication amplitude represented by line Ln1, and returns to the previous state. If the adjustment indication amplitude is not less than the adjustment indication amplitude represented by line Ln1 ("No" in step S1066B), processor 202 returns to the previous state.

[0243] Next, use Figure 19 To illustrate the execution by the game controller 200 Figure 9 An example of improvement processing. Figure 19 This is a diagram illustrating a variation of the processing procedure at the start of the process. That is, in Figure 19 In the variant example described, the connected game controller 200 is a second controller and does not perform... Figure 8 The processing of steps S105Y and S105Z. For example... Figure 19 As shown, during the initial processing, the processor 202 determines whether the value obtained by setting the indicated amplitude value to 1.2 times is greater than the allowable input voltage value for each frequency of the second vibration motor for the second controller (S2152A).

[0244] If the value obtained by setting the indicated amplitude value to 1.2 times is below the allowable input voltage value of the second vibration motor at each frequency for the second controller ("No" in step S2152A), the processor 202 substitutes the value obtained by setting the indicated amplitude value to 1.2 times into the current amplitude data (step S2152B). If the value obtained by setting the indicated amplitude value to 1.2 times is greater than the allowable input voltage value of the second vibration motor at each frequency for the second controller ("Yes" in step S2152A), the processor 202 substitutes the allowable input voltage value of the second vibration motor corresponding to the indicated frequency into the current amplitude data (step S2152C). Thus, by processing on the second controller side, enhancement processing can be achieved. That is, enhancement processing does not need to be performed in the game device 100, reducing the processing burden on the vibration control system.

[0245] [Implementation Method 2]

[0246] In the first embodiment, the case where game program 102P2 is an adventure game was described, but the content of game program 102P2 can also be other content. In the second embodiment, the case where game program 102P2 is a music performance game was described. Furthermore, in the second embodiment, the vibration indication data area 103B3 is configured to store one vibration indication data corresponding to a certain moment. That is, in the second embodiment, the following example is described: only the first vibration indication data is stored in the indication dataset, and the second vibration indication data is not stored. Therefore, in the adjustment process in the second embodiment, the total adjustment process of proportionally allocating the first indication amplitude value and the second indication amplitude value is not performed, but only the frequency characteristic adjustment process and the clamping adjustment process are performed. The clamping adjustment process in the second embodiment is different from the clamping adjustment process in the first embodiment. The proportional allocation process between the frequency characteristic adjusted first indication amplitude and the frequency characteristic adjusted second indication amplitude is not performed, but only it is determined whether the frequency characteristic adjusted first indication amplitude exceeds the first clamping value.

[0247] In the example of Embodiment 2, the game program 102P2 is a music performance game. In the music performance game, the game controller 200 is simulated as a prescribed musical instrument. Prescribed musical instruments include, for example, drums, cymbals, triangles, violins, trumpets, pianos, or other percussion instruments, string instruments, woodwind instruments, brass instruments, reed instruments, and various other instruments. In the example of Embodiment 2, the instruments in the game are played based on input from the user, and vibrations are generated as the instruments are played.

[0248] Figure 20This is a flowchart illustrating the process of generating vibration indication data 114 containing standardized amplitude values ​​in the game device 100 of Embodiment 2. Figure 20 The process shown in the flowchart is achieved by the processor 101 executing the game program 102P2.

[0249] Figure 20 The execution of the flowchart shown begins with the processor 101 starting to execute the game program 102P2. The processor 101 obtains the type of instrument selected by the user (step S301).

[0250] Processor 101 acquires operation data (step S302). Processor 101 determines whether an impact event has occurred based on the operation data (step S303). In Embodiment 2, the operation data pre-associated with each instrument selected in step S301 is acquired in step S302 as the condition for the occurrence of an impact event.

[0251] For example, when a drum is selected, the impact event occurs when the stick-shaped game controller 200 is swung downwards in a predetermined direction with a predetermined angular velocity within a predetermined range. As another example, when a piano is selected, the impact event occurs when a button on the surface of the game controller 200 is pressed. Thus, in the musical instrument playing game of Embodiment 2, the game controller 200 can be used as a drumstick to allow the user to perform simulated playing.

[0252] If no impact event occurs (No in step S303), processor 101 returns the process to step S301. If an impact event occurs (Yes in step S303), processor 101 outputs a sound corresponding to the type of instrument (step S304). If a drum is selected, the sound of striking the drum with a drumstick is output.

[0253] The processor 101 executes the game program 102P2 to generate vibration indication data 114 (or time-series vibration indication data group), and hands over the generated vibration indication data 114 to the system program 102P1 (step S305).

[0254] Figure 21 This is a diagram illustrating an example of generating adjusted vibration indication data 110 based on vibration file 105 in Embodiment 2.

[0255] In the vibration control system 10 of Embodiment 2, the game device 100 first generates vibration indication data 114 by referring to the vibration file 105 within the game program 102P2 capable of executing a music performance game. Figure 21 In the upper left corner, vibration file 105 is shown in table form. Figure 21In the example vibration file 105, the data representing the event name, instrument type, and vibration content are interconnected. The data representing the instrument type includes data indicating the types of multiple instruments that can be selected by the user. The data representing the vibration content, similar to that in Implementation 1, includes frequency, number of wavelengths, and amplitude.

[0256] In Implementation 2, the event name "First Impact Event" is associated with the instrument type "drum", frequency "50", wavelength number "2", and amplitude "1". That is, the First Impact Event in Implementation 2 is an event in which a voltage corresponding to the maximum output voltage of the allowable amplifier 205 and a quantity corresponding to two wavelengths at a wavelength of 50Hz are output to the vibration motor 206.

[0257] In Implementation 2, the event name "Second Impact Event" is associated with the instrument type "cymbals," the frequency "100," the wavelength number "1," and the amplitude "0.8." That is, the second impact event is an event in which a voltage corresponding to 80% of the maximum output voltage of the allowable amplifier 205, and a wavelength corresponding to one wavelength at 100Hz, is output to the vibration motor 206.

[0258] In Embodiment 2, the processor 101 also generates vibration indication data 114 containing standardized amplitude values. In Embodiment 2, the time-series vibration indication data set generated based on the occurrence of the first impact event includes eight vibration indication data sets 114: “(1, 50), (1, 50), (1, 50), (1, 50), (1, 50), (1, 50), (1, 50), (1, 50)”. Additionally, in Embodiment 2, the time-series vibration indication data set generated based on the occurrence of the second impact event includes two vibration indication data sets 114: “(0.8, 100), (0.8, 100)”.

[0259] When the connected controller is a first type, the processor 101 uses a... Figure 4 The processor 101 obtains the frequency response tuning rate at each frequency by using data equivalent to the curve graph, and performs frequency response tuning processing. Additionally, the processor 101 performs clamping adjustment processing based on the indicated vibration value to generate... Figure 21 The transformed vibration indication data 114 is shown. For the transformed vibration indication data 110 corresponding to the first impact event, the processor 101 refers to... Figure 4Based on the data from the curve, when the vibration motor 206 operates at a frequency of 50Hz, the frequency response adjustment rate of the vibration motor 206 is determined to be "1". The processor 101 multiplies the frequency response adjustment rate "1" by the standardized amplitude parameter "1" in the vibration indication data 114 corresponding to the first impact event to calculate the amplitude value "1". When the vibration motor 206 does not vibrate when the first impact event occurs, the processor 101 obtains "1" as the first clamping value for each data in the time-series vibration indication data group generated based on the occurrence of the first impact event. Since none of the data in the time-series vibration indication data group exceeds the first clamping value, the processor 202 does not change the frequency response adjusted amplitude value "1" and ends the clamping adjustment process.

[0260] For the vibration indication data 110 after frequency characteristic adjustment processing and clamping adjustment processing corresponding to the second impact event, the processor 101 refers to... Figure 4 Based on the data from the curve, when the vibration motor 206 operates at a frequency of 100Hz, the frequency response adjustment rate is determined to be "0.5". The processor 101 multiplies the frequency response adjustment rate "0.5" by the standardized amplitude value "0.8" in the vibration indication data 114 corresponding to the second impact event to calculate the amplitude value "0.4". When the vibration motor 206 does not vibrate when the second impact event occurs, the processor 101 obtains "0.5" as the first clamping value for each data in the time-series vibration indication data group generated based on the occurrence of the second impact event. Since none of the data in the time-series vibration indication data group exceeds the first clamping value, the processor 101 does not change the frequency response adjusted amplitude value "0.4" and ends the clamping adjustment process.

[0261] As a result, in Embodiment 2, the processor 101 outputs data such as "(1, 50), (1, 50), (1, 50), (1, 50), (1, 50), (1, 50), (1, 50), (1, 50)" as adjusted vibration indication data 110 corresponding to the first impact event to the game controller 200. Additionally, the processor 101 outputs data such as "(0.4, 100), (0.4, 100)" as adjusted vibration indication data 110 corresponding to the second impact event to the game controller 200. Thus, in Embodiment 2, in a music performance game, vibrations matching the selected instrument can be provided to the user.

[0262] Furthermore, in Embodiment 2, the amplitude value "0.8" is associated with the cymbals. In this way, in the vibration control system 10 of this embodiment, the amplitude value only needs to be in the range of 0 to 1, and is not limited to "1".

[0263] [Implementation Method 3]

[0264] In Embodiment 2, an example of a music performance game for game program 102P2 was described, but the content of game program 102P2 can also be other content. In Embodiment 3, the case where game program 102P2 is a rhythm game will be described.

[0265] In embodiments 1 and 2, examples of generating vibration based on user input were described. However, the vibration control system 10 may also generate vibration at a predetermined time without relying on user input. In the example of embodiment 3, vibration is generated in parallel by the processor 101. Figure 22 Flowcharts and Figure 23 The flowchart in the diagram is used to generate the adjusted vibration indication data 110.

[0266] The rhythm game in Embodiment 3 is as follows: music is output, and at predetermined moments within the music, the user performs a predetermined action, thereby developing the user's sense of rhythm. The predetermined moment refers to the time when the user should perform an action. In the game of Embodiment 3, vibrations are output at regular time intervals as a rhythmic reference. This is called "beat vibration." In Embodiment 3, the action the user should perform at the predetermined moment is to swing the stick-shaped game controller 200 at an angular velocity greater than a predetermined angular velocity. Hereinafter, the action of swinging the stick-shaped game controller 200 at an angular velocity greater than a predetermined angular velocity is called a "swinging action." In the rhythm game of Embodiment 3, points are awarded for performing the swinging action at the predetermined moment, and the final score is displayed to the user at the end of the music. By outputting beat vibrations at regular intervals, the user can easily grasp the timing. It is also possible to synchronize the user's action timing with the beat timing.

[0267] Figure 22 This is a flowchart illustrating the execution process of the rhythm game in Implementation Method 3. Figure 22 The process shown in the flowchart is achieved by the processor 101 executing the game program 102P2.

[0268] Processor 101 starts playing music (step S401). The music in step S401 can be, for example, classical music, game background music, etc. Processor 101 acquires operation data (step S402). Processor 101 determines whether a waving operation has occurred (step S403).

[0269] If no wave operation occurs (No in step S403), processor 101 performs other processing to advance the rhythm game, and returns the processing to step S401. If a wave operation occurs (Yes in step S403), processor 101 determines whether the wave operation in step S403 was performed at the correct time (step S404).

[0270] If the wave operation is not performed at the correct time ("No" in step S404), processor 101 executes other processing to advance the rhythm game, returning the processing to step S401. If the wave operation is performed at the correct time ("Yes" in step S404), processor 101 performs a scoring process in the rhythm game (step S405). After the scoring process is completed, processor 101 executes other processing to advance the rhythm game, returning the processing to step S401.

[0271] Figure 23 This is a flowchart illustrating the process of generating vibration indication data 114 containing standardized amplitude values ​​in the game device 100 of Embodiment 3. The processor 101 determines whether it is a beat timing (step S501). A beat timing is a certain time interval. If it is not a beat timing ("No" in step S501), the processor 101 repeats the process of step S501.

[0272] When it is a beat timing ("Yes" in step S501), the processor 101 generates vibration indication data 114 and hands over the generated vibration indication data 114 (or time series vibration indication data group) to the system program 102P1 (step S502).

[0273] In this way, in Embodiment 3, vibration is generated not based on user input, but rather based on the output of music, and at predetermined times within that music. Therefore, in the rhythm game of Embodiment 3, vibration can be used to allow the user to recognize the timing of a swinging motion. Furthermore, as explained in Embodiment 1, the vibration control system 10 does not perform interpolation processing at the beginning, thereby providing strong vibration. Therefore, in Embodiment 3, the user can recognize the vibration even while performing a swinging motion.

[0274] [Implementation Method 4]

[0275] In Embodiment 1, it is described that the processor 101 on the gaming device 100 side executes the... Figure 8This is an example of frequency characteristic adjustment processing corresponding to step S106. However, the frequency characteristic adjustment processing can also be performed by the processor 202 on the game controller 200 side. Furthermore, in embodiment 4, the description of the structure that is repeated in embodiment 1 will not be repeated.

[0276] In implementation 4, the processor 202 is configured to access Figure 4 The frequency response data shown. For example, Figure 4 The frequency characteristic data shown can also be stored in the non-volatile memory 203 of the game controller 200. Figure 24 This is a flowchart illustrating the transformation process of vibration indication data executed by the game device 100 in Embodiment 4. In Embodiment 4, the processor 101 does not execute steps S106, S107, and S107A (frequency characteristic adjustment processing, clamping adjustment processing) in Embodiment 1. That is, in Embodiment 4, only the total adjustment processing is executed in the game device 100.

[0277] Figure 25 This is a flowchart illustrating the control data generation process executed by the game controller 200 in Embodiment 4. In Embodiment 4, after the processor 202 updates the current phase data in step S209, it performs frequency characteristic adjustment processing (step S209B). In step S209B, the processor 202 determines the frequency characteristic adjustment rate corresponding to the current frequency data updated in step S208 by referring to the frequency characteristic data, and multiplies the determined frequency characteristic adjustment rate by the current amplitude data in step S207 to adjust the amplitude value of the current amplitude data. That is, in Embodiment 4, the frequency characteristic adjustment processing is not performed for each vibration indication cycle, but for each control cycle.

[0278] Therefore, even if the frequency indicated by the current vibration indication data changes relative to the frequency indicated by the previous vibration indication data, the processor 202 can perform frequency characteristic adjustment processing at each frequency during the change. Thus, for example, even when the frequency is gradually changed from 50Hz to 150Hz, frequency characteristic adjustment corresponding to the frequency around 100Hz in the middle of the change can be performed. Therefore, in Embodiment 4, even without performing clamping adjustment processing, changes in unintentional behavior during the gradual frequency change can be suppressed, and an appropriate amplitude value corresponding to the frequency can be determined in control cycles.

[0279] [Additional Implementation Methods]

[0280] (Item 1)

[0281] A vibration control system includes a vibration motor. The vibration control system comprises: a unit for processing vibration indication data generated based on the occurrence of a vibration event, wherein the vibration indication data includes amplitude indication data indicating the amplitude of vibration of the vibration motor; a unit for processing to perform a first adjustment to determine the adjustment of the amplitude indication data, wherein the value of the amplitude indication data is adjusted according to the amplitude indicated by the amplitude indication data in the first adjustment; and a unit for processing to control the vibration motor based on the adjusted amplitude indication data.

[0282] (Item 2) In Item 1, the first adjustment is an adjustment that increases the value of the amplitude indicator data when the amplitude indicator data does not indicate the maximum amplitude.

[0283] (Item 3) In Item 1, the first adjustment is an adjustment that increases the value of the amplitude indication data when the amplitude indication data indicates an amplitude less than half of the maximum amplitude.

[0284] (Item 4) In Item 1, the vibration indication data also includes frequency indication data that indicates the frequency of vibration of the vibration motor. The first adjustment is an adjustment that increases the value of the amplitude indication data when the frequency indication data indicates a specified frequency.

[0285] (Item 5) In any one of items 1 to 3, the vibration indication data further includes frequency indication data indicating the frequency of vibration of the vibration motor. In the decision process, a second adjustment is also performed, in which the value of the amplitude indication data is adjusted according to the frequency indicated by the frequency indication data in a manner that does not exceed the maximum amplitude of the vibration motor.

[0286] (Item 6) In Item 5, during the decision-making process, by performing a first adjustment and a second adjustment, based on the frequency represented by the frequency indication data, an adjustment amplitude indication data is determined at the first frequency to increase the amplitude indication data, and an adjustment amplitude indication data is determined at the second frequency to decrease the amplitude indication data.

[0287] (Item 7) In Item 6, the amplitude indication data is data representing a proportion relative to the maximum amplitude. In the decision process, an adjustment is made so that the amplitude represented by the adjusted amplitude indication data becomes greater than the value obtained by multiplying the maximum amplitude at the frequency indicated by the frequency indication data by the amplitude represented by the amplitude indication data.

[0288] (Item 8) In Item 5, the vibration indication data also includes frequency indication data that indicates the frequency of vibration of the vibration motor. In the decision process, when the frequency indication data meets the specified conditions, the amplitude indication data is increased and then set as the amplitude adjustment indication data.

[0289] (Item 9) In Item 5, there is also a unit for storing adjustment data, wherein the adjustment data is used to perform a first adjustment and a second adjustment for each amplitude and each frequency. In the decision-making process, the corresponding data in the adjustment data is referenced based on the amplitude indication data and the frequency indication data, and the amplitude indication data is adjusted based on the amplitude indication data and the corresponding data.

[0290] (Item 10) In Item 9, the adjustment data includes multiple data corresponding to multiple discrete amplitudes. In the decision process, the amplitude among the multiple discrete amplitudes that is close to the amplitude indicated by the amplitude indication data is selected, and the adjustment amplitude indication data is determined by referring to the data in the adjustment data corresponding to the selected amplitude.

[0291] (Item 11) In Item 10, in the decision-making process, multiple amplitudes that are close to the amplitude indicated by the amplitude indication data are selected from a plurality of discrete amplitudes, and the amplitude indication data is determined by interpolation by referring to the adjustment data corresponding to the plurality of amplitudes.

[0292] (Item 12) In any one of items 1 to 3, it is possible to control the first vibration motor and the second vibration motor, and in the decision process, the first adjustment is performed when the second vibration motor is controlled, and the first adjustment is not performed when the first vibration motor is controlled.

[0293] (Item 13) In Item 9, it includes a main body and a vibration motor, the main body performs the processing that occurs, and the controller stores the adjustment data and performs the decision processing.

[0294] (Item 14) A program for use in a vibration control system having a vibration motor.

[0295] The program causes one or more processors to perform the following steps: performing the following processing: performing a first adjustment to determine the adjustment of amplitude indication data, wherein, in the first adjustment, the value of amplitude indication data is adjusted according to the amplitude indicated by vibration indication data, the vibration indication data being generated based on the occurrence of a vibration event and including amplitude indication data indicating the amplitude of vibration of the vibration motor; and performing the following processing: controlling the vibration motor based on the adjusted amplitude indication data.

[0296] (Item 15) In Item 14, the first adjustment is an adjustment that increases the value of the amplitude indicator data when the amplitude indicator data does not indicate the maximum amplitude.

[0297] (Item 16) In Item 14, the first adjustment is an adjustment that increases the value of the amplitude indication data when the amplitude indication data indicates an amplitude less than half of the maximum amplitude.

[0298] (Item 17) In any one of items 14 to 16, the vibration indication data further includes frequency indication data indicating the frequency of vibration of the vibration motor, and in the decision process, a second adjustment is also performed, in which the value of the amplitude indication data is adjusted according to the frequency indicated by the frequency indication data in a manner not exceeding the maximum amplitude of the vibration motor.

[0299] (Item 18) In Item 17, in the process of making a decision, by performing a first adjustment and a second adjustment, based on the frequency represented by the frequency indication data, an adjustment amplitude indication data is determined at the first frequency to increase the amplitude indication data, and an adjustment amplitude indication data is determined at the second frequency to decrease the amplitude indication data.

[0300] (Item 19) In Item 18, the amplitude indication data is data representing a proportion relative to the maximum amplitude. In the decision process, an adjustment is made such that the amplitude represented by the adjusted amplitude indication data becomes greater than the value obtained by multiplying the maximum amplitude at the frequency indicated by the frequency indication data by the amplitude represented by the amplitude indication data.

[0301] (Item 20) In Item 17, the vibration indication data also includes frequency indication data that indicates the frequency of vibration of the vibration motor. In the decision process, when the frequency indication data meets the specified conditions, the amplitude indication data is increased and then set as the amplitude adjustment indication data.

[0302] (Item 21) In Item 17, in the process of making a decision, based on the amplitude indication data and the frequency indication data, referring to the corresponding data in the adjustment data used to make the first and second adjustments for each amplitude and each frequency together, the amplitude indication data is adjusted to determine the amplitude indication data.

[0303] (Item 22) In Item 21, the adjustment data includes multiple data corresponding to multiple discrete amplitudes. In the decision process, the amplitude among the multiple discrete amplitudes that is close to the amplitude indicated by the amplitude indication data is selected, and the adjustment amplitude indication data is determined by referring to the data in the adjustment data corresponding to the selected amplitude.

[0304] (Item 23) In Item 22, in the decision-making process, multiple amplitudes that are close to the amplitude indicated by the amplitude indication data are selected from a plurality of discrete amplitudes, and the amplitude indication data is determined by interpolation by referring to the adjustment data corresponding to the multiple amplitudes.

[0305] (Item 24) In items 14 through 16, the program is able to control the first and second vibration motors by having one or more processors perform processing.

[0306] In the decision-making process, a first adjustment is made when the second vibration motor is controlled, and no first adjustment is made when the first vibration motor is controlled.

[0307] (Item 25) A method for use in a vibration control system having a vibration motor, wherein, as a process executed by one or more processors, the method includes the following steps: performing the following process: performing a first adjustment to determine an adjustment amplitude indication data, wherein, in the first adjustment, the value of the amplitude indication data is adjusted according to the amplitude indicated by the vibration indication data, the vibration indication data being generated based on the occurrence of a vibration event, and including amplitude indication data indicating the amplitude of vibration of the vibration motor; and performing the following process: controlling the vibration motor based on the adjusted amplitude indication data.

[0308] (Item 26) In Item 25, the vibration indication data also includes frequency indication data that indicates the frequency of vibration of the vibration motor. In the decision process, a second adjustment is also performed in which the value of the amplitude indication data is adjusted according to the frequency indicated by the frequency indication data in a manner that does not exceed the maximum amplitude of the vibration motor.

[0309] (Item 27) In Item 26, the amplitude indication data is data representing a proportion relative to the maximum amplitude. In the decision process, an adjustment is made such that the amplitude represented by the adjusted amplitude indication data becomes greater than the value obtained by multiplying the maximum amplitude at the frequency indicated by the frequency indication data by the amplitude represented by the amplitude indication data.

[0310] (Item 28) In any one of items 25 to 27, in the method, the first vibration motor and the second vibration motor can be controlled by causing one or more processors to perform a process, wherein in the determined process, a first adjustment is performed when the second vibration motor is controlled, and no first adjustment is performed when the first vibration motor is controlled.

[0311] Embodiments of the present invention have been described, but should be considered illustrative rather than restrictive in all respects. The scope of the invention is defined by the claims and is intended to include all modifications within the meaning and scope of the claims.

Claims

1. A vibration control system, comprising: A unit that generates vibration indication data based on the occurrence of vibration events, wherein, The vibration indication data includes amplitude indication data that indicates the vibration amplitude of the vibration motor; The unit that controls the vibration motor using a control amplitude generated based on the amplitude indication data; and The unit performing the increase processing determines, in the increase processing, whether the amplitude indicated by the previous amplitude indication data is zero or approximately zero, and whether the previous control amplitude is zero or approximately zero, at least one of these conditions, and increases the amplitude indicated by the amplitude indication data.

2. The vibration control system according to claim 1, wherein, In the increase process, if the amplitude indicated by the previous vibration indication data is zero or approximately zero, or if the previous control amplitude is zero or approximately zero, the amplitude indicated by the vibration indication data is increased throughout the specified period.

3. The vibration control system according to claim 1, wherein, The vibration indication data also includes frequency indication data indicating the vibration frequency. The increment process is performed when the frequency indicated by the generated frequency indication data meets the specified conditions.

4. The vibration control system according to claim 3, wherein, In the increase process, regardless of the frequency indicated by the generated vibration indication data, the amplitude indicated by the amplitude indication data is increased by a certain amount.

5. The vibration control system according to claim 1, wherein, It includes a main body and a controller that includes the vibration motor. The increment process is executed by the processor of the controller.

6. The vibration control system according to any one of claims 1 to 5, wherein, Multiple vibration indication data points are generated for a single timing event. The vibration control system further includes a unit for performing a first adjustment process, wherein the sum of the amplitudes associated with multiple vibration indication data for the same time period is adjusted. The addition process is performed before the first adjustment process.

7. The vibration control system according to claim 6, wherein, In the increase process, for each of the multiple vibration indication data generated at the same time, if the amplitude indicated by the previous amplitude indication data is zero or approximately zero, or if the previous control amplitude is zero or approximately zero, the amplitude indicated by the amplitude indication data is increased.

8. The vibration control system according to any one of claims 1 to 5, wherein, The vibration control system can control the first vibration motor and the second vibration motor. The additional processing is performed when the second vibration motor is controlled, but not when the first vibration motor is controlled.

9. The vibration control system according to any one of claims 1 to 5, wherein, In the increase process, the increase is carried out within a range that does not exceed the maximum amplitude of the vibration motor.

10. The vibration control system according to any one of claims 1 to 5, wherein, It also includes a unit that, based on the determination, selects whether to generate control data that gradually approaches the amplitude related to the current vibration indication data, or to generate control data corresponding to the amplitude related to the current vibration indication data.

11. A computer program product comprising a program used in a vibration control system, The program causes one or more processors to perform the following steps: The vibration motor is controlled using a control amplitude generated based on vibration indication data. The vibration indication data is generated based on the occurrence of vibration events and includes amplitude indication data indicating the vibration amplitude of the vibration motor; and An increase process is performed, in which it is determined whether the amplitude indicated by the previous amplitude indication data is zero or approximately zero, and whether the previous control amplitude is zero or approximately zero, and the amplitude indicated by the amplitude indication data is increased.

12. The computer program product according to claim 11, wherein, In the increase process, if the amplitude indicated by the previous vibration indication data is zero or approximately zero, or if the previous control amplitude is zero or approximately zero, the amplitude indicated by the vibration indication data is increased throughout the specified period.

13. The computer program product according to claim 11, wherein, The vibration indication data also includes frequency indication data indicating the vibration frequency. The increment process is performed when the frequency indicated by the generated frequency indication data meets the specified conditions.

14. The computer program product according to claim 13, wherein, In the increase process, regardless of the frequency indicated by the generated vibration indication data, the amplitude indicated by the amplitude indication data is increased by a certain amount.

15. The computer program product according to claim 11, wherein, The vibration control system includes a main body and a controller that includes the vibration motor. The controller includes one or more processors. The augmentation process is executed by one or more processors.

16. The computer program product according to any one of claims 11 to 15, wherein, Multiple vibration indication data points are generated for a single timing event. The program causes the one or more processors to further perform the following steps: performing a first adjustment process, in which the sum of amplitudes associated with multiple vibration indication data for the same time period is adjusted. The addition process is performed before the first adjustment process.

17. The computer program product according to claim 16, wherein, In the increase process, for each of the multiple vibration indication data generated at the same time, if the amplitude indicated by the previous amplitude indication data is zero or approximately zero, or if the previous control amplitude is zero or approximately zero, the amplitude indicated by the amplitude indication data is increased.

18. The computer program product according to any one of claims 11 to 15, wherein, The one or more processors can control the first vibration motor and the second vibration motor by executing the program. The additional processing is performed when the second vibration motor is controlled, but not when the first vibration motor is controlled.

19. The computer program product according to any one of claims 11 to 15, wherein, In the increase process, the increase is carried out within a range that does not exceed the maximum amplitude of the vibration motor.

20. A method for use in a vibration control system, wherein, In the method described above, the process executed by one or more processors includes the following steps: A vibration motor is controlled using a control amplitude generated based on vibration indication data, wherein the vibration indication data is generated based on the occurrence of a vibration event and includes amplitude indication data indicating the vibration amplitude of the vibration motor; and An increase process is performed, in which it is determined whether the amplitude indicated by the previous amplitude indication data is zero or approximately zero, and whether the previous control amplitude is zero or approximately zero, and the amplitude indicated by the amplitude indication data is increased.

21. The method according to claim 20, wherein, The vibration indication data also includes frequency indication data indicating the vibration frequency. The increment process is performed when the frequency indicated by the generated frequency indication data meets the specified conditions.

22. The method according to claim 21, wherein, Multiple vibration indication data points are generated for a single timing event. In the method, the one or more processors further perform the following step: performing a first adjustment process, in which the sum of amplitudes associated with multiple vibration indication data for the same time is adjusted. The addition process is performed before the first adjustment process.

23. The method according to claim 22, wherein, The one or more processors can control the first vibration motor and the second vibration motor by executing the processing capabilities of the method. The additional processing is performed when the second vibration motor is controlled, but not when the first vibration motor is controlled.

24. The method according to claim 23, wherein, In the increase process, the increase is carried out within a range that does not exceed the maximum amplitude of the vibration motor.

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