Vibration control system, program, and method

The vibration control system improves game realism and variety by using an amplifier and power-saving processes to generate and adjust vibration effects based on game events.

JP2026015700APending Publication Date: 2026-01-30NINTENDO CO LTD
View PDF 1 Cites 0 Cited by

Patent Information

Application Number
JP2025053894
Authority / Receiving Office
JP · JP
Patent Type
Applications
Current Assignee / Owner
Filing Date
2025-03-27
Publication Date
2026-01-30

AI Technical Summary

Technical Problem

Existing game systems lack realism and variety in vibration sensations.

Method used

A vibration control system with an amplifier and monitoring processes to manage power saving modes, generating vibration instruction data based on events, and adjusting amplitude and frequency to enhance vibration effects.

Benefits of technology

Enhances realism and variety in vibration sensations by optimizing power usage and adjusting vibration parameters based on game events.

✦ Generated by Eureka AI based on patent content.

Smart Images

  • Figure 2026015700000001_ABST
    Figure 2026015700000001_ABST
Patent Text Reader

Abstract

To provide a mechanism for improving reality and variation of a vibration sense.SOLUTION: A vibration control system having a vibration motor controlled by an amplifier, the vibration control system including: means for performing generation processing of generating vibration instruction data for controlling vibration of the vibration motor based on generation of a vibration event; amplifier control means for causing the amplifier to control the vibration motor based on the generated vibration instruction data; and means for performing monitoring processing of monitoring presence or absence of the generated vibration instruction data.SELECTED DRAWING: Figure 12
Need to check novelty before this filing date? Find Prior Art

Description

[Technical Field]

[0001] The present disclosure relates to a vibration control system, program, and method. [Background technology]

[0002] Conventionally, there are game systems that provide vibration effects to users playing games. For example, Japanese Patent Laid-Open Publication No. 2016-202486 (Patent Document 1) discloses a vibration signal generation system used in games. [Prior art documents] [Patent documents]

[0003] [Patent Document 1] Japanese Patent Application Laid-Open No. 2016-202486 Summary of the Invention [Problem to be solved by the invention]

[0004] Previous game systems had room for improvement in terms of the realism and variety of vibration sensations. [Means for solving the problem]

[0005] (Configuration 1) In one embodiment, a vibration control system has a vibration motor controlled by an amplifier, and includes a means for performing a generation process that generates vibration instruction data for controlling the vibration of the vibration motor based on the occurrence of a vibration event, an amplifier control means that causes the amplifier to control the vibration motor based on the generated vibration instruction data, a means for performing a monitoring process that monitors whether or not the generated vibration instruction data exists, and a means for performing a power saving process that switches the amplifier to a power saving mode when the generated vibration instruction data does not exist for a first period of time.

[0006] (Configuration 2) In configuration 1, the amplifier control means and the amplifier are connected by a first data signal line and a first clock signal line for transmitting control data for the vibration motor, and the power saving processing includes a stop processing for stopping the output of the first clock signal line.

[0007] (Configuration 3) In configuration 2, the amplifier control means and the amplifier are further connected by a second data signal line that transmits setting data for the amplifier and a second clock signal line, and the output of the second clock signal line is not stopped during the stop processing.

[0008] (Configuration 4) In any of configurations 1 to 3, a means for generating vibration instruction data specifying an amplitude smaller than the amplitude specified by the last generated vibration instruction data over a second period when no generated vibration instruction data exists is further provided. The end of the first period is the point in time when control by the vibration instruction data generated in the second period ends.

[0009] (Configuration 5) In any of configurations 1 to 4, the first period is a period of 100 ms or less.

[0010] (Configuration 6) In any of configurations 1 to 5, the vibration control system further includes a main body unit that executes a generation process, and a controller having a vibration motor, an amplifier, and an amplifier control unit that controls the amplifier. The main body unit further includes means for executing a transmission process that transmits the generated vibration instruction data to the controller when vibration instruction data is generated, and in the transmission process, if the generated vibration instruction data indicates that the vibration motor is to be stopped and if the vibration instruction data last transmitted to the controller indicates that the vibration motor is to be stopped, the transmission of the vibration instruction data to the controller is stopped.

[0011] (Configuration 7) In either configuration 2 or 3, the power saving process includes a process of resuming output of the first clock signal line within 5 ms when the power saving mode of the amplifier is ended.

[0012] (Configuration 8) In one embodiment, a program is used in a vibration control system having a vibration motor controlled by an amplifier. The program includes the steps of causing one or more processors to generate vibration instruction data for controlling vibration of the vibration motor based on the occurrence of a vibration event, and causing the amplifier to control the vibration motor based on the generated vibration instruction data. The device executes a step of performing a monitoring process of monitoring whether or not vibration instruction data has been generated, and a step of performing a power saving process of switching the amplifier to a power saving mode when the generated vibration instruction data does not exist for a first period.

[0013] (Configuration 9) In configuration 8, the program further causes one or more processors to execute a step of processing, if no vibration instruction data has been generated, to generate vibration instruction data specifying an amplitude smaller than the amplitude specified by the last vibration instruction data generated over a second period, and the end of the first period is the point at which control by the vibration instruction data generated in the second period ends.

[0014] (Configuration 10) In one embodiment, a method is used in a vibration control system having a vibration motor controlled by an amplifier and a control device that causes the amplifier to control the vibration motor. The method includes, as processing executed by one or more processors, a step of generating vibration instruction data for controlling vibration of the vibration motor based on the occurrence of a vibration event, a step of causing the amplifier to control the vibration motor based on the generated vibration instruction data, a step of monitoring whether the generated vibration instruction data exists, and a step of power saving processing of switching the amplifier to a power saving mode when the generated vibration instruction data does not exist for a first period of time.

[0015] (Configuration 11) In configuration 10, the control device and the amplifier are connected by a first data signal line and a first clock signal line for transmitting control data for the vibration motor, and the power saving processing includes a stop processing for stopping the output of the first clock signal line.

[0016] (Configuration 12) In configuration 11, the control device and the amplifier are further connected by a second data signal line that transmits setting data for the amplifier and a second clock signal line, and the output of the second clock signal line is not stopped during the stop processing.

[0017] (Configuration 13) In configurations 10 to 12, the method further includes a step of generating, in one or more processors, vibration instruction data that specifies an amplitude smaller than the amplitude specified by the last generated vibration instruction data over a second period when no generated vibration instruction data exists. The end of the first period is the point in time when control based on the vibration instruction data generated in the second period ends. [Brief explanation of the drawings]

[0018] [Figure 1] 1 is a schematic diagram illustrating an example of a vibration control system according to an embodiment of the present invention. [Figure 2] 10 is a flowchart showing the procedure of a process for acquiring information indicating the type of game controller in the present embodiment. [Figure 3] FIG. 10 is a diagram for explaining an example in which vibration instruction data is generated based on a vibration file in the first embodiment. [Figure 4] 10 is a diagram showing frequency characteristic data used in the frequency characteristic adjustment process of the first controller. FIG. [Figure 5] FIG. 10 is a diagram showing frequency characteristic data used in the frequency characteristic adjustment process of the second controller. [Figure 6] FIG. 10 is a diagram for explaining an adjustment process. [Figure 7] 10 is a flowchart showing the procedure of a process for generating vibration instruction data including normalized amplitude values ​​executed in the first embodiment. [Figure 8] 10 is a flowchart showing a procedure for adjusting vibration instruction data executed by the game device in the first embodiment. [Figure 9]10 is a flowchart showing the procedure of a boost process (step S105Z). [Figure 10] 10 is a flowchart showing the procedure of the frequency characteristic adjustment process (step S106) for each type of game controller. [Figure 11] 4 is a flowchart showing a procedure for generating control data, which is executed by the game controller in the first embodiment. [Figure 12] 10 is a flowchart showing the procedure of the termination process (step S203). [Figure 13] 10 is a flowchart showing the processing procedure of the start process in step S214. [Figure 14] 10 is an example of a waveform of first control data generated based on a first impact event. [Figure 15] FIG. 10 is a diagram showing a reference waveform between timings T103 and T104. [Figure 16] FIG. 10 is a diagram showing the waveform of the end vibration output as a result of processing in control cycle units corresponding to the period from timing T103 to T104. [Figure 17] FIG. 10 is a diagram showing waveforms of a modified example. [Figure 18] 10A and 10B are diagrams for explaining a modified example of the frequency characteristic adjustment process. [Figure 19] FIG. 10 is a diagram illustrating a modified example of the processing procedure of the start processing. [Figure 20] 10 is a flowchart showing the procedure of a process for generating vibration instruction data 114 including a normalized amplitude value in the game device according to the second embodiment. [Figure 21] FIG. 10 is a diagram for explaining an example in which vibration instruction data 110 after adjustment processing is generated based on a vibration file in the second embodiment. [Figure 22] 11 is a flowchart showing the execution procedure of a rhythm game in the third embodiment. [Figure 23] 11 is a flowchart showing the procedure of a process for generating vibration instruction data 114 including a normalized amplitude value in a game device according to a third embodiment. [Figure 24]13 is a flowchart showing a vibration instruction data conversion procedure executed by the game device in the fourth embodiment. [Figure 25] 13 is a flowchart showing a procedure for generating control data, which is executed by a game controller in the fourth embodiment. DETAILED DESCRIPTION OF THE INVENTION

[0019] The present embodiment will be described in detail with reference to the drawings, in which the same or corresponding parts are designated by the same reference numerals and description thereof will not be repeated. [Embodiment 1] [A. Overview] An example of the configuration of the vibration control system 10 that controls the vibration motor 206 in this embodiment will be described.

[0020] 1 is a schematic diagram showing an example of a vibration control system 10 according to the present embodiment. The vibration control system 10 according to the present embodiment is applied to, for example, a game system. The processor, memory, communication interface, etc. of the vibration control system 10 constitute a computer. The processor, memory, communication interface, etc. of the game device 100 are also examples of a computer, and the processor, memory, communication interface, etc. of the game controller 200 are also examples of a computer. The computer may be composed of a plurality of information processing devices, device processors, etc.

[0021] The game device 100 displays videos or images to the user on a display device such as a TV monitor, LCD, organic EL (Electro Luminescence) or head mounted display (HMD) in accordance with a program, and progresses through the game. The user operates the game controller 200 in accordance with the videos or images displayed on the display device. The game device 100 receives input from the user via the game controller 200, and progresses through the game in accordance with the input from the user.

[0022] [B. Game Device Configuration] The game device 100 has a processor 101, a non-volatile memory 102, a volatile memory 103, and a communication interface (I / F) 104. The processor 101 is a processing entity (processing means) for executing processes provided by the game device 100. The processor 101 reads a system program 102P1 and a game program 102P2 stored in the non-volatile memory 102, deploys them in the volatile memory 103, and executes them. In the present disclosure, the term "program" includes both a single program and a group of programs including multiple programs. In the case of a group of programs, each program may be stored in a different memory and executed by a different processor; for example, some programs may be executed by the processor 101 and other programs may be executed by the MCU 201.

[0023] The processor 101 is a processing circuit, such as a CPU (Central Processing Unit). In this specification, the term "processor" refers to a processing circuit, such as a CPU, MPU (Micro Processing Unit), or GPU (Graphics Processing Unit), that executes processing according to instruction codes written in a program. In addition, the term "processor" also encompasses hardwired circuits, such as ASICs and FPGAs. Hardwired circuits, such as ASICs and FPGAs, have pre-formed circuits corresponding to the processing to be executed. Furthermore, the term "processor" in this specification may also encompass circuits that integrate multiple functions, such as SoCs (System on Chips). The processor 101 may be, for example, an SoC that integrates the functions of a CPU and a GPU. In addition, this specification also includes, as a variation, an embodiment in which the processing performed by a single processor in this embodiment is shared and performed by multiple processors in cooperation with each other.

[0024] The non-volatile memory 102 is a non-volatile storage device (storage medium) accessible by the processor 101, and may be, for example, an SSD (Solid State Drive), a NAND flash memory, or a hard disk. The non-volatile memory 102 may also be a storage medium, such as an optical disk or cartridge, that is detachable from the game device 100. The non-volatile memory 102 stores a system program 102P1 and a game program 102P2. The system program 102P1 is a program that performs basic processing of the game device 100. The system program 102P1 also includes a program for transmitting various data stored in the volatile memory 103 to the game controller 200. The game program 102P2 is a program for executing a game, and is stored, for example, in a game cartridge or disk that is detachably attached to the game device 100, or downloaded to the non-volatile memory 102 via the Internet. The game program 102P2 includes a vibration file 105.

[0025] The vibration file 105 contains information for specifying a vibration effect for each vibration event. Vibration events include events that generate impact vibrations, but may also include events that generate other types of vibrations. An impact vibration effect is an effect that makes the user feel an impactful vibration that occurs during the game, and is a strong vibration of short duration. For example, an impact vibration effect is specified in response to events such as a collision between objects in the virtual game space, an explosion, or the firing of a gun or the like, and is also used to express beats. More specifically, an amplitude equivalent to the maximum allowable voltage of the vibration motor 206 is specified. The specified amplitude does not need to match the maximum allowable voltage of the vibration motor 206, but may be an amplitude close to the maximum allowable voltage.

[0026] The specified amplitude may be, for example, 80% or more of the maximum allowable voltage. Furthermore, for a high-output vibration motor, the output may be 60% or more of the maximum allowable voltage. The vibration duration may be, for example, one wavelength or less at the lowest frequency that can be specified by the game program 102P2, or two wavelengths or less. The vibration duration may be 50 ms (milliseconds) or less, or 25 ms or less. There is no particular limit on the frequency; specifying a low frequency results in heavy impact vibration, while specifying a high frequency results in sharp impact vibration. Note that when a control input with a wavelength greater than one wavelength (e.g., two wavelengths) is made in a period of 50 ms or less, the impact vibration can be stronger than when it is one wavelength. When the vibration period is short, such as 50 ms, humans perceive the difference between one wavelength and two wavelengths as a difference in vibration strength.

[0027] For example, the frequency may be changed depending on the magnitude of the collision in the virtual game space (such as the speed of the collision or the weight of the colliding object). In other words, the effect of the shock vibration effect can be changed by changing the frequency. The frequency may be limited by various system conditions. An impact event is an event that causes a shock vibration effect to occur, or in other words, a condition that causes a shock vibration effect to occur.

[0028] Vibration events include normal vibration events as events other than impact vibration events. A normal vibration event may be, for example, a vibration for which a certain period or more (e.g., a period greater than two wavelengths) is specified, or an event that generates vibration below a certain limit relative to the maximum allowable voltage of the vibration motor. As with impact vibration events, a desired frequency, amplitude, and period are specified for normal vibration events. The game program 102P2 can specify an appropriate frequency, amplitude, and period depending on the nature of the vibration event.

[0029] Volatile memory 103 is a volatile storage device (storage medium) accessible by processor 101, and may be, for example, a dynamic random access memory (DRAM) or a static random access memory (SRAM). Volatile memory 103 has a data area 103B1, an operation data area 103B2, a vibration instruction data area 103B3, and a controller type data area 103B4. Data area 103B1 is an area that temporarily stores various data generated when processor 101 executes game program 102P2, for example.

