Vibration control system, program, and method

JP2025105483A5Pending Publication Date: 2026-06-30NINTENDO CO LTD

Patent Information

Authority / Receiving Office
JP · JP
Patent Type
Applications
Current Assignee / Owner
NINTENDO CO LTD
Filing Date
2024-11-21
Publication Date
2026-06-30

AI Technical Summary

Technical Problem

Conventional game systems lack variability and realism in vibration sensations, limiting the immersive experience for users.

Method used

A vibration control system that includes a main body and an operation unit, where the operation unit adjusts vibration instructions based on frequency characteristics of the vibration motor, using interpolation and amplitude adjustments to enhance control precision and adapt to different types of operation units.

Benefits of technology

The system provides enhanced realism and variability in vibration feedback, improving the user's gaming experience by finely tuning vibrations according to the characteristics of the operation unit, ensuring efficient communication and detailed control.

✦ Generated by Eureka AI based on patent content.

Smart Images

  • Figure 00000000_0000_ABST
    Figure 00000000_0000_ABST
Patent Text Reader

Abstract

To provide a setup for improving the reality of and variations in a vibration sensation.SOLUTION: In a vibration control system including a body section and an operation section having a vibration motor, the body section has means for generating vibration designation data for designating a frequency and amplitude, and means for transmitting vibration designation data to the operation section. The operation section has: means for storing frequency characteristic data; means for receiving vibration designation data; means for determining a permissible value of voltage that is permitted to be inputted or voltage that is permitted to be outputted by referring to frequency characteristic data on the basis of a frequency pertaining to a designation by vibration designation data, and for determining adjustment amplitude on the basis of amplitude pertaining to an instruction by vibration designation data and a determined permissible value; and vibration control means for generating control data on the basis of a frequency and adjustment amplitude, and controlling a vibration motor by using the control data.SELECTED DRAWING: Figure 7
Need to check novelty before this filing date? Find Prior Art

Description

Technical Field

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

Background Art

[0002] Conventionally, there has been a game system that gives a vibration effect to a user who plays a game. For example, Japanese Patent Application Laid-Open No. 2016-202486 (Patent Document 1) discloses a vibration signal generation system used in a game.

Prior Art Documents

Patent Documents

[0003]

Patent Document 1

Summary of the Invention

Problems to be Solved by the Invention

[0004] Conventional game systems have room for improvement in the reality and variation of the vibration sensation.

Means for Solving the Problems

[0005] (Configuration 1) The vibration control system in a certain embodiment is a vibration control system including a main body and an operation unit having a vibration motor. The main body includes means for generating vibration instruction data for specifying a frequency and an amplitude, and means for transmitting the vibration instruction data to the operation unit. The operation unit includes means for storing frequency characteristic data regarding a voltage that is allowed to be input to the vibration motor at each frequency, or a voltage that is allowed to be output by an amplifier for controlling the vibration motor at each frequency, means for receiving the transmitted vibration instruction data, and means for referring to the frequency characteristic data based on the frequency related to the instruction in the received vibration instruction data to determine an allowable value of the voltage that is allowed to be input or the voltage that is allowed to be output, and for determining an adjusted amplitude based on the amplitude related to the instruction in the vibration instruction data and the determined allowable value, generating control data based on the instructed frequency and the adjusted amplitude, and controlling the vibration motor using the control data. Since adjustment based on frequency characteristics is performed in the operation unit, adjustment can be performed according to the characteristics of the operation unit.

[0006] (Configuration 2) In Configuration 1, the frequency characteristic data is data indicating a ratio to the maximum input voltage of the vibration motor or the maximum output voltage of the amplifier, and the determination of the adjusted amplitude is performed by multiplying the amplitude related to the instruction in the vibration instruction data by the ratio.

[0007] (Configuration 3) In Configuration 2, the operation unit further includes means for determining an interpolation frequency of a second cycle that is shorter than a first cycle, which is an instruction cycle of vibration instruction data, so as to interpolate between the frequency indicated by the previous vibration instruction data and the frequency indicated by the current vibration instruction data, and means for determining an interpolation amplitude of the second cycle so as to interpolate between the amplitude indicated by the previous vibration instruction data and the amplitude indicated by the current vibration instruction data. The determination of the adjustment amplitude is performed by determining an allowable value of the second cycle with reference to frequency characteristic data based on the interpolation frequency of the second cycle, and generating an adjustment amplitude of the second cycle based on the determined allowable value of the second cycle and the interpolation amplitude of the second cycle. The means for control controls the vibration motor with the interpolation frequency of the second cycle and the adjustment amplitude of the second cycle. While determining the interpolation amplitude of the short cycle in the operation unit and performing adjustment based on the frequency characteristics with respect to the interpolation amplitude, it is possible to perform detailed control in consideration of the frequency characteristics of the operation unit while improving the communication efficiency between the main body unit and the operation unit.

[0008] (Configuration 4) In Configuration 1 or Configuration 2, there are a plurality of types of operation units, and the means for storing frequency characteristic data stores different data according to the type of the operation unit.

[0009] (Configuration 5) In Configuration 4, the plurality of types of operation units have vibration motors with different characteristics according to the type.

[0010] (Configuration 6) The program in a certain embodiment is a program used in a vibration control system including a main body and an operation unit having a vibration motor. The program causes a computer of the operation unit to acquire vibration instruction data specifying a frequency and an amplitude, and based on the frequency according to the instruction of the acquired vibration instruction data, refers to frequency characteristic data regarding a voltage that is allowed to be input to the vibration motor at each frequency, or a voltage that is allowed to be output by an amplifier that controls the vibration motor at each frequency, determines an allowable value of the voltage that is allowed to be input or the voltage that is allowed to be output, and performs a process of determining an adjusted amplitude based on the amplitude according to the instruction of the vibration instruction data and the determined allowable value, generates control data based on the instructed frequency and the adjusted amplitude, and executes a process of controlling the vibration motor using the control data.

[0011] (Configuration 7) In Configuration 6, the frequency characteristic data is data indicating a ratio with respect to the maximum input voltage of the vibration motor or the maximum output voltage of the amplifier, and the determination of the adjusted amplitude is performed by multiplying the amplitude instructed by the vibration instruction data by the ratio.

[0012] (Configuration 8) In Configuration 6, the computer of the operation unit further executes a process of determining an interpolation frequency of a second cycle having a cycle shorter than a first cycle which is an instruction cycle of the vibration instruction data so as to interpolate between the frequency indicated by the previous vibration instruction data and the frequency indicated by the current vibration instruction data, and a process of determining an interpolation amplitude of the second cycle so as to interpolate between the amplitude indicated by the previous vibration instruction data and the amplitude indicated by the current vibration instruction data. The determination of the adjusted amplitude is performed by referring to the frequency characteristic data based on the interpolation frequency of the second cycle to determine an allowable value of the second cycle, and generating an adjusted amplitude of the second cycle based on the determined allowable value of the second cycle and the interpolation amplitude of the second cycle. The process of controlling controls the vibration motor with the interpolation frequency of the second cycle and the adjusted amplitude of the second cycle.

[0013] (Configuration 9) In any one of Configurations 6 to 8, there are multiple types of operation units, and the frequency characteristic data includes different data according to the types of the operation units.

[0014] (Configuration 10) In Configuration 9, the multiple types of operation units have vibration motors with different characteristics according to the types.

[0015] (Configuration 11) A method in a certain embodiment is a method used for a vibration control system including a main body part and an operation unit having a vibration motor. The method includes steps of: the computer of the main body part generating vibration instruction data specifying a frequency and an amplitude; the operation unit transmitting the vibration instruction data to the operation unit, and the computer of the operation unit receiving the transmitted vibration instruction data; based on the frequency indicated by the received vibration instruction data, referring to frequency characteristic data regarding a voltage that is allowed to be input to the vibration motor at each frequency or a voltage that is allowed to be output by an amplifier that controls the vibration motor at each frequency, determining an allowable value of the voltage that is allowed to be input or the voltage that is allowed to be output, and determining an adjusted amplitude based on the amplitude indicated by the vibration instruction data and the determined allowable value; generating control data based on the indicated frequency and the adjusted amplitude, and executing a step of controlling the vibration motor using the control data.

Brief Description of the Drawings

[0016]

Figure 1

Figure 2

Figure 3

Figure 4

Figure 5

Figure 6

Figure 7

Figure 8

Figure 9

Figure 10

Figure 11

Figure 12

Figure 13

Figure 14

Figure 15

Figure 16

Figure 17

Figure 18

Figure 19

Figure 20

Mode for Carrying Out the Invention

[0017] This embodiment will be described in detail with reference to the drawings. For the same or corresponding parts in the drawings, the same reference numerals are given and the description thereof will not be repeated.

[0018] [Embodiment 1] [A. Overview] A configuration example of the vibration control system 10 that controls the vibration motor 206 in this embodiment will be described.

[0019] FIG. 1 is a schematic diagram showing an example of the vibration control system 10 in this embodiment. The vibration control system 10 in this embodiment is applied to, for example, a game system. The processor, memory, communication interface, etc. of the vibration control system 10 constitute a computer. Also, the processor, memory, communication interface, etc. of the game device 100 are also an example of a computer, and the processor, memory, communication interface, etc. of the game controller are also an example of a computer. Note that a computer may be constituted by a plurality of information processing devices, device processors, etc.

[0020] The game device 100 causes a display device such as a TV monitor, LCD, organic EL (Electro Luminescence), or head mounted display (HMD) to display an image or picture to the user according to a program, and advances the game. The user operates the game controller 200 according to the image or picture displayed on the display device. The game device 100 receives an input from the user to the game controller 200, and advances the game according to the input from the user.

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

[0022] The processor 101 is a processing circuit, for example, a CPU (Central Processing Unit). In this specification, the term "processor" means a processing circuit such as a CPU, an MPU (Micro Processing Unit), a GPU (Graphics Processing Unit), etc., which executes processing according to the instruction codes described in the program. In addition to the normal meaning, it also includes hard-wired circuits such as ASICs and FPGAs. For hard-wired circuits such as ASICs and FPGAs, a circuit corresponding to the processing to be executed is pre-formed. Furthermore, the "processor" in this specification may also include a circuit in which a plurality of functions such as an SoC (System on Chip) are integrated. The processor 101 may be, for example, an SoC in which the functions of a CPU and a GPU are integrated. Also, in this embodiment, a mode in which the processing executed by a single processor is shared and executed in cooperation by a plurality of processors is also included in this specification as a modification example.

[0023] The non-volatile memory 102 is a non-volatile storage device (storage medium) accessible by the processor 101, and for example, an SSD (Solid State Drive), a NAND flash memory, a hard disk, etc. can be used. Note that the non-volatile memory 102 may be a storage medium detachable from the game device 100, such as an optical disk or a cartridge. The system program 102P1 and the game program 102P2 are stored in the non-volatile memory 102. The system program 102P1 is a program for performing basic processing of the game device 100. The program 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 a disk detachably attached to the game device 100, or is downloaded to the non-volatile memory 102 via the Internet. The game program 102P2 includes the vibration file 105.

