Vibration control system, computer program product, information processing method, and game controller
By introducing a vibration control system into the game system, and using vibration indication data to generate control data to control the vibration motor, the problem of insufficient authenticity and variation of vibration sensation in the prior art is solved, and high-quality vibration effect is achieved.
Patent Information
- Application Number
- CN202411924940.X
- Authority / Receiving Office
- CN · China
- Patent Type
- Applications(China)
- Current Assignee / Owner
- Priority Date
- 2024-11-21
- Filing Date
- 2024-12-25
- Publication Date
- 2025-07-01
AI Technical Summary
There is room for improvement in the authenticity and variation of vibration sensation in the existing gaming system.
By introducing a unit for acquiring vibration indication data in the vibration control system, control data is generated to control the vibration motor, and appropriate control data is selected to be generated by judging whether the previous control data is zero, so as to suppress noise and generate good rising vibration.
It realizes noise suppression and generates high-quality vibration effects, improving the authenticity and variation of vibration.
Smart Images

Figure CN120237864A_ABST
Abstract
Description
Technical Field
[0001] The present disclosure relates to a vibration control system, a computer program product, a method, and a game controller. Background Art
[0002] Conventionally, there have been game systems that give vibration effects to users playing games. For example, a vibration signal generation system for games is disclosed in Japanese Unexamined Patent Application Publication No. 2016-202486. Summary of the Invention
[0003] There is room for improvement in the authenticity and variability of the vibration feeling in conventional game systems.
[0004] (Structure 1) A vibration control system in a certain embodiment is a vibration control system that controls a vibration motor. The vibration control unit includes the following units: a unit that acquires vibration instruction data indicating at least an amplitude; a unit that generates control data based on the acquired vibration instruction data and uses the control data to control the vibration motor; and a unit that determines at least one of whether the previous control data is zero, whether the previous control data is substantially zero, whether the previous amplitude is zero, and whether the previous amplitude is substantially zero. In the control, according to the determination, it is selected whether to generate control data that gradually makes the amplitude approach the amplitude related to the current vibration instruction data or to generate control data corresponding to the amplitude related to the current vibration instruction data. In addition, the unit that makes the determination may be a unit that determines whether it is zero or a unit that determines whether it is substantially zero. Thus, the vibration control system can suppress the generation of noise and generate a vibration with a good rise.
[0005] (Structure 2) According to Structure 1, wherein, in the control, interpolation amplitude data of a second period shorter than a first period that gradually makes the amplitude approach the amplitude related to the current vibration instruction data is generated, and control data of the second period corresponding to the interpolation amplitude data is generated, and when it is determined by the determination that the previous amplitude or the previous control data is zero or substantially zero, control data of each of the second periods is generated corresponding to the amplitude related to the current vibration instruction data.
[0006] (Structure 3) According to Structure 2, wherein the vibration instruction data is data that also indicates a frequency, and in the control, interpolation frequency data of a second period shorter than a first period that gradually makes the frequency approach the frequency related to the current vibration instruction data is generated, and control data of the second period corresponding to the interpolation frequency data is generated, and when it is determined by the determination that the previous amplitude or the previous control data is zero or substantially zero, in each of the second periods, control data corresponding to the frequency related to the vibration instruction data is generated.
[0007] (Structure 4) According to any one of Structures 1 to 3, wherein the vibration indication data is data that also indicates the frequency, and the vibration control system further includes the following unit: This unit stores frequency characteristic data related to 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. In the control, based on the frequency related to the vibration indication data, the frequency characteristic data is referred to determine the allowable value of the voltage that is allowed to be input or the voltage that is allowed to be output, and based on the amplitude related to the vibration indication data and the determined allowable value, the amplitude used in the control is determined.
[0008] (Structure 5) According to Structure 4, wherein the frequency characteristic data is data representing the ratio of the voltage that is allowed to be input at each frequency to the maximum input voltage of the vibration motor, or the ratio of the voltage that is allowed to be output to the maximum output voltage of the amplifier.
[0009] (Structure 6) According to any one of Structures 1 to 3, wherein the following unit is further included: When the vibration indication data is not obtained, this unit generates the vibration indication data with an amplitude of zero.
[0010] (Structure 7) The program in a certain embodiment causes the computer of the vibration control system that controls the vibration motor to perform the following steps: Obtain vibration indication data that at least indicates the amplitude; Generate control data based on the obtained vibration indication data and use the control data to control the vibration motor; and Determine at least one of whether the previous control data is zero, whether the previous control data is approximately zero, whether the previous amplitude is zero, and whether the previous amplitude is approximately zero. In the control, when it is determined through the determination that the previous control data is not zero or not approximately zero, generate control data that gradually makes the amplitude approach the amplitude related to the current vibration indication data, and when it is determined through the determination that the previous control data is zero or approximately zero, generate control data corresponding to the amplitude related to the current vibration indication data.
[0011] (Structure 8) According to Structure 7, wherein the program causes the computer to further perform the following steps: Generate interpolation amplitude data for a second period shorter than the first period that gradually makes the amplitude approach the amplitude related to the current vibration indication data, and generate control data for the second period corresponding to the interpolation amplitude data, and when it is determined through the determination that the previous amplitude or the previous control data is zero or approximately zero, generate control data for each of the second periods corresponding to the amplitude related to the current vibration indication data.
[0012] (Structure 9) According to Structure 7 or 8, wherein the vibration indication data is data that also indicates the frequency. In the control, interpolation frequency data of a second period shorter than the first period is generated to gradually approach the frequency related to the current vibration indication data, and control data of the second period corresponding to the interpolation frequency data is generated. When it is determined through judgment that the amplitude of the previous time or the control data of the previous time is zero or approximately zero, control data corresponding to the frequency related to the vibration indication data is generated in each of the second periods.
[0013] (Structure 10) According to any one of Structures 7 to 9, wherein the vibration indication data is data that also indicates the frequency. In the control, based on the frequency indicated by the vibration indication data, referring to frequency characteristic data related to the voltage allowed to be input to the vibration motor at each frequency or the voltage allowed to be output by the amplifier controlling the vibration motor at each frequency, the allowable value of the voltage allowed to be input or the voltage allowed to be output is determined, and the amplitude used in the control is determined based on the amplitude related to the vibration indication data and the determined allowable value.
[0014] (Structure 11) According to Structure 10, wherein the frequency characteristic data is data representing the ratio of the voltage allowed to be input at each frequency to the maximum input voltage of the vibration motor, or the ratio of the voltage allowed to be output to the maximum output voltage of the amplifier.
[0015] (Structure 12) According to any one of Structures 7 to 9, wherein the program causes the computer to further execute the following step: when there is no vibration indication data, generate vibration indication data with an amplitude of zero.
[0016] (Structure 13) According to any one of Structures 7 to 9, wherein the program is a program for a vibration system including a main body part and a vibration part, and the program is executed by the computer of the vibration part.
[0017] (Structure 14) According to Structure 13, wherein the vibration part is an operation part separated from the main body part.
[0018] (Structure 15) The method in a certain embodiment is an information processing method for a vibration control system. In this method, vibration indication data that at least indicates the amplitude is acquired; control data is generated based on the acquired vibration indication data, and the vibration motor is controlled using the control data; and it is determined whether the previous control data is zero or approximately zero. In the control, when it is determined through the determination that the previous control data is not zero or not approximately zero, control data is generated to gradually make the amplitude approach the amplitude related to the current vibration indication data, and when it is determined through the determination that the previous control data is zero or approximately zero, control data corresponding to the amplitude related to the current vibration indication data is generated.
[0019] (Structure 16) The game controller in a certain embodiment is equipped with the program according to any one of Structures 7 to 9, a vibration motor, and a computer, and the program is executed by this computer.
[0020] The above and other objects, features, aspects, and advantages of the present invention should become clear through the following detailed description of the present invention that can be understood in association with the drawings. BRIEF DESCRIPTION OF THE DRAWINGS
[0021] Figure 1 It is a schematic diagram showing an example of the vibration control system of this embodiment.
[0022] Figure 2 It is a diagram for explaining an example of generating vibration indication data based on a vibration file in Embodiment 1.
[0023] Figure 3 It is a diagram showing frequency characteristic data.
[0024] Figure 4 It is a diagram for explaining the adjustment process.
[0025] Figure 5 It is a flowchart showing the process of generating vibration indication data including normalized amplitude values, which is executed in the game device of Embodiment 1.
[0026] Figure 6 It is a flowchart showing the transformation process of vibration indication data executed by the game device of Embodiment 1.
[0027] Figure 7 It is a flowchart showing the process of generating control data executed by the game controller.
[0028] Figure 8 It is a flowchart showing the process of the start process in step S214.
[0029] Figure 9 It is an example of the waveform of the control data generated based on the first impact event.
[0030] Figure 10 It is a diagram showing the reference waveform between times T13 and T14.
[0031] Figure 11 It is a diagram showing the waveform of the vibration at the end output as a result of the processing in units of the control period corresponding to the period between times T13 and T14.
[0032] Figure 12 It is an example of the waveform of the control data generated based on the second impact event.
[0033] Figure 13 It is an example of the waveform of the control data generated based on the third impact event.
[0034] Figure 14 It is an example of the waveform of the modified example.
[0035] Figure 15 It is a flowchart showing the process of generating vibration indication data including the normalized amplitude value in the game device of Embodiment 2.
[0036] Figure 16 It is a diagram for explaining an example of generating vibration indication data based on a vibration file in Embodiment 2.
[0037] Figure 17 It is a flowchart showing the execution process of the rhythm game of Embodiment 3.
[0038] Figure 18 It is a flowchart showing the process of generating vibration indication data including the normalized amplitude value in the game device of Embodiment 3.
[0039] Figure 19 It is a flowchart showing the transformation process of the vibration indication data executed by the game device of Embodiment 4.
[0040] Figure 20 It is a flowchart showing the process of generating control data executed by the game controller of Embodiment 4. Detailed Embodiment
[0041] This embodiment will be described in detail with reference to the accompanying drawings. In addition, for the same or corresponding parts in the drawings, the same reference numerals are assigned, and the description of that part will not be repeated.
[0042] [Embodiment 1]
[0043] [A. Outline]
[0044] Describe the structural example of the vibration control system 10 that controls the vibration motor 206 in this embodiment.
[0045] Figure 1 It is a schematic diagram showing an example of the vibration control system 10 of this embodiment. The vibration control system 10 of this embodiment is applied to a game system, for example. The processor, memory, communication interface, etc. of the vibration control system 10 constitute a computer. In addition, 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. In addition, a computer may also be composed of multiple information processing devices, device processors, etc.
[0046] The game device 100 progresses the game by causing a display device such as a TV monitor, LCD, organic EL (Electro Luminescence), or head-mounted display (HMD: Head Mounted Display) to display video or images to the user according to a program. The user operates the game controller 200 based on the video or images displayed on the display device. The game device 100 receives the input from the user to the game controller 200 and progresses the game according to the input of the user.
[0047] [B. Structure of the Game Device]
[0048] The game device 100 has a processor 101, a non-volatile memory 102, a volatile memory 103, and a communication interface (I / F) 104. The processor 101 is a processing entity (processing unit) 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, and expands and executes these programs in the volatile memory 103. In this disclosure, the program means both a single program and a program group including multiple programs. In the case of a program group, each program may be stored in a different memory and executed by a different processor. For example, it may also be that a part of the program is executed by the processor 101 and another part of the program is executed by the MCU 201.
[0049] The processor 101 is a processing circuit, such as a CPU (Central Processing Unit). In addition, in this specification, the term "processor" includes, in addition to the usual meaning of a processing circuit such as a CPU, MPU (Micro Processing Unit), GPU (Graphics Processing Unit), etc. that executes processing according to the command codes described in a program, hardwired circuits such as ASICs and FPGAs. ASICs, FPGAs, and other hardwired circuits are pre-formed into circuits corresponding to the processing to be executed. Also, the "processor" in this specification can also include circuits integrating multiple functions such as an SoC (System on Chip). The processor 101 can also be, for example, an SoC integrating the functions of a CPU and a GPU. Additionally, a mode in which the processing executed by a single processor in this embodiment is shared and executed in cooperation by multiple processors is also included in this specification as a modification example.
[0050] The non-volatile memory 102 is a non-volatile storage device (storage medium) accessible by the processor 101. For example, an SSD (Solid State Drive), NAND flash memory, or hard disk can be used. Additionally, the non-volatile memory 102 can also be a storage medium such as an optical disc or cartridge that can be attached to and detached from the game device 100. 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. It also includes a program for sending various data stored in the volatile memory 103 to the game controller 200. The game program 102P2 is a program for executing a game. For example, it is stored in a game cartridge or disc that can be detachably installed in the game device 100, or is downloaded to the non-volatile memory 102 via the Internet. The game program 102P2 includes a vibration file 105.
[0051] The vibration file 105 contains information indicating the vibration action for each vibration event. Vibration events include events that generate impact vibrations, but can also include events that generate other vibrations. The impact vibration action is an action that enables the user to feel the impactful vibration generated during the progress of the game, and is a short-term and intense vibration. For example, the impact vibration action is indicated corresponding to events such as collisions, explosions, and shootings of guns between objects in the virtual game space, and is also used for the expression of beats, etc. More specifically, regarding the amplitude, an amplitude equivalent to the maximum allowable voltage of the vibration motor 206 is specified. The specified amplitude does not need to be the same as the maximum allowable voltage of the vibration motor 206, as long as it is an amplitude close to the maximum allowable voltage.
[0052] The specified amplitude can also be set to, for example, 80% or more of the maximum allowable voltage. Additionally, if it is a vibration motor with a large output, it can also be an output of 60% or more of the maximum allowable voltage. Regarding the vibration duration, for example, it can be set to a period less than or equal to one wavelength at the lower limit frequency that the game program 102P2 can specify. It can also be a period less than or equal to two wavelengths. Regarding the vibration duration, it can also be set to a period of 50 ms (milliseconds) or less, and can also be set to a period of 25 ms or less. The frequency can also be set without any special restrictions. When a low frequency is specified, a heavy impact vibration is formed, and when a high frequency is specified, a sharp impact vibration is formed. In addition, when a control input larger than one wavelength (e.g., two wavelengths) is performed within a period of 50 ms or less, a stronger impact vibration can be set compared to the case of one wavelength. When the vibration period is a short period such as 50 ms, humans will recognize the difference between one wavelength and two wavelengths as a difference in vibration intensity.
[0053] For example, the frequency can also be changed according to the magnitude of the collision in the virtual game space (the speed of the collision, the weight of the object that has collided, etc.). That is, the effect of the impact vibration can be changed by changing the frequency. It can also be that the frequency is sometimes restricted by various conditions of the system. An impact event is an event that is the main cause of the generation of the impact vibration effect, in other words, it is a condition that causes the generation of the impact vibration effect.
[0054] Vibration events include normal vibration events as events other than impact vibration events. A normal vibration event can, for example, also be an event that generates a vibration for a period specified to be longer than a certain period (e.g., a period longer than two wavelengths), or a vibration that is below a certain level relative to the maximum allowable voltage of the vibration motor. In a normal vibration event, similar to an impact vibration event, a desired frequency, a desired amplitude, and a desired period are specified. The game program 102P2 can specify an appropriate frequency, amplitude, and period according to the nature of the vibration event.
[0055] The volatile memory 103 is a volatile storage device (storage medium) that the processor 101 can access. 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, for example, an area for temporarily storing data generated when the processor 101 executes the game program 102P2.
[0056] The operation data area 103B2 is an area for temporarily storing the operation data received from the game controller 200. The operation data is data representing the input made by the user to the game controller 200, and is the detection values of the acceleration sensor 208, the gyro sensor 209, the operation switch 210, and the like.
[0057] 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 moment. The vibration instruction data area 103B3 of the present embodiment is configured to be able to store two vibration instruction data corresponding to one moment. In addition, in this specification, the term "memory" includes at least both the non-volatile memory 102 and the volatile memory 103.
[0058] 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, but in the present embodiment, the game device 100 and the game controller 200 perform communication conforming to the Bluetooth (registered trademark) standard. The communication between the game device 100 and the game controller 200 may also be wired communication, and in this case, the communication interface 104 can be, for example, a terminal conforming to the USB (Universal Serial Bus) standard or the like.
[0059] The game device 100 advances the game based on the execution of the game program 102P2. During the progress of the game, an impact event can occur in the virtual game space, and this impact event is an expression including large impacts such as explosions and collisions. The game device 100 also generates the above-mentioned vibration instruction data according to the occurrence of the impact event and sends it to the game controller 200. The vibration instruction data will be described in detail later. The game device 100 may also generate a plurality of vibration instruction data in order to vibrate the vibration motor 206 at a certain moment. That is, the vibration motor 206 can vibrate based on a plurality of vibration instruction data at a certain moment. In the present embodiment, the vibration motor 206 vibrates based on two vibration instruction data at a certain moment. In addition, the vibration motor 206 may also vibrate based on three or more vibration instruction data at a certain moment.
[0060] [C. Structure of the Game Controller]
[0061] 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 operation switches 210.
[0062] Typically, the game controller 200 is a controller that accepts user input by being held in the user's two hands or one hand and having the user's fingers operate the operation switches 210. In addition, the game controller 200 is not limited to a game controller held by the user's hand. For example, it can also be a general keyboard or mouse equipped with a vibration motor 206, or it can be a form that is placed on the floor to allow the user's foot sole to contact the sensor, thereby accepting input.
[0063] 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 structure as the above-mentioned processor 101, non-volatile memory 102, volatile memory 103, and communication interface 104. Therefore, the description of these structures will not be repeated. However, in order to reduce costs, the processor 202 can also be a processor with a lower processing capacity than the processing capacity of the processor 101.
[0064] The non-volatile memory 203 stores an MCU program 203P. The MCU program 203P includes a program for performing various processes described later, and a program for sending the detection values of the operation switches 210, the acceleration sensor 208, and the gyro sensor 209 to the game device 100 via the communication interface 207. And, in the present embodiment, the MCU program 203P includes a program for generating control data to be sent to the amplifier 205 based on vibration instruction data received from the game device 100. Typically, the control data is data representing a voltage value of a waveform for driving the vibration motor 206. The control data is output at a prescribed period (unit time). This period is called the control period. In the present embodiment, the control data is generated based on the vibration instruction data.
[0065] The volatile memory 204 has a vibration indication data area 204B1, a control data area 204B2, an operation data area 204B3, a current amplitude data area 204V1, a current frequency data area 204V2, a current phase data area 204V3, a previous amplitude data area 204V4, and a previous frequency data area 204V5. The vibration indication data area 204B1 is an area for temporarily storing the vibration indication data received from the game device 100. The control data area 204B2 is an area for temporarily storing the control data generated by the processor 202. The operation data area 204B3 is an area for temporarily storing operation data. Regarding 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, they will be described in the Figure 6 below. Each area in the volatile memory 204 for storing various data can store at least one data corresponding to a certain moment. Each area in the volatile memory 204 in this embodiment stores two data corresponding to a certain moment.
[0066] The content of the control data area 204B2 in the volatile memory 204 is transmitted to the amplifier 205, for example, through DMA (Direct Memory Access). The amplifier 205 in this embodiment is an amplifier that performs PWM (Pulse Width Modulation) control at a frequency of 8 kHz. The amplifier 205 determines the duty ratio every 0.125 ms based on the received control data and supplies power to the vibration motor 206.
[0067] The vibration motor 206 can 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 is not limited. The vibration motor 206 can also be a flat (coin) type motor, etc. When the vibration motor 206 is an eccentric motor, in the vibration motor 206, a weight with a biased shape is installed on the rotating shaft, and vibration is generated by rotation. Thus, the vibration motor 206 can give vibration to the user holding the game controller 200 in which the vibration motor 206 is accommodated.
[0068] The acceleration sensor 208 detects the magnitude of the linear acceleration along the specified three-axis directions. In addition, the acceleration sensor 208 can also detect the acceleration in one-axis direction or two-axis directions. The gyro sensor 209 detects the tilt, angular velocity, angular acceleration, etc. of the game controller 200 and outputs the detection results to the operation data area 204B3.
[0069] 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 related to 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.
[0070] Typically, the operation switch 210 is at least one button, key, and / or joystick provided on the surface of the game controller 200. The operation switch 210 can be, for example, a button corresponding to a character such as an A button or a B button, a cross key for inputting the up, down, left, and right directions, a 3D joystick for inputting the tilt direction and the tilt amount, etc.
[0071] [D. Process of generating vibration indication data based on a vibration file]
[0072] Figure 2 is a diagram for explaining an example of generating vibration indication data based on the vibration file 105 in Embodiment 1. In Figure 2 , an example of generating the normalized vibration indication data 114 according to the occurrence of an impact vibration event is described. The vibration indication data includes a value for specifying a frequency (hereinafter referred to as a frequency value) and a value for specifying an amplitude (hereinafter referred to as an amplitude value). One vibration indication data can include one frequency value and one amplitude value. The processor 101 generates the normalized vibration indication data 114 based on the vibration file 105.
[0073] In this embodiment, in the vibration file 105 and the vibration indication 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. After that, the processor 101 performs a total adjustment process, a frequency characteristic adjustment process, and a clamping adjustment process on the normalized amplitude value in the vibration indication data 114, thereby transforming it into an adjusted amplitude value. In addition, these adjustment processes are not necessary. In particular, when the frequency characteristic adjustment process (described later) is performed by the processor 202 on the game controller 200 side, the clamping adjustment process is not required. Also, normalizing the amplitude value is not necessary.
[0074] The total adjustment process is an adjustment process for proportionally distributing the amplitude values of two vibration indication data with a reference of 1.0 when two vibration indication data are generated to make the vibration motor 206 vibrate at the same certain moment. The frequency characteristic adjustment process is an adjustment process for adjusting the amplitude value included in the vibration indication data according to the frequency value included in the vibration indication data and the maximum voltage allowed to be input at that frequency. The clamping adjustment process is an adjustment process for determining the amplitude value that can suppress the undesired behavior change during the gradual change of the frequency of the vibration motor 206 when the frequency value included in the vibration indication data is different from the frequency value included in the previous vibration indication data. In this way, by performing the adjustment process of the amplitude value, it is possible to facilitate the production of game programs and improve the vibration intensity, thereby improving the effect of impact vibration. After that, the game device 100 sends the vibration indication data 110 after the adjustment process described below to the game controller 200. The content of various data will be described below.
[0075] In the present embodiment, the vibration indication data designates the vibration action for a period of T×N (msec) by designating the vibration indication data of one or more (N) vibration indication periods T (msec) in chronological order. By adopting such a data format, it is possible to easily designate the vibration action in which the amplitude value and the frequency change. It is also possible to designate the vibration duration by the duration and the number of waves.
[0076] Next, use Figure 2 to illustrate the specific content of various data. In the vibration control system 10 of the present embodiment, first, the game device 100 generates the vibration indication data 114 by referring to the vibration file 105 in the game program 102P2.
[0077] In the present embodiment, when the amplitude value is "1", the vibration control system 10 operates the amplifier 205 to apply a voltage value corresponding to the upper limit of its output voltage 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 represented by the amplitude value in the vibration indication data 114 does not represent the voltage value itself, but represents the ratio with respect to the upper limit of the output voltage of the amplifier 205. However, as described later, the amplitude value included in the vibration indication data 114 is adjusted by the total adjustment process, the frequency characteristic adjustment process, and the clamping adjustment process.
[0078] The game device 100 performs the above various adjustment processes to transform the vibration indication data 114 into the vibration indication data 110 after the adjustment process described below.
[0079] Through such a process, the game device 100 generates the vibration indication data 110 after adjustment processing, and sends the generated vibration indication data 110 after adjustment processing to the game controller 200. Hereinafter, details of various data will be described.
[0080] In Figure 2 the left part of, the vibration file 105 is shown as a table. In Figure 2 it, an example of the vibration file 105 in the case where the game program 102P2 is an adventure game is shown. In Figure 2 the vibration file 105 in the example of, the respective data indicating the event name, the event occurrence condition, and the vibration content are associated with each other. The data indicating the event occurrence condition includes, for example, the types of 2 objects. The data indicating the vibration content includes the frequency, the number of wavelengths, and the amplitude. The vibration duration may be specified instead of the number of wavelengths.
[0081] Figure 2 The table showing the vibration file 105 in the example of is a table with the event name as the primary key. To 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. In addition, to the event name "First Impact Event", the frequency "100", the number of wavelengths "1", and the amplitude "1" are associated. That is, it is shown that: when the first impact event occurs, a waveform signal with a frequency of 100 Hz is output to the vibration motor 206, which is equivalent to 1 wavelength at a frequency of 100 Hz, and the voltage corresponding to the maximum output voltage of the amplifier 205 at a frequency of 100 Hz or the maximum input voltage allowed to be input to the vibration motor 206 is used as the amplitude, and the frequency is 100 Hz.
[0082] To 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. In addition, to the event name "Second Impact Event", the frequency "50", the number of wavelengths "1", and the amplitude "1" are associated. That is, it is shown that: when the second impact event occurs, a waveform signal with a frequency of 50 Hz is output to the vibration motor 206, which is equivalent to 1 wavelength at a frequency of 50 Hz, and the voltage corresponding to the maximum output voltage of the amplifier 205 at a frequency of 50 Hz or the maximum input voltage allowed to be input to the vibration motor 206 is used as the amplitude, and the frequency is 50 Hz.
[0083] 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 the object representing the sword collides with the object representing the rock in the virtual space of the game. In addition, the event name "Third Impact Event" is associated with a frequency of "50", a number of wavelengths of "2", and an amplitude of "1". That is, it is shown that when the Third Impact Event occurs, a waveform signal with a frequency of 50 Hz is output to the vibration motor 206, which corresponds to 2 wavelengths at a frequency of 50 Hz, and the voltage corresponding to the maximum output voltage of the amplifier 205 or the maximum input voltage allowed to be input to the vibration motor 206 at a frequency of 50 Hz is used as the amplitude, and the frequency is 50 Hz. In addition, the number of wavelengths may not be an integer multiple.
[0084] Next, the content of the vibration instruction data 114 will be described. In Figure 2 the right part, the vibration instruction data 114 generated by the processor 101 based on the vibration file 105 is shown. 2 pieces of vibration instruction data are generated in the First Impact Event, 4 pieces of vibration instruction data are generated in the Second Impact Event, and 8 pieces of vibration instruction data are generated in the Third Impact Event.
[0085] In Figure 2 the shown vibration instruction data 116A, "1" is specified as the amplitude value and "100" is specified as the frequency value. In addition, in the vibration instruction data 116B, "1" is specified as the amplitude value and "50" is specified as the frequency value.
[0086] Regarding the vibration instruction data 114 generated according to the occurrence of the First Impact Event, the 2 pieces of vibration instruction data "(1, 100), (1, 100)" are arranged in time series. The multiple pieces of vibration instruction data included in the vibration instruction data 114 are stored in the order of output to the vibration motor 206. The set of vibration instruction data arranged in time series in the order of output to the vibration motor 206 is called the "time series vibration instruction data group".
[0087] The time series vibration instruction data group generated according to the occurrence of the Second Impact Event consists of the 4 pieces of vibration instruction data "(1, 50), (1, 50), (1, 50), (1, 50)". The time series vibration instruction data group generated according to the occurrence of the Third Impact Event consists of the 8 pieces of vibration instruction data "(1, 50), (1, 50), (1, 50), (1, 50), (1, 50), (1, 50), (1, 50), (1, 50)".
[0088] The number of vibration indication data included in the time series vibration indication data group is defined based on the number of frequencies and wavelengths in the vibration file 105. One vibration indication data is data representing a waveform that outputs the frequency and amplitude indicated by the vibration indication data to the vibration motor 206 during a period of 5 ms. The frequency value "100 Hz" is associated with the first shock event in the vibration file 105. When the vibration motor 206 vibrates at 100 Hz, the period of one wavelength of the vibration waveform is 10 ms. Therefore, the vibration indication data 114 generated according to the first shock event includes two vibration indication data obtained by dividing 10 ms by 5 ms.
[0089] The frequency value "50 Hz" is associated with the second shock event in the vibration file 105. When the vibration motor 206 vibrates at 50 Hz, the period of one wavelength of the vibration waveform is 20 ms. Therefore, the vibration indication data 114 generated according to the second shock event includes four vibration indication data obtained by dividing 20 ms by 5 ms.
[0090] The frequency value "50 Hz" is associated with the third shock event in the vibration file 105. When the vibration motor 206 vibrates at 50 Hz, the period of two wavelengths of the vibration waveform is 40 ms. Therefore, the vibration indication data 114 generated according to the third shock event includes eight vibration indication data obtained by dividing 40 ms by 5 ms.
[0091] Next, a method for determining the period for outputting control data to the vibration motor 206 based on one vibration indication data will be described. In the present disclosure, the period for outputting control data to the vibration motor 206 based on one vibration indication data is referred to as the "vibration indication period". The vibration indication period is defined by the processor 101 according to the characteristics of the vibration motor 206. In the present embodiment, as described above, the vibration indication period is 5 ms.
[0092] The processor 101 executes the game program 102P2 to generate the vibration indication data 114, and transfers at least one vibration indication data 114 to the system program 102P1. The system program 102P1 performs adjustment processing on the received vibration indication data 114 to transform it into the adjusted vibration indication data 110. Next, the frequency characteristic data used in the frequency characteristic adjustment processing included in the adjustment processing will be described.
[0093] Figure 3 is a diagram showing the frequency characteristic data. In Figure 3The frequency characteristic data represented as a curve in [description] is data for defining the ratio of the upper limit of the voltage value allowed to be input at each frequency to the maximum output voltage of the amplifier. The frequency characteristic adjustment rate on the vertical axis is a value calculated by (the upper limit of the voltage value allowed to be input at each frequency) / (the maximum output voltage of the amplifier). The frequency characteristic data is used for the frequency characteristic adjustment process described later. The range of frequencies at which the vibration motor 206 can operate is determined according to the characteristics of the vibration motor 206, etc. In this embodiment, it is in the range of 40 Hz or more and 400 Hz or less. As Figure 3 shown, 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" refers to the frequency of the vibration motor 206 that is allowed to be utilized by the application program. Further, in this embodiment, when the game program 102P2 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 the system software or the like. In this embodiment, in the case of impact vibration of one wavelength, a frequency of 200 Hz or less is designated.
[0094] As a characteristic of the vibration motor 206, the maximum input voltage is defined for each frequency as the voltage that can be allowed to be input. The upper limit of the input voltage (the voltage input to the vibration motor 206) allowed at each frequency can be defined based on the input voltage when the displacement of the oscillator of the vibration motor 206 becomes the limit value. The vibration amount of the vibration motor 206 relative to the input varies according to the frequency. Therefore, the upper limit of the input voltage allowed at each frequency (the input voltage when the displacement of the oscillator becomes the limit value) varies according to the frequency. Considering these upper limits of the input voltage, the vibration control system 10 of this embodiment has the Figure 3 frequency characteristic data shown for adjusting the amplitude value represented by the vibration instruction data according to the frequency.
[0095] Figure 3 The frequency characteristic adjustment rate represented as the vertical axis in [description] is a value obtained by dividing the upper limit of the input voltage allowed at each frequency by the upper limit of the output voltage of the amplifier 205, and can take a value within the range of 0 to 1. A frequency with a low frequency characteristic adjustment rate can be said to be a frequency at which the oscillator has a large vibration amount relative to the input voltage.
[0096] It is also possible to hold data equivalent to the curve of Figure 3 in at least one of the system program 102P1 and the game program 102P2. As Figure 3As shown, the vibration motor 206 in Embodiment 1 has the following characteristics: it has good vibration efficiency when operating at 100 Hz. If a large voltage is input at this frequency, the vibration becomes excessive. Therefore, when operating at 100 Hz, the frequency characteristic adjustment rate is reduced to 0.5. Additionally, at frequencies with poor vibration efficiency, the frequency characteristic adjustment rate is increased to prevent the vibration from weakening. When operating at frequencies above 400 Hz, the allowable voltage value gradually decreases.
[0097] Next, a case where the processor 101 performs the above-described adjustment process on the amplitude value in the vibration instruction data 114 to generate the adjusted vibration instruction data 110 will be described. The amplitude value or frequency value of the indicated vibration data after performing the adjustment process is sometimes referred to as the adjusted amplitude value or the adjusted frequency value.
[0098] Figure 4 This is a diagram for explaining the adjustment process. The adjustment process is implemented by the processor 101 executing the system program 102P1. 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 accept an instruction data set including two pieces of vibration instruction data at a certain moment. Hereinafter, the two pieces of vibration instruction data included in the instruction data set will be referred to as the "first vibration instruction data" and the "second vibration instruction data". Additionally, the amplitude value specified by the first vibration instruction data will be referred to as the "first indicated amplitude value", and the frequency value specified by the first vibration instruction data will also be referred to as the "first indicated frequency value". Similarly, the amplitude value specified by the second vibration instruction data will be referred to as the "second indicated amplitude value", and the frequency value specified by the second vibration instruction data will also be referred to as the "second indicated frequency value".
[0099] The system program 102P1 processes the instruction data set for each of the above-described vibration instruction periods. For example, Figure 2 in the case where the first shock event and the second shock event occur at the same time, the vibration instruction data 116A can be transmitted to the system program 102P1 as the first vibration instruction data, and the vibration instruction data 116B can be transmitted to the system program 102P1 as the second vibration instruction data. In this case, the system program 102P1 causes the vibration motor 206 to vibrate so as to give the user a vibration that is a combination of the vibration based on the vibration instruction data 116A and the vibration based on the vibration instruction data 116B. That is, the system program 102P1 processes the vibration instruction data 116A and the vibration instruction data 116B for one vibration instruction period.
[0100] In Figure 4 the example, for simplicity of explanation of the adjustment process, it is shown that Figure 2An example in which different vibration indication data is transmitted to the system program 102P1 is shown. In Figure 4 a first vibration indication period, a second vibration indication period, and a third vibration indication period are shown. These periods are consecutive 15-ms periods that progress in time series in the order of the first vibration indication period, the second vibration indication period, and the third vibration indication period. In Figure 4 an example in which different indication data sets are transmitted to the system program 102P1 in each vibration indication period is described.
[0101] First, the transformation of the vibration indication data in the first vibration indication period will be described. In the first vibration indication period, an indication data set including first vibration indication data specifying a first indication amplitude value of "0.0" and a first indication frequency value of "0" and second vibration indication data similarly specifying a second indication amplitude value of "0.0" and a second indication frequency value of "0" is transmitted to the system program 102P1. That is, in the first vibration indication period, no vibration indication data is transmitted to the system program 102P1, or vibration indication data indicating that the vibration motor 206 is not vibrated is transmitted to the system program 102P1. In this case, no adjustment is performed in the total adjustment process, the frequency characteristic adjustment process, and the clamping adjustment process, so that the amplitude value and the frequency are finally transformed into the vibration indication data 110 while remaining "0.0" unchanged.
[0102] In the second vibration indication period, an indication data set including first vibration indication data specifying a first indication amplitude value of "0.7" and a first indication frequency value of "50 Hz" and second vibration indication data specifying a second indication amplitude value of "0.5" and a second indication frequency value of "80 Hz" is transmitted to the system program 102P1. When the system program 102P1 receives an indication data set including two vibration indication data with non-zero amplitude values, it executes a total adjustment process to adjust the amplitude values indicated by the first vibration indication data and the second vibration indication data. The total adjustment process is as follows: When the sum of the amplitude values indicated by the two vibration indication data exceeds 1 within the same vibration indication period, the sum value of the amplitude values indicated by the two vibration indication data is made 1 and proportionally distributed.
[0103] Specifically, the processor 101 determines whether the sum of the amplitude values indicated by the first vibration indication data and the amplitude values indicated by the second vibration indication data exceeds 1. When the sum does not exceed 1, the processor 101 ends the sum adjustment process without changing each amplitude value. When the sum exceeds 1, the processor 101 divides the amplitude values indicated by the respective vibration indication data by the sum of the amplitude values indicated by the respective vibration indication data. As a result, the amplitude value of the first vibration indication data after sum adjustment is adjusted to "0.58", and the amplitude value of the second vibration indication data is adjusted to "0.42".
[0104] Next, the frequency characteristic adjustment process will be described. In the frequency characteristic adjustment process, the amplitude values are adjusted using the Figure 3 frequency characteristic data described in. The processor 101 uses data corresponding to the curve of Figure 3 to obtain the frequency characteristic adjustment rate at a specified frequency value. Regarding the first vibration indication data, the processor 101 refers to the frequency characteristic data corresponding to the curve of Figure 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 indication 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 indication data in the second vibration indication period does not change through the frequency characteristic adjustment process.
[0105] Similarly, regarding the second vibration indication 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 indication data after the sum adjustment process by the frequency characteristic adjustment rate "0.7" to adjust the amplitude value to "0.29". In this embodiment, the third decimal place is rounded, but it is also possible to calculate to more decimal places.
[0106] Next, the first vibration indication data and the second vibration indication data in the third vibration indication period are described. In the third vibration indication period, an indication data set including the first vibration indication data specifying the first indication amplitude value "0.7" and the first indication frequency value "150 Hz" and the second vibration indication data specifying the second indication amplitude value "0.5" and the second indication frequency value "200 Hz" is transmitted to the system program 102P1. In the third vibration indication period, as in the second vibration indication period, the amplitude values indicated by the first vibration indication data and the second vibration indication data are adjusted by total adjustment. The amplitude value of the first vibration indication data after the total adjustment in the third vibration indication period is adjusted to "0.58", and the amplitude value of the second vibration indication data is adjusted to "0.42".
[0107] Next, the processor 101 refers to the frequency characteristic data corresponding to the Figure 3 curve and determines that the frequency characteristic adjustment rate is "1.0" when the vibration motor 206 operates at a frequency of 150 Hz. The processor 101 multiplies the amplitude value "0.58" indicated by the first vibration indication data by the frequency characteristic adjustment rate "1.0" to adjust the amplitude value to "0.58". Regarding the second vibration indication data in the third vibration indication period, the processor 101 determines that the frequency characteristic adjustment rate is "1.0" when the vibration motor 206 operates at a frequency of 200 Hz. The processor 101 multiplies the amplitude value "0.42" indicated by the second vibration indication data by the frequency characteristic adjustment rate "1.0" to adjust the amplitude value to "0.42".
[0108] Regarding the clamping adjustment process, as will be described later, in the game controller 200, when the previous indication frequency value is different from the current indication frequency value, a process of gradually changing the frequency is performed, and the clamping adjustment process is a process for suppressing the input voltage input to the vibration motor from exceeding the allowable value during this process. The process executed in the game controller 200 described later is a process of gradually approaching the previous amplitude value and the previous frequency to the indicated amplitude and frequency, and is a process of adjusting the first indication amplitude value and the second indication amplitude value in cooperation with the frequency (i.e., the frequency with the best vibration efficiency) having the lowest frequency characteristic adjustment rate when the frequency gradually changes within the vibration indication period.
[0109] First, the processor 101 determines a first clamping value and a second clamping value for the first vibration indication data and the second vibration indication data respectively. Regarding the clamping value, the frequency with the lowest frequency characteristic adjustment rate among the frequencies from the frequency value of the vibration indication data in the previous vibration indication period to the frequency value of the vibration indication data in the current vibration indication period is determined as the clamping value. Taking the third vibration indication period as an example, for the first vibration indication data, the first indication frequency value at the time point of the second vibration indication period is 50 Hz, and the first indication frequency value at the time point of the third vibration indication period is 150 Hz. Return to Figure 3 , among the frequencies from 50 Hz to 150 Hz, the frequency with the lowest frequency characteristic adjustment rate is 100 Hz. Therefore, as the first clamping value, the processor 101 determines the frequency characteristic adjustment rate at 100 Hz, i.e., "0.5", as the first clamping value.
[0110] For the second vibration indication data, the second indication frequency value at the time point of the second vibration indication period is 80 Hz, and the second indication frequency value at the time point of the third vibration indication period is 200 Hz. Return to Figure 3 , among the frequencies from 80 Hz to 200 Hz, the frequency with the lowest frequency characteristic adjustment rate is 100 Hz. Therefore, as the first clamping value, the processor 101 determines the frequency characteristic adjustment rate at 100 Hz, i.e., "0.5", as the second clamping value.
[0111] For the first vibration indication data, the processor 101 divides the first indication amplitude value after frequency characteristic adjustment by the sum of the first indication amplitude value after frequency characteristic adjustment and the second indication amplitude value after frequency characteristic adjustment. The processor 101 multiplies the obtained value by the above-mentioned first clamping value to determine the clamping value. For example, the first clamping value is calculated as "0.29" by the first clamping value × the first indication amplitude value after frequency characteristic adjustment / (the first indication amplitude value after frequency characteristic adjustment + the second indication amplitude value after frequency characteristic adjustment). When the first indication amplitude value after frequency characteristic adjustment is greater than the determined clamping value, the processor 101 sets the clamping value as the first indication amplitude value after clamping adjustment. That is, since the amplitude value "0.58" after frequency adjustment is greater than the determined first clamping value "0.29", the processor 101 determines "0.29" as the first indication amplitude value after clamping adjustment.
[0112] Similarly, regarding 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 obtained division value by the second clamping value. Specifically, the clamping value determined by this calculation is 0.21, and the processor 101 determines this value as the clamping value. Since the amplitude value of "0.42" after frequency adjustment is greater than the determined clamping value of "0.21", the processor 101 determines "0.21" as the second indicated amplitude value after clamping adjustment.
[0113] As a result, the first vibration indication data after the clamping adjustment process is transformed into vibration indication data 110 indicating the first indicated amplitude value of "0.29" and the first indicated frequency value of "150", and the second vibration indication data after the clamping adjustment process is transformed into vibration indication data 110 indicating the second indicated amplitude value of "0.21" and the second indicated frequency value of "200". The processor 101 saves the indication data set including the adjusted vibration indication data 110 in the vibration indication data area 103B3 according to the system program 102P1, and then sends the indication data set to the game controller 200 in the order in which it is saved. The MCU 201 in the game controller 200 generates control data based on the received transformed vibration indication data 110, and drives the vibration motor 206 based on this control data.
[0114] [E. Process of generating vibration indication data in the game device]
[0115] Next, a flowchart is used to illustrate the processing executed by the processor 101 of the game device 100. Figure 5 It is a flowchart showing the process of generating vibration indication data 114 including the normalized amplitude value executed in Embodiment 1. Figure 5 The processing of the shown flowchart is implemented by the processor 101 executing the game program 102P2, and starts to be executed corresponding to the start of the execution of the game program 102P2.
[0116] The processor 101 acquires operation data (step S101). The processor 101 makes the game object act based on the received operation data (step S102). The game object refers to an object operated by the user in the virtual space in the game, typically a player character, a vehicle body in a racing game, etc.
[0117] The processor 101 determines whether a shock event has occurred in the game based on the actions of game objects or in-game events unrelated to the actions of game objects (step S103). A shock event refers to an event that becomes a condition for generating a vibration effect. For example, in the case of an adventure game, it includes the contact of a weapon such as a sword possessed by a player character with an enemy object, and in the case of a racing game, it includes the collision of a vehicle operated by the user with other vehicles, etc. Depending on the content of the game, it includes various events.
[0118] In the case where no shock event has occurred in the game ( "No" in step S103), the processor 101 returns the process to step S101. In the case where a shock event has occurred in the game ( "Yes" in step S103), the processor 101 generates vibration indication data 114 (typically, a time-series vibration indication data set), and transfers the generated vibration indication data 114 to the system program 102P1 (step S104). At this time, the vibration indication data (or time-series vibration indication data set) can also be generated by reading the above-mentioned vibration file 105.
[0119] After the processor 101 transfers the indication data set including the vibration indication data 114 to the system program 102P1, it returns the process to step S101, and repeats the processes of steps S101 to S104 during the execution of the game. In the case where two shock events have occurred in the same period, the processor 101 transfers an indication data set including first vibration indication data and second vibration indication data to the system program 102P1 according to the two shock events. In the case where one shock event has occurred, the processor 101 transfers an indication data set including only the first vibration indication data to the system program 102P1 according to the one shock event. In this case, the processor 101 can also include second vibration indication data specifying a second indication amplitude value of "0" and a second indication frequency value of "0" in the indication data set. In addition, the first vibration indication data and the second vibration indication data can also be generated according to one shock event. In this way, the game device 100 in the present embodiment generates the vibration indication data 114 and transfers it to the system program 102P1 according to the occurrence of a shock event as the game progresses. After executing step S104, the processor 101 executes other processes for advancing the game.
[0120] Figure 6 It is a flowchart showing the transformation process of vibration indication data executed by the game device 100 of Embodiment 1. Figure 6 The processing of the shown flowchart is realized by the processor 101 executing the system program 102P1. In Figure 6 it, the above-mentioned adjustment process is executed.
[0121] Based on passing an indication data set from the game program 102P2 to the system program 102P1, the following is executed Figure 6 the flowchart shown. The processor 101 selects first vibration indication data and second vibration indication data passed from the game program 102P2 (step S105).
[0122] The processor 101 performs a total adjustment process on the first vibration indication data and the second vibration indication data (step S105A). Next, the processor 101 determines respective frequency characteristic adjustment rates based on the first indication frequency value and the second indication frequency value included in the first vibration indication data and the second vibration indication data after the total adjustment, respectively (step S106). Specifically, the processor 101 determines the frequency characteristic adjustment rate based on data corresponding to the curve of Figure 3 . The processor 101 multiplies the first indication amplitude value and the second indication amplitude value after the total adjustment by the frequency characteristic adjustment rate corresponding to the first indication frequency value and the frequency characteristic adjustment rate corresponding to the second indication frequency value, respectively, to determine the first indication amplitude value and the second indication amplitude value after the frequency characteristic adjustment (step S107). That is, in steps S106 and S107, the above-mentioned frequency characteristic adjustment process is performed.
[0123] Furthermore, the processor 101 performs a clamping adjustment process on the first indication amplitude value and the second indication amplitude value after the frequency characteristic adjustment, respectively (step S107A). The processor 101 writes the indication data set including the first vibration indication data and the second vibration indication data after the clamping adjustment process into the vibration indication data area 103B3 (step S108). The processor 101 determines whether all the indication data sets passed from the game program 102P2 have been processed (step S109).
[0124] In the case where not all the vibration indication data 114 has been adjusted (\"No\" in step S109), the processor 101 returns the process to step S105. In the case where the adjustment process for all the vibration indication data 114 has been completed (\"Yes\" in step S109), the processor 101 ends the flowchart process. Thus, Figure 4 the vibration indication data 110 after the adjustment process shown in the lower left part of is written into the vibration indication data area 103B3.
[0125] The processor 101 sends the vibration indication data 110 after the adjustment process stored in the vibration indication data area 103B3 to the game controller 200 via the communication interface 104. The game controller 200 stores the received vibration indication data 110 after the adjustment process in the vibration indication data area 204B1 in the volatile memory 204.
[0126] [F. Generation Process of Control Data in Game Controller]
[0127] Next, a flowchart is used to illustrate the processing executed by the MCU 201 of the game controller 200. Figure 7 FIG. is a flowchart showing the processing procedure of control data generation executed by the game controller 200 of Embodiment 1. The control data refers to the data generated by the processor 202 based on the first vibration indication data and the second vibration indication data after adjustment processing. Typically, the control data is data representing the voltage value for driving the vibration motor 206, and is data representing the voltage value (instantaneous value) of each instant of the waveform based on the specified frequency and amplitude. Hereinafter, the control data is output at a specified interval, and this interval is referred to as the "control period".
[0128] In the present embodiment, regarding the control period, since the amplifier 205 operates at 8 kHz, the control data is supplied to the vibration motor 206 once 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 indication period by the control period based on one vibration indication data. In the present embodiment, during the vibration indication period of 5 ms and the control period of 0.125 ms, the processor 202 generates 40 control data based on one vibration indication data. Based on the frequency value and amplitude value of the vibration indication data 110 after adjustment processing, the reference waveform is determined for each control period (0.125 ms). The reference waveform refers to the waveform determined for each control period, and is the waveform used to determine the voltage value output as the control data. The processor 202 determines the voltage value output as the control data based on the reference waveform.
[0129] Figure 7 The processing of the shown flowchart is implemented by the processor 202 executing the MCU program 203P. For example, according to the power supply to the game controller 200, the processing of the shown flowchart is started. Figure 7 The processing of the shown flowchart.
[0130] In the volatile memory 204, for each vibration indication data in the first vibration indication data and the second vibration indication data included in the indication data set, there are a current amplitude data area 204V1, a current frequency data area 204V2, and a current phase data area 204V3, which store the current amplitude data, the current frequency data, and the current phase data, 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 indication data and the second current amplitude data based on the second vibration indication data. Hereinafter, when the first current amplitude data and the second current amplitude data are not distinguished for explanation, they are simply referred to as "current amplitude data".
[0131] In addition, the current frequency data area 204V2 is configured to be able to store first current frequency data based on the first vibration indication data and second current frequency data based on the second vibration indication data. Hereinafter, when the description is made without distinguishing between the first current frequency data and the second current frequency data, it is simply referred to as "current frequency data". On the other hand, the current phase data stored in the current phase data area 204V3 is shared in the processing of both the first vibration indication data and the second vibration indication data. Therefore, the current phase data area 204V3 is configured to store one piece of current phase data. In addition, the current phase data area 204V3 may also be configured to be able to store first current phase data based on the first vibration indication data and second current phase data based on the second vibration indication data. These data are respectively data representing 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 indication data and the second vibration indication data.
[0132] 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 indication data and the second vibration indication data to other areas of the volatile memory 204. Specifically, they are respectively saved as the previous amplitude data and the previous frequency data in the previous amplitude data area 204V4 and the previous frequency data area 204V5 (step S201).
[0133] The previous amplitude data area 204V4 is configured to be able to store first previous amplitude data based on the first vibration indication data and second previous amplitude data based on the second vibration indication data. Hereinafter, when the description is made without distinguishing between the first previous amplitude data and the second previous amplitude data, it is simply referred to as "previous amplitude data". The previous frequency data area 204V5 is configured to be able to store first previous frequency data based on the first vibration indication data and second previous frequency data based on the second vibration indication data. Hereinafter, when the description is made without distinguishing between the first previous frequency data and the second previous frequency data, it is simply referred to as "previous frequency data". In addition, when the flowchart shown is first executed after the game controller 200 is started Figure 6 as an initialization process, the processor 202 saves "0V" as the values of the current amplitude data and the previous amplitude data, saves "0Hz" as the values of the current frequency data and the previous frequency data, and saves "0 degrees" as the value of the current phase data.
[0134] The processor 202 determines whether there is an indication data set in the vibration indication data area 204B1 (step S202). When there is no indication data set in the vibration indication data area 204B1 (No in step S202), the processor 202, in step S203, newly generates first vibration indication data and second vibration indication data for each of the first vibration indication data and the second vibration indication data, where the amplitude value is set to "0" and the value of the previous frequency data area 204V5 saved in step S201 is set as the frequency value of each of the first vibration indication data and the second vibration indication data, and saves them in the vibration indication data area 204B1 (step S203).
[0135] Thus, through the processing from S206 to S212 described later, control data is generated such that after the vibration of the vibration indication data 110 after the adjustment processing indicated by the game program 102P2 ends, it gradually decreases to 0. This vibration is the end vibration described later. In addition, when the game program 102P2 executes Figure 5 the process shown (specifically, in the process of S104), the processor 202 can also generate data in which the vibration value of the last vibration indication data is set to "0" and the frequency value is set to the same value as the previous frequency value. The previous frequency value refers to the frequency value used in the previous control or the frequency value represented by the previous vibration indication data. Similarly, the previous amplitude value refers to the amplitude value used in the previous control or the amplitude value represented by the previous vibration indication data.
[0136] In addition, when returning to S202 again after processing the vibration indication data saved in S203 in steps S204 to S212, it is possible again that there is no indication data set in the vibration indication data area 204B1. In this case, in S203, vibration indication data with an amplitude value of "0" is saved again for each of the first vibration indication data and the second vibration indication data, and control data with a voltage value of zero is output in the subsequent processing. In this way, in the present embodiment, when the vibration based on the vibration indication data indicated by the game program 102P2 ends and there is no vibration indication data in the vibration indication data area 204B1, control data with a voltage value of zero is continuously output. For example, in the example described later Figure 9 at the time after time T14, control data with a voltage value of zero is also output. Thus, the vibration can be reliably converged. The unit that performs the control after time T14 like this Figure 9 can correspond to the "second vibration control unit" in the present disclosure.
[0137] Next, the processor 202 acquires the vibration indication data at the beginning of the indication data set within the vibration indication data area 204B1, and deletes the indication data set from the vibration indication data area 204B1 (step S204). The indication data set stored at the beginning of the vibration indication data area 204B1 is the earliest indication data set saved in the vibration indication data area 204B1. When there is an indication data set in the vibration indication data area 204B1 in step S202 (Yes in step S202), the processor 202 executes the process of step S204.
[0138] Hereinafter, the first indication amplitude value and the second indication amplitude value included in the indication data set acquired by the processor 202 in step S204 are collectively referred to as the "indication amplitude value" without distinction. Similarly, the first frequency value and the second frequency value included in the indication data set acquired by the processor 202 in step S204 are collectively referred to as the "indication frequency value" without distinction.
[0139] 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 higher than 0 (step S205). When at least one of the value of the first previous amplitude data and the value of the second previous amplitude data is higher than 0 (Yes in step S205), it can be determined that the state of continuous vibration has continued since before (not starting to vibrate from a state of never vibrating), and thus the process proceeds to the flow during continuous vibration after step S206. As will be described later, steps S207 to S210 are executed for each of the first vibration indication data and the second vibration indication data. The determination in step S205 as to whether the vibration state has started from a state of continuous vibration is also executed for each of the first vibration indication data and the second vibration indication data. In step S206, the processor 202 substitutes 1 into the counting variable X (step S206). The counting 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 control data.
[0140] Hereinafter, steps S201 to S210 are used to illustrate the following: updating the first current amplitude data, the second current amplitude data, the first current frequency data, the second current frequency data, and the current phase data, and generating the first control data corresponding to the first vibration indication data and the second control data corresponding to the second vibration indication data. That is, the processor 202 executes the processes of steps S201 to S210 shown in the figure for both the first vibration indication data and the second vibration indication data. In Figure 7In order to simplify the description, the figure shows the processing of S201 to S210 for one piece of vibration indication data. The steps S201 to S210 performed for the first vibration indication data and the steps S201 to S210 performed for the second vibration indication data can also be executed in parallel. As described in step S210A below, the sum of the first control data and the second control data is written as control data into the control data area 204B2.
[0141] Hereinafter, steps S207 to S210 will be described only with respect to the first vibration indication data. 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 indicated amplitude value. The processor 202 multiplies the obtained subtraction result by the value obtained by dividing the value stored in the counting variable X by 40. The processor 202 stores the value obtained by adding the multiplication result to the first previous amplitude data into the first current amplitude data (step S207).
[0142] 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 indicated frequency. The processor 202 multiplies the obtained subtraction result by the value obtained by dividing the value stored in the counting variable X by 40. The processor 202 stores the value obtained by adding the multiplication result to the first previous frequency data into the first current frequency data (step S208).
[0143] Through the processing of steps S207 and S208, the amplitude value and frequency of the reference waveform referred to for generating the first control data are stored in the first current amplitude data and the first current frequency data. In step S209, the processor 202 substitutes a value into 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.
[0144] The processor 202 determines the amplitude and the current phase based on the value of the first current amplitude data, the value of the first current frequency data, and the value of the current phase data, and generates first control data corresponding to the calculated voltage value to be output by the amplifier 205 (step S210). More specifically, the processor 202 determines a reference waveform according to the value of the first current amplitude data and the value of the first current frequency data, and generates the voltage value at the phase indicated by the value of the first current phase data in the reference waveform as the first control data. As described above, for the second vibration indication data, the processor 202 also executes steps S207 to S210 in the same manner as the first vibration indication data to generate second control data. The processor 202 writes control data representing the voltage value obtained by adding up the voltage value represented by the first control data and the voltage value represented 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 indication data and the second vibration indication data. In addition, in the vibration control system 10, when the vibration motor 206 vibrates according to the occurrence of one vibration event, the indicated amplitude value and the indicated frequency value of either the first vibration indication data or the second vibration indication data are 0.
[0145] The control data written into the control data area 204B2 is sent to the amplifier 205 through DMA. The amplifier 205 amplifies the voltage to the voltage value corresponding to the control data written into the control data area 204B2, and applies the amplified voltage to the vibration motor 206.
[0146] The processor 202 substitutes the value obtained by incrementing the current count variable X by 1 into the count variable X (step S211). The processor 202 determines whether the value of the count variable X is higher than 40 (step S212). When the value of the count variable X is not higher than 40 (being "No" in step S212), the processor 202 returns the process to step S207.
[0147] When the value of the count variable X is higher than 40 (being "Yes" in step S212), the processor 202 returns the process to step S201. The situation where the value of the count variable X is higher than 40 means that the generation of 40 control data corresponding to the vibration indication data obtained in step S204 has been completed. That is, it means that the processing of the obtained indication data set has been completed.
[0148] As shown in steps S206 to S212, when the vibration control system 10 of the present embodiment indicates the amplitude and frequency by vibration indication data, it performs a process of gradually approaching the indicated amplitude and frequency from the previous amplitude value and the previous frequency. This process is called interpolation processing. In addition, this interpolation processing is not performed at the start of vibration. Further, through the processing of steps S206 to S212, 40 control data are generated for each vibration indication data, with one output every 0.125 ms.
[0149] Return to step S205. When the value of the previous amplitude data is 0 (in step S205, "No"), the processor 202 determines that vibration starts and executes the start processing (step S214). The case where the value of the previous amplitude data is 0 means the case where the vibration motor 206 starts operating from a stopped state. In addition, in step S205, it is also possible to determine the case where the previous amplitude data is approximately zero. Further, in step S205, instead of determining the case where the previous amplitude data is higher than 0, it is also possible to determine the case where the previous control data is higher than 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 according to the phase, the start processing is executed. In this case, it is also possible to determine the case where it is approximately zero.
[0150] Figure 8 It is a flowchart showing the processing procedure of the start processing in step S214. Figure 8 The processing of the shown flowchart starts by executing step S214 in Figure 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 saved in step S201 are 0, the Figure 8 flowchart is executed, and the first vibration indication data and the second vibration indication data are processed respectively. Hereinafter, the first vibration indication data will be described, but the same applies to the second vibration indication data.
[0151] The processor 202 substitutes 1 for the counting 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 quickly becomes the indicated value, so that the effect of impact vibration can be improved. In addition, the processor 202 substitutes the indicated frequency for the first current frequency data (step S2153). The processor 202 substitutes the phase value obtained by advancing the phase by 0.125 ms from the value substituted into the current phase data based on the frequency substituted into the first current frequency data for the current phase data (step S2154).
[0152] The processor 202 calculates the voltage value that the amplifier 205 should output based on the first current amplitude data and the current phase data, and writes the first control data corresponding to the calculated voltage value into the control data area 204B2 (step S2155). The processor 202 substitutes the value obtained by adding 1 to the current counting variable X into the counting variable X (step S2156). Thereafter, the processor 202 determines whether the value of the counting variable X is greater than 40 (step S2157).
[0153] If the value of the counting variable X is not greater than 40 (No in step S2157), the processor 202 returns the process to step S2152. If the value of the counting variable X is greater than 40 (Yes in step S2157), the processor 202 ends the process. Figure 8 Afterwards, the processor 202 executes Figure 7 The processing of step S201.
[0154] In this way, the vibration control system 10 of the present embodiment can determine the control data corresponding to the voltage value in each control cycle to finely control the vibration waveform. In addition, the vibration control system 10 can generate appropriate control data by proportionally allocating the first indication amplitude value and the second indication amplitude value even when processing both the first vibration indication data and the second vibration indication data through the total adjustment process. Moreover, the vibration control system 10 can operate the vibration motor 206 in such a way that the displacement of the vibrator does not exceed the limit value through the frequency characteristic adjustment process. In addition, the vibration control system 10 can generate appropriate control data even when the frequency is gradually changed through the clamp adjustment process.
[0155] When changing the amplitude value, if the change is not from the voltage value of 0V, noise may be generated. Therefore, the vibration control system 10 of embodiment 1 gradually changes the amplitude value in units of a control period (0.125ms) by executing steps S207 to S210. On the other hand, in order to prevent the generation of noise, the change of the amplitude value may be made to wait until the voltage value becomes 0V, but this will cause the timing of the change of the amplitude value to be delayed. The vibration control system 10 of this embodiment usually suppresses the generation of noise by gradually changing the amplitude value or frequency value within the vibration indication period (5ms), and controls in a manner that becomes the indicated amplitude value when the previous voltage value is 0V, so that the generation of noise can be suppressed and a vibration with a good rise can be generated.
[0156] [G. Example of vibration waveform generated based on vibration instruction data]
[0157] Figure 9This is an example of the waveform of the first control data generated based on the first shock event. The time-series vibration indication data group according to the first shock event is data such as "(1, 100), (1, 100)". Hereinafter, the following example will be described: Based on only the occurrence of the first vibration event, the second vibration indication data specifying the second indication amplitude value "0" and the second indication frequency value "0" and the first vibration indication data according to the first vibration event are processed. By performing the above adjustment process, the time-series vibration indication data group according to the first shock event is transformed into data such as "(0.5, 100), (0.5, 100)". The vibration waveform generated according to the first shock event is output between times T11 and T13. The period from time T11 to time T13 is a period of 10 ms. By executing Figure 7 and Figure 8 of the flowchart, a vibration waveform corresponding to the frequency value "100 Hz" and the amplitude value "0.5 V" is generated. That is, the frequency of the vibration waveform between times T11 and T13 is "100 Hz", and the maximum amplitude value is "0.5 V".
[0158] The waveform generated between times T11 and T12 is generated by the processor 202 processing the first vibration indication data "(0.5, 100)" at the beginning in the time-series vibration indication data group according to the first shock event. The waveform generated between times T12 and T13 is generated by the processor 202 processing the second first vibration indication data "(0.5, 100)" included in the time-series vibration indication data group according to the first shock event.
[0159] The waveform of the control data generated between times T13 and T14 is generated by executing steps S206 to S212 after setting the first indication amplitude to 0 in S203 above when there is no vibration indication data to be processed. Hereinafter, use Figure 10 and Figure 11To illustrate the waveform generated between times T13 and T14. The vibration generated after the processing of the vibration instruction data 110 after adjustment received from the game device 100 is referred to as "end vibration". The control data generated between times T13 and T14 is an example of the control data for generating the end vibration. In addition, the control data sent to the amplifier 205 to generate the end vibration is referred to as "end control data". In the present embodiment, after the vibration control based on the vibration instruction data 110 after adjustment received from the game device 100 is completed, the processor 202 immediately generates end control data to cause the vibration motor 206 to perform end vibration. The processor 202 may also generate end vibration after the vibration based on the vibration instruction data generated due to the occurrence of a normal vibration event rather than an impact vibration event.
[0160] Return to Figure 7 , when the processing of the last vibration instruction data 110 after adjustment of the time-series vibration instruction data group according to the first impact event is completed and the counting variable X exceeds 40 in step S212, the processor 202 saves the current amplitude data ("0.5") as the previous amplitude data and the current frequency data ("100 Hz") as the previous frequency data in step S201.
[0161] Therefore, when the processor 202 has processed all the first vibration instruction data stored in the vibration instruction data area 204B1 and there is no longer any first vibration instruction data (No in step S202), in step S203, it sets "0" as the indicated amplitude, sets the frequency "100 Hz" that is the same as the value of the first previous frequency data as the first indicated frequency, and saves it in the first vibration instruction data area. The processor 202 substitutes "1" into the counting variable (step S206).
[0162] After that, since the first previous amplitude data is "0.5" and the first indicated amplitude value is "0", the processor 202 substitutes the value obtained by multiplying 0.5 by 39 / 40 into the first current amplitude data by performing the process of step S207. That is, it substitutes 0.4875 into the first current amplitude data. In addition, since the first previous frequency data is "100 Hz" and the first indicated frequency is also "100 Hz", the processor 202 substitutes "100 Hz" into the first current frequency data by performing the process of step S208. The processor 202 advances the current phase data by an amount corresponding to 0.125 ms.
[0163] Figure 10 is a diagram showing the reference waveform between times T13 and T14. In Figure 10Among them, 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 based on the first current amplitude data "0.4875" and the first current frequency "100 Hz". That is, the reference waveform Rw1 is a waveform with a frequency of 100 Hz and a maximum amplitude set to 0.4875 (0.5×(39 / 40)).
[0164] In the process of step S210, the processor 202 acquires the voltage value D1 when the phase leads by 0.125 ms from the time T13 in the reference waveform Rw1 as the first control data and writes it into the control data area 204B2. In Figure 10 the voltage value D1 is shown. The processor 202 increments the counting variable X by 1, so that the value substituted into the counting variable X becomes "2".
[0165] An explanation is given for obtaining the voltage value at the time when the phase further leads by 0.125 ms (the time when it leads by 0.250 ms from the time T13) through the same process. Since the first previous amplitude data is "0.5" and the first indicated amplitude value is "0", the processor 202 substitutes the value obtained by multiplying 0.5 by 38 / 40 into the first current amplitude data by executing the process of step S207. That is, the value 0.4750 is substituted into the first current amplitude data. In addition, since the first previous frequency is "100 Hz" and the first indicated 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 0.125 ms.
[0166] The processor 202 determines the reference waveform Rw2 based on the first current amplitude data "0.4750" and the first current frequency "100 Hz". The reference waveform Rw2 is a waveform with a frequency of 100 Hz and a maximum amplitude set to 0.4750 (0.5×(38 / 40)).
[0167] In the process of step S210, the processor 202 acquires the voltage value D2 when the phase leads by 0.250 ms from the time T13 in the reference waveform Rw2 as the first control data and writes it into the control data area 204B2. In Figure 10 the voltage value D2 is shown. And the processor 202 increments the counting variable X by 1, so that the value substituted into the counting variable X becomes "3".
[0168] Through the same process, the processor 202 acquires the voltage value D3 when the phase is further 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 time T13 to T14. Figure 11 FIG. is a diagram showing the waveform of the vibration at the end output as a result of the processing in units of the control period corresponding to the period from time T13 to T14. At each of the plurality of time points during the period from time T13 to T14, the processor 202 decreases the maximum amplitude value of the reference waveform Rw and advances the phase as time passes.
[0169] In this way, in the vibration control system 10 of the present embodiment, by executing Figure 7 and Figure 8 the processes shown in the flowchart, based on the vibration control end according to the adjusted vibration instruction data 110 received from the game device 100, 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 vibration at the end is a period of 5 ms, which is the same period as the vibration instruction period. Since the vibration is stopped in the same period as the vibration instruction period, the reduction of the impact vibration can be made good.
[0170] As Figure 10 shown, during the period from time T13 to T14 after the vibration control based on the adjusted vibration instruction data 110 ends, the processor 202 generates control data in such a manner that the amplitude value of the reference waveform gradually decreases from the amplitude value "0.5" included in the vibration instruction data (0.5, 100) obtained from the previous process. Hereinafter, the 40 processes in units of the control period when the reference waveform Rw gradually changes during the vibration instruction period (a period of 5 ms) are referred to as "interpolation processing". In the present embodiment, during the period from time T13 to T14, the frequency of the reference waveform Rw always remains at the frequency "100 Hz" and does not change. In addition, in Figure 9 the example of, the period from time T13 to T14 can correspond to the "first period" in the present disclosure.
[0171] In addition, during the period from time T11 to T13, by executing Figure 8 the processes shown in the flowchart, the amplitude value of the reference waveform Rw during the period from time T11 to T13 always remains at "0.5" and the frequency always remains at "100 Hz". Therefore, during the period from time T11 to T13, a sine wave as shown in Figure 9 is generated.
[0172] In the vibration control corresponding to the first shock event, each vibration indication data included in the time series vibration indication data group is the same, so the effect of interpolation processing cannot be shown. However, the amplitude value and frequency of each vibration indication data included in the time series vibration indication data group can also vary. In this case, during the period when the vibration continues, the changes in the amplitude value and frequency value will also be smoothed through interpolation processing.
[0173] Figure 12 is an example of the waveform of the control data generated according to the second shock event. As Figure 2 shown, the time series vibration indication data group according to the second shock event is data such as "(1, 50), (1, 50), (1, 50), (1, 50)". Next, the following example will be described: Based on only the second vibration event occurring, the second vibration indication data specifying the second indicated amplitude value "0" and the second indicated frequency value "0" and the first vibration indication data according to the second vibration event are processed. By performing the above adjustment processing, the time series vibration indication data group according to the second shock event is transformed into data such as "(1, 50), (1, 50), (1, 50), (1, 50)".
[0174] The vibration waveform generated according to the second shock event is output between times T21 and T25. The period from time T21 to time T25 is a period of 20 ms. Between times T21 and T23, by executing Figure 7 and Figure 8 's flowchart, it becomes a reference waveform Rw with a frequency always being "50 Hz" and a maximum amplitude value always being "1", so a sine wave waveform is generated.
[0175] As explained by Figure 10 and Figure 11 , it becomes a reference waveform Rw whose amplitude gradually decreases whenever the phase advances, and thus a waveform corresponding to the end vibration generated between times T25 and T26 is generated based on this reference waveform Rw. In addition, Figure 12 the period between times T25 and T26 in the example of
[0176] Figure 13 is an example of the waveform of the control data generated according to the third shock event. As Figure 2As shown, the time-series vibration indication data group according to the third impact event is data such as "(1, 50), (1, 50), (1, 50), (1, 50), (1, 50), (1, 50), (1, 50), (1, 50)". Next, the following example will be described: Based on only the third vibration event occurring, the second vibration indication data specifying the second indication amplitude value "0" and the second indication frequency value "0" and the first vibration indication data according to the third vibration event are processed. By performing the above adjustment process, the time-series vibration indication data group according to the third impact event is transformed into data such as "(1, 50), (1, 50), (1, 50), (1, 50), (1, 50), (1, 50), (1, 50), (1, 50)".
[0177] A waveform generated according to the third impact event is output between times T31 and T39. The period from time T31 to time T39 is a period of 40 ms. Between times T31 and T39, by executing Figure 7 and Figure 8 in the flowchart, a reference waveform with a frequency always being "50 Hz" and a maximum amplitude value always being "1" is obtained, and thus a sine wave waveform is generated.
[0178] As described by Figure 10 and Figure 11 , a reference waveform is obtained where the maximum amplitude gradually decreases whenever the phase advances, and based on this reference waveform, a waveform corresponding to the vibration at the end generated between times T39 and T310 is generated. In addition, Figure 13 the period from time T39 to time T310 in the example of
[0179] can correspond to the "first period" in the present disclosure. Figures 9 - 13 As described by
[0180] in the vibration control system 10 of the present embodiment, during and at the end of the vibration, control is performed to gradually change the reference waveform Rw through interpolation processing. On the other hand, in the vibration control system 10 of the present embodiment, at the start of the vibration, control to gradually change the reference waveform Rw is not performed. Thus, a sharp vibration waveform can be generated at the start, and vibrations corresponding to collisions, explosions, etc. can be given to the user.
[0181] [H. Modification Example]
[0182] Next, other modes obtained by partially modifying the above-described embodiments will be described.
[0183] In the above example, an example in which the vibration control system 10 of the present embodiment is applied to a game system has been described. However, the system to which it is applied is not limited to a game system. For example, the vibration control system 10 of the present embodiment can also be used for practical applications other than so-called video games, children's toys, or training systems for virtual driving of a car using VR or the like.
[0184] In the above example, a structural example of a game system to which the vibration control system 10 is applied includes one game controller 200. However, a game system to which the vibration control system 10 is applied may also include a plurality of game controllers 200.
[0185] 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. However, for example, it may also be a display device using a hologram.
[0186] In the above example, it has been described that in the game device 100, the processing of the flowchart corresponding to Figure 5 , Figure 6 is executed, and in the game controller 200, the processing of the flowchart corresponding to Figure 7 , Figure 8 is executed. However, it may also be that all the processing included in the flowchart of Figures 5 - 8 is executed by one of the game device 100 and the game controller 200. And the processing of the flowchart executed by the game device 100 is not limited to the flowchart of Figure 5 , Figure 8 . It may also be only the processing of the flowchart of Figure 5 , or it may be the processing of the flowcharts of Figure 5 , Figure 6 and Figure 7 .
[0187] In addition, the processors included in the game device 100 and the game controller 200 may be constituted by one chip or a plurality of chips.
[0188] In the above example, the case where a plurality of data are stored in the same row in the same table is called "association". However, the term "association" is not limited to this, and includes cases where a plurality of data are indirectly associated between a plurality of tables.
[0189] In the above example, for the sake of simplicity, an example in which all the vibration indication data included in the time-series vibration indication data group has the same content is described. However, the plurality of vibration indication data included in the time-series vibration indication data group can also be of different contents respectively. For example, the vibration indication data 114 can include data such as "(1, 100), (1, 100), (0.7, 50), (0.5, 50)".
[0190] In the above example, an example in which the waveform of the control data corresponding to the vibration at the end is set to the same frequency as the frequency of the control data executed the previous time is described. However, the vibration waveform corresponding to the vibration at the end can also be a frequency different from the frequency executed the previous time. For example, the frequency of the waveform corresponding to the vibration at the end can also be preset to frequencies such as "40 Hz", "70 Hz", or "200 Hz". In this case, in the interpolation process, the processor 202 not only gradually changes the amplitude value of the reference waveform Rw, but also gradually changes the frequency.
[0191] In the above example, an example in which the waveform of the control data is a sine wave is described, but it can also be a waveform of other shapes such as a rectangular wave. Also, the vibration indication period only needs to be a period equal to or less than the length of one wavelength of the lower limit frequency of the vibration motor 206 (25 ms in the example of Embodiment 1), and is not limited to the period of 5 ms. The vibration control system 10 can perform fine control by setting the vibration indication period shorter.
[0192] In the above example, one vibration indication data is data for outputting electric power during a period equal to or less than one wavelength of the vibration waveform, but the period for outputting the control data by one vibration indication data can also be a period equal to or less than two wavelengths, or a period equal to or less than three wavelengths. Also, in the above example, the game device 100 and the game controller 200 are set as an independent game system, but the game device 100 and the game controller 200 can also be set as one body.
[0193] In the above example, an example of generating the vibration at the end by executing the Figure 7 processing of the flowchart is described, but the processor 202 can also separately determine whether all the processing of the vibration indication data 110 after the adjustment processing received from the game device 100 has ended. When it is determined that it is the generation timing of the vibration at the end, the processor 202 generates the vibration at the end by executing another flowchart different from the Figure 7 one.
[0194] In the above example, it is assumed that, regarding the amplitude data, the game program 102P2 indicates the normalized data, but it may also be set to directly specify the amplitude data representing the control voltage value. Additionally, regarding the frequency characteristic data, an example with 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 also be the upper limit (V) of the input voltage at each frequency itself.
[0195] In Figure 9 the example, the period during which vibration persists when there is one shock event (the period from time T11 to T13) is 10 ms. However, the period during which vibration persists when there is one shock event only needs to be 50 ms or less, and it may be other periods. Additionally, for the sake of caution, it should be noted that not only the method of directly specifying time is included in this disclosure, but also the method of substantially specifying a period of 50 ms or less by specifying the wave number and the number of vibration indication data is included in this disclosure.
[0196] Furthermore, the vibration indication data may also specify data on the amount of change in amplitude and the amount of change in frequency. In this case, the processor performs the process of calculating the current amplitude and frequency using the values of the previous amplitude and previous frequency. This process may be performed by the processor of the game console or the processor of the game controller.
[0197] In addition, in the above Figure 9 example, the following example has been described: after the end vibration occurs at time T13 to T14, control data with a voltage value of zero is continuously output after time T14. However, it is also possible to start outputting control data with a voltage value of zero from time T13 without generating the end vibration. Figure 14 is a diagram showing the waveform of a modified example. That is, in the modified example, after the vibration based on the vibration indication data indicated by the game program 102P2 ends ( Figure 14 after time T13), control data with a voltage value of zero is immediately output. Additionally, it may also be set that after the vibration based on the vibration indication data indicated by the game program 102P2 ends (for example, Figure 9 after time T13), control data with a phase opposite to the previous phase is output. These examples can correspond to the "second vibration control unit" of this disclosure. In this way, in Embodiment 1, by performing the end control, compared with the case where no control is performed on the vibration motor 206 when no vibration indication data is input from the game program 102P2, the vibration motor 206 can be stopped more quickly. In Embodiment 1, the vibration control system 10 stops the vibration motor 206 within the vibration indication period.
[0198] In the above example, an example is described in which the processor 101 executes the adjustment processes in the order of the total adjustment process, the frequency characteristic adjustment process, and the clamping adjustment process. However, the order of executing the adjustment processes is not limited to this. For example, the processor 101 may also execute the adjustment processes in the order of the clamping adjustment process, the total adjustment process, and the frequency characteristic adjustment process, or may execute the adjustment processes in other orders. In addition, in Embodiment 1, by executing the total adjustment process before the frequency characteristic adjustment process and the clamping adjustment process, control that emphasizes the frequency characteristics of the vibration motor 206 can be performed.
[0199] Multiple types of game controllers 200 can also be applied to the vibration control system 10. The above frequency characteristic data may also be different according to the type of the game controller 200. In addition, the multiple types of game controllers 200 may have amplifiers 205 and vibration motors 206 of different types.
[0200] [Embodiment 2]
[0201] In Embodiment 1, the case where the game program 102P2 is an adventure game is described, but the content of the game program 102P2 may also be other content. In Embodiment 2, the case where the game program 102P2 is a music performance game is described. And, in Embodiment 2, the vibration instruction data area 103B3 is configured to be able to store one vibration instruction data corresponding to a certain moment. That is, in Embodiment 2, the following example is described: 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 of Embodiment 2, the total adjustment process of proportionally distributing the first instruction amplitude value and the second instruction amplitude value is not executed, and only the frequency characteristic adjustment process and the clamping adjustment process are executed. The clamping adjustment process in Embodiment 2 is different from the clamping adjustment process in Embodiment 1, and does not execute the proportional distribution process between the first instruction amplitude after the frequency characteristic adjustment and the second instruction amplitude after the frequency characteristic adjustment, and only determines whether the first instruction amplitude after the frequency characteristic adjustment exceeds the first clamping value.
[0202] In the example of Embodiment 2, the game program 102P2 is a music performance game. In the music performance game, the game controller 200 is simulated to be a prescribed musical instrument. The prescribed musical instrument includes, for example, various musical instruments such as drums, cymbals, triangles, violins, trumpets, pianos, or other percussion instruments, string instruments, woodwind instruments, brass instruments, reed instruments, etc. In the example of Embodiment 2, based on the user's input, the musical instrument in the game is played, and vibrations are generated accordingly when the musical instrument is played.
[0203] Figure 15 It is a flowchart showing the process of generating the vibration instruction data 114 including the normalized amplitude value in the game device 100 of Embodiment 2.Figure 15 The processing of the flowchart shown is implemented by the processor 101 executing the game program 102P2.
[0204] Execution starts with the processor 101 starting to execute the game program 102P2. Figure 15 the flowchart shown. The processor 101 acquires the type of musical instrument selected by the user (step S301).
[0205] The processor 101 acquires operation data (step S302). The processor 101 determines whether a shock event has occurred based on the operation data (step S303). In Embodiment 2, the occurrence condition of the shock event is that the operation data pre-associated with each musical instrument selected in step S301 is acquired in step S302.
[0206] For example, the occurrence condition of the shock event when the drum is selected is that the rod-shaped game controller 200 swings downwards in a specified direction at a specified range of angular velocity. As another example, the occurrence condition of the shock event when the 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 to enable the user to perform simulated performances.
[0207] When no shock event occurs (No in step S303), the processor 101 returns the process to step S301. When a shock event occurs (Yes in step S303), the processor 101 outputs a sound corresponding to the type of musical instrument (step S304). When the drum is selected, the sound when hitting the drum with a drumstick is output.
[0208] The processor 101 executes the game program 102P2 to generate vibration instruction data 114 (or, a time-series vibration instruction data group), and transfers the generated vibration instruction data 114 to the system program 102P1 (step S305).
[0209] Figure 16 It is a diagram for explaining an example of generating the adjusted vibration instruction data 110 based on the vibration file 105 in Embodiment 2.
[0210] In the vibration control system 10 of Embodiment 2, first, the game device 100 refers to the vibration file 105 in the game program 102P2 capable of executing the music performance game to generate vibration instruction data 114. In Figure 16 the upper left part of, the vibration file 105 is shown as a table. In Figure 16In the vibration file 105 in the example, the respective data indicating the event name, the type of musical instrument, and the vibration content are correlated with each other. The data indicating the type of musical instrument includes data indicating the types of a plurality of musical instruments that can be selected by the user described above. Similarly to Embodiment 1, the data indicating the vibration content includes frequency, number of wavelengths, and amplitude.
[0211] To the event name "first impact event" in Embodiment 2, the musical instrument type "drum", frequency "50", number of wavelengths "2", and amplitude "1" are associated. That is, the first impact event in Embodiment 2 is an event in which the vibration motor 206 outputs a voltage corresponding to 2 wavelengths at a wavelength of 50 Hz and corresponding to the maximum output voltage allowed for the amplifier 205 to output.
[0212] To the event name "second impact event" in Embodiment 2, the musical instrument type "cymbal", frequency "100", number of wavelengths "1", and amplitude "0.8" are associated. That is, the second impact event is an event in which the vibration motor 206 outputs a voltage corresponding to 1 wavelength at a wavelength of 100 Hz and corresponding to 80% of the maximum output voltage allowed for the amplifier 205 to output.
[0213] Also in Embodiment 2, the processor 101 generates vibration indication data 114 including a normalized amplitude value. In Embodiment 2, the time-series vibration indication data group generated according to the occurrence of the first impact event includes 8 vibration indication data 114 of "(1, 50), (1, 50), (1, 50), (1, 50), (1, 50), (1, 50), (1, 50), (1, 50)". In addition, in Embodiment 2, the time-series vibration indication data group generated according to the occurrence of the second impact event includes 2 vibration indication data 114 of "(0.8, 100), (0.8, 100)".
[0214] The processor 101 uses data corresponding to the Figure 3 curve to obtain the frequency characteristic adjustment rate at each frequency and perform frequency characteristic adjustment processing. In addition, the processor 101 performs clamping adjustment processing on the indicated vibration value to generate Figure 16 the transformed vibration indication data 114 shown. Regarding the transformed vibration indication data 110 corresponding to the first impact event, the processor 101 refers to the Figure 3For data equivalent to the curve, it is determined that the frequency characteristic adjustment rate of the vibration motor 206 is "1" when the vibration motor 206 operates at a frequency of 50 Hz. The processor 101 multiplies the frequency characteristic adjustment rate "1" by the normalized amplitude parameter "1" in the vibration indication data 114 corresponding to the first shock event to calculate the amplitude value "1". When the vibration motor 206 does not vibrate when the first shock event occurs, the processor 101 obtains "1" as the first clamping value for each vibration indication data in the time-series vibration indication data group generated according to the occurrence of the first shock event. Since each vibration indication data in the time-series vibration indication data group does not exceed the first clamping value, the processor 202 ends the clamping adjustment process without changing the amplitude value "1" after frequency characteristic adjustment.
[0215] Regarding the vibration indication data 110 after the frequency characteristic adjustment process and the clamping adjustment process corresponding to the second shock event, the processor 101 refers to the data Figure 3 equivalent to the curve, and determines that the frequency characteristic adjustment rate is "0.5" when the vibration motor 206 operates at a frequency of 100 Hz. The processor 101 multiplies the frequency characteristic adjustment rate "0.5" by the normalized amplitude value "0.8" in the vibration indication data 114 corresponding to the second shock event to calculate the amplitude value "0.4". When the vibration motor 206 does not vibrate when the second shock event occurs, the processor 101 obtains "0.5" as the first clamping value for each vibration indication data in the time-series vibration indication data group generated according to the occurrence of the second shock event. Since each vibration indication data in the time-series vibration indication data group does not exceed the first clamping value, the processor 101 ends the clamping adjustment process without changing the amplitude value "0.4" after frequency characteristic adjustment.
[0216] As a result, in Embodiment 2, the processor 101 outputs the data "(1, 50), (1, 50), (1, 50), (1, 50), (1, 50), (1, 50), (1, 50), (1, 50)" as the vibration indication data 110 after the adjustment process corresponding to the first shock event to the game controller 200. In addition, the processor 101 outputs the data "(0.4, 100), (0.4, 100)" as the vibration indication data 110 after the adjustment process corresponding to the second shock event to the game controller 200. In this way, in Embodiment 2, in the music performance game, it is possible to give the user vibrations that match the selected musical instrument.
[0217] In addition, in Embodiment 2, an amplitude value of "0.8" is associated with the cymbal. In this way, in the vibration control system 10 of the present embodiment, as long as the amplitude value is within the range of 0 to 1, it is not limited to "1". In Embodiment 2, the amplitude value of "0.8" associated with the cymbal can correspond to the "amplitude value corresponding to the maximum output voltage" that is allowed to be output by the amplifier in the present disclosure.
[0218] [Embodiment 3]
[0219] In Embodiment 2, an example where the game program 102P2 is a music performance game is described, but the content of the game program 102P2 can also be other content. In Embodiment 3, a case where the game program 102P2 is a rhythm game is described.
[0220] In Embodiments 1 and 2, examples of generating vibrations according to user input are described. However, the vibration control system 10 can also generate vibrations at a predetermined time without depending on user input. In the example of Embodiment 3, the processor 101 generates the vibration instruction data 110 after adjustment processing by executing the Figure 17 flowchart in and Figure 18 the flowchart in parallel.
[0221] The rhythm game of Embodiment 3 is a game that tests the user's sense of rhythm by outputting music and causing the user to perform a specified operation at a specified time in the music. The specified time refers to the time when 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 called "beat vibration". In Embodiment 3, the operation that the user should perform at the specified time is an operation of waving a rod-shaped game controller 200 at an angular velocity equal to or greater than a specified angular velocity. Hereinafter, the operation of waving the rod-shaped game controller 200 at an angular velocity equal to or greater than the specified angular velocity will be referred to as a "waving operation". In the rhythm game of Embodiment 3, points are continuously added by performing a waving operation at the specified time, and the final score is displayed to the user at the end of the music. By outputting beat vibrations at regular intervals, it is easy for the user to grasp the timing. It is also possible to make the user's operation time coincide with the beat time.
[0222] Figure 17 is a flowchart showing the execution process of the rhythm game in Embodiment 3. Figure 17 The processing of the shown flowchart is implemented by the processor 101 executing the game program 102P2.
[0223] The processor 101 starts playing music (step S401). The music in step S401 can be, for example, classical music, the BGM of a game, etc. The processor 101 acquires operation data (step S402). The processor 101 determines whether a waving operation has occurred (step S403).
[0224] In the case where no waving operation has occurred (\"No\" in step S403), the processor 101 performs other processing for advancing the rhythm game and returns the processing to step S401. In the case where a waving operation has occurred (\"Yes\" in step S403), the processor 101 determines whether the waving operation in step S403 was performed at the correct timing (step S404).
[0225] In the case where the waving operation was not performed at the correct timing (\"No\" in step S404), the processor 101 performs other processing for advancing the rhythm game and returns the processing to step S401. In the case where the waving operation was performed at the correct timing (\"Yes\" in step S404), the processor 101 performs a score addition process in the rhythm game (step S405). After the score addition process ends, the processor 101 performs other processing for advancing the rhythm game and returns the processing to step S401.
[0226] Figure 18 It is a flowchart showing the process of generating the vibration indication data 114 including the normalized amplitude value in the game device 100 of Embodiment 3. The processor 101 determines whether it is the beat timing (step S501). The beat timing is a certain time interval. In the case where it is not the beat timing (\"No\" in step S501), the processor 101 repeats the processing of step S501.
[0227] In the case where it is the beat timing (\"Yes\" in step S501), the processor 101 generates the vibration indication data 114 and transfers the generated vibration indication data 114 (or the time series vibration indication data group) to the system program 102P1 (step S502).
[0228] In this way, in Embodiment 3, vibration is not generated based on the user's input, but based on the output of music, vibration is generated at a predetermined moment in this music. Thus, in the rhythm game of Embodiment 3, vibration can be used to enable the user to recognize the moment when the waving operation should be performed. And, as explained in Embodiment 1, in the vibration control system 10, strong vibration can be given by not performing the interpolation process at the start. Thus, in Embodiment 3, even during the period when the user is performing the waving operation, the user can recognize the vibration.
[0229] [Embodiment 4]
[0230] In Embodiment 1, an example of the frequency characteristic adjustment process corresponding to steps S106 and S107 executed by the processor 101 on the game device 100 side was described. However, the frequency characteristic adjustment process may also be executed by the processor 202 on the game controller 200 side. In addition, in Embodiment 4, the description of the structure that duplicates that of Embodiment 1 will not be repeated. Figure 6
[0231] In Embodiment 4, the processor 202 is configured to be able to access Figure 3 the frequency characteristic data shown. For example, Figure 3 the frequency characteristic data shown may also be stored in the non-volatile memory 203 of the game controller 200. Figure 19 is a flowchart showing the transformation process of the vibration instruction data executed by the game device 100 of Embodiment 4. In Embodiment 4, the processor 101 does not execute the processes of steps S106, S107, and S107A (clamping adjustment process) in Embodiment 1. That is, in Embodiment 4, only the total adjustment process is executed in the game device 100.
[0232] Figure 20 is a flowchart showing the process of generating control data executed by the game controller 200 of Embodiment 4. In Embodiment 4, the processor 202 executes the frequency characteristic adjustment process (step S209B) after updating the current phase data in step S209. In step S209B, the processor 202 refers to the frequency characteristic data to determine the frequency characteristic adjustment rate corresponding to the current frequency data updated in step S208, and multiplies the current amplitude data in step S207 by the determined 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.
[0233] Therefore, even when the frequency indicated by the current vibration instruction data changes with respect to the frequency indicated by the previous vibration instruction data, the processor 202 can execute the frequency characteristic adjustment process for each frequency during the change process. Therefore, for example, even when the frequency is gradually changed from 50 Hz to 150 Hz, the frequency characteristic adjustment corresponding to around the frequency of 100 Hz during the change can be executed. In Embodiment 4, even without executing the clamping adjustment process, it is possible to suppress unexpected behavior changes during the process of gradually changing the frequency, and it is possible to determine an appropriate amplitude value corresponding to the frequency in units of the control cycle.
[0234] The embodiments of the present invention are illustrated, but it should be considered that the disclosed embodiments are illustrative rather than restrictive in all aspects. The scope of the present invention is shown by the claims and is intended to include all modifications within the meaning and scope equivalent to the claims.
Claims
1. A vibration control system for controlling a vibration motor, the vibration control system comprising the following units: means for acquiring vibration indication data indicating at least an amplitude; a unit for generating control data based on the acquired vibration instruction data, and controlling the vibration motor using the control data; and a unit for determining at least one of whether the control data last time was zero, whether the control data last time was substantially zero, whether the amplitude last time was zero, and whether the amplitude last time was substantially zero, in, In the control, Based on the determination, it is selected whether to generate the control data so that the amplitude gradually approaches the amplitude associated with the vibration instruction data of this time, or to generate the control data corresponding to the amplitude associated with the vibration instruction data of this time.
2. The vibration control system according to claim 1, wherein: In the control, interpolated amplitude data of a second period shorter than the indication period of the vibration indication data, i.e., the first period, is generated so that the amplitude gradually approaches the amplitude associated with the vibration indication data of this time, and control data of the second period corresponding to the interpolated amplitude data is generated. Moreover, when it is determined through the judgment that the previous amplitude or the previous control data is zero or substantially zero, control data of each second period is generated corresponding to the amplitude associated with the vibration indication data of this time.
3. The vibration control system according to claim 2, wherein: The vibration indication data is data that also indicates the frequency, In the control, interpolation frequency data of a second period shorter than the first period is generated so that the frequency gradually approaches the frequency associated with the vibration instruction data of this time, and control data of the second period corresponding to the interpolation frequency data is generated. When it is determined through the determination that the previous amplitude or the previous control data is zero or substantially zero, control data corresponding to the frequency associated with the vibration instruction data is generated in each of the second cycles.
4. The vibration control system according to any one of claims 1 to 3, wherein: The vibration indication data is data that also indicates the frequency, The vibration control system further includes a unit that stores frequency characteristic data on a voltage allowed to be input to the vibration motor at each frequency or a voltage allowed to be output by an amplifier that controls the vibration motor at each frequency, In the control, the allowable value of the voltage allowed to be input or the voltage allowed to be output is determined based on the frequency associated with the vibration indication data and with reference to the frequency characteristic data, and the amplitude used in the control is determined based on the amplitude associated with the vibration indication data and the determined allowable value.
5. The vibration control system according to claim 4, wherein: The frequency characteristic data is data indicating a ratio of the voltage allowed to be input to the maximum input voltage of the vibration motor or a ratio of the voltage allowed to be output to the maximum output voltage of the amplifier at each frequency.
6. The vibration control system according to any one of claims 1 to 3, wherein: The device further includes a unit for generating the vibration instruction data with an amplitude of zero when the vibration instruction data is not acquired.
7. A computer program product comprising a program, wherein: The program causes a computer of a vibration control system that controls a vibration motor to execute the following steps: obtaining vibration indicative data indicating at least an amplitude; generating control data based on the acquired vibration indication data, and using the control data to control the vibration motor; as well as Determine at least one of whether the control data last time is zero, whether the control data last time is approximately zero, whether the amplitude last time is zero, and whether the amplitude last time is approximately zero, In the control, When it is determined through the judgment that the previous control data is not zero or not approximately zero, control data is generated to make the amplitude gradually approach the amplitude related to the vibration indication data this time, and when it is determined through the judgment that the previous control data is zero or approximately zero, control data corresponding to the amplitude related to the vibration indication data this time is generated.
8. The computer program product according to claim 7, wherein: The program causes the computer to further perform the following steps: generating interpolated amplitude data of a second period shorter than the indication period of the vibration indication data, i.e., the first period, so that the amplitude gradually approaches the amplitude associated with the current vibration indication data, and generating control data of the second period corresponding to the interpolated amplitude data; and, when it is determined through the determination that the previous amplitude or the previous control data is zero or substantially zero, generating control data of each second period corresponding to the amplitude associated with the current vibration indication data.
9. The computer program product according to claim 7, wherein: The vibration indication data is data that also indicates the frequency, In the control, interpolation frequency data of a second period shorter than the first period is generated so that the frequency gradually approaches the frequency associated with the vibration instruction data of this time, and control data of the second period corresponding to the interpolation frequency data is generated. When it is determined through the determination that the previous amplitude or the previous control data is zero or substantially zero, control data corresponding to the frequency associated with the vibration instruction data is generated in each of the second cycles.
10. The computer program product according to any one of claims 7 to 9, wherein: The vibration indication data is data that also indicates the frequency, In the control, the allowable value of the voltage allowed to be input or the voltage allowed to be output is determined based on the frequency indicated by the vibration indication data with reference to frequency characteristic data related to the voltage allowed to be input to the vibration motor at each frequency, or the voltage allowed to be output by an amplifier that controls the vibration motor at each frequency, and the amplitude used in the control is determined based on the amplitude related to the vibration indication data and the determined allowable value.
11. The computer program product according to claim 10, wherein: The frequency characteristic data is data indicating a ratio of the voltage allowed to be input to the maximum input voltage of the vibration motor or a ratio of the voltage allowed to be output to the maximum output voltage of the amplifier at each frequency.
12. The computer program product according to any one of claims 7 to 9, wherein: The program causes the computer to further perform the following steps: When the vibration instruction data is absent, the vibration instruction data having an amplitude of zero is generated.
13. The computer program product according to any one of claims 7 to 9, wherein: The program is a program for a vibration system including a main body unit and a vibration unit, and is executed by a computer of the vibration unit.
14. The computer program product of claim 13, wherein: The vibration portion is an operation portion separate from the main body portion.
15. An information processing method for a vibration control system, in which: obtaining vibration indicative data indicating at least an amplitude; generating control data based on the acquired vibration instruction data, and using the control data to control the vibration motor; and Determine whether the previous control data is zero or approximately zero, In the control, When it is determined through the judgment that the previous control data is not zero or not approximately zero, control data is generated to make the amplitude gradually approach the amplitude related to the vibration indication data this time, and when it is determined through the judgment that the previous control data is zero or approximately zero, control data corresponding to the amplitude related to the vibration indication data this time is generated.
16. A game controller equipped with the program according to any one of claims 7 to 9, the vibration motor, and the computer, wherein: The program is executed by the computer.
Citation Information
Patent Citations
Vibration signal creation program, vibration signal creation system, vibration signal creation device, vibration signal creation method and data output program
JP2016202486A