[0030] The operation data area 103B2 is an area that temporarily stores operation data received from the game controller 200. The operation data is data that indicates input to the game controller 200 by the user, and is detection values ​​of the acceleration sensor 208, the gyro sensor 209, the operation switch 210, etc.

[0031] The vibration instruction data area 103B3 is an area for temporarily storing vibration instruction data for vibrating the vibration motor 206 of the game controller 200. The vibration instruction data area 103B3 is capable of storing at least one vibration instruction data corresponding to one timing. In this embodiment, the vibration instruction data area 103B3 is configured to be capable of storing two vibration instruction data corresponding to one timing. In this specification, the term "memory" includes at least both the non-volatile memory 102 and the volatile memory 103.

[0032] The controller type data area 103B4 is an area for storing information indicating the type of game controller 200 connected to the game device 100. The game controller 200 may be configured to be detachable from the game device 100. Therefore, multiple types of game controllers 200 may 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 may obtain the information indicating the type of the game controller 200 from the connected game controller 200 itself, or may obtain the information by accessing the Internet.

[0033] The information indicating the type of game controller 200 includes at least information indicating the type of vibration motor 206 stored 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 may be referred to as the "first controller," the "second controller," the "first vibration motor," and the "second vibration motor," respectively. As will be described later, when the game device 100 is newly connected to a game controller 200, the processor 101 acquires type-related information from the connected game controller 200.

[0034] The game device 100 communicates with the game controller 200 via the communication interface 104. The communication interface 104 performs wireless communication with the game controller 200 using, for example, an antenna (not shown). Any communication method may be used for wireless communication between the game device 100 and the game controller 200, but in this embodiment, the game device 100 performs communication with the game controller 200 in accordance with the Bluetooth (registered trademark) standard. The communication between the game device 100 and the game controller 200 may be wired communication, in which case the communication interface 104 may be, for example, a terminal conforming to the USB (Universal Serial Bus) standard or the like.

[0035] The game device 100 progresses through the game based on the execution of the game program 102P2. During the game, an impact event, which is an expression including a large impact such as an explosion or a collision, may occur within the virtual game space. The game device 100 generates the vibration instruction data described above based on the occurrence of the impact event and transmits it to the game controller 200. The vibration instruction data will be described in detail later. The game device 100 may generate multiple vibration instruction data to vibrate the vibration motor 206 at a certain timing. That is, the vibration motor 206 may vibrate based on multiple vibration instruction data at a certain timing. In this embodiment, the vibration motor 206 vibrates based on two vibration instruction data at a certain timing. Note that the vibration motor 206 may vibrate based on three or more vibration instruction data at a certain timing.

[0036] [C. Game Controller Configuration] The game controller 200 includes an MCU (Micro Controller Unit) 201 , an amplifier 205 , a vibration motor 206 , a communication interface (I / F) 207 , an acceleration sensor 208 , a gyro sensor 209 , and an operation switch 210 .

[0037] Game controller 200 is typically a controller that is held by a user in one or both hands and accepts input from the user by operating operation switches 210 with the user's fingers. Note that game controller 200 is not limited to a game controller that is held by a user's hands, and may be, for example, a general-purpose keyboard or mouse equipped with vibration motor 206, or may be a type that is placed on the floor and accepts input by the user's soles coming into contact with sensors.

[0038] The MCU 201 includes a processor 202, a non-volatile memory 203, a volatile memory 204, an I2C (Inter Integrated Circuit) unit i2c, and an I2S (Inter Integrated circuit Sound) unit i2s. The processor 202, the non-volatile memory 203, the volatile memory 204, and the communication interface 207 each have the same hardware configuration as the processor 101, the non-volatile memory 102, the volatile memory 103, and the communication interface 104 described above. Therefore, a description of these configurations will not be repeated. However, to reduce costs, the processor 202 may have a lower processing power than the processor 101.

[0039] The non-volatile memory 203 stores an MCU program 203P. The MCU program 203P includes programs for executing various processes, which will be described later, and a program for transmitting detection values ​​of the operation switch 210, the acceleration sensor 208, and the gyro sensor 209 to the game device 100 via the communication interface 207. In this embodiment, the MCU program 203P further includes a program for generating control data to be transmitted to the amplifier 205 based on vibration instruction data received from the game device 100. The control data is typically data indicating a voltage value of a waveform for driving the vibration motor 206. The control data is output at a predetermined cycle (unit time). This cycle is called a control cycle. The MCU 201 generates the control data based on the vibration instruction data. Note that the processor 101 of the game device 100 may generate the control data directly, rather than the vibration instruction data.

[0040] The volatile memory 204 has a vibration instruction 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 instruction data area 204B1 is an area for temporarily storing vibration instruction data received from the game device 100. The control data area 204B2 is an area for temporarily storing control data generated by the processor 202. The operation data area 204B3 is an area for temporarily storing operation data. The current amplitude data area 204V1, the current frequency data area 204V2, the current phase data area 204V3, the previous amplitude data area 204V4, and the previous frequency data area 204V5 will be described below. Each of the areas for storing various data in the volatile memory 204 can store at least one piece of data corresponding to one timing. In this embodiment, each of the areas for storing various data in the volatile memory 204 stores two pieces of data corresponding to one timing.

[0041] The contents of the control data area 204B2 in the volatile memory 204 are transferred to the amplifier 205, for example, using the I2S unit i2s. The I2S unit i2s is configured to enable communication according to a bus interface standard for serial communication, primarily for connecting digital audio devices. The I2C unit i2c is used to set the registers of the amplifier 205. The I2C unit i2c is also configured to enable communication according to a bus interface standard for serial communication. Each of the I2S unit i2s and the I2C unit i2c has multiple signal lines, including a clock signal line and a data signal line. The amplifier 205 in this embodiment is an amplifier that performs PWM (Pulse Width Modulation) control at a frequency of 8 kHz. The amplifier 205 determines a duty ratio every 0.125 ms based on the received control data and supplies power to the vibration motor 206.

[0042] The vibration motor 206 may be, for example, a voice coil motor, an eccentric motor, a linear resonant motor (so-called LRA (Linear Resonant Actuator)), or the like, and the motor type is not limited. The vibration motor 206 may also be a coin-type motor, or the like. When the vibration motor 206 is an eccentric motor, the vibration motor 206 has a weight with an uneven shape attached to a rotating shaft, and generates vibrations by rotating. In this way, the vibration motor 206 can apply vibrations to a user holding the game controller 200 in which the vibration motor 206 is housed.

[0043] The acceleration sensor 208 detects the magnitude of linear acceleration along predetermined three-axis directions. The acceleration sensor 208 may detect acceleration along one or two axes. The gyro sensor 209 detects the tilt, angular velocity, angular acceleration, etc. of the game controller 200, and outputs the detection results to the operation data area 204B3.

[0044] The detection results of the acceleration sensor 208 and the gyro sensor 209 are output to the processor 101. The processor 101 in the game device 100 is able to calculate information relating to the movement and / or attitude of the game controller 200 based on the detection results of the acceleration sensor 208 and the gyro sensor 209.

[0045] The operation switch 210 is typically at least one button, key, and / or stick provided on the surface of the game controller 200. The operation switch 210 may be, for example, a button associated with a letter such as an A button or a B button, a cross key for inputting up, down, left, and right directions, a 3D stick for inputting a tilt direction and tilt amount, or the like.

[0046] 2 is a flowchart showing the procedure of a process for acquiring information indicating the type of game controller 200 in this embodiment. The process of the flowchart shown in FIG. 2 is realized by the processor 101 executing the game program 102P2, and begins when power is supplied to the game device 100.

[0047] The processor 101 determines whether or not connection of the game controller 200 has been detected (step S10). If connection of the game controller 200 has not been detected (NO in step S10), the processor 101 repeats the process of step S10. If connection of the game controller 200 has been detected (YES in step S10), the processor 101 acquires information indicating the type of the connected game controller 200 (step S20) and stores the information indicating the type of the game controller 200 in the controller type data area 103B4. Then, the processor 101 repeats the process of step S10. Note that if the connection of the game controller 200 has been released, the processor 101 may discard the information indicating the type of the game controller 200 corresponding to the released game controller 200.

[0048] [D. Flow of generating vibration instruction data based on vibration file] FIG. 3 is a diagram illustrating an example of generating vibration instruction data based on the vibration file 105 in the first embodiment. "Generating vibration instruction data" includes reading out vibration instruction data stored in the vibration file 105 and treating it as data for vibrating the vibration motor. Note that generating vibration instruction data includes not only reading out pre-stored vibration instruction data but also generating vibration instruction data by calculation or the like. FIG. 3 illustrates an example of generating normalized vibration instruction data 114 based on the occurrence of an impact vibration event. The vibration instruction data includes a value specifying a frequency (hereinafter, frequency value) and a value specifying an amplitude (hereinafter, amplitude value). One vibration instruction data includes one frequency value and one amplitude value. The frequency value and amplitude value may be referred to as frequency instruction data and amplitude instruction data, respectively. The processor 101 generates normalized vibration instruction data 114 based on the vibration file 105.

[0049] In this embodiment, the amplitude values ​​are normalized in the vibration file 105 and the vibration instruction data 114. On the other hand, in this embodiment, the frequency values ​​are not normalized. In this embodiment, the amplitude values ​​take values ​​between 0 and 1. Thereafter, the processor 101 adjusts the amplitude values ​​by performing a sum adjustment process, a frequency characteristic adjustment process, and a clamp adjustment process on the normalized amplitude values ​​in the vibration instruction data 114, as will be described in detail later. Note that these adjustment processes are not essential. In particular, the clamp adjustment process does not need to be performed when the processor 202 on the game controller 200 side performs a frequency characteristic adjustment process (described later). Normalizing the amplitude values ​​is not essential. Furthermore, the content of these adjustment processes may differ depending on the type of vibration motor 206 connected to the game device 100, as will be described later.

[0050] The total adjustment process is an adjustment process for dividing the amplitude values ​​of two vibration instruction data proportionally, with 1.0 as the reference, when two pieces of vibration instruction data are generated in order to vibrate the vibration motor 206 at the same timing. If the connected game controller 200 is a first controller having a first vibration motor, the frequency characteristics adjustment process is an adjustment process for adjusting the amplitude value included in the vibration instruction data in accordance with the maximum voltage that is allowed to be input at the frequency that is determined in accordance with the frequency value included in the vibration instruction data. If the connected game controller 200 is a second controller having a second vibration motor, the frequency characteristics adjustment process is an adjustment process for adjusting the strength of the vibration imparted to the user holding the second controller to the strength of the vibration imparted to the user holding the first controller.

[0051] In this embodiment, the second controller is less likely to vibrate than the first controller, for example, because the weight of the second controller is heavier than the weight of the first controller. Therefore, the strength of the vibration generated when certain vibration instruction data is input to the second controller may be weaker than the strength of the vibration generated when the certain vibration instruction data is input to the first controller. For example, even if vibration instruction data that can cause the first controller to vibrate slightly is input to the second controller, the second controller may not vibrate.

[0052] In this embodiment, the strength of the vibrations imparted to the user holding the second controller can be made closer to the strength of the vibrations imparted to the user holding the first controller by performing a frequency characteristic adjustment process for the second controller, which will be described later. Note that the adjustment performed by the frequency characteristic adjustment process is not limited to increasing the strength of the vibrations of the second controller, and may also be decreasing the strength of the vibrations of the second controller.

[0053] The clamp adjustment process is an adjustment process for determining an amplitude value that can suppress unintended changes in behavior when the frequency value included in the vibration instruction data is different from the frequency value included in the previous vibration instruction data, in order to suppress unintended changes in behavior during the gradual change in the frequency of the vibration motor 206. By performing the amplitude adjustment process in this manner, it is possible to facilitate the creation of a game program, increase the strength of the vibration, and enhance the impact vibration effect. Thereafter, the game device 100 transmits the vibration instruction data 110 after the adjustment process (described later) to the game controller 200. The contents of each type of data will be described below.

[0054] In this embodiment, the vibration instruction data specifies one or more (N) pieces of vibration instruction data for each vibration instruction cycle T (msec) in chronological order to specify a vibration effect for a period of T x N (msec). By adopting this data format, it is possible to easily specify a vibration effect whose amplitude and frequency change. The vibration duration may be specified by the duration or number of waves.

[0055] Next, the specific contents of the various data will be described with reference to Fig. 3. In the vibration control system 10 in this embodiment, the game device 100 refers to the vibration file 105 in the game program 102P2, and first generates vibration instruction data 114.

[0056] In this embodiment, when the amplitude value is "1", the vibration control system 10 operates the amplifier 205 to apply to the vibration motor 206 a voltage value corresponding to the upper limit of the output voltage of the amplifier 205. For example, in the case of a linear design, when the amplitude value is "0.5", the vibration control system 10 applies to the vibration motor 206 a voltage value corresponding to 50% of the upper limit of the output voltage of the amplifier 205. In other words, the value of 0 to 1 indicated by the amplitude value in the vibration instruction data 114 does not represent the voltage value itself, but represents the ratio of the upper limit of the output voltage of the amplifier 205. However, as will be described later, the amplitude value included in the vibration instruction data 114 is adjusted by a total adjustment process, a frequency characteristic adjustment process, and a clamp adjustment process.

[0057] The game device 100 executes the various adjustment processes described above to convert the vibration instruction data 114 into post-adjustment vibration instruction data 110, which will be described later.

[0058] In this manner, the game device 100 generates the adjusted vibration instruction data 110 and transmits the generated adjusted vibration instruction data 110 to the game controller 200. The various types of data will be described in detail below.

[0059] The vibration file 105 is shown as a table on the left side of Fig. 3. Fig. 3 shows an example of the vibration file 105 when the game program 102P2 is an adventure game. In the vibration file 105 in the example of Fig. 3, data representing an event name, an event occurrence condition, and vibration content are associated with each other. The data representing the event occurrence condition includes, for example, two object types. The data representing the vibration content includes a frequency, a wavelength number, and an amplitude. Instead of the wavelength number, a vibration duration may be specified.

[0060] The table showing the vibration file 105 in the example of FIG. 3 is a table in which the event name is a primary key. Object 1 "Sword" and object 2 "Sword" are associated with the event name "First Impact Event." 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. Furthermore, the event name "First Impact Event" is associated with a frequency of "100," a wavelength number of "1," and an amplitude of "1." That is, when the first impact event occurs, a waveform signal of a frequency of 100 Hz is output to the vibration motor 206 for one wavelength at a frequency of 100 Hz, with the amplitude being a voltage corresponding to the maximum output voltage of the amplifier 205 or the maximum input voltage allowed to be input to the vibration motor 206 at a frequency of 100 Hz.

[0061] The event name "second impact event" is associated with object 1 "sword" and object 2 "shield." That is, the second impact event is an event that occurs when an object representing a sword collides with an object representing a shield in the virtual space of the game. The event name "second impact event" is also associated with a frequency of "50," a wavelength number of "1," and an amplitude of "1." That is, when the second impact event occurs, a waveform signal of a frequency of 50 Hz is output to vibration motor 206 for one wavelength at a frequency of 50 Hz, with the amplitude being a voltage corresponding to the maximum output voltage of amplifier 205 or the maximum input voltage that is allowed to be input to vibration motor 206 at a frequency of 50 Hz.