[0024] The vibration file 105 includes information for instructing vibration effects for each vibration event. The vibration events include events that generate impact vibrations, but may also include events that generate other vibrations. The impact vibration effect is an effect that makes the user feel the impact vibrations occurring during the game progress, and is a strong vibration for a short period. For example, it is instructed according to events such as collisions and explosions between objects in the virtual game space, and firing of guns, etc., and is also used for expressing beats, etc. More specifically, regarding the amplitude, an amplitude corresponding 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, and may be an amplitude close to the maximum allowable voltage.

[0025] The specified amplitude may be, for example, 80% or more of the maximum allowable voltage. Also, for a vibration motor with a large output, an output of 60% or more of the maximum allowable voltage may be sufficient. Regarding the vibration duration, it may be, for example, a period equal to or less than one wavelength at the lower limit frequency that the game program 102P2 can specify. It may also be a period equal to or less than two wavelengths. Additionally, the vibration duration may be a period of 50 ms (milliseconds) or less, or it may be a period of 25 ms or less. The frequency does not particularly need to be restricted. Specifying a low frequency results in a heavy impact vibration, while specifying a high frequency results in a sharp impact vibration. Note that when performing a control input with a period of 50 ms or less that is greater than one wavelength (for example, two wavelengths), a stronger impact vibration can be achieved compared to the case of one wavelength. When the vibration period is a short period such as 50 ms, humans recognize the difference between one wavelength and two wavelengths as a difference in the intensity of the vibration.

[0026] For example, the frequency may be changed according to the magnitude of the collision in the virtual game space (such as the speed of the collision and the weight of the collided object, etc.). That is, by changing the frequency, the effect of the impact vibration effect can be changed. The frequency may be restricted by various conditions of the system. An impact event is an event that causes an impact vibration effect, or in other words, a condition for generating an impact vibration effect.

[0027] 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 period equal to or greater than a certain period (for example, a period greater than two wavelengths) is specified, or an event that generates a vibration that is a certain level or less with respect to the maximum allowable voltage of the vibration motor. Also in normal vibration events, similar to impact vibration events, a desired frequency, a desired amplitude, and a desired period are specified. The game program 102P2 can specify appropriate frequencies, amplitudes, and periods according to the nature of the vibration event.

[0028] The volatile memory 103 is a volatile storage device (storage medium) accessible by the processor 101. For example, DRAM (Dynamic Random Access Memory) or SRAM (Static Random Access Memory) can be used. The volatile memory 103 has a data area 103B1, an operation data area 103B2, and a vibration instruction data area 103B3. The data area 103B1 is an area for temporarily storing data generated when the processor 101 executes the game program 102P2, for example.

[0029] The operation data area 103B2 is an area for temporarily storing operation data received from the game controller 200. The operation data is data indicating an input by the user to the game controller 200, and is a detection value of an acceleration sensor 208, a gyro sensor 209, an operation switch 210, etc.

[0030] The vibration instruction data area 103B3 is an area for temporarily storing vibration instruction data for vibrating the vibration motor 206 provided in the game controller 200. The vibration instruction data area 103B3 can store at least one vibration instruction data corresponding to a certain timing. The vibration instruction data area 103B3 in the present embodiment is configured to be able to store two vibration instruction data corresponding to one timing. Note that, in this specification, the term "memory" includes at least both the non-volatile memory 102 and the volatile memory 103.

[0031] 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). The communication method of the wireless communication between the game device 100 and the game controller 200 is arbitrary. In the present embodiment, the game device 100 communicates 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 this case, the communication interface 104 may be a terminal such as a USB (Universal Serial Bus) standard or the like.

[0032] The game device 100 progresses the game based on the execution of the game program 102P2. In the progress of the game, an impact event, which is an expression including a large impact such as an explosion or a collision, may occur in the virtual game space. The game device 100 also generates the above-described vibration instruction data 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 a plurality of vibration instruction data in order to vibrate the vibration motor 206 at a certain timing. That is, the vibration motor 206 may vibrate based on a plurality of vibration instruction data at a certain timing. In the present 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.

[0033] [C. Configuration of Game Controller] 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.

[0034] The game controller 200 is typically a controller that is held by both or one of the user's hands, and receives input from the user by operating the operation switch 210 with the user's fingers. Note that the game controller 200 is not limited to a game controller that is held by the user's hand, and may be, for example, a general-purpose keyboard or mouse having a vibration motor 206, or may be a type that receives input when the user's sole contacts the sensor by being laid on the floor.

[0035] The MCU 201 has a processor 202, a non-volatile memory 203, and a volatile memory 204. The processor 202, the non-volatile memory 203, the volatile memory 204, and the communication interface 207 each have the same hardware configuration as the above-described processor 101, non-volatile memory 102, volatile memory 103, and communication interface 104. Therefore, the description of these configurations will not be repeated. However, for cost reduction, the processor 202 may be a processor having a lower processing capacity than the processor 101.

[0036] The non-volatile memory 203 stores an MCU program 203P. The MCU program 203P includes a program for executing various processes described later, and a program for transmitting the 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. Further, in the present embodiment, the MCU program 203P includes a program for generating control data to be transmitted to the amplifier 205 based on the 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. In the present embodiment, the control data is generated based on the vibration instruction data.

[0037] 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 with reference to FIG. 6 described later. Each of the areas for storing various data in the volatile memory 204 can store at least one data corresponding to a certain timing. Each of the areas for storing various data in the volatile memory 204 in the present embodiment stores two data corresponding to a certain timing.

[0038] The content of the control data area 204B2 in the volatile memory 204 is transferred to the amplifier 205 by, for example, DMA (Direct Memory Access). The amplifier 205 in the present embodiment is an amplifier that performs PWM (Pulse Width Modulation) control at a frequency of 8 kHz. The amplifier 205 determines the duty ratio every 0.125 ms based on the received control data and supplies power to the vibration motor 206.

[0039] 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)), etc., and the type of the motor does not matter. The vibration motor 206 may be a coin-type motor or the like. When the vibration motor 206 is an eccentric motor, a weight with an eccentricity in shape is attached to the rotation axis of the vibration motor 206, and vibration is generated by rotation. Thereby, the vibration motor 206 can apply vibration to a user who is gripping the game controller 200 in which the vibration motor 206 is stored. Note that the vibration motor 206 may correspond to the "vibration module" in the present disclosure.

[0040] The acceleration sensor 208 detects the magnitude of the linear acceleration along a predetermined three-axis direction. Note that the acceleration sensor 208 may detect acceleration in one-axis or two-axis directions. The gyro sensor 209 detects the inclination, angular velocity, angular acceleration, etc. of the game controller 200, and outputs the detection result to the operation data area 204B3.

[0041] 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 can calculate information regarding the movement and / or posture of the game controller 200 based on the detection results of the acceleration sensor 208 and the gyro sensor 209.

[0042] 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 can be, for example, a button associated with characters such as button A and button B, a cross key for inputting the up, down, left, and right directions, a 3D stick for inputting the inclination direction and the inclination amount, etc.

[0043] [D. Flow of Generating Vibration Instruction Data Based on Vibration File] FIG. 2 is a diagram for explaining an example of generating vibration instruction data based on the vibration file 105 in Embodiment 1. In FIG. 2, an example in which the normalized vibration instruction data 114 is generated based on the occurrence of an impact vibration event is explained. The vibration instruction data includes a value specifying a frequency (hereinafter, frequency value) and a value specifying an amplitude (hereinafter, amplitude value). One piece of vibration instruction data includes one frequency value and one amplitude value. The processor 101 generates the normalized vibration instruction data 114 based on the vibration file 105.

[0044] In this embodiment, in the vibration file 105 and the vibration instruction data 114, the amplitude value is normalized. On the other hand, in this embodiment, the frequency value is not normalized. In this embodiment, the amplitude value takes a value between 0 and 1. Then, the processor 101 converts the normalized amplitude value in the vibration instruction data 114 into an amplitude value adjusted by executing a total adjustment process, a frequency characteristic adjustment process, and a clamp adjustment process. Note that these adjustment processes are not essential. In particular, the clamp adjustment process is not necessary when the frequency characteristic adjustment process is executed by the processor 202 on the game controller 200 side (described later). Also, it is not essential to normalize the amplitude value.

[0045] The total adjustment process is an adjustment process for dividing the amplitude values of two vibration instruction data by taking 1.0 as a reference when two vibration instruction data are generated in order to vibrate the vibration motor 206 at one same timing. The frequency characteristic adjustment process is an adjustment process for adjusting the amplitude value included in the vibration instruction data according to the maximum voltage allowed to be input at that frequency according to the frequency value included in the vibration instruction data. The clamp adjustment process is an adjustment process for determining an amplitude value capable of suppressing a change in unexpected behavior in the process of gradually changing the frequency of the vibration motor 206 when the frequency value included in the vibration instruction data is different from the frequency value included in the previous vibration instruction data. In this way, by performing the adjustment process of the amplitude value, it is possible to facilitate the production of game programs, increase the intensity of vibration, and enhance the effect of impact vibration. Thereafter, the game device 100 transmits the vibration instruction data 110 after the adjustment process described below to the game controller 200. Hereinafter, the contents of various data will be described.

[0046] In the present embodiment, the vibration instruction data designates the vibration effect for a period of T×N (msec) by designating one or more (N pieces) of the vibration instruction data for each vibration instruction cycle T (msec) in chronological order. By adopting such a data format, it is possible to easily designate a vibration effect in which the amplitude value and the frequency change. The vibration duration may be designated by the duration or the number of waves.

[0047] Subsequently, with reference to FIG. 2, the specific contents of various data will be described. In the vibration control system 10 in the present embodiment, the vibration file 105 in the game program 102P2 is referred to by the game device 100, and first, the vibration instruction data 114 is generated.

[0048] In this embodiment, when the amplitude value is "1", the vibration control system 10 operates to apply a voltage value corresponding to the upper limit of the output voltage of the amplifier 205 to the vibration motor 206. For example, in the case of a linear design, when the amplitude value is "0.5", the vibration control system 10 applies a voltage value corresponding to 50% of the upper limit of the output voltage of the amplifier 205 to the vibration motor 206. That is, 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 to 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 in value by the total adjustment process, the frequency characteristic adjustment process, and the clamp adjustment process.

[0049] The game device 100 executes the above-described various adjustment processes to convert the vibration instruction data 114 into the vibration instruction data 110 after the adjustment process described later.