[0062] The event name "third impact event" is associated with object 1 "sword" and object 2 "rock." That is, the third impact event is an event that occurs when an object representing a sword collides with an object representing a rock in the virtual space of the game. The event name "third impact event" is also associated with a frequency of "50," the number of wavelengths "2," and the amplitude "1." That is, when the third impact event occurs, a waveform signal of a frequency of 50 Hz is output to vibration motor 206 for two wavelengths at a frequency of 50 Hz, with the amplitude being a voltage corresponding to the maximum output voltage of amplifier 205 at a frequency of 50 Hz or the maximum input voltage allowed to be input to vibration motor 206. Note that the number of wavelengths does not have to be an integer multiple.

[0063] Next, we will explain the contents of the vibration instruction data 114. The right part of Fig. 3 shows the vibration instruction data 114 generated by the processor 101 based on the vibration file 105. Two pieces of vibration instruction data are generated in the first impact event, four pieces of vibration instruction data are generated in the second impact event, and eight pieces of vibration instruction data are generated in the third impact event.

[0064] 3, the amplitude value is designated as "1" and the frequency value is designated as "100." In addition, the vibration instruction data 116B is designated as "1" and the frequency value is designated as "50."

[0065] Regarding the vibration instruction data 114 generated based on the occurrence of the first impact event, two pieces of vibration instruction data, "(1,100), (1,100)," are arranged in chronological order. The multiple pieces of vibration instruction data included in the vibration instruction data 114 are stored in the order in which they are output to the vibration motor 206. A collection of vibration instruction data arranged in chronological order in the order in which they are output to the vibration motor 206 is referred to as a "time-series vibration instruction data group."

[0066] The time-series vibration instruction data group generated based on the occurrence of the second impact event consists of four pieces of vibration instruction data: (1,50), (1,50), (1,50), (1,50). The time-series vibration instruction data group generated based on the occurrence of the third impact event consists of eight pieces of vibration instruction data: (1,50), (1,50), (1,50), (1,50), (1,50), (1,50), (1,50), (1,50).

[0067] The number of vibration instruction data included in the time-series vibration instruction data group is determined based on the frequency and the number of wavelengths in the vibration file 105. One piece of vibration instruction data is data indicating that a waveform of the frequency and amplitude instructed by that vibration instruction data is to be output to the vibration motor 206 over a period of 5 ms. The first impact event in the vibration file 105 is associated with a frequency value of "100 Hz." When the vibration motor 206 is vibrated at 100 Hz, the period of one wavelength of the vibration waveform is 10 ms. Therefore, the vibration instruction data 114 generated based on the first impact event includes two pieces of vibration instruction data obtained by dividing 10 ms by 5 ms.

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

[0069] The third impact event in the vibration file 105 is associated with a frequency value of "50 Hz." When the vibration motor 206 is vibrated at 50 Hz, the period of two wavelengths of the vibration waveform is 40 ms. Therefore, the vibration instruction data 114 generated based on the third impact event includes eight pieces of vibration instruction data obtained by dividing 40 ms by 5 ms.

[0070] Next, a method for determining the period during which control data is output to the vibration motor 206 in response to one piece of vibration instruction data will be described. In this disclosure, the period during which control data is output to the vibration motor 206 in response to one piece of vibration instruction data is referred to as a "vibration instruction cycle." The vibration instruction cycle is determined by the processor 101 in accordance with the characteristics of the vibration motor 206. In this embodiment, as described above, the vibration instruction cycle is 5 ms.

[0071] The processor 101 executes the game program 102P2 to generate vibration instruction data 114 and passes at least one piece of vibration instruction data 114 to the system program 102P1. The system program 102P1 adjusts the received vibration instruction data 114 through an adjustment process and converts it into adjusted vibration instruction data 110. In this embodiment, as described above, the content of the adjustment process differs depending on the type of game controller 200 connected to the game device 100. First, the frequency characteristic data used in the frequency characteristic adjustment process for the first controller will be described below.

[0072] FIG. 4 is a diagram showing frequency characteristic data used in the frequency characteristic adjustment process for the first controller. The frequency characteristic data shown as a graph in FIG. 4 is data that specifies the ratio of the upper limit of the voltage value allowed to be input at each frequency to the maximum output voltage of the amplifier. The frequency characteristic adjustment rate on the vertical axis is a value calculated by dividing the upper limit of the voltage value allowed to be input at each frequency by the maximum output voltage of the amplifier. The frequency characteristic data is used in the frequency characteristic adjustment process when the type of game controller 200 connected to the game device 100 is a first controller having a first vibration motor. The frequency range in which the vibration motor 206 can operate is determined by the characteristics of the vibration motor 206, and for the first vibration motor in this embodiment, it is a range from 40 Hz to 400 Hz. As shown in FIG. 4, the lower limit frequency allowed for driving the first vibration motor in this embodiment is 40 Hz. In this embodiment, the "lower limit allowed frequency" refers to the frequency of the first vibration motor that an application program is allowed to use. In this embodiment, if the game program 102P2 specifies a frequency outside the range of 40 Hz or more and 400 Hz or less, the frequency is corrected to a value within the range of 40 Hz or more and 400 Hz or less by system software, etc. In this embodiment, when a shock vibration of one wavelength is used, a frequency of 200 Hz or less is specified.

[0073] The first vibration motor has a characteristic that defines a maximum input voltage as an allowable input voltage for each frequency. The upper limit of the allowable input voltage (voltage input to the first vibration motor) at each frequency can be determined based on the input voltage at which the displacement of the vibrator of the first vibration motor reaches its limit. Because the first vibration motor vibrates at different frequencies in response to an input, the upper limit of the allowable input voltage at each frequency (the input voltage at which the displacement of the vibrator reaches its limit) differs depending on the frequency. The vibration control system 10 of this embodiment includes frequency characteristic data shown in FIG. 4 for adjusting the amplitude value indicated by the vibration instruction data according to the frequency, taking these upper limits of the input voltage into consideration.

[0074] 4 is a value obtained by dividing the upper limit of the input voltage allowed 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. It can be said that a frequency with a low frequency characteristic adjustment rate is a frequency at which the vibration amount of the vibrator relative to the input voltage is large.

[0075] Data corresponding to the graph in Fig. 4 may be stored in at least one of the system program 102P1 and the game program 102P2. As shown in Fig. 4, the first vibration motor in embodiment 1 has good vibration efficiency when operating at 100 Hz, and since inputting a large voltage at this frequency causes excessive vibration, the frequency characteristic adjustment rate is reduced to 0.5 when operating at 100 Hz, and at frequencies with poor vibration efficiency, the frequency characteristic adjustment rate is increased to prevent the vibration from weakening, and the allowable voltage value is gradually reduced when operating at 400 Hz or higher.

[0076] Next, it will be explained how the processor 101 performs the above-mentioned adjustment process on the amplitude value in the vibration instruction data 114 to generate the adjusted vibration instruction data 110. The amplitude value or frequency value of the instruction vibration data after the adjustment process is performed may be referred to as the adjusted amplitude value or the adjusted frequency value.

[0077] Fig. 5 is a diagram showing frequency characteristic data used in the frequency characteristic adjustment process for the second controller. The frequency characteristic data shown in Fig. 5 is used in the frequency characteristic adjustment process when the game controller 200 connected to the game device 100 is a second controller having a second vibration motor. The frequency characteristic data shown as a graph in Fig. 5 is data that defines the adjustment command amplitude at each frequency. The adjustment command amplitude on the vertical axis is the amplitude value at each frequency after the frequency characteristic of the second controller has been adjusted.

[0078] 5 shows lines Ln1 to Ln4. Line Ln1 is a line that indicates the minimum command amplitude value for vibrating the second controller at each frequency (the minimum command amplitude value at which the user can feel vibration when using the second controller). On the other hand, each of lines Ln2 to Ln4 is data for adjusting the vibration strength when vibrating the second controller using certain vibration command data to the vibration strength when vibrating the first controller using that certain vibration command data. The vibration strength may be the sensation felt when the user actually holds the game controller 200, or may be the vibration level strength measured by a vibration sensor.

[0079] Line Ln2 indicates the amplitude value after adjustment to match the vibration strength when the first controller is vibrated at each frequency when the command amplitude is "0.1." For example, when vibration command data specifying a command amplitude value of "0.1" and a command frequency value of "140 Hz" is generated, processor 101 adjusts the command amplitude value from "0.1" to "0.17" by referring to line Ln2 shown in FIG. 5. Line Ln3 is a line for matching the vibration strength when the command amplitude is "0.5." Line Ln4 is a line for matching the vibration strength when the command amplitude is "1.0." When the command amplitude is greater than or equal to 0.1 and less than 0.5, processor 101 determines the adjusted command amplitude by linear interpolation using line Ln2 and line Ln3. When the command amplitude is greater than or equal to 0.5 and less than 1.0, processor 101 determines the adjusted command amplitude by linear interpolation using line Ln3 and line Ln4. The frequency characteristic adjustment of the second controller will be described later.

[0080] Data corresponding to the graph in FIG. 5 and data corresponding to lines Ln1 to Ln4 in FIG. 5 may be stored in at least one of the system program 102P1 and the game program 102P2. In this embodiment, although not shown in FIG. 5, data indicating the minimum command amplitude value for vibrating the first controller (the minimum command amplitude value at which the user can feel vibration when using the first controller) is stored in a storage medium accessible by the processor 101. Like line Ln1, the data indicating the minimum command amplitude value for vibrating the first controller stores the minimum command amplitude value for each frequency. In this embodiment, the minimum command amplitude value for vibrating the first controller is used in adjusting the frequency characteristics of the second controller, which will be described later. Lines Ln1 to Ln4 and the data indicating the minimum command amplitude value for vibrating the first controller are determined in advance through experiments, etc. Furthermore, the amplitude value indicated by the data indicating the minimum instruction amplitude value that vibrates line Ln1 and the first controller need only indicate a threshold value between vibration instruction data that can be sensed as vibration and vibration instruction data that is not sensed as vibration, and may be an amplitude value that indicates that the data can be sensed as vibration if it is equal to or greater than that amplitude value, or an amplitude value that indicates that the data is not sensed as vibration if it is equal to or less than that amplitude value.

[0081] FIG. 6 is a diagram for explaining the adjustment process. FIG. 6 shows an example of the data adjustment process when the game controller 200 connected to the game device 100 is a first controller having a first vibration motor. The adjustment process is realized by the processor 101 executing the system program 102P1. As described above, the vibration control system 10 of this embodiment is configured to be able to control the vibration motor 206 based on two pieces of vibration instruction data. That is, the system program 102P1 is configured to be able to accept an instruction data set including two pieces of vibration instruction data for a certain timing. Hereinafter, the two pieces of vibration instruction data included in the instruction data set will be referred to as "first vibration instruction data" and "second vibration instruction data." In addition, the amplitude value specified by the first vibration instruction data will be referred to as "first instruction amplitude value," and the frequency value specified by the first vibration instruction data will be referred to as "first instruction frequency value." Similarly, the amplitude value specified by the second vibration instruction data will be referred to as "second instruction amplitude value," and the frequency value specified by the second vibration instruction data will be referred to as "second instruction frequency value."

[0082] The system program 102P1 processes the instruction data set for each vibration instruction cycle described above. For example, if the first impact event and the second impact event in FIG. 3 occur simultaneously, the vibration instruction data 116A may be passed to the system program 102P1 as the first vibration instruction data, and the vibration instruction data 116B may be passed to the system program 102P1 as the second vibration instruction data. In this case, the system program 102P1 vibrates the vibration motor 206 so as to provide the user with a vibration that is a combination of the vibrations based on the vibration instruction data 116A and the vibrations based on the vibration instruction data 116B. That is, the system program 102P1 processes the vibration instruction data 116A and the vibration instruction data 116B for one vibration instruction cycle.

[0083] In the example of Fig. 6, to simplify the explanation of the adjustment process, an example is shown in which vibration instruction data different from the example shown in Fig. 3 is passed to the system program 102P1. Fig. 6 shows a first vibration instruction cycle, a second vibration instruction cycle, and a third vibration instruction cycle. These periods are consecutive 15 ms periods that progress in chronological order as the first vibration instruction cycle, the second vibration instruction cycle, and the third vibration instruction cycle. Fig. 6 illustrates an example in which a different instruction data set is passed to the system program 102P1 in each vibration instruction cycle.

[0084] The following first describes the conversion of vibration instruction data in the first vibration instruction cycle. In the first vibration instruction cycle, an instruction data set including first vibration instruction data specifying a first instruction amplitude value of "0.0" and a first instruction frequency value of "0" and second vibration instruction data specifying a second instruction amplitude value of "0.0" and a second instruction frequency value of "0" is passed to the system program 102P1. That is, in the first vibration instruction cycle, either no vibration instruction data is passed to the system program 102P1, or vibration instruction data indicating that the vibration motor 206 is not to vibrate is passed to the system program 102P1. In this case, no adjustment is made in any of the total adjustment process, frequency characteristic adjustment process, and clamp adjustment process, and the amplitude value and frequency are ultimately converted to vibration instruction data 110 with "0.0" remaining.

[0085] In the second vibration instruction cycle, an instruction data set including first vibration instruction data specifying a first instruction amplitude value of "0.7" and a first instruction frequency value of "50 Hz" and second vibration instruction data specifying a second instruction amplitude value of "0.5" and a second instruction frequency value of "80 Hz" is passed to the system program 102P1. When the system program 102P1 receives an instruction data set including two vibration instruction data whose amplitude values ​​are not 0, the system program 102P1 executes a sum adjustment process to adjust the amplitude values ​​specified by the first vibration instruction data and the second vibration instruction data. The sum adjustment process is a process in which, when the sum of the amplitude values ​​specified by two vibration instruction data within the same vibration instruction cycle exceeds 1, the sum of the amplitude values ​​specified by the two vibration instruction data is apportioned so that the sum becomes 1.

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

[0087] Next, the frequency characteristic adjustment process will be described. In the frequency characteristic adjustment process, the amplitude value is adjusted using the frequency characteristic data described with reference to FIG. 4. The processor 101 acquires a frequency characteristic adjustment rate at a specified frequency value using data corresponding to the graph in FIG. 4. For the first vibration instruction data, the processor 101 references the frequency characteristic data corresponding to the graph in FIG. 4 and determines that the frequency characteristic adjustment rate is "1.0" when the vibration motor 206 operates at a frequency of 50 Hz. The processor 101 multiplies the amplitude value "0.58" specified by the first vibration instruction data by the frequency characteristic adjustment rate "1.0" to adjust the amplitude value to "0.58." That is, in this case, since the frequency characteristic adjustment rate for 50 Hz is "1.0," the amplitude value of the first vibration instruction data in the second vibration instruction cycle does not change due to the frequency characteristic adjustment process.

[0088] Similarly, for the second vibration instruction data, the processor 101 determines that the frequency characteristic adjustment rate is "0.7" when the vibration motor 206 operates at a frequency of 80 Hz. The processor 101 multiplies the amplitude value "0.42" instructed by the second vibration instruction data after the total adjustment process by the frequency characteristic adjustment rate "0.7" to adjust the amplitude value to "0.29." In this embodiment, the value is rounded off to the third decimal place, but calculations may also be performed to the third decimal place and beyond.