[0050] In such a flow, the game device 100 generates the vibration instruction data 110 after the adjustment process, and transmits the generated vibration instruction data 110 after the adjustment process to the game controller 200. Hereinafter, the details of various data will be described.

[0051] On the left side of FIG. 2, the vibration file 105 is shown as a table. FIG. 2 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. 2, 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, the types of two objects. The data representing the vibration content includes a frequency, a number of wavelengths, and an amplitude. Instead of the number of wavelengths, a vibration duration may be specified.

[0052] The table showing the vibration file 105 in the example of FIG. 2 is a table with the event name as the primary key. For the event name "First impact event", object 1 "sword" and object 2 "sword" are associated. That is, the first impact event is an event that occurs when an object representing a sword in the virtual space of the game collides with another object representing a sword. Also, for the event name "First impact event", the frequency "100", the number of wavelengths "1", and the amplitude "1" are associated. That is, when the first impact event occurs, the voltage corresponding to the maximum output voltage of the amplifier 205 at a frequency of 100 Hz or the maximum input voltage allowed for the input to the vibration motor 206 is used as the amplitude, indicating that a waveform signal with a frequency of 100 Hz is output to the vibration motor 206 for one wavelength at a frequency of 100 Hz.

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

[0054] 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 within the virtual space of the game. Also, the event name "Third Impact Event" is associated with a frequency "50", a wavelength number "2", and an amplitude "1". That is, when the Third Impact Event occurs, a waveform signal with a frequency of 50 Hz is output to the vibration motor 206 for two wavelengths at a frequency of 50 Hz, with the voltage corresponding to the maximum output voltage of the amplifier 205 at a frequency of 50 Hz or the maximum input voltage allowed for the input to the vibration motor 206 as the amplitude. Note that the wavelength number does not have to be an integer multiple.

[0055] Subsequently, the content of the vibration instruction data 114 will be described. In the right part of FIG. 2, the vibration instruction data 114 generated by the processor 101 based on the vibration file 105 is shown. In the First Impact Event, two pieces of vibration instruction data are generated, in the Second Impact Event, four pieces of vibration instruction data are generated, and in the Third Impact Event, eight pieces of vibration instruction data are generated.

[0056] In the vibration instruction data 116A shown in FIG. 2, "1" is specified as the amplitude value and "100" is specified as the frequency value. Also, in the vibration instruction data 116B, "1" is specified as the amplitude value and "50" is specified as the frequency value.

[0057] 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 time series. The plurality of 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 set of vibration instruction data arranged in time series in the order of output to the vibration motor 206 is called a "time series vibration instruction data group".

[0058] The time-series vibration instruction data group generated based on the occurrence of the second impact event is composed of four vibration instruction data, namely, "(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 is composed of eight vibration instruction data, namely, "(1, 50), (1, 50), (1, 50), (1, 50), (1, 50), (1, 50), (1, 50), (1, 50)".

[0059] 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 vibration instruction data is data indicating that, over a period of 5 ms, a waveform with the frequency and amplitude indicated by that vibration instruction data is output to the vibration motor 206. For the first impact event in the vibration file 105, "100 Hz" is associated as the frequency value. 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 vibration instruction data obtained by dividing 10 ms by 5 ms.

[0060] For the second impact event in the vibration file 105, "50 Hz" is associated as the frequency value. 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 vibration instruction data obtained by dividing 20 ms by 5 ms.

[0061] For the third impact event in the vibration file 105, "50 Hz" is associated as the frequency value. 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 vibration instruction data obtained by dividing 40 ms by 5 ms.

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

[0063] 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 using an adjustment process and converts it into adjusted vibration instruction data 110. Hereinafter, the frequency characteristic data used in the frequency characteristic adjustment process included in the adjustment process will be described.

[0064] FIG. 3 is a diagram showing frequency characteristic data. The frequency characteristic data shown as a graph in FIG. 3 is data that defines the ratio of the upper limit of the voltage value allowed for 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 the upper limit of the voltage value allowed for input at each frequency / the maximum output voltage of the amplifier. The frequency characteristic data is used in the frequency characteristic adjustment process described later. The range of frequencies at which the vibration motor 206 can operate is determined by the characteristics of the vibration motor 206 and the like. In this embodiment, it is in the range of 40 Hz or more and 400 Hz or less. As shown in FIG. 3, the lower limit frequency allowed for driving the vibration motor 206 in this embodiment is 40 Hz. In this embodiment, the "allowed lower limit frequency" means the frequency of the vibration motor 206 that is allowed to be used by the application program. Note that in this embodiment, when the game program 102P designates a frequency outside the range of 40 Hz or more and 400 Hz or less, it is corrected to a value within the range of 40 Hz or more and 400 Hz or less by system software or the like. In this embodiment, when assuming an impact vibration of one wavelength, a frequency of 200 Hz or less is designated.

[0065] As a characteristic of the vibration motor 206, a maximum input voltage is defined as the allowable voltage for input for each frequency. The upper limit of the input voltage (the voltage input to the vibration motor 206) allowable at each frequency can be determined based on the input voltage when the displacement of the vibrator of the vibration motor 206 reaches the limit value. Since the vibration amount with respect to the input of the vibration motor 206 varies depending on the frequency, the upper limit of the input voltage allowable at each frequency (the input voltage when the displacement of the vibrator reaches the limit value) varies depending on the frequency. The vibration control system 10 of the present embodiment includes frequency characteristic data shown in FIG. 3 for adjusting the amplitude value indicated by the vibration instruction data according to the frequency in consideration of these upper limits of the input voltage.

[0066] The frequency characteristic adjustment rate shown as the vertical axis in FIG. 3 is a value obtained by dividing the upper limit of the input voltage allowable at each frequency by the upper limit of the output voltage of the amplifier 205, and can take a value in the range of 0 to 1. It can be said that the frequency at which the frequency characteristic adjustment rate is low is the frequency at which the vibration amount of the vibrator with respect to the input voltage becomes large.

[0067] Data corresponding to the graph of FIG. 3 may be included in at least one of the system program 102P1 or the game program 102P2. As shown in FIG. 3, the vibration motor 206 in the first embodiment has good vibration efficiency when operating at 100 Hz. When a large voltage is input at this frequency, the vibration becomes too large. Therefore, when operating at 100 Hz, the frequency characteristic adjustment rate drops to 0.5. Also, at frequencies with poor vibration efficiency, the frequency characteristic adjustment rate is increased to prevent the vibration from becoming weak. When operating at 400 Hz or higher, it has the characteristic that the allowable voltage value gradually decreases.

[0068] Subsequently, it will be described that the processor 101 executes the above-described 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 instructed vibration data after the adjustment process is executed may sometimes be referred to as the adjusted amplitude value or the adjusted frequency value.

[0069] FIG. 4 is a diagram for explaining the adjustment process. The adjustment process is realized by the system program 102P1 being executed by the processor 101. As described above, the vibration control system 10 of the present 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 receive an instruction data set including two pieces of vibration instruction data at a certain timing. Hereinafter, the two pieces of vibration instruction data included in the instruction data set are referred to as "first vibration instruction data" and "second vibration instruction data". Also, the amplitude value specified by the first vibration instruction data is referred to as the "first instructed amplitude value", and the frequency value specified by the first vibration instruction data is also referred to as the "first instructed frequency value". Similarly, the amplitude value specified by the second vibration instruction data is referred to as the "second instructed amplitude value", and the frequency value specified by the second vibration instruction data is also referred to as the "second instructed frequency value".

[0070] The system program 102P1 processes the instruction data set for each of the above-described vibration instruction cycles. For example, when the first impact event and the second impact event in FIG. 2 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 give the user a vibration that is a combination of the vibration by the vibration instruction data 116A and the vibration by 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.

[0071] In the example of FIG. 4, for the sake of simplicity in explaining the adjustment process, an example is shown in which vibration instruction data different from the example shown in FIG. 2 is passed to the system program 102P1. FIG. 4 shows a first vibration instruction cycle, a second vibration instruction cycle, and a third vibration instruction cycle. These periods are consecutive 15 ms periods, and they progress in time series in the order of the first vibration instruction cycle, the second vibration instruction cycle, and the third vibration instruction cycle. In FIG. 4, an example in which different instruction data sets are passed to the system program 102P1 in each vibration instruction cycle is explained.

[0072] First, the conversion of the vibration instruction data in the first vibration instruction cycle will be described below. 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 similarly 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, no vibration instruction data is passed to the system program 102P1, or vibration instruction data indicating that the vibration motor 206 is not vibrated is passed. In this case, no adjustment is performed in any of the total adjustment process, the frequency characteristic adjustment process, and the clamp adjustment process, and the amplitude value and the frequency are finally converted as vibration instruction data 110 while remaining at "0.0".

[0073] 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 pieces of vibration instruction data with non-zero amplitude values, it executes a composite adjustment process to adjust the amplitude values specified by the first vibration instruction data and the second vibration instruction data. The composite adjustment process is a process of proportional distribution so that the sum of the amplitude values specified by the two pieces of vibration instruction data becomes 1 when the sum of the amplitude values specified by the two pieces of vibration instruction data exceeds 1 within the same vibration instruction cycle.

[0074] 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 value does not exceed 1, the processor 101 ends the total adjustment process without changing each amplitude value. If the sum value exceeds 1, the processor 101 divides the amplitude value indicated by each vibration instruction data by the sum value of the amplitude values indicated by each vibration instruction data. As a result, the amplitude value of the first vibration instruction data after the total adjustment is adjusted to "0.58", and the amplitude value of the second vibration instruction data is adjusted to "0.42".

[0075] 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. 3. The processor 101 obtains the frequency characteristic adjustment rate at the specified frequency value using the data corresponding to the graph of FIG. 3. For the first vibration instruction data, the processor 101 refers to the frequency characteristic data corresponding to the graph of FIG. 3 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" indicated 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 at 50 Hz is "1.0", the amplitude value in the first vibration instruction data in the second vibration instruction cycle does not change due to the frequency characteristic adjustment process.

[0076] 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" indicated 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 the present embodiment, the third decimal place is rounded off, but the calculation may be performed up to the digits after the third decimal place.

[0077] 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 the first vibration instruction data that designates the first instruction amplitude value "0.7" and the first instruction frequency value "150 Hz" and the second vibration instruction data that designates the second instruction amplitude value "0.5" and the second instruction frequency value "200 Hz" is passed to the system program 102P1. Also in the third vibration instruction cycle, similar to the second vibration instruction cycle, the amplitude values indicated by the first vibration instruction data and the second vibration instruction data are adjusted by combined adjustment. The amplitude value of the first vibration instruction data after the total adjustment in the third vibration instruction cycle is adjusted to "0.58", and the amplitude value of the second vibration instruction data is adjusted to "0.42".

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