[0089] Next, the first vibration instruction data and the second vibration instruction data in the third vibration instruction cycle will be described. In the third vibration instruction cycle, an instruction data set including first vibration instruction data specifying a first instruction amplitude value of "0.7" and a first instruction frequency value of "150 Hz" and second vibration instruction data specifying a second instruction amplitude value of "0.5" and a second instruction frequency value of "200 Hz" is passed to the system program 102P1. In the third vibration instruction cycle, as in the second vibration instruction cycle, the amplitude values ​​specified by the first vibration instruction data and the second vibration instruction data are adjusted by total adjustment. After the total adjustment in the third vibration instruction cycle, the amplitude value of the first vibration instruction data is adjusted to "0.58", and the amplitude value of the second vibration instruction data is adjusted to "0.42".

[0090] Next, processor 101 refers to the frequency characteristic data corresponding to the graph in FIG. 4 and determines that the frequency characteristic adjustment rate is "1.0" when vibration motor 206 operates at a frequency of 150 Hz. Processor 101 multiplies the amplitude value of "0.58" instructed by the first vibration instruction data by the frequency characteristic adjustment rate of "1.0" to adjust the amplitude value to "0.58." For the second vibration instruction data in the third vibration instruction cycle, processor 101 determines that the frequency characteristic adjustment rate is "1.0" when vibration motor 206 operates at a frequency of 200 Hz. Processor 101 multiplies the amplitude value of "0.42" instructed by the second vibration instruction data by the frequency characteristic adjustment rate of "1.0" to adjust the amplitude value to "0.42."

[0091] As will be described later, the clamp adjustment process is a process in which the game controller 200 gradually changes the frequency when the previous command frequency value and the current command frequency value differ, and this process prevents the input voltage to the vibration motor 206 from exceeding an allowable value. The process executed by the game controller 200, which will be described later, is a process in which the immediately preceding amplitude value and the immediately preceding frequency gradually approach the commanded amplitude and frequency. The clamp adjustment process is a process in which, when the frequency gradually changes within a vibration command cycle, the first command amplitude value and the second command amplitude value are adjusted to match the frequency with the lowest frequency characteristic adjustment rate (i.e., the frequency with the best vibration efficiency).

[0092] First, processor 101 determines a first clamp value and a second clamp value for the first vibration instruction data and the second vibration instruction data, respectively. The clamp value is determined to be the frequency with the lowest frequency characteristic adjustment rate among the frequencies between the frequency value of the vibration instruction data in the previous vibration instruction cycle and the frequency value of the vibration instruction data in the current vibration instruction cycle. Taking the third vibration instruction cycle as an example, for the first vibration instruction data, the first instruction frequency value at the time of the second vibration instruction cycle is 50 Hz, and the first instruction frequency value at the time of the third vibration instruction cycle is 150 Hz. Returning to FIG. 4, among the frequencies between 50 Hz and 150 Hz, the frequency with the lowest frequency characteristic adjustment rate is 100 Hz. Therefore, processor 101 determines "0.5," which is the frequency characteristic adjustment rate for 100 Hz, as the first clamp value.

[0093] For the second vibration instruction data, the second instruction frequency value at the time of the second vibration instruction cycle is 80 Hz, and the second instruction frequency value at the time of the third vibration instruction cycle is 200 Hz. Returning to FIG. 4, of the frequencies between 80 Hz and 200 Hz, the frequency with the lowest frequency characteristic adjustment rate is 100 Hz. Therefore, processor 101 determines "0.5," which is the frequency characteristic adjustment rate for 100 Hz, as the second clamp value, as the first clamp value.

[0094] For the first vibration instruction data, processor 101 divides the first instruction amplitude value after frequency characteristic adjustment by the sum of the first instruction amplitude value after frequency characteristic adjustment and the second instruction amplitude value after frequency characteristic adjustment. Processor 101 determines the clamp value by multiplying the divided value by the first clamp value described above. For example, the first clamp value is calculated as "first clamp value x first instruction amplitude value after frequency characteristic adjustment" / (first instruction amplitude value after frequency characteristic adjustment + second instruction amplitude value after frequency characteristic adjustment), which is "0.29." If the first instruction amplitude value after frequency characteristic adjustment is greater than the determined clamp value, processor 101 sets the clamp value as the first instruction amplitude value after clamp adjustment. That is, because the amplitude value after frequency adjustment, "0.58," is greater than the determined first clamp value of "0.29," processor 101 determines "0.29" as the first instruction amplitude value after clamp adjustment.

[0095] Similarly, for the second vibration instruction data, processor 101 divides the second instruction amplitude value for frequency characteristic adjustment by the sum of the first instruction amplitude value for frequency characteristic adjustment and the second instruction amplitude value for frequency characteristic adjustment. Processor 101 multiplies the divided value by the second clamp value. Specifically, the clamp value determined by this calculation is 0.21, and processor 101 determines this value as the clamp value. Because the amplitude value after frequency adjustment, "0.42," is greater than the determined clamp value "0.21," processor 101 determines "0.21" as the second instruction amplitude value after clamp adjustment.

[0096] As a result, the first vibration instruction data after the clamp adjustment process is converted into vibration instruction data 110 instructing a first instruction amplitude value of "0.29" and a first instruction frequency value of "150," and the second vibration instruction data after the clamp adjustment process is converted into vibration instruction data 110 instructing a second instruction amplitude value of "0.21" and a second instruction frequency value of "200." The processor 101 stores instruction data sets including the vibration instruction data 110 after the adjustment process in the vibration instruction data area 103B3 in accordance with the system program 102P1, and then transmits the instruction data sets to the game controller 200 in the order in which they were stored. The MCU 201 in the game controller 200 generates control data based on the received converted vibration instruction data 110 and drives the vibration motor 206 based on the control data.

[0097] [E. Procedure for generating vibration instruction data in the game device] The following describes the processing executed by the processor 101 of the game device 100 using a flowchart. Fig. 7 is a flowchart showing the procedure of the processing for generating vibration instruction data 114 including normalized amplitude values ​​executed in embodiment 1. The processing of the flowchart shown in Fig. 7 is realized by the processor 101 executing the game program 102P2, and is started in response to the start of execution of the game program 102P2.

[0098] Processor 101 acquires operation data (step S101). Processor 101 operates a game object based on the received operation data (step S102). A game object is an object operated by a user in a virtual space within a game, and may typically be a player character, a car in a car racing game, or the like.

[0099] Processor 101 determines whether an impact event has occurred during the game based on the movement of the game object or due to an in-game event unrelated to the movement of the game object (step S103). An impact event is an event that serves as a condition for generating a vibration effect, and includes various events depending on the content of the game, such as a weapon such as a sword carried by a player character coming into contact with an enemy object in the example of an adventure game, or a vehicle operated by a user colliding with another vehicle in the example of a car racing game.

[0100] If an impact event has not occurred in the game (NO in step S103), processor 101 returns the process to step S101. If an impact event has occurred in the game (YES in step S103), processor 101 generates vibration instruction data 114 (typically, a time-series vibration instruction data group) and passes the generated vibration instruction data 114 to system program 102P1 (step S104). At this time, the vibration instruction data (or the time-series vibration instruction data group) may be generated by reading out the vibration file 105 described above.

[0101] After passing the instruction data set including the vibration instruction data 114 to the system program 102P1, the processor 101 returns to step S101 and repeatedly executes steps S101 to S104 while the game is being executed. If two impact events occur simultaneously, the processor 101 passes an instruction data set including first and second vibration instruction data to the system program 102P1 based on the two impact events. If one impact event occurs, the processor 101 passes an instruction data set including only the first vibration instruction data to the system program 102P1 based on the one impact event. In this case, the processor 101 may include second vibration instruction data specifying a second instruction amplitude value of "0" and a second instruction frequency value of "0" in the instruction data set. Note that the first and second vibration instruction data may be generated based on one impact event. In this way, the game device 100 in this embodiment generates vibration instruction data 114 based on the occurrence of an impact event as the game progresses and passes the vibration instruction data 114 to the system program 102P1. After executing step S104, processor 101 executes other processes for progressing the game.

[0102] 8 is a flowchart showing the vibration instruction data adjustment procedure executed by the game device 100 according to the first embodiment. The processing of the flowchart shown in FIG. 8 is realized by the processor 101 executing the system program 102P1. In FIG. 8, the above-described adjustment processing is executed. Note that the flowchart shown in FIG. 8 includes processing that branches depending on the type of game controller 200 connected to the game device 100.

[0103] 8 is executed based on the instruction data set being passed from game program 102P2 to system program 102P1. Processor 101 selects the first vibration instruction data and the second vibration instruction data passed from game program 102P2 (step S105).

[0104] Processor 101 determines whether the type of connected game controller 200 is the second controller (step S105Y). If the type of connected game controller 200 is the second controller, processor 101 executes a boost process (step S105Z).

[0105] 9 is a flowchart showing the procedure of the boost process (step S105Z). In the boost process shown in step S105Z, processor 101 determines whether or not there is no previous first vibration instruction data (step S105Z1). That is, processor 101 determines whether or not vibration based on the first vibration instruction data was generated in the previous vibration instruction cycle. If there is no previous first vibration instruction data (YES in step S105Z1), processor 101 determines whether or not the instruction frequency of the first vibration instruction data selected in the current vibration instruction cycle is 150 Hz or less (step S105Z2).

[0106] If the instruction frequency of the first vibration instruction data is 150 Hz or less (YES in step S105Z2), the processor 101 multiplies the instruction amplitude of the selected first vibration instruction data by 1.2 times in the current vibration instruction cycle (S105Z3). If the result of multiplying by 1.2 in step S105Z3 exceeds "1.0", the processor 101 corrects the instruction amplitude to "1.0". It is determined whether vibration based on the first vibration instruction data is occurring. If the previous first vibration instruction data exists (NO in step S105Z1) or if the instruction frequency of the selected first vibration instruction data exceeds 150 Hz (NO in step S105Z2), the processor 101 does not execute the process of S105Z3. In steps S105Z4 to S105Z6, the processes in steps S105Z1 to S105Z3 are executed on the second vibration instruction data. The processes in steps S105Z4 to S105Z6 and the processes in steps S105Z1 to S105Z3 are different only in the processing targets, and therefore description thereof will not be repeated.

[0107] Each of the processes in steps S105Z1 and S105Z4 includes at least one of the following: a process for determining that the amplitude specified by the previous amplitude command data is zero; a process for determining that the amplitude specified by the previous amplitude command data is approximately zero; a process for determining that the previous control amplitude is zero; and a process for determining that the previous control amplitude is approximately zero. It may be determined that the condition for any one of these processes is met, or multiple processes may be performed to determine that at least one condition is met. "Approximately zero" includes that the amplitude is equal to or less than a threshold value near zero.

[0108] As described above, in this embodiment, when a second controller is connected and vibration based on vibration instruction data is initiated, a boost process is executed to increase the instruction amplitude by 1.2 times. This allows vibration to be initiated with a good start even when starting vibration of the second controller, which is less likely to vibrate than the first controller. While the example in FIG. 8 shows an example in which the boost process is executed for only a period of 5 ms, which is one vibration instruction cycle, the period for which the boost process is executed is not limited to 5 ms. For example, the boost process may be executed continuously for a period of 15 ms, which is three vibration instruction cycles. Instead of updating the instruction amplitude to 1.2 times from the first vibration instruction cycle, the instruction amplitude may be gradually increased by controlling it to 1.1 times for the first vibration instruction cycle and 1.2 times for the second vibration instruction cycle.

[0109] Furthermore, when the second vibration motor of the second controller vibrates at a frequency of 150 Hz or less, the rise of the vibration is gradual. Therefore, as shown in step S105Z2, by multiplying the command amplitude by 1.2 only when the frequency is 150 Hz or less, it is possible to execute processing only when necessary, thereby reducing the processing load. Note that the processing of step S105Z2 does not necessarily have to be executed, and the command amplitude may be multiplied by 1.2 regardless of the frequency. Furthermore, when the game device 100 generates only one vibration instruction data as vibration instruction data for vibrating the vibration motor 206 at a certain timing, the game device 100 may execute a boost process for that one vibration instruction data.

[0110] 8, processor 101 then executes a total adjustment process on the first vibration instruction data and the second vibration instruction data (step S105A). The total adjustment process is executed regardless of the type of connected controller.

[0111] Next, processor 101 determines respective frequency characteristic adjustment rates according to the first command frequency value and the second command frequency value included in the first vibration instruction data and the second vibration instruction data, respectively, after the total adjustment (step S106). Fig. 10 is a flowchart showing the procedure of the frequency characteristic adjustment process (step S106) for each type of game controller 200. In Fig. 10, the processes of steps S1062 to S1069 are executed for each of the first vibration instruction data and the second vibration instruction data, but the illustration of the processes for each of the first vibration instruction data and the second vibration instruction data is simplified assuming that the processes are executed in parallel for the first vibration instruction data and the second vibration instruction data.

[0112] 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 the first controller, processor 101 determines a frequency characteristic adjustment rate based on data corresponding to the graph in FIG. 4. Processor 101 multiplies the first command amplitude value and the second command amplitude value after the total adjustment by the frequency characteristic adjustment rate corresponding to the first command frequency value and the frequency characteristic adjustment rate corresponding to the second command frequency value, respectively, to determine the first command amplitude value and the second command amplitude value after the frequency characteristic adjustment (step S1062A). That is, the frequency characteristic adjustment process for the first controller described above is executed by steps S1062 and S1062A.

[0113] If the type of the connected controller is the second controller in step S1061, processor 101 determines the adjusted instruction amplitude based on data corresponding to the graph in FIG. 5. Processor 101 determines whether the instruction amplitude value is equal to or greater than the minimum threshold value of the first controller (step S1063). Note that in step S1063, the above-mentioned data on the "minimum instruction amplitude value for vibrating the first controller" is referenced based on the instruction frequency, and a value corresponding to the instruction frequency is used. Game device 100 references data indicating the minimum instruction amplitude value for vibrating the first controller at each frequency, and determines whether the instruction amplitude value of the vibration instruction data selected in step S105 is higher than the minimum instruction amplitude value. In other words, processor 101 determines whether the first controller will vibrate when the vibration instruction data selected in step S105 is input to the first controller.

[0114] If the command amplitude value is less than the minimum threshold value of the first controller (NO in step S1063), that is, if the selected vibration command data does not vibrate the first controller, the processor 101 updates the command amplitude value of the selected vibration command data to zero (step S1064) and returns the process. If the command amplitude value is equal to or greater than the minimum threshold value of the first controller (YES in step S1063), the processor 101 determines whether the command amplitude value is less than 0.1 (step S1065). If the command amplitude value is less than 0.1 (YES in step S1065), the processor 101 determines the adjustment command amplitude by linear interpolation using the line Ln1 and the line Ln2 in FIG. 5 (step S1066). The processor 101 updates the command amplitude value of the selected vibration command data to the determined value of the adjustment command amplitude and returns the process.

[0115] If the command amplitude value is equal to or greater than 0.1 (NO in step S1065), processor 101 determines whether the command amplitude value is less than 0.5 (step S1067). If the command amplitude value is less than 0.5 (YES in step S1067), processor 101 determines the adjustment command amplitude by linear interpolation using line Ln2 and line Ln3 in FIG. 5 (step S1068). For example, when processing vibration command data specifying a command amplitude value of "0.3" and a command frequency value of "300 Hz," the value between line Ln2 and line Ln3 at the frequency of "300 Hz" is determined by linear interpolation with reference to FIG. 5 as the adjustment command amplitude. That is, as shown in FIG. 5, processor 101 determines a value of approximately 0.33 as the adjustment command amplitude, updates the command amplitude value of "0.3" in the vibration command data to "0.33," and returns the process.

[0116] If the command amplitude value is 0.5 or greater (NO in step S1067), the processor 101 determines the adjustment command amplitude by linear interpolation using lines Ln3 and Ln4 in FIG. 5 (step S1069). For example, when processing vibration command data specifying a command amplitude value of "0.75" and a command frequency value of "80 Hz," the processor 101 determines the value between lines Ln3 and Ln4 at a frequency of "80 Hz" by linear interpolation with reference to FIG. 5 as the adjustment command amplitude. That is, as shown in FIG. 5, the processor 101 determines a value of approximately 0.50 as the adjustment command amplitude, updates the command amplitude value of the vibration command data from "0.75" to "0.50," and returns the process. The command amplitude is not necessarily updated to increase. For example, when the command amplitude value is "0.5," the command amplitude is updated to decrease in a region where the command frequency is less than 100 Hz, and is updated to increase in a region where the command frequency is 100 Hz or greater but less than 355 Hz.

[0117] In this way, the second controller determines the adjustment command amplitude using the graph and line shown in FIG. 5. The process of determining the adjustment command amplitude updates the amplitude value to increase it in the range higher than 100 Hz, depending on the value of the command amplitude. In this sense, the process of determining the adjustment command amplitude can be said to be an adjustment that increases the command amplitude. Furthermore, in the process of determining the adjustment command amplitude, the adjustment command amplitude is determined according to the value of the command frequency, but at any frequency, it does not exceed "1.0", which indicates the maximum amplitude of the second vibration motor. In this sense, the process of determining the adjustment command amplitude can be said to be an adjustment that does not exceed "1.0", which indicates the maximum amplitude.

[0118] As described above, each of the lines Ln2 to Ln4 represents data for adjusting the vibration intensity when the second controller is vibrated using certain vibration instruction data to the vibration intensity when the first controller is vibrated using the certain vibration instruction data. Furthermore, in this embodiment, the second controller is a controller that is less susceptible to vibration than the first controller. In this embodiment, when the second controller and the first controller are vibrated at a command amplitude value of "0.5," the vibration intensity of the second controller is weaker than the vibration intensity of the first controller across all frequency bands. However, when the second controller vibrates at a command amplitude value of "0.5" and a command frequency less than "100 Hz," the displacement of the vibrator may exceed a limit value. Therefore, in this embodiment, the vibration control system 10 updates the command amplitude value to a value less than "0.5" when the command frequency is less than 100 Hz. Similarly, when the second controller vibrates in a range where the command amplitude value is "0.5" and the command frequency is "350 Hz" or higher, the displacement of the vibrator may exceed the limit value. Therefore, when the command frequency is 350 Hz or higher, the vibration control system 10 updates the command amplitude value to a value less than "0.5." In other words, when the command amplitude value is "0.5" and the command frequency is "100 Hz" or higher but lower than "350 Hz," the second controller updates the command amplitude value to a larger value. Similarly, for line Ln2, the command amplitude value may be updated to a lower value taking into account the displacement of the vibrator. For line Ln4 in this embodiment, the command amplitude value is updated to a value less than "1.0" in all frequency bands. However, in other aspects, the command amplitude value may be maintained at "1.0."

[0119] In this embodiment, the command amplitude value is adjusted to be larger according to the command amplitude specified by the application. More specifically, when the command amplitude specified by the application has a margin relative to the maximum amplitude, the command amplitude is adjusted to be larger. This can enhance the vibration feel, for example, for a controller with weak vibration. Furthermore, when the application determines the command amplitude based on a standard controller, the vibration feel of a controller with weaker vibration than the standard controller can be matched (brought closer) to the vibration feel of the standard controller. Note that the command amplitude value may be adjusted to be smaller according to the command amplitude specified by the application. This can weaken the vibration feel for a controller with strong vibration. Furthermore, since this control is performed based on the command frequency, an appropriate adjusted command amplitude can be set for each frequency. For example, the adjusted command amplitude can be increased for frequencies with weak vibration and decreased for frequencies with strong vibration. Furthermore, since the adjustment process is switched on or off depending on the controller being used, the amplitude adjustment can be performed according to the characteristics of the controller. The content of the amplitude adjustment may be changed depending on the type of controller. Furthermore, in the case of the second controller, if the command amplitude value specified by the application is equal to or greater than the minimum command amplitude value for vibrating the first controller, it is converted to equal to or greater than the minimum command amplitude value for vibrating the second controller. Therefore, if the application determines the command amplitude based on the first controller, the vibration sensation is not lost when playing the same application using the second controller. Furthermore, the minimum command amplitude value for vibrating the first controller and the minimum command amplitude value for vibrating the second controller may differ for each command frequency. In this embodiment, however, different data is used for these minimum command amplitude values ​​for each command frequency, allowing processing according to the command frequency. Furthermore, if the command amplitude value is smaller than the minimum command amplitude value for vibrating the first controller, the command amplitude value is set to zero, preventing unnecessary control from being performed.

[0120] The branching processes in steps S1063, S1065, and S1067 correspond to the number of lines included in the graph of FIG. 5. The number of lines included in the graph of FIG. 5 is not limited to four and may be a number greater than four, such as five or eight, or a number less than four, such as two or three. In some aspects, when the command amplitude value is "1.0," the frequency characteristic adjustment of the second controller may not be performed. In this case, the command amplitude value is maintained at "1.0." That is, processor 101 vibrates the second controller at maximum output. Also, when the command amplitude value is less than 0.5, the frequency characteristic adjustment of the second controller may not be performed. In this case, the command amplitude value is maintained at 0.5 or greater. In step S1067, the command amplitude value may be updated only when the command amplitude value is less than 0.5. That is, when the command amplitude value is 0.5 or greater, the adjustment using the graph of FIG. 5 may not be performed.

[0121] Furthermore, processor 101 executes a clamp adjustment process for each of the first command amplitude value and the second command amplitude value after the frequency characteristic adjustment (step S107A). Processor 101 writes an instruction data set including the first vibration instruction data and the second vibration instruction data after the clamp adjustment process to vibration instruction data area 103B3 (step S108). Processor 101 determines whether all instruction data sets passed from game program 102P2 have been processed (step S109). When writing first vibration instruction data instructing that the amplitude value is zero in step S108, if the amplitude value indicated by the last written first vibration instruction data is zero, processor 101 does not execute a process for writing first vibration instruction data instructing that the amplitude value is zero. In other words, re-writing the data is omitted. A similar process is performed for the second vibration instruction data. This prevents first vibration instruction data instructing that the amplitude value is zero from being continuously transmitted from game device 100 to game controller 200, thereby reducing the processing load on the vibration control system.

[0122] When the first controller is connected, clamp adjustment processing is performed using the graph in FIG. 4, as described in FIG. 6. On the other hand, when the second controller is connected, clamp adjustment processing is performed using line Ln1 in FIG. 5. Processor 101 identifies the smallest adjustment instruction amplitude in the period from the previous instruction frequency to the current instruction frequency, among the adjustment instruction amplitudes indicated by line Ln4. Processor 101 compares the identified adjustment instruction amplitude with the value of the instruction amplitude updated in step S106. If the value of the instruction amplitude updated in step S106 is greater than the identified adjustment instruction amplitude, processor 101 updates the instruction amplitude value to the identified adjustment instruction amplitude.

[0123] 5, if the previous frequency value was 50 Hz and the current frequency value is 150 Hz, processor 101 determines that the smallest adjustment instruction amplitude indicated by line Ln4 in the period from 50 Hz to 150 Hz is "0.66." If the instruction amplitude value of the currently selected vibration instruction data is 0.66 or greater, processor 101 updates the instruction amplitude value to 0.66. This makes it possible to suppress unintended changes in behavior during the process of gradually changing the frequency, which will be described later.

[0124] 8, if the adjustment process has not been performed on all of the vibration instruction data 114 (NO in step S109), the processor 101 returns the process to step S105. If the adjustment process has been completed on all of the vibration instruction data 114 (YES in step S109), the processor 101 ends the process of the flowchart. As a result, the vibration instruction data 110 after the adjustment process, as shown in the lower left of FIG. 6, is written to the vibration instruction data area 103B3.

[0125] The processor 101 transmits the adjusted vibration instruction data 110 stored in the vibration instruction data area 103B3 to the game controller 200 via the communication interface 104. The game controller 200 stores the received adjusted vibration instruction data 110 in the vibration instruction data area 204B1 in the volatile memory 204.

[0126] [F. Control Data Generation Processing Procedure for Game Controller] The processing executed by the MCU 201 of the game controller 200 will be described below using a flowchart. FIG. 11 is a flowchart showing the processing procedure for generating control data executed by the game controller 200 in the first embodiment. The flowchart shown in FIG. 11 may be executed commonly by both the first controller and the second controller, or some of the processing may differ depending on the type of controller. The control data is data generated by the processor 202 based on the first vibration instruction data and second vibration instruction data after adjustment processing. The control data is typically data indicating a voltage value for driving the vibration motor 206, and is data (instantaneous values) indicating the voltage value at each moment of a waveform with a specified frequency and amplitude. Hereinafter, the control data is output at a predetermined interval, and this interval is referred to as a "control cycle."

[0127] In this embodiment, since the amplifier 205 operates at 8 kHz, control data is supplied to the vibration motor 206 every 0.125 ms, and the control cycle is 0.125 ms. The MCU 201 generates a number of control data items calculated by dividing the vibration instruction cycle by the control cycle from one vibration instruction data item. In this embodiment, the vibration instruction cycle is 5 ms long and the control cycle is 0.125 ms, so the processor 202 generates 40 control data items from one vibration instruction data item. A reference waveform is determined for each control cycle (0.125 ms) based on the frequency and amplitude values ​​of the vibration instruction data 110 after adjustment processing. The reference waveform is a waveform determined for each control cycle and is used to specify a voltage value to be output as control data. The processor 202 determines a voltage value to be output as control data based on the reference waveform.

[0128] The processing of the flowchart shown in Fig. 11 is realized by the execution of the MCU program 203P by the processor 202. The processing of the flowchart shown in Fig. 11 is started, for example, when power is supplied to the game controller 200.

[0129] The volatile memory 204 has a current amplitude data area 204V1, a current frequency data area 204V2, and a current phase data area 204V3 for each of the first vibration instruction data and second vibration instruction data included in the instruction data set, and these areas store current amplitude data, current frequency data, and current phase data, respectively. That is, the current amplitude data area 204V1 is configured to be able to store first current amplitude data based on the first vibration instruction data and second current amplitude data based on the second vibration instruction data. Hereinafter, when the first current amplitude data and the second current amplitude data are not distinguished from each other, they will be simply referred to as "current amplitude data."

[0130] The current frequency data area 204V2 is configured to store first current frequency data based on the first vibration instruction data and second current frequency data based on the second vibration instruction data. Hereinafter, when the first current frequency data and the second current frequency data are not distinguished from each other, they will simply be referred to as "current frequency data." Meanwhile, the current phase data area 204V3 stores a single current phase data because the current phase data stored in the current phase data area 204V3 is shared in the processing of both the first vibration instruction data and the second vibration instruction data. The current phase data area 204V3 may also be configured to store first current phase data based on the first vibration instruction data and second current phase data based on the second vibration instruction data. These data represent the current amplitude, current frequency, and current phase of the control data for the vibration motor 206, which vibrates based on the first vibration instruction data and the second vibration instruction data, respectively.

[0131] In step S201, the processor 202 copies the current amplitude data value and the current frequency data value in each of the first vibration instruction data and the second vibration instruction data to separate areas of the volatile memory 204. Specifically, the values ​​are stored as previous amplitude data and previous frequency data in a previous amplitude data area 204V4 and a previous frequency data area 204V5, respectively (step S201).

[0132] The previous amplitude data area 204V4 is configured to be able to store first previous amplitude data based on the first vibration instruction data and second previous amplitude data based on the second vibration instruction data. Hereinafter, when the first previous amplitude data and the second previous amplitude data are not distinguished from each other, they will simply be referred to as "previous amplitude data." The previous frequency data area 204V5 is configured to be able to store first previous frequency data based on the first vibration instruction data and second previous frequency data based on the second vibration instruction data. Hereinafter, when the first previous frequency data and the second previous frequency data are not distinguished from each other, they will simply be referred to as "previous frequency data." When the processor 202 executes the flowchart shown in FIG. 11 for the first time after the game controller 200 is started up, the processor 202 stores, as initialization processing, "0V" as the value of the current amplitude data and the value of the previous amplitude data, "0 Hz" as the value of the current frequency data and the value of the previous frequency data, and "0 degrees" as the value of the current phase data.

[0133] Processor 202 determines whether or not an instruction data set exists in vibration instruction data area 204B1 (step S202). Processor 202 determines whether or not either first vibration instruction data or second vibration instruction data exists in vibration instruction data area 204B1 (step S202). If at least one of first vibration instruction data and second vibration instruction data exists in vibration instruction data area 204B1 (NO in step S202), processor 202 executes the process of step S204.

[0134] If neither the first vibration instruction data nor the second vibration instruction data exists in the vibration instruction data area 204B1 (YES in step S202), the processor 202 executes a termination process (step S203). The termination process will be described in detail later. Next, the processor 202 acquires the first vibration instruction data in the instruction data set in the vibration instruction data area 204B1, and deletes the instruction data set from the vibration instruction data area 204B1 (step S204). The instruction data set that was stored earliest in the vibration instruction data area 204B1 is stored at the top of the vibration instruction data area 204B1.

[0135] Hereinafter, the first command amplitude value and the second command amplitude value included in the command data set acquired by processor 202 in step S204 will be referred to indistinguishably as "command amplitude value." Similarly, the first frequency value and the second frequency value included in the command data set acquired by processor 202 in step S204 will be referred to indistinguishably as "command frequency value."

[0136] The processor 202 determines whether both the value of the first previous amplitude data and the value of the second previous amplitude data saved in step S201 are greater than 0 (step S205). If at least one of the value of the first previous amplitude data and the value of the second previous amplitude data is greater than 0 (YES in step S205), it can be determined that vibration has been continuing (vibration has not started from a non-vibration state), and the process proceeds to the flow for vibration continuation from step S206 onwards. As will be described later, steps S207 to S210 are executed for each of the first vibration instruction data and the second vibration instruction data. The determination of step S205 as to whether vibration has started from a state in which vibration was continuing is also executed for each of the first vibration instruction data and the second vibration instruction data. In step S206, the processor 202 assigns 1 to a count variable X (step S206). The count variable X is an area provided in the volatile memory 204 and is a counter variable for repeating the process 40 times to generate 40 pieces of control data.

[0137] The following describes how steps S201 to S210 are used to update the first and second current amplitude data, the first and second current frequency data, and the current phase data, and generate first control data corresponding to the first vibration instruction data and second control data corresponding to the second vibration instruction data. That is, the processor 202 executes the illustrated steps S201 to S210 for both the first and second vibration instruction data. For ease of explanation, the flowchart in FIG. 11 illustrates steps S201 to S210 performed for one piece of vibration instruction data. Steps S201 to S210 performed for the first vibration instruction data and steps S201 to S210 performed for the second vibration instruction data may be executed in parallel. As described in step S210A below, the sum of the first control data and the second control data is written as control data to the control data area 204B2.