[0079] As will be described later, the clamp adjustment process is a process for suppressing the input voltage to the vibration motor from exceeding the allowable value when the previous instruction frequency value and the current instruction frequency value are different in the game controller 200. The process executed in the game controller 200 to be described later is a process of gradually approaching the amplitude and frequency indicated from the immediately previous amplitude value and the immediately previous frequency. When the frequency gradually changes within the vibration instruction cycle, the process adjusts the first instruction amplitude value and the second instruction amplitude value in accordance with the frequency at which the frequency characteristic adjustment rate is the lowest (i.e., the frequency at which the vibration efficiency is the best).

[0080] First, the processor 101 determines a first clamping value and a second clamping value for the first vibration instruction data and the second vibration instruction data, respectively. The clamping value is determined as the clamping value from 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, at which the frequency characteristic adjustment rate is the lowest. 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. 3, among the frequencies between 50 Hz and 150 Hz, the frequency at which the frequency characteristic adjustment rate is the lowest is 100 Hz. Therefore, the processor 101 determines "0.5", which is the frequency characteristic adjustment rate of 100 Hz, as the first clamping value.

[0081] 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 first instruction frequency value at the time of the third vibration instruction cycle is 200 Hz. Returning to FIG. 3, among the frequencies between 80 Hz and 200 Hz, the frequency at which the frequency characteristic adjustment rate is the lowest is 100 Hz. Therefore, the processor 101 determines "0.5", which is the frequency characteristic adjustment rate of 100 Hz, as the second clamping value.

[0082] For the first vibration indication data, the processor 101 divides the first indicated amplitude value after frequency characteristic adjustment by the sum of the first indicated amplitude value after frequency characteristic adjustment and the second indicated amplitude value after frequency characteristic adjustment. The processor 101 multiplies the divided value by the above-mentioned first clamp value to determine the clamp value. For example, the first clamp value is calculated as the first clamp value × the first indicated amplitude value after frequency characteristic adjustment / (the first indicated amplitude value after frequency characteristic adjustment + the second indicated amplitude value after frequency characteristic adjustment), and becomes "0.29". When the first indicated amplitude value after frequency characteristic adjustment is greater than the determined clamp value, the processor 101 sets the clamp value as the first indicated amplitude value after clamp adjustment. That is, since the amplitude value "0.58" after frequency adjustment is greater than the determined first clamp value "0.29", the processor 101 determines "0.29" as the first indicated amplitude value after clamp adjustment.

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

[0084] As a result, the first vibration instruction data after the clamp adjustment process is converted into vibration instruction data 110 that indicates the first instruction amplitude value "0.29" and the first instruction frequency value "150", and the first vibration instruction data after the clamp adjustment process is converted into vibration instruction data 110 that indicates the first instruction amplitude value "0.21" and the first instruction frequency value "200". The processor 101 stores the instruction data set including the vibration instruction data 110 after the adjustment process in the vibration instruction data area 103B3 according to the system program 102P1, and then transmits the instruction data set to the game controller 200 in the stored order. 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.

[0085] [E. Procedure for generating vibration instruction data in the game device] Hereinafter, the processing executed by the processor 101 of the game device 100 will be described using a flowchart. FIG. 5 is a flowchart showing the procedure of the generation process of the vibration instruction data 114 including the normalized amplitude value executed in the first embodiment. The processing of the flowchart shown in FIG. 5 is realized by the processor 101 executing the game program 102P2, and is started in response to the start of the execution of the game program 102P2.

[0086] The processor 101 acquires operation data (step S101). The processor 101 operates a game object based on the received operation data (step S102). A game object is an object that a user operates in the virtual space within the game, and typically can be a player character, a vehicle body in a car racing game, etc.

[0087] The processor 101 determines whether a shock event has occurred during the game based on the operation of the game object or by an in-game event unrelated to the operation of the game object (step S103). A shock event is an event that causes a vibration effect. For example, in the case of an adventure game, it may be the contact of a weapon such as a sword held by the player character with an enemy object, or in the case of a car racing game, it may be the collision of the vehicle operated by the user with another vehicle, etc. Various events are included depending on the content of the game.

[0088] If no shock event has occurred in the game (NO in step S103), the processor 101 returns the process to step S101. If a shock event has occurred in the game (YES in step S103), the processor 101 generates vibration instruction data 114 (typically, a time-series vibration instruction data group) and passes the generated vibration instruction data 114 to the 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 the above-described vibration file 105.

[0089] After the processor 101 passes an instruction data set including vibration instruction data 114 to the system program 102P1, the process returns to step S101, and during the period when the game is being executed, the processes of steps S101 to S104 are repeatedly executed. At the same time, if two impact events occur, the processor 101 passes an instruction data set including first vibration instruction data 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 based on one impact event, the first vibration instruction data and the second vibration instruction data may be generated. Thus, the game device 100 in the present embodiment generates vibration instruction data 114 based on the occurrence of an impact event as the game progresses, and passes it to the system program 102P1. After executing step S104, the processor 101 executes other processes for the progress of the game.

[0090] FIG. 6 is a flowchart showing a procedure for converting vibration instruction data executed by the game device 100 in Embodiment 1. The processes of the flowchart shown in FIG. 6 are realized by the processor 101 executing the system program 102P1. In FIG. 6, the above-described adjustment process is executed.

[0091] The flowchart shown in FIG. 6 is executed based on the fact that an instruction data set is passed from the game program 102P2 to the system program 102P1. The processor 101 selects the first vibration instruction data and the second vibration instruction data passed from the game program 102P2 (step S105).

[0092] The processor 101 executes a total adjustment process on the first vibration instruction data and the second vibration instruction data (step S105A). Next, the processor 101 determines respective frequency characteristic adjustment rates according to the first instruction frequency value and the second instruction frequency value included in the first vibration instruction data and the second vibration instruction data after the total adjustment (step S106). Specifically, the processor 101 determines the frequency characteristic adjustment rate based on the data corresponding to the graph in FIG. 3. The processor 101 multiplies the first instruction amplitude value and the second instruction amplitude value after the total adjustment by the frequency characteristic adjustment rate corresponding to the first instruction frequency value and the frequency characteristic adjustment rate corresponding to the second instruction frequency value, respectively, and determines the first instruction amplitude value and the second instruction amplitude value after the frequency characteristic adjustment (step S107). That is, in step S106 and step S107, the above-described frequency characteristic adjustment process is executed.

[0093] Furthermore, the processor 101 executes a clamp adjustment process on each of the first instruction amplitude value and the second instruction amplitude value after the frequency characteristic adjustment (step S107A). The processor 101 writes an instruction data set including the first vibration instruction data and the second vibration instruction data after the clamp adjustment process into the vibration instruction data area 103B3 (step S108). The processor 101 determines whether all the instruction data sets passed from the game program 102P2 have been processed (step S109).

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

[0095] Processor 101 transmits the vibration instruction data 110 after adjustment processing 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 vibration instruction data 110 after adjustment processing in the vibration instruction data area 204B1 in the volatile memory 204.

[0096] [F. Control Data Generation Processing Procedure in Game Controller] Hereinafter, the processing executed by the MCU 201 of the game controller 200 will be described using a flowchart. FIG. 7 is a flowchart showing the processing procedure of control data generation executed by the game controller 200 in the first embodiment. The control data is data generated by the processor 202 based on the first vibration instruction data and the 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 value) indicating the voltage value at each instant 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".

[0097] In the present embodiment, since the amplifier 205 operates at 8 kHz, control data is supplied to the vibration motor 206 every 0.125 ms, and its period is 0.125 ms. The MCU 201 generates the number of control data obtained by dividing the vibration instruction cycle by the control cycle from one vibration instruction data. In the present embodiment, since the vibration instruction cycle is a period of 5 ms and the control cycle is 0.125 ms, the processor 202 generates 40 pieces of control data from one vibration instruction data. Based on the frequency value and amplitude value of the vibration instruction data 110 after adjustment processing, a reference waveform is determined for each control cycle (0.125 ms). The reference waveform is a waveform determined for each control cycle and is a waveform for specifying the voltage value output as control data. The processor 202 determines the voltage value output as control data based on the reference waveform.

[0098] The processing of the flowchart shown in FIG. 7 is realized by the processor 202 executing the MCU program 203P. The processing of the flowchart shown in FIG. 7 is started, for example, based on the fact that power is supplied to the game controller 200.

[0099] In the volatile memory 204, for each of the first vibration instruction data and the second vibration instruction data included in the instruction data set, there are a current amplitude data area 204V1, a current frequency data area 204V2, and a current phase data area 204V3, in which the current amplitude data, the current frequency data, and the current phase data are stored respectively. That is, the current amplitude data area 204V1 is configured to be able to store the first current amplitude data based on the first vibration instruction data and the 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 in the description, they are simply referred to as "current amplitude data".

[0100] Also, the current frequency data area 204V2 is configured to be able to store the first current frequency data based on the first vibration instruction data and the 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 in the description, they are simply referred to as "current frequency data". On the other hand, since 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 is configured to store one current phase data. Note that the current phase data area 204V3 may be configured to be able to store the current phase data based on the first vibration instruction data and the second current phase data based on the second vibration instruction data. These data respectively indicate the current amplitude, the current frequency, and the current phase in the control data of the vibration motor 206 that vibrates based on the first vibration instruction data and the second vibration instruction data.

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

[0102] The previous amplitude data area 204V4 is configured to be able to store the first previous amplitude data based on the first vibration instruction data and the 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 in the description, they are simply referred to as "previous amplitude data". The previous frequency data area 204V5 is configured to be able to store the first previous frequency data based on the first vibration instruction data and the 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 in the description, they are simply referred to as "previous frequency data". Note that when the processor 202 executes the flowchart shown in FIG. 6 for the first time after the game controller 200 is started, as an initialization process, "0V" is stored as the value of the current amplitude data and the value of the previous amplitude data, "0 Hz" is stored as the value of the current frequency data and the value of the previous frequency data, and "0 degrees" is stored as the value of the current phase data.

[0103] The processor 202 determines whether an instruction data set exists in the vibration instruction data area 204B1 (step S202). If no instruction data set exists in the vibration instruction data area 204B1 (NO in step S202), the processor 202 sets "0" for the amplitude value for each of the first vibration instruction data and the second vibration instruction data in step S203, and generates new first vibration instruction data and second vibration instruction data in which the values of the previous frequency data area 204V5 stored in step S201 are set as the frequency values of each of the first vibration instruction data and the second vibration instruction data, and stores them in the vibration instruction data area 204B1 (step S203).

[0104] As a result, after the vibration by the vibration instruction data 110 after the adjustment process instructed from the game program 102P2 ends, control data that gradually decreases to 0 is generated by the processes from S206 to S212 described later. This vibration is the end vibration described later. When the game program 102P2 executes the flow shown in FIG. 5 (specifically, in the process of S104), the processor 202 may generate data in which the vibration value of the last vibration instruction data is set to "0" and the frequency value is set to the same value as the immediately preceding frequency value. The immediately preceding frequency value means the frequency value used for the immediately preceding control or the frequency value indicated by the immediately preceding vibration instruction data. Similarly, the immediately preceding amplitude value means the amplitude value used for the immediately preceding control or the amplitude value indicated by the immediately preceding vibration instruction data.