[0138] Below, steps S207 to S210 will be described, focusing only on the first vibration instruction data. In step S207, processor 202 assigns a value to first current amplitude data. In step S207, processor 202 subtracts the value of the first previous amplitude data from the first instruction amplitude value. Processor 202 multiplies the result of the subtraction by a value obtained by dividing the numerical value stored in count variable X by 40. Processor 202 adds the first previous amplitude data to the result of the multiplication and stores the result as first current amplitude data (step S207).

[0139] In step S208, the processor 202 assigns a value to the first current frequency data. In step S208, the processor 202 subtracts the value of the first previous frequency data from the first command frequency. The processor 202 multiplies the result of the subtraction by a value obtained by dividing the numerical value stored in the count variable X by 40. The processor 202 adds the value of the first previous frequency data to the result of the multiplication and stores the result in the first current frequency data (step S208).

[0140] As a result of the processing in steps S207 and S208, the amplitude value and frequency of the reference waveform referenced to generate the first control data are stored in the first current amplitude data and the first current frequency data. In step S209, the processor 202 assigns a value to the current phase data. Specifically, the processor 202 advances the value of the current phase data by 0.125 ms based on the value of the first current frequency data.

[0141] The processor 202 determines the amplitude and the current phase based on the value of the first current amplitude data, the value of the first current frequency data, and the value of the current phase data, and generates first control data corresponding to the calculated voltage value to be output by the amplifier 205 (step S210). More specifically, the processor 202 determines a reference waveform from the value of the first current amplitude data and the value of the first current frequency data, and generates, as the first control data, a voltage value at a phase indicated by the value of the first current phase data in the reference waveform. The reference waveform will be described in detail with reference to FIG. 15. As described above, the processor 202 also performs steps S207 to S210 for the second vibration instruction data to generate the second control data, similarly to the first vibration instruction data. The processor 202 writes, to the control data area 204B2, control data indicating a voltage value obtained by adding together the voltage value indicated by the first control data and the voltage value indicated by the second control data (step S210A). This allows the vibration motor 206 to vibrate based on both the first vibration instruction data and the second vibration instruction data. In addition, in the vibration control system 10, when the vibration motor 206 is vibrated based on the occurrence of one vibration event, the instruction amplitude value and instruction frequency value of either the first vibration instruction data or the second vibration instruction data becomes 0.

[0142] The control data written in the control data area 204B2 is transmitted to the amplifier 205 by the I2S unit i2s, and the amplifier 205 amplifies the voltage to a voltage value corresponding to the control data written in the control data area 204B2 and applies the amplified voltage to the vibration motor 206.

[0143] The processor 202 assigns a value obtained by adding 1 to the current count variable X to the count variable X (step S211). The processor 202 determines whether the value of the count variable X exceeds 40 (step S212). If the value of the count variable X does not exceed 40 (NO in step S212), the processor 202 returns the process to step S207.

[0144] If the value of count variable X exceeds 40 (YES in step S212), processor 202 returns the process to step S201. If the value of count variable X exceeds 40, this means that generation of 40 pieces of control data corresponding to the vibration instruction data acquired in step S204 has been completed. In other words, this means that processing of the acquired instruction data set has been completed.

[0145] As shown in steps S206 to S212, when the amplitude and frequency are specified by the vibration instruction data, the vibration control system 10 of this embodiment performs a process of gradually approaching the specified amplitude and frequency from the previous amplitude value and frequency. This is called an interpolation process. Note that this interpolation process is not performed at the start of vibration. Furthermore, the process of steps S206 to S212 generates 40 pieces of control data that are output every 0.125 ms for one vibration instruction data.

[0146] Returning to step S205, if the value of the previous amplitude data is 0 (NO in step S205), processor 202 determines that vibration has started, and executes start processing (step S214). The case where the value of the previous amplitude data is 0 means that vibration motor 206 starts operating from a stopped state. Note that in step S205, it may be determined that the previous amplitude data is approximately zero. Also, in step S205, instead of determining that the previous amplitude data is greater than 0, it may be determined that the previous control data is greater than 0. In this case, start processing is executed when the previous amplitude data is 0, or when it is determined that the previous control data is 0 based on the phase, regardless of whether the previous amplitude data is 0. In this case, it may also be determined that the previous amplitude data is approximately zero.

[0147] The termination process (step S203) and the start process (step S214) will be described below. Fig. 12 is a flowchart showing the procedure of the termination process (step S203). In Fig. 12, the processes of steps S2034 to S20345 are executed for each of the first vibration instruction data and the second vibration instruction data, but the illustration of the processes for each of the first vibration instruction data and the second vibration instruction data is simplified assuming that the processes are executed in parallel for the first vibration instruction data and the second vibration instruction data.

[0148] Processor 202 determines whether 105 ms have elapsed since the start of time measurement (step S2031). Time measurement is started in step S2033, which will be described later. If 105 ms have not 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 starts time measurement (step S2033). That is, time measurement is started when the end process is executed for the first time after the state in which at least one of the first vibration instruction data and the second vibration instruction data exists in vibration instruction data area 204B1 changes to the state in which neither the first vibration instruction data nor the second vibration instruction data exists.

[0149] The processor 202 multiplies the previous amplitude data by 0.8 to obtain an amplitude value, generates vibration instruction data indicating the previous frequency data (step S2033), and processes the generated data as the current vibration instruction data. During the period from when the processor 202 no longer accepts vibration instruction data until 105 ms has elapsed, the processor 202 performs vibration control using the value obtained by multiplying the previous amplitude data by 0.8 every 5 ms as the current amplitude data. In other words, the vibration of the vibration motor 206 weakens every 5 ms.

[0150] If 105 ms has elapsed since the start of time measurement (NO in step S2031), processor 202 sets zero or approximately zero as the amplitude value, generates vibration instruction data instructing the previous frequency data (step S2035), and processes the generated data as the current vibration instruction data. That is, processor 202 stops vibration of vibration motor 206.

[0151] Next, the processor 202 executes power saving processing (step S2036). The power saving processing is processing for switching the vibration control system to power saving mode by controlling communication between the amplifier 205 and the MCU 201. More specifically, in step S2036, the processor 202 stops output from the clock line of the I2S unit i2s. This reduces the power consumed by the I2S unit i2s, which is used to output control data. In this embodiment, when there is no vibration instruction data, the amplitude is gradually reduced over a certain period of time. Then, after the amplitude reaches zero, the system enters power saving mode, which allows for both control at the time of termination and power saving.

[0152] On the other hand, in step S2036, the processor 202 does not stop the output from the clock line of the I2C unit i2c. As described above, the I2C unit i2c is used to set the register of the amplifier 205. If the output from the I2C unit i2c is stopped and the register settings of the amplifier 205 are also discarded in the power-saving mode, it would take time to resume the output from the I2C unit i2c and set the register of the amplifier 205 again. As a result, the start of the vibration provided to the user may be delayed. In this embodiment, in step S2036, the output from the clock line of the I2S unit i2s is stopped but the output from the clock line of the I2C unit i2c is not stopped. This allows the control data to be re-output to the amplifier 205 simply by resuming the output from the clock line of the I2S unit i2s. For example, when the processor 202 terminates the power-saving mode, it resumes the output from the clock line of the I2S unit i2s within 5 ms. This allows the output of control data to the amplifier 205 to be quickly resumed.

[0153] In the above example, the time measurement in step S2031 is described as being 105 ms, but it may be determined whether a period of 50 ms, 100 ms, 150 ms, or the like has elapsed instead of 105 ms. Furthermore, in this embodiment, the amplitude data continues to be multiplied by 0.8 over the course of 105 ms, and power saving processing is executed when 105 ms has elapsed. However, the period during which the amplitude data continues to be multiplied by 0.8 and the period that triggers the power saving mode may be different periods. Furthermore, the amplitude data may continue to be multiplied by 0.7, 0.9, or the like instead of 0.8.

[0154] Fig. 13 is a flowchart showing the processing procedure of the start processing in step S214. The processing of the flowchart shown in Fig. 13 is started by the processor 202 executing step S214 in Fig. 11. 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 flowchart of Fig. 13 is executed, and the first vibration instruction data and the second vibration instruction data are processed, respectively. The first vibration instruction data will be described below, but the same applies to the second vibration instruction data.

[0155] Processor 202 assigns 1 to count variable X (step S2151). Processor 202 assigns a first command amplitude value to first current amplitude data (step S2152). This allows the amplitude value to quickly reach the commanded value at the start of vibration, thereby enhancing the effect of the impact vibration. Processor 202 also assigns a command frequency to first current frequency data (step S2153). Processor 202 assigns a phase value, which is advanced by 0.125 ms from the value assigned to the current phase data based on the frequency assigned to the first current frequency data, to the current phase data (step S2154).

[0156] Processor 202 calculates a voltage value to be output by amplifier 205 based on the first current amplitude data and the current phase data, and writes first control data corresponding to the calculated voltage value to control data area 204B2 (step S2155). Processor 202 assigns a value obtained by adding 1 to the current count variable X to count variable X (step S2156). Thereafter, processor 202 determines whether the value of count variable X has exceeded 40 (step S2157).

[0157] If the value of count variable X does not exceed 40 (NO in step S2157), processor 202 returns the process to step S2152. If the value of count variable X exceeds 40 (YES in step S2157), processor 202 ends the process of the flowchart in Fig. 13. Thereafter, processor 202 executes the process of step S201 in Fig. 11.

[0158] As described above, the vibration control system 10 according to the present embodiment determines control data corresponding to a voltage value for each control cycle, thereby enabling precise control of the vibration waveform. Furthermore, even when processing both the first vibration instruction data and the second vibration instruction data through the total adjustment process, the vibration control system 10 can generate appropriate control data by apportioning the first instruction amplitude value and the second instruction amplitude value. Furthermore, the vibration control system 10 can operate the vibration motor 206 through the frequency characteristic adjustment process so that the displacement of the vibrator does not exceed a limit value. Furthermore, the vibration control system 10 can generate appropriate control data even when gradually changing the frequency through the clamp adjustment process.

[0159] When changing the amplitude value, noise may occur unless the voltage value is changed from 0V. Therefore, vibration control system 10 in embodiment 1 gradually changes the amplitude value in units of a control cycle (0.125 ms) by executing steps S207 to S210. On the other hand, to prevent noise from occurring, it is possible to wait until the voltage value reaches 0V before changing the amplitude value, but this would delay the timing of the amplitude value change. Vibration control system 10 in this embodiment normally suppresses noise occurrence by gradually changing the amplitude value or frequency value within a vibration instruction cycle (5 ms), and if the previous voltage value was 0V, it controls it to the instruction amplitude value, so that it can generate vibration with good rise time while suppressing noise occurrence.

[0160] [G. Example of vibration waveform generated based on vibration instruction data] 14 shows an example of the waveform of the first control data generated based on the first impact event. The time-series vibration instruction data group based on the first impact event is "(1,100), (1,100)." Below, an example will be described in which, based on the occurrence of only the first vibration event, the second vibration instruction data specifying the second instruction amplitude value "0" and the second instruction frequency value "0" and the first vibration instruction data based on the first vibration event are processed.

[0161] FIG. 14 shows a case where the first controller is connected. Therefore, by executing the above-described adjustment process, the time-series vibration instruction data group based on the first impact event is converted into data such as "(0.5, 100), (0.5, 100)." A vibration waveform generated based on the first impact event is output between timings T101 and T103. The period from timing T101 to timing T103 is a 10 ms period. By executing the flowcharts of FIGS. 11 and 13 between timings T101 and T103, a vibration waveform corresponding to a frequency value of "100 Hz" and an amplitude value of "0.5 V" is generated. That is, the frequency of the vibration waveform between timings T101 and T103 is "100 Hz," and the maximum amplitude value is "0.5 V."

[0162] The waveform generated between timings T101 and T102 is generated by processor 202 processing the first vibration instruction data "(0.5, 100)" that is the first in the group of time-series vibration instruction data based on the first impact event. The waveform generated between timings T102 and T103 is generated by processor 202 processing the second first vibration instruction data "(0.5, 100)" that is included in the group of time-series vibration instruction data based on the first impact event.

[0163] The control data waveforms generated between timings T103 and T23 are generated by executing the termination process in S203 described above when there is no more vibration instruction data to be processed. The waveforms generated between timings T103 and T104 will be described below with reference to FIGS. 15 and 16. The vibration generated after processing of the adjusted vibration instruction data 110 received from the game device 100 is referred to as "termination vibration." The control data generated between timings T103 and T104 is an example of control data for generating termination vibration. Furthermore, the control data transmitted to the amplifier 205 for generating termination vibration is referred to as "termination control data." In this embodiment, the processor 202 generates termination control data so that the vibration motor 206 performs termination vibration immediately after vibration control based on the adjusted vibration instruction data 110 received from the game device 100 is completed. The processor 202 may generate termination vibration after the vibration based on the vibration instruction data generated in response to a normal vibration event, rather than an impact vibration event.

[0164] 11 and 12, when the processing of the vibration instruction data 110 after the final adjustment processing of the time-series vibration instruction data group based on the first impact event is completed and the counting variable X exceeds 40 in step S212, 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.

[0165] Therefore, when all the first vibration instruction data stored in vibration instruction data area 204B1 have been processed and no more first vibration instruction data exists (NO in step S202), processor 202 sets the instruction amplitude to "0.4", which is 0.8 times "0.5", in step S2034, and sets the first instruction frequency to "100 Hz", which is the same as the value of the first previous frequency data, and stores it in the first vibration instruction data area. Processor 202 assigns "1" to the count variable (step S206).

[0166] Thereafter, because the first previous amplitude data is "0.5" and the first command amplitude value is "0.4", processor 202 executes the process of step S207, thereby substituting a value obtained by subtracting 1 / 400 from 0.5 for the first current amplitude data. That is, 0.4975 is substituted for the first current amplitude data. Furthermore, because the first previous frequency data is "100 Hz" and the first command frequency is also "100 Hz", processor 202 executes the process of step S208, thereby substituting "100 Hz" for the first current frequency data. Processor 202 advances the current phase data by an amount equivalent to 0.125 ms.

[0167] FIG. 15 is a diagram showing reference waveforms between timings T103 and T104. In FIG. 15, 40 reference waveforms Rw1, Rw2, Rw3, ... are indicated by dashed lines. Hereinafter, the 40 reference waveforms Rw1, Rw2, Rw3, ... will be collectively referred to as "reference waveforms Rw." The processor 202 determines the reference waveform Rw1 from the first current amplitude data "0.4975" and the first current frequency "100 Hz." In other words, the reference waveform Rw1 is a waveform with a frequency of 100 Hz and a maximum amplitude of 0.4975.

[0168] In the process of step S210, the processor 202 obtains the voltage value D1 when the phase of the reference waveform Rw1 is advanced by 0.125 ms from timing T13 as the first control data, and writes it to the control data area 204B2. The voltage value D1 is shown in Figure 15. The processor 202 increments the count variable X, and the value assigned to the count variable X becomes "2."