[0105] Note that when the vibration instruction data stored in step S203 is processed in S204 to S212 and then returns to S202 again, it is possible that there is no instruction data set in the vibration instruction data area 204B1 again. In this case, vibration instruction data with an amplitude value of "0" is stored for each of the first vibration instruction data and the second vibration instruction data again in S203, and control data with a voltage value of zero is output in the subsequent process. Thus, in this embodiment, when the vibration by the vibration instruction data instructed by the game program 102P2 ends and there is no vibration instruction data in the vibration instruction data area 204B1, control data with a voltage value of zero continues to be output. For example, in the example of FIG. 9 described later, control data with a voltage value of zero is also output at times after timing T14. Thereby, vibration can be surely converged. The means for performing the control after timing T14 in FIG. 9 like this may correspond to the "second vibration control means" in the present disclosure.

[0106] 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). At the head of the vibration instruction data area 204B1, the instruction data set stored in the vibration instruction data area 204B1 earliest is stored. In step S202, when there is an instruction data set in the vibration instruction data area 204B1 (YES in step S202), the processor 202 executes the process of step S204.

[0107] Hereinafter, in step S204, the first instruction amplitude value and the second instruction amplitude value included in the instruction data set acquired by the processor 202 are collectively referred to as "instruction amplitude value" without distinction. Similarly, the first frequency value and the second frequency value included in the instruction data set acquired by the processor 202 in step S204 are collectively referred to as "instruction frequency value" without distinction.

[0108] 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 the vibration has been continuing from before (not the start of vibration from a non-vibrating state), and the flow proceeds to the flow during vibration continuation after step S206. 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 as to whether the vibration has started from the state where the vibration is continuing in step S205 is also executed for each of the first vibration instruction data and the second vibration instruction data. In step S206, the processor 202 substitutes 1 for the count variable X (step S206). The count variable X is an area prepared in the volatile memory 204 and is a counter variable for repeating the process 40 times to generate 40 pieces of control data.

[0109] In the following, using steps S201 to S210, the first current amplitude data and the second current amplitude data, the first current frequency data and the second current frequency data, and the current phase data are updated, and the generation of the first control data corresponding to the first vibration instruction data and the second control data corresponding to the second vibration instruction data will be described. That is, the processor 202 executes the processes of steps S201 to S210 shown in the figure for both the first vibration instruction data and the second vibration instruction data. In FIG. 7, for simplicity of explanation, it is shown that the processes for S201 to S210 of one vibration instruction data are performed. Steps S201 to S210 executed for the first vibration instruction data and steps S201 to S210 executed for the second vibration instruction data may be executed in parallel. As will be described in step S210A below, the sum of the first control data and the second control data is written as control data into the control data area 204B2.

[0110] In the following, focusing only on the first vibration instruction data, steps S207 to S210 will be described. In step S207, the processor 202 substitutes a value into the first current amplitude data. In step S207, the processor 202 subtracts the value of the first previous amplitude data from the first instructed amplitude value. 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 stores, in the first current amplitude data, a value obtained by adding the first previous amplitude data to the result of the multiplication (step S207).

[0111] In step S208, the processor 202 substitutes a value into the first current frequency data. In step S208, the processor 202 subtracts the value of the first previous frequency data from the first instructed 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 stores, in the first current frequency data, a value obtained by adding the first previous frequency data to the result of the multiplication (step S208).

[0112] Through the processes of steps S207 and S208, the first current amplitude data and the first current frequency data will store the amplitude value and frequency of the reference waveform that are referred to for generating the first control data. In step S209, the processor 202 assigns a value to the current phase data. Specifically, the processor 202 sets the value of the current phase data to a phase advanced by 0.125 ms based on the value of the first current frequency data.

[0113] The processor 202 generates first control data corresponding to the calculated voltage value to be output to the amplifier 205 by determining 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 (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, the voltage value at the phase indicated by the value of the first current phase data in the reference waveform. As described above, for the second vibration instruction data as well, the processor 202 executes steps S207 to S210 in the same manner as the first vibration instruction data to generate second control data. The processor 202 writes control data indicating the 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 into the control data area 204B2 (step S210A). Thereby, the vibration motor 206 can vibrate based on both the first vibration instruction data and the second vibration instruction data. Also, in the vibration control system 10, when vibrating the vibration motor 206 based on the occurrence of one vibration event, either the indicated amplitude value or the indicated frequency value of either the first vibration instruction data or the second vibration instruction data becomes 0.

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

[0115] The processor 202 substitutes, for the count variable X, the value obtained by adding 1 to the current count variable X (step S211). The processor 202 determines whether the value of the count variable X has exceeded 40 (step S212). If the value of the count variable X has not exceeded 40 (NO in step S212), the processor 202 returns the process to step S207.

[0116] If the value of the count variable X has exceeded 40 (YES in step S212), the processor 202 returns the process to step S201. The case where the value of the count variable X has exceeded 40 means that the generation of 40 pieces of control data corresponding to the vibration instruction data acquired in step S204 has been completed. That is, it means that the process of the acquired instruction data set has been completed.

[0117] As shown in steps S206 to S212, when the amplitude and frequency are instructed by the vibration instruction data, the vibration control system 10 of the present embodiment performs a process of gradually approaching the instructed amplitude and frequency from the immediately preceding amplitude value and the immediately preceding frequency. This is called interpolation processing. Note that this interpolation processing is not performed at the start of vibration. Also, by the processing of steps S206 to S212, 40 pieces of control data output every 0.125 ms for one piece of vibration instruction data are generated.

[0118] Return to step S205. When the value of the previous amplitude data is 0 (NO in step S205), the processor 202 determines that it is the start of vibration and executes the start process (step S214). The case where the value of the previous amplitude data is 0 means starting the operation from the state where the vibration motor 206 is stopped. 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 exceeds 0, it may be determined that the previous control data exceeds 0. In this case, when the previous amplitude data is 0, or when the previous amplitude data is not 0 but the control data is 0 due to the phase, the start process is executed. Even in this case, it may be determined that it is approximately zero.

[0119] FIG. 8 is a flowchart showing the processing procedure of the start process in step S214. The processing of the flowchart shown in FIG. 8 is started when the processor 202 executes step S214 in FIG. 7. That is, in step S205, when both the value of the first previous amplitude data and the value of the second previous amplitude data stored in step S201 are 0, the flowchart of FIG. 8 is executed and processed for each of the first vibration instruction data and the second vibration instruction data. Hereinafter, the first vibration instruction data will be described, but the same applies to the second vibration instruction data.

[0120] The processor 202 substitutes 1 for the count variable X (step S2151). The processor 202 substitutes the first indicated amplitude value for the first current amplitude data (step S2152). Thereby, at the start of vibration, the value of the amplitude can quickly become the indicated value, enhancing the effect of impact vibration. Also, the processor 202 substitutes the indicated frequency for the first current frequency data (step S2153). The processor 202 substitutes for the current phase data a phase value obtained by advancing the phase by 0.125 ms from the value stored in the current phase data based on the frequency stored in the first current frequency data (step S2154).

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

[0122] If the value of the count variable X does not exceed 40 (NO in step S2157), the processor 202 returns the process to step S2152. If the value of the count variable X exceeds 40 (YES in step S2157), the processor 202 ends the process of the flowchart in FIG. 8. Then, the processor 202 executes the process of step S213 in FIG. 7.

[0123] As described above, the vibration control system 10 in the present embodiment can finely control the vibration waveform by determining the control data corresponding to the voltage value for each control cycle. Further, even when the vibration control system 10 processes both the first vibration instruction data and the second vibration instruction data by the total adjustment process, appropriate control data can be generated by proportionally dividing the first instruction amplitude value and the second instruction amplitude value. Furthermore, the vibration control system 10 can operate the vibration motor 206 so that the displacement of the vibrator does not exceed the limit value by the frequency characteristic adjustment process. Also, the vibration control system 10 can generate appropriate control data even when gradually changing the frequency by the clamp adjustment process.

[0124] When changing the amplitude value, noise may occur if the voltage value does not change from 0V. Therefore, the vibration control system 10 in Embodiment 1 gradually changes the amplitude value in units of the control cycle (0.125 ms) by executing steps S207 to S210. On the other hand, in order to prevent the generation of noise, it is possible to wait for the change of the amplitude value until the voltage value becomes 0V, but if so, the timing of the change of the amplitude value will be delayed. The vibration control system 10 of the present embodiment usually suppresses the generation of noise by gradually changing the amplitude value or the frequency value within the vibration instruction cycle (5 ms), and when the previous voltage value is 0V, controls to the instructed amplitude value, so that while suppressing the generation of noise, it is possible to generate a good rising vibration.

[0125] [Example of vibration waveform generated based on vibration instruction data] FIG. 9 is 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 data of "(1, 100), (1, 100)". Hereinafter, an example in which the second vibration instruction data designating the second instructed amplitude value "0" and the second instructed frequency value "0" and the first vibration instruction data based on the first vibration event are processed based on the occurrence of only the first vibration event will be described. By executing the adjustment process described above, the time-series vibration instruction data group based on the first impact event is converted into data of "(0.5, 100), (0.5, 100)". The vibration waveform generated based on the first impact event is output between timings T11 and T13. The period from timing T11 to timing T13 is a period of 10 ms. Between timings T11 and T13, by executing the flowcharts of FIGS. 7 and 8, a vibration waveform corresponding to the amplitude value "0.5V" of the frequency value "100 Hz" is generated. That is, the frequency of the vibration waveform between timings T11 and T13 is "100 Hz", and the maximum amplitude value is "0.5V".

[0126] The waveform generated between timings T11 and T12 is generated by the processor 202 processing the first vibration instruction data "(0.5, 100)", which is the first in the time-series vibration instruction data group based on the first shock event. The waveform generated between timings T12 and T13 is generated by the processor 202 processing the second first vibration instruction data "(0.5, 100)", which is included in the time-series vibration instruction data group based on the first shock event.

[0127] The waveform of the control data generated between timings T13 and T14 is generated by executing steps S206 to S212) after the first instruction amplitude is set to 0 in S203 above when there is no vibration instruction data to be processed. Hereinafter, the waveform occurring between timings T13 and T14 will be described with reference to FIGS. 10 and 11. The vibration occurring after the processing of the vibration instruction data 110 after adjustment received from the game device 100 is completed is referred to as "end vibration". The control data occurring between timings T13 and T14 is an example of the control data for generating the end vibration. Also, the control data transmitted to the amplifier 205 to generate the end vibration is referred to as "end control data". In the present embodiment, the processor 202 generates end control data so that the vibration motor 206 performs end vibration immediately after the vibration control based on the vibration instruction data 110 after adjustment received from the game device 100 is completed. The processor 202 may generate end vibration after the vibration based on the vibration instruction data generated by the occurrence of a normal vibration event rather than a shock vibration event.