[0169] The following describes a case where a voltage value is acquired at a timing when the phase advances by 0.125 ms (a timing when the phase advances by 0.250 ms from timing T103) using a similar procedure. Because the first previous amplitude data is "0.5" and the first command amplitude value is "0.4," processor 202 executes the process of step S207, thereby substituting a value obtained by subtracting 2 / 400 from 0.5 for the first current amplitude data. In other words, 0.4950 is substituted for the first current amplitude data. Furthermore, because the first previous frequency is "100 Hz" and the first command frequency is also "100 Hz," processor 202 executes the process of step S208, thereby substituting "100 Hz" for the first current frequency data. Processor 202 advances the current phase data by 0.125 ms.

[0170] The processor 202 determines the reference waveform Rw2 from the first current amplitude data “0.4950” and the first current frequency “100 Hz.” The reference waveform Rw2 is a waveform with a frequency of 100 Hz and a maximum amplitude of 0.4950.

[0171] In the process of step S210, the processor 202 obtains the voltage value D2 when the phase of the reference waveform Rw2 is advanced by 0.250 ms from timing T103 as the first control data, and writes it into the control data area 204B2. The voltage value D2 is shown in Figure 15. Furthermore, the processor 202 increments the count variable X, and the value assigned to the count variable X becomes "3."

[0172] Using a similar procedure, processor 202 obtains voltage value D3 when the phase advances by a further 0.125 ms, and writes first control data corresponding to voltage value D3 to control data area 204B2. Processor 202 repeats outputting the first control data 40 times during the period from timing T103 to T104. FIG. 16 is a diagram showing the waveform of the end vibration output as a result of processing in control cycles corresponding to the period from timing T103 to T104. At each of a plurality of points in time during the period from timing T103 to T104, processor 202 reduces the maximum amplitude value of reference waveform Rw over time and advances the phase.

[0173] 11 and 12, the vibration control system 10 of this embodiment outputs control data to the vibration motor 206 to stop vibration of the vibration motor 206, based on the completion of vibration control based on the vibration instruction data 110 after adjustment processing received from the game device 100. In this embodiment, the period of the end vibration is a period of 100 ms.

[0174] 16, during the period from timing T13 to T14 after vibration control based on the adjusted vibration instruction data 110 is completed, the processor 202 generates control data so that the amplitude value of the reference waveform gradually decreases from the amplitude value "0.5" included in the vibration instruction data (0.5, 100) processed immediately before. Hereinafter, the processing performed over 40 control cycles when the reference waveform Rw gradually changes during a vibration instruction cycle (a period of 5 ms) is referred to as "interpolation processing." In this embodiment, during the period from timing T13 to T14, the frequency of the reference waveform Rw is always "100 Hz" and does not change.

[0175] 13 is executed during the period from timing T101 to T103, so that the reference waveform Rw during the period from timing T101 to T103 always has an amplitude of 0.5 and a frequency of 100 Hz. Therefore, during the period from timing T11 to T13, a sine wave such as that shown in FIG. 14 is generated.

[0176] In vibration control in response to the first impact event, the vibration instruction data included in the time-series vibration instruction data group are identical, so the effect of interpolation is not apparent. However, the amplitude and frequency of each vibration instruction data included in the time-series vibration instruction data group may vary. In this case, the interpolation process smooths the changes in the amplitude and frequency even while the vibration is continuing.

[0177] As described above, in the vibration control system 10 of this embodiment, control is performed in which the reference waveform Rw gradually changes through interpolation processing while vibration is continuing and at the end of vibration. On the other hand, in the vibration control system 10 of this embodiment, control in which the reference waveform Rw gradually changes is not performed at the start of vibration. This makes it possible to generate a steep vibration waveform at the start, and to provide the user with vibration corresponding to a collision, explosion, etc.

[0178] 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 by design, compared to when the vibration motor 206 is not controlled and is stopped by inertia.

[0179] [H. Variations] Other embodiments that are partial modifications of the above-described embodiment will be described below.

[0180] In the above example, the vibration control system 10 of the present embodiment is applied to a game system, but the system to which the vibration control system 10 of the present embodiment is applied is not limited to game systems. For example, the vibration control system 10 of the present embodiment may be used in practical applications other than so-called video games, children's toys, or training systems for driving cars virtually using VR or the like.

[0181] In the above example, a configuration example is shown in which the game system applied to the vibration control system 10 includes one game controller 200, but the game system applied to the vibration control system 10 may also include multiple game controllers 200.

[0182] In the above example, the display device connected to game device 100 is described as an organic EL display or a head-mounted display, but it may also be a display device that uses a hologram, for example.

[0183] In the above example, the game device 100 executes the processes of the flowcharts corresponding to Figures 7, 8, and 9, and the game controller 200 executes the processes of the flowcharts corresponding to Figures 10, 11, and 12. However, all of the processes included in the flowcharts of Figures 7 to 12 may be executed by either the game device 100 or the game controller 200. Furthermore, the processes of the flowcharts executed by the game device 100 are not limited to the flowcharts of Figures 7, 8, and 9, and may be only the process of the flowchart of Figure 7, or may be the process of the flowcharts of Figures 7, 8, 9, and 10.

[0184] Furthermore, the processors included in the game device 100 and the game controller 200 may be configured on a single chip or multiple chips.

[0185] In the above example, storing multiple pieces of data in the same row in the same table is referred to as "associating." However, the term "associating" is not limited to this and also includes indirect association of multiple pieces of data between multiple tables.

[0186] In the above example, for the sake of simplicity, the vibration instruction data included in the time-series vibration instruction data group are all identical in content. However, the vibration instruction data included in the time-series vibration instruction data group may each have different content. For example, the vibration instruction data 114 may include data such as "(1,100), (1,100), (0.7,50), (0.5,50)".

[0187] In the above example, the waveform of the control data corresponding to the end vibration has the same frequency as the frequency of the control data executed immediately before. However, the vibration waveform corresponding to the end vibration may have a frequency different from the frequency of the control data executed immediately before. For example, the frequency of the waveform corresponding to the end vibration may be predetermined as "40 Hz," "70 Hz," "200 Hz," or the like. In this case, the processor 202 gradually changes not only the amplitude value of the reference waveform Rw but also the frequency during the interpolation process.

[0188] In the above example, the waveform of the control data is a sine wave, but it may be a waveform of another shape, such as a rectangular wave. Furthermore, the vibration instruction cycle need only be a period equal to or shorter than the length of one wavelength of the lower limit frequency of the vibration motor 206 (25 ms in the example of the first embodiment), and is not limited to a period of 5 ms. By setting a shorter vibration instruction cycle, the vibration control system 10 can perform more precise control.

[0189] In the above example, one piece of vibration instruction data is data for outputting power over a period of one wavelength or less of the vibration waveform, but the period for which control data is output by one piece of vibration instruction data may be a period of two wavelengths or less, or three wavelengths or less. Furthermore, in the above example, the game device 100 and the game controller 200 are provided as separate game systems, but the game device 100 and the game controller 200 may be provided as an integrated unit.

[0190] In the above example, the game program 102P2 specifies normalized amplitude data, but amplitude data indicating a control voltage value may be directly specified. Also, an example has been described in which the frequency characteristic data has frequency on the horizontal axis and the frequency characteristic adjustment rate on the vertical axis. However, the vertical axis of the frequency characteristic data may be the upper limit (V) of the input voltage at each frequency.

[0191] In the example of Fig. 14, the period during which vibration continues when one impact event occurs (the period from timing T101 to T103) is 10 ms. However, the period during which vibration continues when one impact event occurs may be any other period as long as it is 50 ms or less. It should be noted that the present disclosure includes not only a method of directly specifying the time, but also a method of substantially specifying a period of 50 ms or less by specifying the number of waves or the number of vibration instruction data.

[0192] The vibration instruction data may also specify data on the amount of change in amplitude and the amount of change in frequency. In this case, the processor uses the previous amplitude and frequency values ​​to calculate the current amplitude and frequency. This process may be performed by the processor of the game console or the processor of the game controller.

[0193] In the example of FIG. 14, after generating the end vibration from timings T103 to T123, the control data with a voltage value of zero continues to be output from timing T123 onward. However, the output of the control data with a voltage value of zero may start from timing T103 without generating the end vibration. FIG. 17 is a diagram showing waveforms of a modified example. That is, in the modified example, the control data with a voltage value of zero is output immediately after the vibration based on the vibration instruction data instructed by the game program 102P2 ends (after timing T103 in FIG. 17). Also, after the vibration based on the vibration instruction data instructed by the game program 102P2 ends (for example, after timing T103 in FIG. 14), control data with an opposite phase to the immediately preceding phase may be output. In this way, in the first embodiment, the end control is performed, so that the vibration motor 206 can be stopped earlier than when no control is performed on the vibration motor 206 when no vibration instruction data is input from the game program 102P2. In the first embodiment, the vibration control system 10 stops the vibration motor 206 within the vibration instruction cycle.

[0194] In the above example, the processor 101 executes the adjustment processes in the order of total adjustment process, frequency characteristic adjustment process, and clamp adjustment process. However, the order in which the adjustment processes are executed is not limited to this. For example, the processor 101 may execute the adjustment processes in the order of clamp adjustment process, total adjustment process, and frequency characteristic adjustment process, or may execute the adjustment processes in another order. Note that in the first embodiment, the total adjustment process is executed before the frequency characteristic adjustment process and the clamp adjustment process, thereby enabling control that places importance on the frequency characteristics of the vibration motor 206.

[0195] A plurality of types of game controllers 200 may be applicable to the vibration control system 10. The above-described frequency characteristic data may differ depending on the type of game controller 200. Furthermore, the plurality of types of game controllers 200 may have amplifiers 205 and vibration motors 206 that are different from one another.

[0196] In the above example, in FIG. 10, when the command amplitude value is less than 0.1 in step S1065, linear interpolation is performed using line Ln1 and line Ln2 to determine the command adjustment amplitude. However, when the command amplitude value is less than 0.1 in step S1065, linear interpolation may be performed using an adjustment command amplitude of zero and line Ln2. FIG. 18 is a diagram for explaining a modified example of the frequency characteristic adjustment process. As shown in FIG. 18, in this modified example, when the command amplitude value is less than 0.1 in step S1065 (YES in step S1065), linear interpolation is performed using an adjustment command amplitude of zero and line Ln2 (step S1066A) to determine the command adjustment amplitude.

[0197] Thereafter, the processor 101 determines whether the adjustment command amplitude determined by the linear interpolation in step S1066A is less than the adjustment command amplitude indicated by line Ln1 (step S1066B). If the adjustment command amplitude is less than the adjustment command amplitude indicated by line Ln1 (YES in step S1066B), the second controller does not vibrate, and therefore the processor 202 increases the adjustment command amplitude determined by the linear interpolation in step S1066A to the adjustment command amplitude indicated by line Ln1 (step S1066C). That is, the processor 202 updates the adjustment command amplitude determined by the linear interpolation in step S1066A to the adjustment command amplitude indicated by line Ln1, and returns the process. If the adjustment command amplitude is not less than the adjustment command amplitude indicated by line Ln1 (NO in step S1066B), the processor 202 returns the process.

[0198] Next, an example in which the boost process of FIG. 9 is executed by the game controller 200 will be described with reference to FIG. 19. FIG. 19 is a diagram showing a modified example of the processing procedure of the start process. That is, in the modified example described with reference to FIG. 19, the connected game controller 200 is the second controller, and the processes of steps S105Y and S105Z in FIG. 8 are not executed. As shown in FIG. 19, in the start process, the processor 202 determines whether the value obtained by multiplying the command amplitude value by 1.2 is greater than the allowable input voltage value for each frequency for the second vibration motor of the second controller (S2152A).

[0199] If the value obtained by multiplying the command amplitude value by 1.2 is equal to or less than the allowable input voltage per frequency for the second vibration motor of the second controller (NO in step S2152A), processor 202 assigns the value obtained by multiplying the command amplitude value by 1.2 to the current amplitude data (step S2152B). If the value obtained by multiplying the command amplitude value by 1.2 is greater than the allowable input voltage per frequency for the second vibration motor of the second controller (YES in step S2152A), processor 202 assigns the allowable input voltage of the second vibration motor corresponding to the command frequency to the current amplitude data (step S2152C). This allows the boost process to be implemented by processing on the second controller side. In other words, there is no need to implement the boost process in game device 100, reducing the processing load on the vibration control system.

[0200] [Embodiment 2] In the first embodiment, the game program 102P2 is described as an adventure game. However, the content of the game program 102P2 may be other content. In the second embodiment, the game program 102P2 is described as a music performance game. Furthermore, in the second embodiment, the vibration instruction data area 103B3 is configured to be able to store one vibration instruction data corresponding to one timing. That is, in the second embodiment, an example is described in which only first vibration instruction data is stored in the instruction data set, and no second vibration instruction data is stored. Therefore, in the adjustment process in the second embodiment, a total adjustment process that allocates the first instruction amplitude value and the second instruction amplitude value is not performed, and only a frequency characteristic adjustment process and a clamp adjustment process are performed. Unlike the clamp adjustment process in the first embodiment, the clamp adjustment process in the second embodiment does not allocate the first instruction amplitude after frequency characteristic adjustment and the second instruction amplitude after frequency characteristic adjustment, but simply determines whether the first instruction amplitude after frequency characteristic adjustment exceeds the first clamp value.

[0201] In the example of the second embodiment, the game program 102P2 is a music performance game. In the music performance game, the game controller 200 is treated as a pseudo-predetermined musical instrument. The predetermined musical instrument includes various instruments such as a drum, cymbal, triangle, violin, trumpet, piano, or other percussion instruments, string instruments, woodwind instruments, brass instruments, and reed instruments. In the example of the second embodiment, the musical instrument in the game is played based on an input from the user, and vibrations are generated in response to the playing of the musical instrument.

[0202] 20 is a flowchart showing the procedure of the process of generating vibration instruction data 114 including normalized amplitude values ​​in the game device 100 according to embodiment 2. The process of the flowchart shown in FIG. 20 is realized by the processor 101 executing the game program 102P2.

[0203] 20 is started when the processor 101 starts executing the game program 102P2. The processor 101 acquires the type of musical instrument selected by the user (step S301).

[0204] Processor 101 acquires operation data (step S302). Processor 101 determines whether an impact event has occurred based on the operation data (step S303). In the second embodiment, the condition for an impact event to occur is that operation data associated in advance with each musical instrument selected in step S301 has been acquired in step S302.

[0205] For example, when a drum is selected, the condition for an impact event to occur is that the stick-shaped game controller 200 is swung down in a predetermined direction at an angular velocity within a predetermined range. As another example, when a piano is selected, the condition for an impact event to occur is that a button on the surface of the game controller 200 is pressed. This allows the musical instrument playing game of the second embodiment to allow the user to perform a simulated musical performance by treating the game controller 200 as a drumstick.

[0206] If an impact event has not occurred (NO in step S303), processor 101 returns the process to step S301. If an impact event has occurred (YES in step S303), processor 101 outputs a sound according to the type of instrument (step S304). If a drum is selected, the sound of a drum being struck with a drumstick is output.

[0207] The processor 101 executes the game program 102P2 to generate vibration instruction data 114 (or a time-series vibration instruction data group), and passes the generated vibration instruction data 114 to the system program 102P1 (step S305).