[0128] Returning to FIG. 7, when the processing of the last vibration instruction data 110 after adjustment in the time-series vibration instruction data group based on the first shock event is completed and the count 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 ("100 Hz") as the previous frequency data in step S201.

[0129] Therefore, when all the first vibration instruction data stored in the vibration instruction data area 204B1 is processed by the processor 202 and the first vibration instruction data no longer exists (NO in step S202), "0" is set as the instruction amplitude in step S203, and the same frequency "100 Hz" as the value of the first previous frequency data is set as the first instruction frequency and stored in the first vibration instruction data area. The processor 202 substitutes "1" into the count variable (step S206).

[0130] Thereafter, since the first previous amplitude data is "0.5" and the first instruction amplitude value is "0", the processor 202 executes the process of step S207, and a value obtained by multiplying 0.5 by 39 / 40 is substituted into the first current amplitude data. That is, 0.4875 is substituted into the first current amplitude data. Also, since the first previous frequency data is "100 Hz" and the first instruction frequency is also "100 Hz", the processor 202 substitutes "100 Hz" into the first current frequency data by executing the process of step S208. The processor 202 advances the current phase data by an amount corresponding to 0.125 ms.

[0131] FIG. 10 is a diagram showing a reference waveform during the timings T13 to T14. In FIG. 10, 40 reference waveforms Rw1, Rw2, Rw3,... are shown by dashed lines. Hereinafter, the 40 reference waveforms Rw1, Rw2, Rw3,... are collectively referred to as "reference waveform Rw". The processor 202 determines the reference waveform Rw1 from the first current amplitude data "0.4875" and the first current frequency "100 Hz". That is, the reference waveform Rw1 is a waveform having a frequency of 100 Hz and a maximum amplitude of 0.4875 (0.5×(39 / 40)).

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

[0133] The following describes the case of acquiring the voltage value at the timing when the phase has further advanced by 0.125 ms (the timing when the phase has advanced by 0.250 ms from the timing T13) by the same procedure. Since the first previous amplitude data is "0.5" and the first indicated amplitude value is "0", the processor 202 executes the process of step S207, and a value obtained by multiplying 0.5 by 38 / 40 is assigned to the first current amplitude data. That is, 0.4750 is assigned to the first current amplitude data. Further, since the first previous frequency is "100 Hz" and the first indicated frequency is also "100 Hz", the processor 202 executes the process of step S208, and assigns "100 Hz" to the first current frequency data. The processor 202 advances the current phase data by 0.125 ms.

[0134] The processor 202 determines the reference waveform Rw2 from the first current amplitude data "0.4750" and the first current frequency "100 Hz". The reference waveform Rw2 is a waveform having a frequency of 100 Hz and a maximum amplitude of 0.4750 (0.5×(38 / 40)).

[0135] In the process of step S210, the processor 202 acquires, as the first control data, the voltage value D2 when the phase has advanced by 0.250 ms from the timing T13 in the reference waveform Rw2, and writes it into the control data area 204B2. The voltage value D2 is shown in FIG. 10. Further, the processor 202 increments the count variable X, and the value assigned to the count variable X becomes "3".

[0136] In the same procedure, the processor 202 further acquires the voltage value D3 when the phase has advanced by 0.125 ms, and writes the first control data corresponding to the voltage value D3 into the control data area 204B2. The processor 202 repeats the output of the first control data 40 times during the period from timing T13 to T14. FIG. 11 is a diagram showing the waveform of the end vibration output as a result of the processing in units of control cycles corresponding to the period from timing T13 to T14. At each of a plurality of time points during the period from timing T13 to T14, the processor 202 decreases the maximum amplitude value of the reference waveform Rw and advances the phase as time elapses.

[0137] As described above, in the vibration control system 10 according to the present embodiment, based on the fact that the vibration control based on the vibration instruction data 110 after the adjustment process received from the game device 100 has ended by executing the processes of the flowcharts shown in FIGS. 7 and 8, control data for stopping the vibration of the vibration motor 206 is output to the vibration motor 206. In the present embodiment, the period of the end vibration is a period of 5 ms, which is the same period as the vibration instruction cycle. Since the vibration stops in the same period as the vibration instruction cycle, the fall of the impact vibration can be improved.

[0138] As shown in FIG. 10, during the period from timing T13 to T14 after the vibration control based on the vibration instruction data 110 after the adjustment process has ended, 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 immediately preceding vibration instruction data (0.5, 100) processed. Hereinafter, in the vibration instruction cycle (a period of 5 ms), the processing in units of 40 control cycles when the reference waveform Rw gradually changes is referred to as “interpolation processing”. In the present embodiment, during the period from timing T13 to T14, the frequency of the reference waveform Rw is always the frequency “100 Hz” and does not change. Note that, in the example of FIG. 9, the period from timing T13 to T14 may correspond to the “first period” in the present disclosure.

[0139] Also, during the periods of timings T11 to T13, by executing the processes of the flowchart shown in FIG. 8, the reference waveform Rw during the periods of timings T11 to T13 always has an amplitude value of "0.5" and a frequency of "100 Hz". Therefore, a sine wave as shown in FIG. 9 is generated during the periods of timings T11 to T13.

[0140] In the vibration control according to the first impact event, since each vibration instruction data included in the time-series vibration instruction data group is the same, the effect of the interpolation process does not appear. However, the amplitude value and frequency of each vibration instruction data included in the time-series vibration instruction data group may vary. In this case, even while the vibration continues, the changes in the amplitude value and frequency value are smoothed by the interpolation process.

[0141] FIG. 12 is an example of the waveform of the control data generated based on the second impact event. As shown in FIG. 2, the time-series vibration instruction data group based on the second impact event is data of "(1, 50), (1, 50), (1, 50), (1, 50)". Hereinafter, an example in which 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 second vibration event are processed based only on the occurrence of the second vibration event will be described. By executing the above-described adjustment process, the time-series vibration instruction data group based on the second impact event is converted into data of "(1, 50), (1, 50), (1, 50), (1, 50)".

[0142] The vibration waveform generated based on the second impact event is output between timings T21 and T25. The period from timing T21 to timing T25 is a period of 20 ms. During the period between timings T21 and T23, by executing the flowcharts of FIGS. 7 and 8, since the reference waveform Rw always has a frequency of "50 Hz" and a maximum amplitude value of "1", a waveform that is a sine wave is generated.

[0143] The waveform corresponding to the end vibration occurring between timings T25 and T26 is a reference waveform Rw whose amplitude gradually decreases as the phase advances, as described with reference to FIGS. 10 and 11, and is generated based on the reference waveform Rw. Note that the period from timing T25 to T26 in the example of FIG. 12 may correspond to the "first period" in the present disclosure.

[0144] FIG. 13 is an example of the waveform of control data generated based on the third impact event. As shown in FIG. 2, the time-series vibration instruction data group based on the third impact event is data of "(1, 50), (1, 50), (1, 50), (1, 50), (1, 50), (1, 50), (1, 50), (1, 50)". Hereinafter, an example will be described in which the second vibration instruction data designating the second instruction amplitude value "0" and the second instruction frequency value "0" and the first vibration instruction data based on the third vibration event are processed based on the occurrence of only the third vibration event. By executing the adjustment process described above, the time-series vibration instruction data group based on the third impact event is converted into data of "(1, 50), (1, 50), (1, 50), (1, 50)".

[0145] The waveform generated based on the third impact event is output between timings T31 and T39. The period from timing T31 to timing T39 is a period of 40 ms. Between timings T31 and T39, by executing the flowcharts of FIGS. 7 and 8, a waveform that is always a sine wave with a frequency of "50 Hz" and a maximum amplitude value of "1" is generated as a reference waveform.

[0146] The waveform corresponding to the end vibration occurring between timings T39 and T310 is a reference waveform whose maximum amplitude gradually decreases as the phase advances, as described with reference to FIGS. 10 and 11, and is generated based on the reference waveform. Note that the period from timing T39 to T310 in the example of FIG. 13 may correspond to the "first period" in the present disclosure.

[0147] As described with reference to FIGS. 9 to 13, in the vibration control system 10 of the present embodiment, control is performed such that the reference waveform Rw gradually changes by interpolation processing during and at the end of vibration. On the other hand, in the vibration control system 10 of the present embodiment, at the start of vibration, control for gradually changing the reference waveform Rw is not performed. As a result, at the start, it is possible to generate a steep vibration waveform, and it is possible to give the user vibrations corresponding to collisions, explosions, etc.

[0148] Further, in the vibration control system 10 of the present embodiment, when the vibration motor 206 transitions from the operating state to the stopped state, by generating end vibration, it is possible to suppress noise generation such as the occurrence of unintended vibrations in terms of design, as compared with stopping by inertia without giving control to the vibration motor 206.

[0149] [H. Modification Example] Hereinafter, other forms that are partially modified from the above-described embodiment will be described.

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

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

[0152] In the above example, it has been described that the display device connected to the game device 100 is a display such as an organic EL or a head-mounted display, but for example, a display device using a hologram may be used.

[0153] In the above example, an example was described in which the processes of the flowcharts corresponding to FIGS. 5 and 6 are executed in the game device 100, and the processes of the flowcharts corresponding to FIGS. 7 and 8 are executed in the game controller 200. However, all the processes included in the flowcharts of FIGS. 5 to 8 may be executed by either the game device 100 or the game controller 200. Further, the processes of the flowchart executed by the game device 100 are not limited to the flowcharts of FIGS. 5 and 8, and may be only the processes of the flowchart of FIG. 5, or may be the processes of the flowcharts of FIGS. 5, 6, and 7.

[0154] Also, the processors included in the game device 100 and the game controller 200 may be configured by one chip or by a plurality of chips.

[0155] In the above example, storing a plurality of data in the same row within the same table was referred to as "associating". However, the term "associating" is not limited to this, and includes indirectly associating a plurality of data between a plurality of tables.

[0156] In the above example, for the sake of simplicity of explanation, an example in which all the vibration instruction data included in the time-series vibration instruction data group has the same content was described. However, the plurality of 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)".

[0157] In the above example, an example was described in which the waveform of the control data corresponding to the end vibration has the same frequency as the frequency immediately executed. However, the vibration waveform corresponding to the end vibration may have a frequency different from the frequency immediately executed. For example, the frequency of the waveform corresponding to the end vibration may be defined in advance as a frequency such as "40 Hz", "70 Hz", or "200 Hz". In this case, in the interpolation process, the processor 202 gradually changes not only the amplitude value of the reference waveform Rw but also the frequency.

[0158] In the above example, an example in which the waveform of the control data is a sine wave has been described. However, waveforms of other shapes such as rectangular waves may also be used. Further, the vibration instruction cycle may be a period equal to or less than the length of one wavelength of the lower limit frequency of the vibration motor 206 (in the example of Embodiment 1, 25 ms), and is not limited to a period of 5 ms. By setting the vibration instruction cycle shorter, the vibration control system 10 can perform finer control.

[0159] In the above example, one piece of vibration instruction data was data for outputting power over a period equal to or less than one wavelength of the vibration waveform. However, the period during which the control data is output by one piece of vibration instruction data may be a period equal to or less than two wavelengths, or a period equal to or less than three wavelengths. Further, in the above example, the game device 100 and the game controller 200 are provided as a separate game system. However, the game device 100 and the game controller 200 may be integrally provided.

[0160] In the above example, an example in which end vibration is generated by executing the processing of the flowchart in FIG. 7 has been described. However, the processor 202 may separately determine that all the processing of the vibration instruction data 110 after adjustment received from the game device 100 has been completed. When it is determined that it is the generation timing of the end vibration, the processor 202 generates the end vibration by executing another flowchart different from FIG. 7.

[0161] In the above example, the game program 102P2 is set to instruct data normalized for the amplitude data. However, the amplitude data indicating the control voltage value may be directly specified. Further, an example in which the frequency characteristic data has the frequency on the horizontal axis and the frequency characteristic adjustment rate on the vertical axis has been described. However, the vertical axis of the frequency characteristic data may be the upper limit (V) of the input voltage itself at each frequency.

[0162] In the example of FIG. 9, the period during which vibration continues when there is one impact event (the period from timing T11 to T13) was a period of 10 ms. However, the period during which vibration continues when there is one impact event may be any other period as long as it is 50 ms or less. Incidentally, for the sake of caution, it should be noted that the present disclosure includes not only the method of directly specifying time but also the method of substantially specifying a period of 50 ms or less by specifying the number of waves or the number of vibration instruction data.

[0163] Also, the vibration instruction data may specify data on the amount of change in amplitude and the amount of change in frequency. In that case, processing for calculating the current amplitude and frequency using the values of the immediately preceding amplitude and the immediately preceding frequency is performed by the processor. This processing may be performed by the processor of the game machine or may be performed by the processor of the game controller.

[0164] Incidentally, in the example of FIG. 9 described above, an example was described in which after generating end vibration at timing T13 to T14, control data with a voltage value of zero is continuously output after timing T14. However, the output of control data with a voltage value of zero may be started from timing T13 without generating end vibration. FIG. 14 is a diagram showing a waveform of a modified example. That is, in the modified example, immediately after the vibration according to the vibration instruction data instructed by the game program 102P2 ends (after timing T13 in FIG. 13), control data with a voltage value of zero is output. Also, after the vibration according to the vibration instruction data instructed by the game program 102P2 ends (for example, after timing T13 in FIG. 9), control data having a phase opposite to the immediately preceding phase may be output. These examples may correspond to the "second vibration control means" of the present disclosure. Thus, in Embodiment 1, by performing end control, the vibration motor 206 can be stopped earlier compared to when no control is performed on the vibration motor 206 when no vibration instruction data is input from the game program 102P2. In Embodiment 1, the vibration control system 10 stops the vibration motor 206 within the vibration instruction cycle.

[0165] In the above example, an example was described in which the adjustment processes are executed by the processor 101 in the order of the total adjustment process, the frequency characteristic adjustment process, and the 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 the clamp adjustment process, the total adjustment process, and the frequency characteristic adjustment process, or may execute the adjustment processes in other orders. In the first embodiment, by executing the total adjustment process prior to the frequency characteristic adjustment process and the clamp adjustment process, it becomes possible to perform control that emphasizes the frequency characteristics of the vibration motor 206.

[0166] 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 the game controller 200. Also, the plurality of types of game controllers 200 may have different types of amplifiers 205 and vibration motors 206. [Second Embodiment] In the first embodiment, the case where the game program 102P2 is an adventure game was described, but the content of the game program 102P2 may be other content. In the second embodiment, the case where the game program 102P2 is a music performance game will be described. Further, 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 will be described in which only the first vibration instruction data is stored in the instruction data set and the second vibration instruction data is not stored. Therefore, in the adjustment process in the second embodiment, the total adjustment process of proportionally dividing the first instruction amplitude value and the second instruction amplitude value is not executed, and only the frequency characteristic adjustment process and the clamp adjustment process are executed. The clamp adjustment process in the second embodiment is different from the clamp adjustment process in the first embodiment, and does not execute the proportional division process between the first instruction amplitude after the frequency characteristic adjustment and the second instruction amplitude after the frequency characteristic adjustment, and simply determines whether or not the first instruction amplitude after the frequency characteristic adjustment exceeds the first clamp value.

[0167] In the example of Embodiment 2, the game program 102P2 is a music performance game. In the music performance game, the game controller 200 is pseudo-treated as a predetermined musical instrument. The predetermined musical instrument includes various musical instruments such as, for example, drums, cymbals, triangles, violins, trumpets, pianos, or other percussion instruments, stringed instruments, woodwind instruments, brass instruments, lead instruments, etc. In the example of Embodiment 2, based on the input from the user, the musical instrument in the game is played, and vibrations are generated in response to the musical instrument being played.

[0168] FIG. 15 is a flowchart showing the procedure of the generation process of the vibration instruction data 114 including the normalized amplitude value in the game apparatus 100 in Embodiment 2. The process of the flowchart shown in FIG. 15 is realized by the processor 101 executing the game program 102P2.

[0169] The execution of the flowchart shown in FIG. 15 is started when the execution of the game program 102P2 is started by the processor 101. The processor 101 acquires the type of the musical instrument selected by the user (step S301).

[0170] The processor 101 acquires operation data (step S302). The processor 101 determines whether or not an impact event has occurred based on the operation data (step S303). In Embodiment 2, the fact that the operation data associated in advance for each musical instrument selected in step S301 is acquired in step S302 is the generation condition of the impact event.

[0171] For example, the generation condition of the impact event when a drum is selected is that the rod-shaped game controller 200 is swung downward in a predetermined direction at a predetermined range of angular velocity. As another example, the generation condition of the impact event when a piano is selected is that the button on the surface of the game controller 200 is pressed. Thus, in the musical instrument performance game of Embodiment 2, the game controller 200 can be regarded as a drumstick, and the user can be made to perform a pseudo-performance.

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

[0173] 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).

[0174] FIG. 16 is a diagram for explaining an example of generating vibration instruction data 110 after adjustment processing based on the vibration file 105 in the second embodiment.

[0175] In the vibration control system 10 in the second embodiment, the vibration file 105 in the game program 102P2 that can execute a music performance game by the game device 100 is referred to, and first, vibration instruction data 114 is generated. The vibration file 105 is shown as a table in the upper left part of FIG. 16. In the vibration file 105 in the example of FIG. 16, each of the data representing the event name, the type of musical instrument, and the vibration content is associated with each other. The data representing the type of musical instrument includes data indicating a plurality of types of musical instruments that can be selected by the above-described user. Similar to the first embodiment, the data representing the vibration content includes frequency, number of wavelengths, and amplitude.

[0176] In the event name "first impact event" in the second embodiment, the musical instrument type "drum", the frequency "50", the number of wavelengths "2", and the amplitude "1" are associated. That is, the first impact event in the second embodiment is an event in which a voltage corresponding to the maximum output voltage allowed for the output of the amplifier 205 is output to the vibration motor 206 for two wavelengths at a wavelength of 50 Hz.

[0177] In Embodiment 2, the event name "Second Impact Event" is associated with the musical instrument type "cymbal", the frequency "100", the number of wavelengths "1", and the amplitude "0.8". That is, the Second Impact Event is an event in which a voltage corresponding to 80% of the maximum output voltage allowed for the output of the amplifier 205 is output to the vibration motor 206 for one wavelength at a wavelength of 100 Hz.

[0178] Also in Embodiment 2, the processor 101 generates vibration instruction data 114 including the normalized amplitude value. In Embodiment 2, the time-series vibration instruction data group generated based on the occurrence of the First Impact Event includes eight vibration instruction data 114 of "(1, 50), (1, 50), (1, 50), (1, 50), (1, 50), (1, 50), (1, 50), (1, 50)". Further, in Embodiment 2, the time-series vibration instruction data group generated based on the occurrence of the Second Impact Event includes two vibration instruction data 114 of "(0.8, 100), (0.8, 100)".

[0179] The processor 101 obtains the frequency characteristic adjustment law at each frequency using the data corresponding to the graph in FIG. 3 and executes the frequency characteristic adjustment process. Further, the processor 101 executes a clamp adjustment process on the indicated vibration value to generate the converted vibration instruction data 114 shown in FIG. 16. Regarding the converted vibration instruction data 110 corresponding to the first shock event, the processor 101 refers to the data corresponding to the graph in FIG. 3 and determines that when the vibration motor 206 operates at a frequency of 50 Hz, the frequency characteristic adjustment rate of the vibration motor 206 is "1". The processor 101 multiplies the normalized amplitude parameter "1" in the vibration instruction data 114 corresponding to the first shock event by the frequency characteristic adjustment rate "1" to calculate the amplitude value "1". When the vibration motor 206 is not vibrating when the first shock event occurs, the processor 101 obtains "1" as the first clamp value for each of the time-series vibration instruction data groups generated based on the occurrence of the first shock event. Since each of the time-series vibration instruction data groups does not exceed the first clamp value, the processor 202 ends the clamp adjustment process without changing the amplitude value "1" after the frequency characteristic adjustment.

[0180] Regarding the vibration instruction data 110 after the frequency characteristic adjustment process and the clamp adjustment process corresponding to the second shock event, the processor 101 refers to the data corresponding to the graph in FIG. 3 and determines that when the vibration motor 206 operates at a frequency of 100 Hz, the frequency characteristic adjustment rate is "0.5". The processor 101 multiplies the normalized amplitude value "0.8" in the vibration instruction data 114 corresponding to the second shock event by the frequency characteristic adjustment rate "0.5" to calculate the amplitude value "0.4". When the vibration motor 206 is not vibrating when the second shock event occurs, the processor 101 obtains "0.5" as the first clamp value for each of the time-series vibration instruction data groups generated based on the occurrence of the second shock event. Since each of the time-series vibration instruction data groups 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.