[0208] FIG. 21 is a diagram for explaining an example in which the vibration instruction data 110 after adjustment processing is generated based on the vibration file 105 in the second embodiment.

[0209] In the vibration control system 10 in the second embodiment, the game device 100 first generates vibration instruction data 114 by referring to a vibration file 105 in a game program 102P2 capable of executing a music performance game. The vibration file 105 is shown as a table in the upper left of FIG. 21. In the example of FIG. 21, the vibration file 105 associates data representing an event name, a type of instrument, and vibration content with each other. The data representing the type of instrument includes data representing multiple types of instruments that can be selected by the user as described above. The data representing the vibration content includes frequency, number of wavelengths, and amplitude, as in the first embodiment.

[0210] The event name "first impact event" in the second embodiment is associated with the type of instrument "drum", the frequency "50", the number of wavelengths "2", and the amplitude "1". In other words, the first impact event in the second embodiment is an event that causes the vibration motor 206 to output a voltage corresponding to the maximum output voltage that the amplifier 205 is allowed to output, for two wavelengths at a wavelength of 50 Hz.

[0211] The event name "second impact event" in the second embodiment is associated with the type of instrument "cymbal," the frequency "100," the number of wavelengths "1," and the amplitude "0.8." In other words, the second impact event is an event that causes the vibration motor 206 to output a voltage corresponding to 80% of the maximum output voltage that is allowed by the output of the amplifier 205, for one wavelength at a wavelength of 100 Hz.

[0212] In the second embodiment as well, the processor 101 generates vibration instruction data 114 including normalized amplitude values. In the second embodiment, the group of time-series vibration instruction data generated based on the occurrence of a first impact event includes eight pieces of vibration instruction data 114, namely, "(1,50), (1,50), (1,50), (1,50), (1,50), (1,50), (1,50), (1,50)." In the second embodiment, the group of time-series vibration instruction data generated based on the occurrence of a second impact event includes two pieces of vibration instruction data 114, namely, "(0.8,100), (0.8,100)."

[0213] When the type of the connected controller is the first controller, the processor 101 acquires a frequency characteristic adjustment rate for each frequency using data corresponding to the graph in FIG. 4 and performs frequency characteristic adjustment processing. The processor 101 also executes a clamp adjustment processing on the command vibration value to generate converted vibration instruction data 114 shown in FIG. 21. For the converted vibration instruction data 110 corresponding to the first impact event, the processor 101 references the data corresponding to the graph in FIG. 4 and determines that the frequency characteristic adjustment rate of the vibration motor 206 is "1" when the vibration motor 206 operates at a frequency of 50 Hz. The processor 101 multiplies the frequency characteristic adjustment rate "1" by the normalized amplitude parameter "1" in the vibration instruction data 114 corresponding to the first impact event to calculate an amplitude value "1." When the vibration motor 206 is not vibrating when the first impact event occurs, the processor 101 acquires a first clamp value "1" for each of the time-series vibration instruction data groups generated based on the occurrence of the first impact event. Since each of the time-series vibration instruction data group does not exceed the first clamp value, the processor 202 does not change the amplitude value "1" after the frequency characteristic adjustment, and ends the clamp adjustment process.

[0214] For the vibration instruction data 110 after the frequency characteristic adjustment process and the clamp adjustment process corresponding to the second impact event, the processor 101 references the data corresponding to the graph in FIG. 4 and determines that the frequency characteristic adjustment rate is 0.5 when the vibration motor 206 operates at a frequency of 100 Hz. The processor 101 multiplies the frequency characteristic adjustment rate 0.5 by the normalized amplitude value 0.8 in the vibration instruction data 114 corresponding to the second impact event to calculate an amplitude value of 0.4. If the vibration motor 206 is not vibrating when the second impact event occurs, the processor 101 acquires 0.5 as the first clamp value for each piece of time-series vibration instruction data generated in response to the occurrence of the second impact event. Because each piece of time-series vibration instruction data does not exceed the first clamp value, the processor 101 ends the clamp adjustment process without changing the amplitude value 0.4 after the frequency characteristic adjustment.

[0215] As a result, in the second embodiment, processor 101 outputs data of "(1,50), (1,50), (1,50), (1,50), (1,50), (1,50), (1,50), (1,50)" to game controller 200 as vibration instruction data 110 after adjustment processing corresponding to the first impact event. Processor 101 also outputs data of "(0.4,100), (0.4,100)" to game controller 200 as vibration instruction data 110 after adjustment processing corresponding to the second impact event. In this way, in the second embodiment, it is possible to provide a user with vibrations that match the selected instrument in a music performance game.

[0216] In addition, in the second embodiment, the cymbal is associated with an amplitude value of "0.8." In this way, in the vibration control system 10 of the present embodiment, the amplitude value is not limited to "1" as long as it is within the range of 0 to 1.

[0217] [Embodiment 3] In the second embodiment, an example in which the game program 102P2 is a music performance game has been described, but the content of the game program 102P2 may be other content. In the third embodiment, a case in which the game program 102P2 is a rhythm game will be described.

[0218] In the first and second embodiments, examples have been described in which vibration is generated in response to a user input. However, the vibration control system 10 may generate vibration at a predetermined timing instead of in response to a user input. In the example of the third embodiment, the processor 101 executes the flowchart in FIG. 22 and the flowchart in FIG. 23 in parallel to generate vibration instruction data 110 after adjustment processing.

[0219] The rhythm game of the third embodiment is a game that tests the user's sense of rhythm by outputting music and having the user perform a predetermined operation at a predetermined timing in the music. The predetermined timing is the timing at which the user should perform an operation. In the game of the third embodiment, vibrations that form the basis of the rhythm are output at regular time intervals. This is called a "beat vibration." In the third embodiment, the operation that the user should perform at the predetermined timing is an operation of swinging the rod-shaped game controller 200 at a predetermined angular velocity or greater. Hereinafter, the operation of swinging the rod-shaped game controller 200 at a predetermined angular velocity or greater will be referred to as a "swing operation." In the rhythm game of the third embodiment, points are added by performing a swing operation at a predetermined timing, and the final score is displayed to the user when the music ends. Outputting beat vibrations at regular intervals makes it easier for the user to get the timing right. The timing of the user's operation may be synchronized with the beat timing.

[0220] Fig. 22 is a flowchart showing the execution procedure of the rhythm game in embodiment 3. The processing of the flowchart shown in Fig. 22 is realized by processor 101 executing game program 102P2.

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

[0222] If a swing operation has not occurred (NO in step S403), processor 101 executes other processes for progressing the rhythm game, and returns the process to step S401. If a swing operation has occurred (YES in step S403), processor 101 determines whether the swing operation in step S403 was performed at the correct timing (step S404).

[0223] If the swing operation is not performed at the correct timing (NO in step S404), processor 101 performs other processing for progressing the rhythm game, and returns the processing to step S401. If the swing operation is performed at the correct timing (YES in step S404), processor 101 performs point addition processing in the rhythm game (step S405). After the point addition processing ends, processor 101 performs other processing for progressing the rhythm game, and returns the processing to step S401.

[0224] 23 is a flowchart showing a procedure for generating vibration instruction data 114 including a normalized amplitude value in game device 100 according to the third embodiment. Processor 101 determines whether or not it is beat timing (step S501). Beat timing is a fixed time interval. If it is not beat timing (NO in step S501), processor 101 repeats the processing of step S501.

[0225] If it is beat timing (YES in step S501), the processor 101 generates vibration instruction data 114 and passes the generated vibration instruction data 114 (or a group of time-series vibration instruction data) to the system program 102P1 (step S502).

[0226] As described above, in the third embodiment, vibrations are not generated based on user input, but are generated at a predetermined timing within the music based on the output of the music. As a result, in the rhythm game of the third embodiment, vibrations can be used to make the user aware of the timing to perform a swing operation. Furthermore, as described in the first embodiment, the vibration control system 10 can apply strong vibrations at the start by not executing the interpolation process. As a result, in the third embodiment, the user can be aware of vibrations even while the user is performing a swing operation.

[0227] [Embodiment 4] In the first embodiment, an example has been described in which the frequency characteristic adjustment process corresponding to step S106 in Fig. 8 is executed by processor 101 on the game device 100 side. However, the frequency characteristic adjustment process may also be executed by processor 202 on the game controller 200 side. Note that in the fourth embodiment, description of the configuration that overlaps with the first embodiment will not be repeated.

[0228] In the fourth embodiment, the processor 202 is configured to be able to access the frequency characteristic data shown in Fig. 4. For example, the frequency characteristic data shown in Fig. 4 may be stored in the non-volatile memory 203 of the game controller 200. Fig. 24 is a flowchart showing a vibration instruction data conversion procedure executed by the game device 100 in the fourth embodiment. In the fourth embodiment, the processor 101 does not execute the processes of steps S106, S107, and S107A (frequency characteristic adjustment process, clamp adjustment process) in the first embodiment. That is, in the fourth embodiment, only the total adjustment process is executed in the game device 100.

[0229] 25 is a flowchart showing the control data generation process executed by game controller 200 in the fourth embodiment. In the fourth embodiment, processor 202 updates the current phase data in step S209, and then executes frequency characteristic adjustment processing (step S209B). In step S209B, processor 202 identifies a frequency characteristic adjustment rate corresponding to the current frequency data updated in step S208 by referring to the frequency characteristic data, and multiplies the current amplitude data of step S207 by the identified frequency characteristic adjustment rate to adjust the amplitude value of the current amplitude data. That is, in the fourth embodiment, the frequency characteristic adjustment processing is executed for each control cycle, not for each vibration instruction cycle.

[0230] Therefore, even when the frequency instructed by the current vibration instruction data changes from the frequency instructed by the previous vibration instruction data, the processor 202 can execute the frequency characteristic adjustment process for each frequency in the process of the change. Therefore, even when the frequency is gradually changed from 50 Hz to 150 Hz, for example, the frequency characteristic adjustment corresponding to the frequency around 100 Hz in the middle of the change can be executed. Therefore, in the fourth embodiment, unintended behavior changes in the process of gradually changing the frequency can be suppressed without executing the clamp adjustment process, and an appropriate amplitude value according to the frequency can be determined in units of control cycles.

[0231] The embodiments disclosed herein should be considered to be illustrative in all respects and not restrictive. The scope of the present invention is defined by the claims, not by the above description, and is intended to include all modifications within the meaning and scope of the claims. [Explanation of symbols]

[0232] 10 Vibration control system, 110, 114 Vibration instruction data, 101, 202 Processor, 100 Game device, 102, 203 Non-volatile memory, 102P2 Game program, 102P1 System program, 203P MCU program, 103, 204 Volatile memory, 103B1 Data area, 103B2, 204B3 Operation data area, 103B3, 204B1 Vibration instruction data area, 104, 207 Communication interface, 105 Vibration file, 116A, 116B Vibration instruction data, 200 Game controller, 204B2 Control data area, 204V1 Current amplitude data area, 204V2 Current frequency data area, 204V3 Current phase data area, 204V4 Previous frequency data area, 204V5 Previous phase data area, 205 Amplifier, 206 Vibration motor, 208 Acceleration sensor, 209 gyro sensor, 210 operation switch, D1 to D3 voltage values, Rw, Rw1 to Rw3 reference waveforms, T11 to T14, T21 to T26, T31 to T310 timing.

Claims

1. 1. A vibration control system having a vibration motor controlled by an amplifier, a generating unit for generating vibration instruction data for controlling vibration of the vibration motor based on the occurrence of a vibration event; an amplifier control means for causing the amplifier to control the vibration motor based on the generated vibration instruction data; a monitoring means for monitoring whether or not the generated vibration instruction data exists; and means for performing a power saving process of switching the amplifier to a power saving mode when the generated vibration instruction data does not exist for a first period.

2. the amplifier control means and the amplifier are connected by a first data signal line for transmitting control data for the vibration motor and a first clock signal line; The vibration control system according to claim 1 , wherein the power saving process includes a stop process for stopping output of the first clock signal line.

3. the amplifier control means and the amplifier are further connected by a second data signal line for transmitting setting data of the amplifier and a second clock signal line; The vibration control system according to claim 2 , wherein the output of the second clock signal line is not stopped in the stopping process.

4. further comprising means for performing a process of generating vibration instruction data specifying an amplitude smaller than the amplitude specified by the last generated vibration instruction data over a second period when the generated vibration instruction data does not exist; 4. The vibration control system according to claim 1, wherein the end of the first period is a point in time when control based on vibration instruction data generated in the second period ends.

5. 4. The vibration control system according to claim 1, wherein the first period is a period of 100 ms or less.

6. The vibration control system includes: a main body that executes the generation process; a controller having an amplifier control unit that controls the vibration motor, the amplifier, and the amplifier; The main body portion is The device further includes a means for executing a transmission process for transmitting vibration instruction data to the controller when the vibration instruction data is generated; A vibration control system as described in any one of claims 1 to 3, wherein, in the transmission process, if the generated vibration instruction data indicates that the vibration motor is to be stopped and if the vibration instruction data last transmitted to the controller indicates that the vibration motor is to be stopped, transmission of vibration instruction data to the controller is stopped.

7. 4. The vibration control system according to claim 2, wherein the power saving process includes a process of resuming output of the first clock signal line within 5 ms when the power saving mode of the amplifier is ended.

8. A program for use in a vibration control system having a vibration motor controlled by an amplifier, The program is configured to: generating vibration instruction data for controlling vibration of the vibration motor based on the occurrence of a vibration event; causing the amplifier to control the vibration motor based on the generated vibration instruction data; a step of performing a monitoring process to monitor whether or not the generated vibration instruction data exists; and performing a power saving process of switching the amplifier to a power saving mode when the generated vibration instruction data does not exist for a first period.

9. The program causes the one or more processors to: If the generated vibration instruction data does not exist, a step of generating vibration instruction data specifying an amplitude smaller than the amplitude specified by the last generated vibration instruction data is further executed over a second period; The program according to claim 8 , wherein the end of the first period is a time point at which control based on vibration instruction data generated in the second period ends.

10. 1. A method for use in a vibration control system having a vibration motor controlled by an amplifier and a controller that causes the amplifier to control the vibration motor, comprising: The method includes the steps of: performing a generating process for generating vibration instruction data for controlling vibration of the vibration motor based on the occurrence of a vibration event; causing the amplifier to control the vibration motor based on the generated vibration instruction data; a step of performing a monitoring process to monitor whether or not the generated vibration instruction data exists; and performing a power saving process to switch the amplifier to a power saving mode if the generated vibration indication data is absent for a first period of time.

11. the control device and the amplifier are connected by a first data signal line for transmitting control data for the vibration motor and a first clock signal line; The method according to claim 10 , wherein the power saving process includes a stop process that stops output of the first clock signal line.

12. the control device and the amplifier are further connected by a second data signal line for transmitting setting data of the amplifier and a second clock signal line; The method according to claim 11 , wherein the stopping process does not stop the output of the second clock signal line.

13. The method includes causing the one or more processors to: When the generated vibration instruction data does not exist, the method further comprises a step of generating, over a second period, vibration instruction data that specifies an amplitude smaller than the amplitude specified by the last generated vibration instruction data, The method according to any one of claims 10 to 12, wherein the end of the first period is a time point at which control based on vibration instruction data generated in the second period ends.

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