[0181] As a result, in Embodiment 2, the processor 101 outputs the data "(1,100), (1,100), (1,100), (1,100), (1,100), (1,100), (1,100), (1,100)" to the game controller 200 as the vibration instruction data 110 after the adjustment process corresponding to the first impact event. Further, the processor 101 outputs the data "(0.4,50), (0.4,50)" to the game controller 200 as the vibration instruction data 110 after the adjustment process corresponding to the second impact event. Thus, in Embodiment 2, in the music performance game, it is possible to give the user vibrations according to the selected musical instrument.

[0182] Also, in Embodiment 2, an amplitude value "0.8" is associated with the cymbal. Thus, 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. In Embodiment 2, the amplitude value "0.8" associated with the cymbal may correspond to the "amplitude value corresponding to the maximum output voltage" that the amplifier is allowed to output in the present disclosure.

[0183] [Embodiment 3] In Embodiment 2, an example where 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 Embodiment 3, a case where the game program 102P2 is a rhythm game will be described.

[0184] In Embodiments 1 and 2, examples of generating vibrations in response to user input have been described. However, the vibration control system 10 may generate vibrations at a predetermined timing instead of user input. In the example of Embodiment 3, the processor 101 generates the vibration instruction data 110 after the adjustment process by executing the flowchart in FIG. 17 and the flowchart in FIG. 18 in parallel.

[0185] The rhythm game of Embodiment 3 is a game that outputs music and tests the user's sense of rhythm by 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 the operation. In the game of Embodiment 3, vibrations serving as a rhythm reference are output at regular time intervals. This is referred to as "beat vibrations". In Embodiment 3, the operation that the user should perform at the predetermined timing is an operation of swinging a rod-shaped game controller 200 at a predetermined angular velocity or more. Hereinafter, the operation of swinging the rod-shaped game controller 200 at a predetermined angular velocity or more is referred to as a "swinging operation". In the rhythm game of Embodiment 3, points are added when the swinging operation is performed at the predetermined timing, and the final score is displayed to the user when the music ends. By outputting the beat vibrations at regular intervals, it becomes easier for the user to keep timing. The operation timing of the user may be made to coincide with the beat timing.

[0186] FIG. 17 is a flowchart showing the execution procedure of the rhythm game in Embodiment 3. The processing of the flowchart shown in FIG. 17 is realized by the processor 101 executing the game program 102P2.

[0187] The processor 101 starts music playback (step S401). The music in step S401 can be, for example, classical music, the BGM of the game, or the like. The processor 101 acquires operation data (step S402). The processor 101 determines whether a swinging operation has occurred (step S403).

[0188] If the swinging operation has not occurred (NO in step S403), the processor 101 executes other processing for advancing the rhythm game and returns the processing to step S401. If the swinging operation has occurred (YES in step S403), the processor 101 determines whether the swinging operation in step S403 was performed at the correct timing (step S404).

[0189] If the shaking operation is not performed at the correct timing (NO in step S404), the processor 101 executes other processes for advancing the rhythm game and returns the process to step S401. If the shaking operation is performed at the correct timing (YES in step S404), the processor 101 performs a point addition process in the rhythm game (step S405). After the completion of the point addition process, the processor 101 executes other processes for advancing the rhythm game and returns the process to step S401.

[0190] FIG. 18 is a flowchart showing a procedure of a generation process of vibration instruction data 114 including a normalized amplitude value in the game device 100 according to the third embodiment. The processor 101 determines whether it is the beat timing (step S501). The beat timing is a fixed time interval. If it is not the beat timing (NO in step S501), the processor 101 repeats the process of step S501.

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

[0192] As described above, in the third embodiment, instead of generating vibration based on the user's input, vibration is generated at a predetermined timing in the music based on the output of the music. Thereby, in the rhythm game of the third embodiment, the timing at which the shaking operation should be performed can be recognized by the user using vibration. Further, as described in the first embodiment, in the vibration control system 10, a strong vibration can be given by not performing the interpolation process at the start. Thereby, in the third embodiment, the user can also recognize the vibration during the period in which the user is performing the shaking operation.

[0193] [Fourth Embodiment] In Embodiment 1, an example in which the frequency characteristic adjustment process corresponding to steps S106 and S107 in FIG. 6 is executed by the processor 101 on the game device 100 side has been described. However, the frequency characteristic adjustment process may be executed by the processor 202 on the game controller 200 side. In addition, in Embodiment 4, the description of the configuration overlapping with that of Embodiment 1 will not be repeated.

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

[0195] FIG. 20 is a flowchart showing a control data generation process procedure executed by the game controller 200 in Embodiment 4. In Embodiment 4, after updating the current phase data in step S209, the processor 202 executes a frequency characteristic adjustment process (step S209B). In step S209B, the processor 202 specifies a frequency characteristic adjustment rate corresponding to the current frequency data updated in step S208 with reference to the frequency characteristic data, and multiplies the current amplitude data in step S207 by the specified frequency characteristic adjustment rate to adjust the amplitude value of the current amplitude data. That is, in Embodiment 4, the frequency characteristic adjustment process is executed not for each vibration instruction cycle but for each control cycle.

[0196] Therefore, even when the frequency indicated by the current vibration instruction data changes from the frequency indicated 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. Thus, for example, even when the frequency is gradually changed from 50 Hz to 150 Hz, since the frequency characteristic adjustment corresponding to the vicinity of the frequency 100 Hz during the change can be executed, in the fourth embodiment, even without executing the clamp adjustment process, it is possible to suppress the change in the unintended behavior during the process of gradually changing the frequency, and it is possible to determine an appropriate amplitude value according to the frequency in units of the control cycle.

[0197] All the disclosed embodiments should be considered illustrative in all respects and not restrictive. The scope of the present invention is shown not by the above description but by the claims, and it is intended that all modifications within the meaning and scope equivalent to the claims are included.

Explanation of Reference Numerals

[0198] 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 Timings.

Claims

1. A vibration control system including a main body part and an operation part having a vibration motor, wherein the main body part comprises means for generating vibration instruction data for designating a frequency and an amplitude, and means for transmitting the vibration instruction data to the operation part, and the operation part comprises means for storing frequency characteristic data regarding a voltage that is allowed to be input to the vibration motor at each frequency, or a voltage that is allowed to be output by an amplifier that controls the vibration motor at each frequency, means for receiving the transmitted vibration instruction data, means for referring to the frequency characteristic data based on the frequency related to the instruction by the received vibration instruction data to determine an allowable value of the voltage that is allowed to be input or the voltage that is allowed to be output, and for determining an adjusted amplitude based on the amplitude related to the instruction by the vibration instruction data and the determined allowable value, and means for generating control data based on the designated frequency and the adjusted amplitude, and for controlling the vibration motor using the control data. A vibration control system.

2. The frequency characteristic data is data indicating a ratio to the maximum input voltage of the vibration motor or the maximum output voltage of the amplifier, and the determination of the adjusted amplitude is performed by multiplying the amplitude related to the instruction by the vibration instruction data by the ratio. The vibration control system according to claim 1.

3. The operation part further comprises means for determining an interpolation frequency of a second cycle having a cycle shorter than a first cycle which is an instruction cycle of the vibration instruction data so as to interpolate between the frequency indicated by the previous vibration instruction data and the frequency indicated by the current vibration instruction data, and further comprises means for determining an interpolation amplitude of the second cycle so as to interpolate between the amplitude indicated by the previous vibration instruction data and the amplitude indicated by the current vibration instruction data, the determination of the adjusted amplitude is performed by referring to the frequency characteristic data based on the interpolation frequency of the second cycle to determine the allowable value of the second cycle, and by generating the adjusted amplitude of the second cycle based on the determined allowable value of the second cycle and the interpolation amplitude of the second cycle, and the means for controlling controls the vibration motor by the interpolation frequency of the second cycle and the adjusted amplitude of the second cycle. The vibration control system according to claim 2.

4. There are multiple types of the operation parts, The means for storing the frequency characteristic data stores different data according to the type of the operation unit, the vibration control system according to claim 1 or 2.

5. The plurality of types of operation units have vibration motors with different characteristics according to the type, the vibration control system according to claim 4.

6. A program used for a vibration control system including a main body unit and an operation unit having a vibration motor, in the computer of the operation unit, means for obtaining vibration instruction data for designating a frequency and an amplitude, Based on the frequency related to the instruction by the obtained vibration instruction data, referring to the frequency characteristic data regarding the voltage that is allowed to be input to the vibration motor at each frequency, or the voltage that is allowed to be output by the amplifier that controls the vibration motor at each frequency, determining the allowable value of the voltage that is allowed to be input or the voltage that is allowed to be output, and a process of determining an adjusted amplitude based on the amplitude related to the instruction by the vibration instruction data and the determined allowable value, A program that generates control data based on the designated frequency and the adjusted amplitude and executes a process of controlling the vibration motor using the control data.

7. The frequency characteristic data is data indicating a ratio to the maximum input voltage of the vibration motor or the maximum output voltage of the amplifier, The determination of the adjusted amplitude is performed by multiplying the amplitude indicated by the vibration instruction data by the ratio, the program according to claim 6.

8. In the computer of the operation unit, further, a process of determining an interpolation frequency of a second cycle shorter than a first cycle that is an instruction cycle of the vibration instruction data so as to interpolate between the frequency indicated by the previous vibration instruction data and the frequency indicated by the current vibration instruction data, executing a process of determining an interpolation amplitude of the second cycle so as to interpolate between the amplitude indicated by the previous vibration instruction data and the amplitude indicated by the current vibration instruction data, The determination of the adjusted amplitude is performed by referring to the frequency characteristic data based on the interpolation frequency of the second cycle to determine the allowable value of the second cycle, and generating the adjusted amplitude of the second cycle based on the determined allowable value of the second cycle and the interpolation amplitude of the second cycle. The program according to claim 6, wherein the process of controlling controls the vibration motor based on the interpolation frequency of the second cycle and the adjusted amplitude of the second cycle.

9. There are a plurality of types of the operation units, The program according to any one of claims 6 to 8, wherein the frequency characteristic data includes data different according to the type of the operation unit.

10. The program according to claim 9, wherein the plurality of types of operation units have vibration motors with different characteristics according to the type.

11. A method used in a vibration control system including a main body unit and an operation unit having a vibration motor, wherein a computer of the main body unit generates vibration instruction data for specifying a frequency and an amplitude, executes a step of transmitting the vibration instruction data to the operation unit, wherein a computer of the operation unit receives the transmitted vibration instruction data, refers to frequency characteristic data regarding a voltage that is allowed to be input to the vibration motor at each frequency or a voltage that is allowed to be output by an amplifier that controls the vibration motor at each frequency based on the frequency indicated by the received vibration instruction data, determines an allowable value of the voltage that is allowed to be input or the voltage that is allowed to be output, and determines an adjusted amplitude based on the amplitude indicated by the vibration instruction data and the determined allowable value, generates control data based on the indicated frequency and the adjusted amplitude, and executes a step of controlling the vibration motor using the control data.