Information processing system, encoding device, decoding device, method, encoding program, and decoding program
By generating and encoding frequency command data, the problem of vibration and sound incoordination in the game system was solved, achieving a synchronization effect between vibration and sound, and enhancing the immersion and interactivity of the game experience.
Patent Information
- Application Number
- JP2024106204
- Authority / Receiving Office
- JP · JP
- Patent Type
- Applications
- Current Assignee / Owner
- Filing Date
- 2024-07-01
- Publication Date
- 2026-01-16
AI Technical Summary
The existing game system's vibration signal control does not take sound factors into account, resulting in a mismatch between vibration effects and game sound effects.
By generating frequency command data based on a predetermined musical scale, and using encoding and decoding techniques, the frequency and amplitude command data are transmitted to the game controller to achieve a synchronization effect between vibration and sound.
It achieves synergistic effects of vibration and sound, enhancing the immersion and interactivity of the gaming experience, reducing communication traffic, and supporting accurate representation of multiple music scales.
Smart Images

Figure 2026006871000001_ABST
Abstract
Description
[Technical Field]
[0001] The present disclosure relates to an information processing system, an encoding device, a decoding device, a method, an encoding program, and a decoding program. [Background technology]
[0002] Conventionally, there are game systems that provide vibration effects to users playing games. For example, Japanese Patent Laid-Open Publication No. 2016-202486 (Patent Document 1) discloses a system that controls vibration signals used in games. [Prior art documents] [Patent documents]
[0003] [Patent Document 1] Japanese Patent Application Laid-Open No. 2016-202486 Summary of the Invention [Problem to be solved by the invention]
[0004] Conventional vibration signal control systems do not take sound into consideration. [Means for solving the problem]
[0005] (Configuration 1) An information processing system in one embodiment includes a first information processing device and a second information processing device having a vibration motor. The first information processing device includes frequency instruction data generation means for generating frequency instruction data that indicates a control frequency of the vibration motor, means for encoding the frequency instruction data, including first encoding means for encoding the frequency instruction data based on the frequency of each note on a predetermined musical scale, and transmission means for transmitting the encoded frequency instruction data to the second information processing device. The second information processing device includes reception means for receiving the encoded frequency instruction data, first decoding means for decoding the encoded frequency instruction data based on the frequency of each note on the predetermined musical scale, and vibration means for vibrating the vibration motor based on the decoded frequency instruction data.
[0006] (Configuration 2) In configuration 1, the first encoding means encodes the frequency F indicated by the frequency indication data into a code value X (an integer) using the following formula 1 or 2: X = First constant × (log2(F / Second constant)) (Equation 1) X = 1st constant × (log2(F / 2nd constant)) + 3rd constant (Equation 2) The first constant is one of 5, 7, 12, 15, 17, 19, 22, 31, 34, 41, 53, and 72, or a multiple thereof, and the second constant is the frequency of one of the notes on a predetermined musical scale, or a constant that satisfies the following formula 3: Second constant = frequency of one of the notes on the given scale x 2 N / 第1定数 ...(Formula 3) The third constant is a predetermined integer.
[0007] (Configuration 3) In configuration 2, when code value X is acquired, the first encoding means determines whether frequency F indicated by the frequency indication data is closer to the frequency corresponding to code value X or the frequency corresponding to code value X+1, and if frequency F indicated by the frequency indication data is closer to the frequency corresponding to code value X+1 than the frequency corresponding to code value X, updates code value X to the value of code value X+1.
[0008] (Configuration 4) In configuration 2, the predetermined scale is a scale in 12-tone equal temperament, and the first constant is 12 or a multiple of 12.
[0009] (Configuration 5) In configuration 1, the first encoding means selects a code value corresponding to a frequency close to the frequency indicated by the frequency indication data based on a predetermined table showing the correspondence between the frequency of each note on a predetermined musical scale and each code value.
[0010] (Configuration 6) In configuration 2, the first constant is a common multiple of any one of 5, 7, 12, 15, 17, 19, 22, 31, 34, 41, 53, and 72 and a value corresponding to the first constant in the encoding process of another information processing system.
[0011] (Configuration 7) In any one of configurations 1 to 6, the frequency instruction data includes first frequency instruction data and second frequency instruction data for vibrating the vibration motor; The first frequency instruction data is capable of instructing at least a frequency in an effective band of vibration, The second frequency instruction data is capable of instructing vibration at least in the audible band.
[0012] (Configuration 8) In configuration 7, the first frequency instruction data and the second frequency instruction data can indicate either the effective band of vibration or the audible band.
[0013] (Configuration 9) In any of configurations 1 to 6, the first information processing device further includes amplitude instruction data generating means for generating amplitude instruction data that instructs the control amplitude of the vibration motor, and means for encoding the amplitude instruction data, including second encoding means for linearly encoding the amplitude instruction data. The transmitting means transmits each of the encoded frequency instruction data and the encoded amplitude instruction data, and the receiving means receives each of the encoded frequency instruction data and the encoded amplitude instruction data. The second information processing device further includes second decoding means for linearly decoding the encoded amplitude instruction data. The vibrating means vibrates the vibration motor based on the decoded frequency instruction data and the decoded amplitude instruction data.
[0014] (Configuration 10) In any of configurations 1 to 6, the first information processing device further includes an adjustment unit that, when the frequency specified by the frequency specification data is a frequency in the audible range, changes the specified frequency to a frequency in the inaudible range or cancels the specification, and a deactivation unit that deactivates the adjustment unit in response to a command from an application.
[0015] (Configuration 11) In any one of configurations 1 to 6, the first information processing device is a game console, and the second information processing device is a game controller.
[0016] (Configuration 12) In one embodiment, the encoding device is an encoding device capable of communicating with a second information processing device having a vibration motor, and includes a frequency instruction data generating means for generating frequency instruction data that indicates the control frequency of the vibration motor, a first encoding means for encoding the frequency instruction data, the first encoding means encoding the frequency instruction data based on the frequency of each note on a predetermined musical scale, and a transmitting means for transmitting the encoded frequency instruction data to the second information processing device.
[0017] (Configuration 13) In one embodiment, the decoding device is a decoding device capable of communicating with a first information processing device, and includes a vibration motor, a receiving means for receiving encoded frequency instruction data, a first decoding means for decoding the encoded frequency instruction data based on the frequency of each note on a predetermined musical scale, and a vibration means for vibrating the vibration motor based on the decoded frequency instruction data.
[0018] (Configuration 14) In one embodiment, a method is used in an information processing system that controls vibration instruction data for vibrating a vibration motor, and the method includes, as steps executed by one or more first processors, a step of generating frequency instruction data that indicates the control frequency of the vibration motor, a step of encoding the frequency instruction data using a frequency of each note on a predetermined musical scale as a reference, and a step of transmitting the encoded frequency instruction data, and as steps executed by one or more second processors, a step of receiving the encoded frequency instruction data, a step of decoding the encoded frequency instruction data using the frequency of each note on a predetermined musical scale as a reference, and a step of vibrating the vibration motor based on the decoded frequency instruction data.
[0019] (Configuration 15) In one embodiment, an encoding program causes a computer to execute an acquisition means for acquiring frequency instruction data that indicates the control frequency of a vibration motor, and a first encoding means for encoding the frequency instruction data based on the frequency of each note on a predetermined musical scale.
[0020] (Configuration 16) In one embodiment, a decoding program causes a computer to execute an acquisition means for acquiring encoded frequency instruction data that is encoded frequency instruction data that indicates the control frequency of a vibration motor, and a first decoding means for decoding the encoded frequency instruction data based on the frequency of each note on a predetermined musical scale. [Brief explanation of the drawings]
[0021] [Figure 1]1 is a schematic diagram illustrating an example of an information processing system according to an embodiment of the present invention. [Figure 2] 10A and 10B are diagrams for explaining the flow of encoding and decoding of vibration instruction data. [Figure 3] 4 is a diagram for explaining a first example of vibration instruction data in the present embodiment. FIG. [Figure 4] 10 is a table showing the relationship between musical scale frequencies and encoded frequencies. [Figure 5] FIG. 10 is a diagram illustrating a second example of vibration instruction data in the present embodiment. [Figure 6] 10 is a flowchart showing a procedure for generating vibration instruction data in the present embodiment. [Figure 7] 10 is a flowchart showing a procedure for encoding vibration instruction data executed by the game device. [Figure 8] 10 is a flowchart showing a decoding procedure of the encoded vibration instruction data executed by the game controller. [Figure 9] 10 is a graph showing values of maximum allowable voltage versus frequency of a vibration motor. [Figure 10] 10 is a flowchart showing a procedure for switching the sound output state executed by the game controller. DETAILED DESCRIPTION OF THE INVENTION
[0022] The present embodiment will be described in detail with reference to the drawings, in which the same or corresponding parts are designated by the same reference numerals and description thereof will not be repeated.
[0023] [A. Overview] An example of the configuration of the information processing system 10 that controls the vibration motor 206 in this embodiment will be described.
[0024] FIG. 1 is a schematic diagram showing an example of an information processing system 10 according to the present embodiment. The information processing system 10 according to the present embodiment is applied to a game system. The information processing system 10 includes a game device 100 and a game controller 200. The game device 100 is a device for providing a game to a user. The game controller 200 is a device that is held by a user playing a game and receives input.
[0025] The game device 100 progresses through a game by displaying videos or images on a display device such as a TV monitor, LCD, organic EL (Electro Luminescence) display, or head mounted display (HMD) in accordance with a program. The user operates the game controller 200 in accordance with the videos or images displayed on the display device. The game device 100 receives input from the user via the game controller 200, and progresses through the game in accordance with the input.
[0026] The game controller 200 of this embodiment has a vibration motor 206 that vibrates in accordance with the progress of the game. In this embodiment, the vibration motor is a voice coil motor. Vibration instruction data for vibrating the vibration motor 206 is transmitted from the game device 100 to the game controller 200, causing the vibration motor 206 to vibrate. Furthermore, in this embodiment, the vibration motor 206 is capable of vibrating at frequencies in the audible band in addition to the tactile frequency band (the frequency band in which humans can perceive vibrations), and has a function as a vibrator that applies vibrations to the user's tactile sense and a function as a speaker that makes the user recognize sound with their hearing. Note that in this embodiment, the game device 100 is an example of a "first information processing device" in this disclosure, and the game controller 200 is an example of a "second information processing device" in this disclosure.
[0027] [B. Game Device Configuration] The game device 100 has a processor 101, a non-volatile memory 102, a volatile memory 103, and a communication interface (I / F) 104. The processor 101 is a processing entity (processing means) for executing the processes provided by the game device 100. The processor 101 reads a system program 102P1 and a game program 102P2 stored in the non-volatile memory 102, expands them into the volatile memory 103, and executes them.
[0028] The processor 101 is a processing circuit, such as a CPU (Central Processing Unit). In this specification, the term "processor" refers to a processing circuit, such as a CPU, MPU (Micro Processing Unit), or GPU (Graphics Processing Unit), that executes processing according to instruction codes written in a program. In addition, the term "processor" also encompasses hardwired circuits, such as ASICs and FPGAs. Hardwired circuits, such as ASICs and FPGAs, have pre-formed circuits corresponding to the processing to be executed. Furthermore, the term "processor" in this specification may also encompass circuits that integrate multiple functions, such as SoCs (System on Chips). The processor 101 may be, for example, an SoC that integrates the functions of a CPU and a GPU. In addition, this specification also includes, as a variation, an embodiment in which the processing performed by a single processor in this embodiment is shared and performed by multiple processors in cooperation with each other.
[0029] The non-volatile memory 102 is a non-volatile storage device (storage medium) accessible by the processor 101, and may be, for example, an SSD (Solid State Drive), flash memory, or a hard disk. The non-volatile memory 102 may also be a storage medium that is detachable from the game device 100, such as an optical disk or a cartridge. The non-volatile memory 102 stores a system program 102P1 and a game program 102P2.
[0030] The system program 102P1 is a program that performs basic processing of the game device 100. It also includes a program for transmitting various data stored in the volatile memory 103 to the game controller 200. The game program 102P2 is a program for executing a game, and is stored, for example, in a game cartridge or disc that is detachably attached to the game device 100, or is downloaded to the non-volatile memory 102 via the Internet. The game program 102P2 includes a vibration file 105A and a sound file 105B. The vibration file 105A and the sound file 105B are both files for vibrating the vibration motor 206.
[0031] Vibration file 105A contains vibration instruction data generated in response to a vibration event for causing a user to perceive a vibration through their tactile sense. Sound file 105B contains sound instruction data generated in response to a sound event for causing a user to perceive a sound through their auditory sense. In other words, vibration file 105A causes vibration motor 206 to vibrate at a frequency that imparts a vibration, tactile sensation, or force to the user from vibration motor 206, and sound file 105B causes vibration motor 206 to vibrate at a frequency that produces a sound from vibration motor 206.
[0032] For example, vibration events and sound events may be, in the virtual game space, collisions between objects, explosions, gun firing, cars driving on roads, etc. Vibrations and sounds corresponding to these events are output by vibration of the vibration motor 206. Sound events may also include a character in the virtual space making a sound, an object colliding, an in-game phenomenon, a user selecting a UI (User Interface) button, or the timing of sound effects. Furthermore, sounds generated in response to sound events may include voice data, sound effects, background music, instrument sounds, etc. In a sound file, frequencies are specified according to a predetermined musical scale. The predetermined musical scale may be, for example, 12-note equal temperament.
[0033] The vibration file 105A and the sound file 105B specify two parameters, a frequency and an amplitude, for vibrating the vibration motor 206. The game device 100 generates vibration instruction data using the frequency and the amplitude contained in the vibration file 105A and the sound file 105B. In this embodiment, the data contained in the vibration file 105A and the sound file 105B have the same format, and both are referred to as "vibration instruction data" in this specification. In this embodiment, the vibration instruction data is data including a frequency and an amplitude. The frequency contained in the vibration instruction data is an example of "frequency instruction data" in the present disclosure. The amplitude contained in the vibration instruction data is an example of "amplitude instruction data" in the present disclosure.
[0034] The vibration instruction data controls the vibration motor 206 at a predetermined period. This period is, for example, 5 ms. A plurality of vibration instruction data are generated and continuously transmitted to the game controller 200, causing the game controller 200 to continuously vibrate for a period of 5 ms or more. Note that the vibration period may be determined for each vibration instruction data. The game controller 200 receives the vibration instruction data from the game device 100, and vibrates the vibration motor 206 based on the frequency and amplitude specified in the received vibration instruction data.
[0035] The frequency band specified by the vibration file 105A is, for example, 40 Hz to 400 Hz. When a low frequency is specified, a heavy vibration is output, and when a high frequency is specified, a sharp vibration is output. The frequency band specified by the sound file 105B is, for example, 400 Hz to 3500 Hz. When a low frequency is specified, a low sound is output, and when a high frequency is specified, a high sound is output. Note that 40 Hz to 400 Hz is an example of a "frequency in the effective vibration band." 400 Hz to 3500 Hz is an example of an "audible frequency range" in the present disclosure. Frequencies other than 400 Hz to 3500 Hz are examples of "non-audible frequency range" in the present disclosure.
[0036] The frequency included in the vibration instruction data can be changed depending on, for example, the magnitude of the collision in the virtual game space (such as the speed of the collision or the weight of the collided object), the weight and material set for the collided object, etc. In other words, the effect can be changed by changing the frequency. The frequency may be limited by various system conditions.
[0037] A maximum value is predetermined for each frequency of input voltage vibration to vibration motor 206. In this embodiment, the command amplitude of vibration is normalized with respect to the maximum voltage for each command frequency. Specifically, the amplitude included in the vibration command data is expressed as a numerical value between 0 and 1.0. When the amplitude is "1.0", the maximum voltage at the frequency included in the vibration command data is output to vibration motor 206. When the amplitude is "0.5", a voltage that is 50% of the maximum voltage at the frequency included in the vibration command data is output to vibration motor 206. The maximum voltage for each command frequency will be described later with reference to FIG. 9. Note that the manner of the amplitude command in the vibration command data is not limited to this example, and it does not have to be normalized with respect to the maximum input voltage for each frequency.
[0038] Volatile memory 103 is a volatile storage device (storage medium) accessible by processor 101, and may be, for example, a dynamic random access memory (DRAM) or a static random access memory (SRAM). Volatile memory 103 has a data area 103B1, an operation data area 103B2, and a vibration instruction data area 103B3. Data area 103B1 is an area that temporarily stores data generated when processor 101 executes game program 102P2, for example.
[0039] The operation data area 103B2 is an area that temporarily stores operation data received from the game controller 200. The operation data is data that indicates input to the game controller 200 by the user, and is detection values of the acceleration sensor 208, the gyro sensor 209, the operation switch 210, etc.
[0040] The vibration instruction data area 103B3 is an area for temporarily storing vibration instruction data for vibrating the vibration motor 206, which is generated by executing the game program 102P2, etc. In this embodiment, the vibration instruction data area 103B3 also stores encoded vibration instruction data, which will be described later. In this specification, the term "memory" encompasses at least both the non-volatile memory 102 and the volatile memory 103.
[0041] The game device 100 communicates with the game controller 200 via a communication interface 104. The communication interface 104 performs wireless communication with the game controller 200 using, for example, an antenna (not shown). Any communication method may be used for wireless communication between the game device 100 and the game controller 200. In this embodiment, the game device 100 communicates with the game controller 200 in accordance with the Bluetooth (registered trademark) standard. However, other standards such as Wifi (registered trademark) may also be used, or a proprietary communication protocol may also be used. The communication between the game device 100 and the game controller 200 may be wired communication. In this case, the communication interface 104 may be, for example, a terminal conforming to the USB (Universal Serial Bus) standard.
[0042] The game device 100 generates vibration instruction data based on the detection of the occurrence of a vibration event or a sound event as the game progresses. In this embodiment, the game device 100 encodes the vibration instruction data before transmitting it to the game controller 200 so that each piece of vibration instruction data can be transmitted with a capacity of 20 bits.
[0043] More specifically, the game device 100 encodes the frequency included in the vibration instruction data using 10 bits, and encodes the amplitude included in the vibration instruction data using 10 bits. Hereinafter, the encoded frequency will be referred to as the "encoded frequency," the encoded amplitude will be referred to as the "encoded amplitude," and 20-bit data including the encoded frequency and the encoded amplitude will be referred to as the "encoded vibration instruction data." The game device 100 transmits the encoded vibration instruction data to the game controller 200. This reduces the amount of communication traffic compared to transmitting unencoded vibration instruction data from the game device 100 to the game controller 200. Note that the number of bits used for the encoding frequency and the number of bits used for the encoded amplitude may be any number.
[0044] The game device 100 transmits encoded vibration instruction data to the game controller 200. The game device 100 encodes the vibration instruction data using a frequency encoding program En1 and an amplitude encoding program En2 included in the system program 102P1. As shown in FIG. 1, the frequency encoding program En1 and the amplitude encoding program En2 are included in the system program 102P1. The encoding of the vibration instruction data will be described in detail later.
[0045] In addition to the frequency encoding program En1 and the amplitude encoding program En2, the system program 102P1 includes a maximum voltage setting program F that sets the maximum input voltage for each specified frequency. The maximum voltage setting program F in this embodiment is configured to be switchable between a first setting f1 and a second setting f2. The maximum voltage setting program F is an example of the "adjustment means" in the present disclosure. The first setting f1 is a setting that makes the maximum input voltage at frequencies in the audible range equivalent to the maximum input voltage at frequencies in the inaudible range, and the second setting f2 is a setting that makes the maximum input voltage at frequencies in the audible range zero or close to zero, or at least lower than that at frequencies in the inaudible range.
[0046] The maximum voltage setting program F is executed based on receipt of a command from an application program or a user to switch between a state in which vibrations in the audible frequency range can be output from the vibration motor 206 and a state in which they cannot. In other words, the game controller 200 is configured to be able to switch the sound output state of the vibration motor 206. Switching the sound output state of the vibration motor 206 will also be described in detail later.
[0047] [C. Game Controller Configuration] The game controller 200 includes an MCU (Micro Controller Unit) 201 , an amplifier 205 , a vibration motor 206 , a communication interface (I / F) 207 , an acceleration sensor 208 , a gyro sensor 209 , and an operation switch 210 .
[0048] Game controller 200 is typically a controller that is held by a user in one or both hands and accepts input from the user by operating operation switches 210 with the user's fingers. Note that game controller 200 is not limited to a game controller that is held by a user's hands, and may be, for example, a general-purpose keyboard or mouse equipped with vibration motor 206, or may be a type that is placed on the floor and accepts input by the user's soles coming into contact with sensors.
[0049] The MCU 201 has a processor 202, a non-volatile memory 203, and a volatile memory 204. The processor 202, the non-volatile memory 203, the volatile memory 204, and the communication interface 207 each have the same hardware configuration as the processor 101, the non-volatile memory 102, the volatile memory 103, and the communication interface 104 described above. Therefore, a description of these configurations will not be repeated. However, to reduce the cost of the game controller 200, the processor 202 may have lower processing power than the processor 101.
[0050] The non-volatile memory 203 stores an MCU program 203P. The MCU program 203P includes a frequency decoding program De1, an amplitude decoding program De2, and a control data generation program 2031. The MCU program 203P further includes programs for executing various processes, such as a program for transmitting detection values of the operation switch 210, the acceleration sensor 208, and the gyro sensor 209 to the game device 100 via the communication interface 207, and a program for receiving encoded vibration instruction data from the game device 100.
[0051] The frequency decoding program De1 is a program for decoding the encoded frequency. The amplitude decoding program De2 is a program for decoding the encoded amplitude. The processor 202 uses the frequency decoding program De1 and the amplitude decoding program De2 to decode the encoded vibration instruction data and generate decoded vibration instruction data. The control data generation program 2031 is a program for generating control data to be transmitted to the amplifier 205 based on the decoded vibration instruction data. The control data is typically data indicating a voltage value of a waveform for driving the vibration motor 206.
[0052] The volatile memory 204 has a vibration instruction data area 204B1, a control data area 204B2, and an operation data area 204B3. The vibration instruction data area 204B1 is an area for temporarily storing encoded vibration instruction data and decoded vibration instruction data received from the game device 100. The control data area 204B2 is an area for temporarily storing control data generated by the processor 202. The operation data area 204B3 is an area for temporarily storing operation data.
[0053] The control data stored in the control data area 204B2 in the volatile memory 204 is transferred to the amplifier 205 by, for example, DMA (Direct Memory Access). The amplifier 205 in this embodiment is an amplifier that performs PWM (Pulse Width Modulation) control at a frequency of 8 kHz. The amplifier 205 determines a duty ratio every 0.125 ms based on the received control data and supplies power to the vibration motor 206.
[0054] Vibration motor 206 is typically a voice coil motor. Note that vibration motor 206 may be an eccentric motor, a linear resonant motor (so-called LRA (Linear Resonant Actuator)), or a motor using a piezoelectric element, and the motor type is not limited. Vibration motor 206 may be a coin-type motor. Vibration motor 206 also functions as a speaker that outputs sound. For example, vibration motor 206 may be provided with an element that vibrates the surrounding air, such as a paper cone, or may have a structure in which the housing vibrates to generate sound. Vibration motor 206 can provide both physical vibration and sound to a user holding game controller 200 in which vibration motor 206 is housed.
[0055] The acceleration sensor 208 detects the magnitude of linear acceleration along predetermined three-axis directions. The acceleration sensor 208 may detect acceleration along one or two axes. The gyro sensor 209 detects the tilt, angular velocity, angular acceleration, etc. of the game controller 200, and outputs the detection results to the operation data area 204B3.
[0056] The detection results of the acceleration sensor 208 and the gyro sensor 209 are output to the processor 101. The processor 101 in the game device 100 is able to calculate information relating to the movement and / or attitude of the game controller 200 based on the detection results of the acceleration sensor 208 and the gyro sensor 209.
[0057] The operation switch 210 is typically at least one button, key, and / or stick provided on the surface of the game controller 200. The operation switch 210 may be, for example, a button associated with a letter such as an A button or a B button, a cross key for inputting up, down, left, and right directions, a 3D stick for inputting a tilt direction and tilt amount, or the like.
[0058] As described above, in the information processing system 10 of this embodiment, the vibration instruction data is transmitted from the game device 100 to the game controller 200 in an encoded state. The vibration motor 206 has not only a vibration function but also a sound output function. The encoding process of this embodiment not only reduces the amount of communication between the game device 100 and the game controller 200, but is also designed to be able to represent the frequencies of each note on a predetermined musical scale when decoded. For example, in the case of 12-tone equal temperament, it is designed to be able to represent all of the musical scales and chromatic scales. That is, the encoding and decoding calculations are performed so that the frequencies of each note on a predetermined musical scale are output from the vibration motor 206. In this embodiment, 12-tone equal temperament is used.
[0059] [D. Vibration Indication Data Encoding and Decoding Flow] 2 is a diagram illustrating the flow of encoding and decoding of vibration instruction data. When an event occurs in the progress of the game, the game program 102P2 generates vibration instruction data based on the vibration file 105A and the sound file 105B, and passes the data to the system program 102P1.
[0060] The frequency encoding program En1 encodes each of the frequency and amplitude included in the received vibration instruction data within a range that can be expressed in 10 bits (0 to 1023). In other words, the capacity of the encoded vibration instruction data including the encoded frequency and amplitude is 20 bits. The encoded vibration instruction data is passed from the system program 102P1 to the MCU 201.
[0061] The MCU 201 decodes the received encoded vibration instruction data using the frequency decoding program De1. As a result, the MCU 201 generates decoded vibration instruction data and generates control data based on the generated decoded vibration instruction data. The MCU 201 drives the amplifier 205 based on the control data to vibrate the vibration motor 206.
[0062] [E. Vibration instruction data content] Fig. 3 is a diagram illustrating a first example of vibration instruction data in this embodiment. From the left, Fig. 3 illustrates a sound file 105B, vibration instruction data 114 obtained by encoding the sound file, and vibration instruction data 110 obtained by decoded the sound file.
[0063] In the information processing system 10 of this embodiment, the game device 100 references the vibration file 105A or the sound file 105B in the game program 102P2. The vibration file 105A and the sound file 105B store vibration instruction data to be generated for each event (or, in some cases, multiple vibration instruction data to be played back consecutively). FIG. 3 illustrates an example of the sound file 105B, in which a melody A is output when a specific sound event occurs. Note that the vibration instruction data does not need to be stored in advance in a file format, and may be generated in real time.
[0064] Melody A is a sound related to music, such as background music played during the game or a sound representing the sound of an instrument placed in the virtual game space. In other words, a melody is a collection of multiple sounds output in succession, and is a sound that expresses music. Melody A combines multiple notes from the scale included in the 12-note equal temperament system. Specifically, melody A is output by outputting A0 (A0) for 5 ms, A#0 (A#0) for 5 ms, and A1 (A1) for 5 ms. Note that melody A may be a combination of more notes, or may be a single note. The sound generated by a sound event may include sounds with frequencies other than those of the notes on the scale. Furthermore, it may be a sound effect rather than a melody.
[0065] The frequency of each note is predetermined. The frequency of A0 is "27.500", and in the example of FIG. 3, an amplitude of "1.0" is specified. When it is desired to output the note A0, a frequency of 27.500 Hz is specified, and a waveform signal of 27.500 Hz, with a peak voltage equal to the maximum allowable voltage, is output to the vibration motor 206. However, the sound file may specify a note, etc.
[0066] Next, the encoding of the frequency will be described. The processor 101 encodes the frequency included in the vibration instruction data using the following frequency encoding formula.
[0067] (Frequency encoding formula) Encoded frequency = 96 × log2 (indicated frequency / 110) + 333 (Formula A) Since the frequency of A0 is 27.500 Hz, when the above frequency encoding formula is used, the encoding frequency is 141. The encoding frequency is an example of the "code value X" in this disclosure. In this embodiment, the encoding frequency is a non-negative integer.
[0068] Note that the value represented as "96" in the frequency encoding formula is an example of a "first constant" in the present disclosure. The value represented as "110" in the encoding formula is an example of a "second constant" in the present disclosure. The value represented as "333" in the encoding formula is an example of a "third constant" in the present disclosure. The frequency encoding formula performs encoding based on each note on the 12-note equal temperament scale.
[0069] If a frequency of 29.135 Hz is specified (in this case, indicating the note "A#0"), the frequency coding formula will calculate 149. If a frequency of 55.000 Hz is specified (in this case, indicating the note "A1"), the frequency coding formula will calculate 237.
[0070] Next, the encoding of amplitude will be described. The processor 101 encodes the amplitude included in the vibration instruction data using the following amplitude encoding formula. In the encoding process, the amplitude is linearly encoded (i.e., encoded into a value proportional to the amplitude value). In this embodiment, a value between 0 and 1.0 is encoded into values divided into 1024 equal parts in proportion to the amplitude value.
[0071] (Amplitude coding formula) Coded amplitude = amplitude × 1023 (Equation B) In the example of FIG. 3, all amplitudes instructed by the vibration instruction data are 1.0, so if the above amplitude encoding formula is used, the encoded amplitude will be 1023.
[0072] Thereafter, the encoded vibration instruction data 114 including the encoded frequency and the encoded amplitude is transmitted from the game device 100 to the game controller 200. The processor 202 of the game controller 200 decodes the encoded vibration instruction data 114 using a frequency decoding program De1. The processor 202 decodes the encoded frequency using the following frequency decoding formula. Note that the frequency decoding formula is a modified formula of the frequency encoding formula, and is substantially the same formula.
[0073] (Frequency decoding formula) Decoding frequency = 110 x 2(符号化周波数-333) / 96 ...(Formula C) The value represented as "96" in the frequency decoding formula corresponds to "96" in the frequency encoding formula, i.e., is an example of a "first constant." Similarly, the values represented as "110" and "333" in the frequency decoding formula correspond to "110" and "333" in the frequency encoding formula, respectively, and are examples of a "second constant" and a "third constant."
[0074] When the encoding frequency is 141, the decoding frequency is calculated using the decoding formula to be 27.500 Hz. When the encoding frequency is 149 or 237, the decoding frequencies are calculated using the decoding formula to be 29.135 Hz or 55.000 Hz, respectively.
[0075] 3, the frequency values shown before and after encoding do not change, and the vibration instruction data is reproduced at the frequencies of "A0", "A#0", and "A1". In this way, in the information processing system of this embodiment, when any of the notes of the 12-tone equal temperament scale is specified as vibration instruction data, the frequency of each note of the 12-tone equal temperament scale can be maintained and output from the vibration motor 206.
[0076] Next, amplitude decoding will be described. The processor 202 decodes the coded amplitude using the following amplitude decoding formula:
[0077] (Amplitude decoding formula) Decoded amplitude = Encoded amplitude / 1023 (Equation D) The processor 202 rounds off the value calculated using the amplitude decoding formula above to the nearest integer, resulting in the decoded amplitude being the same value as before encoding, as shown in FIG.
[0078] [F. About the scale] Figure 4 is a table showing the relationship between the frequency of a scale in 12-tone equal temperament and the frequency after encoding. Figure 4 shows some of the scales in 12-tone equal temperament and the frequencies corresponding to the scales. 12-tone equal temperament is a scale that expresses the interval of one octave by dividing it into 12 equal parts. For example, the piano scale is made up of 88 notes including "A0", "A#0" to "B7", and "C8". Frequencies are determined in advance for all 88 notes. Each note in 12-tone equal temperament has a first term of 27.500 Hz, and a common ratio of 2 (1 / 12) This can be expressed by a geometric progression:
[0079] The lowest note among the 88 notes is "A0" and its frequency is 27.500Hz. The next lowest note is "A#0" and its frequency is approximately 29.135Hz. The frequency of "A#0", which is one note higher than "A0", has a common ratio (2 (1 / 12) ) multiplied by 1. The highest note among the 88 notes is "C8," and its frequency is approximately 4186.009 Hz. Some of the other notes included in the 12-note equal temperament scale are also shown in FIG. 4. In this embodiment, the frequency of the scale is indicated as a value rounded to the fourth decimal place, but in some cases, a frequency value including a value having four decimal places or less may be indicated.
[0080] Furthermore, as shown in Figure 4, the frequency of "A1", which is one octave (12 notes) higher than "A0", is twice the frequency of "A0". For other notes included in the 12-tone equal temperament system, the frequency also doubles when the note is raised by one octave.
[0081] common ratio 2 (1 / 12) The "12" in the denominator of the exponent part of the common ratio represents the number of notes contained in one octave. By changing the denominator in the exponent part of the common ratio, other equal temperaments such as 5-, 7-, 15-, and 17-note equal temperaments can be expressed.
[0082] As described above, in this embodiment, the encoding frequency is decoded to obtain the decoding frequency using the following frequency decoding formula: (Frequency decoding formula) Decoding frequency = 110 x 2 (符号化周波数-333) / 96 In this embodiment, the encoding frequency can take a value from 0 to 1023. Therefore, the minimum value of the decoding frequency is 110 times 2. (-333 / 96) The maximum decoding frequency is 110 times 2. ((1023-333) / 96) That is, when the encoding frequency shown in Figure 4 is 1023, it is "16034.140Hz". The common ratio of the sequence that can be expressed by the decoding frequency is 2 (1 / 96) is.
[0083] The 110 in the frequency decoding formula is a multiple of 27.5, the first term of the 12-note equal temperament system. The 96 in the frequency decoding formula is a multiple of 12, representing the number of notes in an octave. The minimum decoded frequency, 9.936 Hz, is greater than the frequency of the lowest note, A0, in the 12-note equal temperament system (27.500 Hz), and the maximum decoded frequency, 16034.140 Hz, is less than the frequency of the highest note, C8, in the 12-note equal temperament system (4186.009 Hz). Therefore, the above frequency decoding formula represents a sequence that includes all 88 notes in the 12-note equal temperament system, and includes frequencies greater than or equal to 88 notes. The decoded frequency can represent all 88 notes in the 12-note equal temperament system.
[0084] Therefore, as explained in Figure 3, the frequencies corresponding to "A0", "A#0", and "A1" in the 12-note equal temperament scale are output while maintaining the frequencies of "A0", "A#0", and "A1", respectively, even during decoding. By using the above frequency encoding and decoding formulas, encoding and decoding can be performed while maintaining the frequencies of all of the 88 notes included in the 12-note equal temperament scale.
[0085] Fig. 5 is a diagram for explaining a second example of vibration instruction data in this embodiment. Fig. 5 explains that a vibration motor is controlled based on both a vibration file and a sound file. Fig. 5 shows, from the left, vibration file 105A, sound file 105B, encoded vibration instruction data 114, and decoded vibration instruction data 110. The contents of vibration file 105A and sound file 105B in Fig. 5 will be explained below.
[0086] Like the sound file 105B, the vibration file 105A also includes an event name, an event occurrence condition, and frequency and amplitude as data representing vibration content. Each of the data including the first to third vibration events is an example of the vibration file 105A. Each of the data including the first to fifth sound events is an example of the sound file 105B in FIG. 5.
[0087] 5 shows examples of vibration file 105A and sound file 105B when game program 102P2 is an adventure game. Processor 101 executing game program 102P2 generates vibration instruction data based on data representing vibration content. For example, the vibration instruction data for the first vibration event is data (100, 1.0).
[0088] The event name "first vibration event" is associated with object 1 "sword" and object 2 "sword" as event occurrence conditions. The first vibration event is an event in which vibration occurs when an object representing a sword collides with another object representing a sword in virtual space. The event name "first vibration event" is associated with a frequency of "100" and an amplitude of "1.0". In other words, when the first vibration event occurs, a waveform signal with a frequency of 100 Hz, whose peak voltage is the maximum voltage allowable by vibration motor 206 at a frequency of 100 Hz, is output to vibration motor 206.
[0089] The second vibration event is a clash between a sword and a shield in virtual space. In the second vibration event, a waveform signal with a frequency of 50 Hz is output to vibration motor 206, the peak voltage of which is 80% of the maximum voltage value allowable by vibration motor 206 at a frequency of 50 Hz.
[0090] The third vibration event is a collision between a sword and a rock in virtual space. In the third vibration event, a waveform signal with a frequency of 50 Hz is output to vibration motor 206, the peak voltage of which is 70% of the maximum allowable voltage value at a frequency of 50 Hz.
[0091] The event name "first sound event" is associated with object 1 "sword" and object 2 "sword." The first sound event is an event that generates a sound to represent the sound of two objects representing swords colliding in the virtual space of the game. The event name "first sound event" is associated with a frequency of "2000" and an amplitude of "1.0." In the first sound event, a waveform signal with a frequency of 2000 Hz, whose peak voltage is the maximum voltage value that vibration motor 206 can tolerate at a frequency of 2000 Hz, is output to vibration motor 206.
[0092] The second sound event is a clash between a sword and a shield in virtual space. In the second sound event, vibration motor 206 outputs a waveform signal with a frequency of 1000 Hz, whose peak voltage is 80% of the maximum allowable voltage value at a frequency of 1000 Hz, to vibration motor 206. The third sound event is a clash between a sword and a rock in virtual space. In the third sound event, vibration motor 206 outputs a waveform signal with a frequency of 700 Hz, whose peak voltage is 70% of the maximum allowable voltage value at a frequency of 700 Hz, to vibration motor 206.
[0093] In this manner, in the present embodiment, two sets of vibration instruction data are generated, each outputting a vibration and a sound, when objects collide in the virtual space. Specifically, when two swords collide in the virtual space, vibration instruction data based on a first vibration event and vibration instruction data based on a first sound event are generated. As a result, the game controller 200 outputs both vibration and sound at the same timing to represent the collision of objects in the virtual space. Note that the vibration instruction data based on the first vibration event is an example of "first vibration instruction data" in the present disclosure, and the vibration instruction data based on the first sound event is an example of "second vibration instruction data" in the present disclosure.
[0094] Next, the encoding of the frequency in Fig. 5 will be described. Because the frequency specified by the vibration instruction data based on the first vibration event is 100 Hz, using the above frequency encoding formula (Formula A), the encoded frequency is 319.7996617, and the encoded value is an integer value, which is 319. Next, the processor 101 executes an approximate value determination process to determine whether "319" or "320" is appropriate as the encoding frequency. The approximate value determination process will be described later. As a result of the approximate value determination process, the encoding frequency based on the first vibration event becomes 320, as shown in Fig. 5.
[0095] For the second and third vibration events, which specify a frequency of 50 Hz, the frequency encoding formula (Formula A) calculates 223.7996617, resulting in an encoded value of 223. As a result of the approximate value determination process, the encoded frequency is 224, as shown in Figure 5. Similarly, Figure 5 also shows the encoded frequencies for frequencies of 2000 Hz, 1000 Hz, and 700 Hz.
[0096] Since the amplitude specified by the vibration instruction data based on the first vibration event is 1.0, the encoded amplitude is 1023 when using the amplitude encoding formula (Formula C) above. In the case of the second vibration event and second sound event, which specify an amplitude of 0.8, the amplitude encoding formula (Formula C) calculates 818.4. In the amplitude, decimal values are rounded off. In Figure 5, the value "818" rounded to an integer is shown as the encoded frequency. For amplitude encoding, other data examples are omitted.
[0097] When the encoding frequency is 320, the decoding frequency calculated using the decoding formula (Formula B) is 100.1447546 Hz. The processor 202 sets the number of significant digits of the floating point (e.g., six decimal places), i.e., the decoding frequency based on the first vibration event is 100.145 Hz. FIG. 5 also shows the decoding frequencies calculated using the frequency decoding formula (Formula B) for events other than the first vibration event. The processor 202 rounds off the decimal points of the value calculated using the amplitude decoding formula (Formula D). As a result, as shown in FIG. 5, the decoded amplitude is the same value as before encoding.
[0098] [G. Procedures for generating, encoding, and decoding vibration instruction data] The processing executed by processor 101 of game device 100 will be described in detail below using a flowchart. Fig. 6 is a flowchart showing the procedure of the processing for generating vibration instruction data in this embodiment. The processing of the flowchart shown in Fig. 6 is realized by processor 101 executing game program 102P2, and execution begins in response to the start of execution of game program 102P2.
[0099] Processor 101 acquires operation data (step S101). Processor 101 operates a game object based on the received operation data (step S102). The game object may be, for example, a player character in an adventure game, a car body in a car racing game, etc.
[0100] Processor 101 determines whether a vibration event and / or a sound event has occurred during the game based on the movement of a game object or due to an in-game event unrelated to the movement of a game object (step S103).
[0101] If neither a vibration event nor a sound event has occurred in the game (NO in step S103), processor 101 returns the process to step S101. If a vibration event or a sound event has occurred in the game (YES in step S103), processor 101 generates vibration instruction data and passes the generated vibration instruction data to system program 102P1 (step S104).
[0102] After passing the vibration instruction data to system program 102P1, processor 101 returns the process to step S101 and repeatedly executes the processes of steps S101 to S104 while the game is being executed. In this manner, game device 100 in this embodiment generates vibration instruction data based on the occurrence of a vibration event or a sound event as the game progresses, and passes the data to system program 102P1. After executing step S104, processor 101 executes other processes for progressing the game (step S105).
[0103] 7 is a flowchart showing the procedure for encoding vibration instruction data executed by the game device 100. The processing of the flowchart shown in FIG. 7 is realized by the processor 101 executing the system program 102P1. The processing of the flowchart shown in FIG. 7 is executed for each amplitude instruction data. When two amplitude instruction data are generated at the same timing, the processor 101 executes the processing of the flowchart shown in FIG. 7 in parallel for each of the two amplitude instruction data.
[0104] The flowchart shown in Fig. 7 is executed based on vibration instruction data being passed from the game program 102P2 to the system program 102P1. The processor 101 sequentially acquires the vibration instruction data generated and buffered by the game program 102P2 (step S201). The processor 101 executes frequency clamping processing (step S202). The clamping processing is an exceptional process for when a frequency outside the range of frequencies expressible by the above-mentioned decoding formula (formula C) is specified by the vibration instruction data.
[0105] As described above, the minimum value of the decoded frequency is "9.936 Hz" and the maximum value of the decoded frequency is "16034.140 Hz." Therefore, in step S202, if a frequency smaller than "9.936 Hz" is specified by the game program, processor 101 rewrites the frequency included in the vibration instruction data to "9.936 Hz." Also, in step S202, if a frequency larger than "16034.140 Hz" is specified by the game program, processor 101 rewrites the frequency included in the vibration instruction data to "16034.140 Hz."
[0106] Next, the processor 101 encodes the frequency included in the vibration instruction data based on the above frequency encoding formula (Formula A) (step S203). That is, the encoding frequency is calculated. Next, the processor 101 performs fraction processing to round down the decimal point of the encoding frequency calculated in step S203 (step S204).
[0107] The processor 101 decodes the encoding frequency calculated in step S204 and the value obtained by adding 1 to the encoding frequency using the above-mentioned decoding formula (formula B) (step S205). Furthermore, the processor 101 determines whether the frequency included in the vibration instruction data acquired in step S201 is closer to the decoding frequency obtained by decoding the encoding frequency calculated in step S204 or the decoding frequency obtained by decoding the encoding frequency to which 1 has been added in step S205 (step S206). Note that in step S205, if a table of frequency values and encoding values is available, it is not necessary to calculate the decoded value each time.
[0108] If the decoded frequency obtained by decoding the encoding frequency incremented by 1 in step S205 is closer to the frequency included in the vibration instruction data acquired in step S201 (YES in step S206), the processor 101 updates the encoding frequency to the value of the encoding frequency incremented by 1 in step S205 (step S207). If the decoded frequency obtained by decoding the encoding frequency calculated in step S204 is closer to the frequency included in the vibration instruction data acquired in step S201 (NO in step S206), the processor 101 sets the encoding frequency calculated in step S204 as the encoding frequency. The process of calculating the frequency fraction shown in steps S204 to S207 corresponds to the above-mentioned "approximate value identification process."
[0109] Processor 101 determines whether the sum of amplitudes included in vibration instruction data instructing vibration at the same timing exceeds 1 (step S208). Vibration instruction data instructing vibration at the same timing is, for example, vibration instruction data based on the first vibration event and vibration instruction data based on the first sound event described in FIG. 5. Note that the start and end times of vibration do not have to be the same, as long as they partially overlap.
[0110] Processor 101 updates the amplitude of each vibration instruction data so as not to vibrate at an amplitude exceeding 1 at the same timing. Specifically, the sum of the instruction amplitude of the first vibration event and the instruction amplitude of the first sound event is "2.0", which exceeds 1 (YES in step S208). In this case, processor 101 performs amplitude update processing (step S209).
[0111] The amplitude update process is a process of recalculating the command amplitudes so that the total value of the command amplitudes becomes "1.0" while maintaining the ratio between the command amplitude of the first vibration event and the command amplitude of the first sound event. Because the ratio between the command amplitude of the first vibration event and the command amplitude of the first sound event is 1:1, the command amplitude of the first vibration event and the command amplitude of the first sound event are updated to "0.5" and "0.5", respectively.
[0112] Next, the processor 101 encodes the amplitude included in the updated vibration instruction data based on the above amplitude encoding formula (Formula B) (step S210). If the sum of the instruction amplitudes does not exceed 1 (NO in step S208), the processor 101 does not perform the amplitude update process, but encodes the amplitude included in the vibration instruction data based on the above amplitude encoding formula (Formula B) (step S210). That is, the encoded amplitude is calculated. The processor 101 performs fractional rounding on the encoded amplitude by rounding off the decimal point (step S209).
[0113] The processor 101 passes the encoded vibration instruction data including the encoded frequency and the encoded amplitude to the game controller 200 (step S212).
[0114] 8 is a flowchart showing the procedure for decoding the encoded vibration instruction data executed by the game controller 200. The processor 202 acquires the encoded vibration instruction data (step S301). The processor 202 decodes the encoded frequency based on the above frequency decoding formula (formula C) (step S302). That is, the decoded frequency is calculated. Note that the decoded frequency may be truncated (or rounded) to the nearest significant digit.
[0115] The processor 202 decodes the coded amplitude based on the amplitude decoding formula (Formula D) (step S303). That is, the decoded amplitude is calculated. The processor 202 generates control data based on the decoding frequency and the decoded amplitude to vibrate the vibration motor 206 (step S304).
[0116] Specifically, the processor 202 determines the input voltage for each control cycle and generates control data. In this embodiment, the control cycle is shorter than the predetermined cycle (5 ms), for example, 0.125 ms. By executing the control data generation program 2031, the processor 202 determines the voltage value for each control cycle based on the command frequency and command amplitude of the vibration command data executed before and after the predetermined cycle. This allows for fine control of the vibration waveform. The control cycle period is arbitrary and may be the same as the predetermined cycle.
[0117] In this way, in this embodiment, by using the above frequency encoding and decoding formulas, it is possible to perform encoding processing that takes sound into consideration while reducing the amount of communication between the game device 100 and the game controller 200.
[0118] In the example of this embodiment, an example has been described in which all of the notes in the 12-tone equal temperament system are expressed using the frequency decoding formula (Formula C). However, the frequency encoding is not limited to the frequency encoding formula shown above, and the constants (first constant, second constant, third constant) included in the encoding formula may be changed depending on the design.
[0119] Below, we will explain an example in which some constants are changed from the above encoding formula. In the frequency encoding formula and decoding formula, the first constant only needs to be a multiple of the number of notes contained in one scale. In equal temperament, it is possible to calculate the frequency ratio of a scale from the number of notes contained in one scale. If the temperament to be represented is 12-note equal temperament, the first constant only needs to be a multiple of 12. If the temperament to be represented is 7-note equal temperament, the first constant only needs to be a multiple of 7. Therefore, by adjusting the first constant, it is possible to represent any of the following equal temperaments: 5-note equal temperament, 7-note equal temperament, 12-note equal temperament, 15-note equal temperament, 17-note equal temperament, 19-note equal temperament, 22-note equal temperament, 31-note equal temperament, 34-note equal temperament, 41-note equal temperament, 53-note equal temperament, and 72-note equal temperament.
[0120] In the frequency encoding and decoding formulas, the second constant may be the frequency of any note in the equal temperament, or may be 2 times the frequency of any note in the equal temperament. 1 / 第1定数 Or 2 -1 / 第1定数 That is, the second constant may be a value obtained by multiplying 2 by a predetermined number of times. N / 第1定数 where N is an integer. By doing so, the decoded frequency will include the frequency of each note in the equal temperament. The second constant may be a multiple of the lowest note (27.500 Hz) included in the equal temperament. For example, the second constant may be a value such as 55, 82.5, 110, 137.5, or 220.
[0121] The third constant shifts the range of frequencies that can be represented in the encoding formula (Formula A), and can be determined according to the lower and upper limits of frequencies that are desired to be representable.
[0122] [H. Sound output status switching] Next, we will explain how to switch between a state in which vibration motor 206 outputs vibrations at frequencies in the audible range and a state in which it does not. Fig. 9 is a graph showing the maximum input voltage value for each command frequency. As shown in Fig. 9, vibration motor 206 in this embodiment has good vibration efficiency when operating at 100 Hz, and inputting a large voltage at this frequency causes excessive vibration. Therefore, when operating at 100 Hz, the maximum input voltage value is reduced to 2.5 V, and at frequencies where vibration efficiency is poor, the maximum input voltage value is increased to prevent the vibration from becoming weaker.
[0123] As described above, vibration motor 206 outputs sound based on sound file 105B, which specifies an audible frequency band (for example, a frequency band of 400 Hz to 3500 Hz). Game device 100 of the present embodiment defaults to the second setting f2 described above for the maximum input voltage for each frequency (second setting f2 is shown in FIG. 9 as a solid line for frequencies below 400 Hz and a dotted line for frequencies above 400 Hz), which turns off or weakens vibration in the audible frequency band. This can be changed to first setting f1 by the game application or the user (first setting f1 is shown in FIG. 9 as a solid line), which causes vibration in the audible frequency band to be output.
[0124] When the sound output enable / disable state is set to "enabled," the game device 100 sets the maximum input voltage for each frequency to a first setting f1 so that the vibration motor 206 can vibrate in the frequency band of 400 Hz to 3500 Hz. When the sound output enable / disable state is set to "disable," the game device 100 sets the maximum input voltage for each frequency to a second setting f2 so that the vibration motor 206 does not vibrate in the frequency band of 400 Hz to 3500 Hz.
[0125] When the second setting f2 is set, if the game program commands a frequency of 400 Hz to 3500 Hz, even if the command amplitude value is 1.0, the control voltage of the vibration motor 206 will be low, and the sound will be weak or will not be output, or a loud sound will not be output.
[0126] 10 is a flowchart showing a procedure for switching the sound output enable / disable state executed by game device 100. Processor 101 determines whether or not a command for switching the sound output enable / disable state has been received from a game application (step S401). If a command for switching the sound output enable / disable state has not been received (NO in step S401), processor 101 repeats the processing of step S401.
[0127] When a command to switch the sound output enable / disable state is received (YES in step S401), processor 101 determines whether to switch to sound output enable or sound output disable (step S402). If the command is to switch to sound output enable, processor 101 sets the maximum input voltage for each frequency to a first setting f1 (step S403). With first setting f1, vibration motor 206 can be driven based on frequencies in the range of 400 Hz to 3500 Hz. That is, vibration motor 206 can output sound.
[0128] If the sound output is switched off, the processor 202 sets the maximum input voltage for each frequency to a second setting f2 (step S404). The vibration motor 206 is placed in a state where driving based on frequencies in the range of 400 Hz to 3500 Hz is restricted. In other words, the vibration motor 206 is no longer able to output sound.
[0129] [I. Modifications] Hereinafter, other embodiments that are partial modifications of the embodiment described above will be described.
[0130] In the above example, the information processing system 10 of the present embodiment is applied to a game system, but the system to which the information processing system 10 of the present embodiment is applied is not limited to a game system. For example, the information processing system 10 of the present embodiment may be used in practical applications other than so-called video games, children's toys, or a training system for driving a car virtually using VR or the like.
[0131] In the above example, a configuration example in which the game system applied to the information processing system 10 includes one game controller 200 is shown, but the game system applied to the information processing system 10 may include multiple game controllers 200.
[0132] Furthermore, the processors included in the game device 100 and the game controller 200 may be configured on a single chip or multiple chips.
[0133] In the above example, storing multiple pieces of data in the same row in the same table is referred to as "associating." However, the term "associating" is not limited to this and also includes indirect association of multiple pieces of data between multiple tables.
[0134] In the above example, the game program 102P2 is configured to specify normalized data for amplitude, but it may also be configured to directly specify amplitude indicating the voltage value used in the control data.
[0135] In the above example, it has been described that encoding and decoding are performed by storing a frequency encoding formula (Formula A) in the game device 100 and a decoding formula (Formula C) corresponding to the encoding formula in the game controller 200. However, encoding and decoding do not have to be performed using a formula. For example, as shown in FIG. 4, a table in which frequencies are associated with possible encoding frequency values of 0 to 1023 may be stored in both the game device 100 (for encoding) and the game controller 200 (for decoding). In this case, the encoding frequency is determined by determining the frequency in this table that is closest to the instruction frequency in the vibration instruction data, and setting the corresponding encoding frequency. When a table is used, the musical scale to be represented may be a scale other than equal temperament, such as just intonation or Pythagorean intonation. When encoding and decoding are performed using a formula as in this embodiment, the amount of data to be stored can be reduced compared to when a table is used.
[0136] Also, as described above, the first constant may be any multiple of the number of notes included in one musical scale. The first constant may also be a common multiple of the first constants of the encoding formula (Formula A) in another information processing system. The other system may be another game console or a general-purpose PC to which the game controller 200 can be connected or on which a common game application can be executed. More specifically, the other system may be an older model game device 100 that was previously sold. This makes it possible to apply the game controller 200 that can be driven by another system to the game device 100 of this embodiment. In other words, it is possible to improve compatibility between the game device 100 of this embodiment and other systems.
[0137] In the above example, the encoding process is performed by the game device 100, and the decoding process is performed by the game controller 200. However, the devices on which the encoding process and the decoding process are performed are not limited to these. For example, the encoding process may be performed by a server, and the decoding process may be performed by the game device or the game controller. Furthermore, when the vibration instruction data is transmitted from the game device 100 to another game device or the game controller 200 via an external server, the external server may perform the encoding process or the decoding process. Furthermore, the destination of the encoded vibration instruction data transmitted from the game device 100 may not be the game controller, but may be another game device. In other words, the decoding process may be performed by the other game device.
[0138] In the above example, the vibration instruction data is described as data including a frequency and an amplitude. However, the data indicating the frequency and the data indicating the amplitude may be transmitted and received between the game device 100 and the game controller 200 separately, instead of being combined into one piece of vibration instruction data.
[0139] In the above example, the frequency of the effective vibration band is 40 Hz to 400 Hz, and the frequency of the audible range is 400 Hz to 3500 Hz, but these specific values can be changed as appropriate.
[0140] In the above example, it has been described that in the approximate value identification process, the decimal points of the coding frequency are rounded down in step S204, and the coding frequency is added by 1 in step S206. However, the approximate value identification process may also round up the decimal points of the coding frequency in step S204, and subtract 1 from the coding frequency in step S206. Furthermore, like the amplitude, the approximate value identification process may simply involve fractional processing by rounding off, or the approximate value identification process may not be performed at all.
[0141] The embodiments disclosed herein should be considered to be illustrative in all respects and not restrictive. The scope of the present invention is defined by the claims, not by the above description, and is intended to include all modifications within the meaning and scope of the claims. [Explanation of symbols]
[0142] 10 Information processing system, 100 Game device, 101, 202 Processor, 102, 203 Non-volatile memory, 102P1 System program, 102P2 Game program, 103, 204 Volatile memory, 103B1 Data area, 103B2, 204B3 Operation data area, 103B3, 204B1 Vibration instruction data area, 104, 207 Communication interface, 105A Vibration file, 105B Sound file, 110 Decoded vibration instruction data, 114 Encoded vibration instruction data, 200 Game controller, 203P MCU program, 2031 Control data generation program, 204B2 Control data area, 205 Amplifier, 206 Vibration motor, 208 Acceleration sensor, 209 Gyro sensor, 210 Operation switch, De1 Frequency decoding program, En1 Frequency encoding program, De2 Amplitude decoding program, En2 Amplitude coding program, F maximum current setting program, LnOFF,LnON lines.
Claims
1. An information processing system, a first information processing device; a second information processing device having a vibration motor; The first information processing device a frequency instruction data generating means for generating frequency instruction data that indicates a control frequency of the vibration motor; a first encoding means for encoding the frequency indicating data, the first encoding means encoding the frequency indicating data based on the frequency of each note on a predetermined musical scale; a transmitting means for transmitting the encoded frequency instruction data to the second information processing device, The second information processing device receiving means for receiving the encoded frequency indication data; a first decoding means for decoding the encoded frequency indication data based on the frequency of each note on the predetermined musical scale; and vibration means for vibrating the vibration motor based on the decoded frequency instruction data.
2. The first encoding means encodes the frequency F indicated by the frequency indication data into a code value X (an integer) using the following Equation 1 or Equation 2: X = first constant × (log 2 (F / second constant))...(Formula 1) X = first constant × (log 2 (F / second constant) + third constant (Equation 2) the first constant is one of 5, 7, 12, 15, 17, 19, 22, 31, 34, 41, 53, and 72, or a multiple thereof; The second constant is a frequency of any one of the notes on the predetermined musical scale, or a constant that satisfies the following formula 3: Second constant = frequency of any one of the notes on the given scale x 2 N/第1定数 ...(Formula 3) The information processing system according to claim 1 , wherein the third constant is a predetermined integer.
3. when the code value X is acquired, the first encoding means determines whether the frequency F indicated by the frequency indication data is closer to a frequency corresponding to the code value X or a frequency corresponding to the code value X+1; 3. The information processing system according to claim 2, wherein when the frequency F indicated by the frequency indication data is closer to the frequency corresponding to the code value X+1 than to the frequency corresponding to the code value X, the code value X is updated to the value of the code value X+1.
4. 3. The information processing system according to claim 2, wherein the predetermined scale is a 12-tone equal temperament scale, and the first constant is 12 or a multiple of 12.
5. 2. The information processing system according to claim 1, wherein the first encoding means selects a code value corresponding to a frequency close to a frequency indicated by the frequency indication data, based on a predetermined table indicating a correspondence between the frequency of each note on the predetermined musical scale and each code value.
6. 3. The information processing system according to claim 2, wherein the first constant is a common multiple of any one of 5, 7, 12, 15, 17, 19, 22, 31, 34, 41, 53, and 72 and a value corresponding to a first constant in encoding processing of another information processing system.
7. the frequency instruction data includes first frequency instruction data and second frequency instruction data for vibrating the vibration motor; the first frequency instruction data is capable of instructing at least a frequency in an effective band of vibration; 7. The information processing system according to claim 1, wherein the second frequency instruction data is capable of instructing vibration in at least an audible band.
8. 8. The information processing system according to claim 7, wherein the first frequency instruction data and the second frequency instruction data are capable of instructing both an effective frequency band and an audible frequency band of vibration.
9. The first information processing device an amplitude instruction data generating means for generating amplitude instruction data that indicates a control amplitude of the vibration motor; a second encoding means for encoding the amplitude indication data, the second encoding means linearly encoding the amplitude indication data; the transmitting means transmits each of the encoded frequency indication data and the encoded amplitude indication data; the receiving means receives each of the encoded frequency indicating data and the encoded amplitude indicating data; The second information processing device further comprising second decoding means for linearly decoding the encoded amplitude indication data; 7. The information processing system according to claim 1, wherein the vibration means vibrates the vibration motor based on the decoded frequency instruction data and the decoded amplitude instruction data.
10. The first information processing device The apparatus further includes an adjustment means for, when the frequency indicated by the frequency indication data is a frequency in the audible range, changing the indicated frequency to a frequency in the inaudible range or canceling the indication, 7. The information processing system according to claim 1, further comprising a deactivating means for deactivating said adjusting means in response to an instruction from an application.
11. the first information processing device is a game machine, 7. The information processing system according to claim 1, wherein the second information processing device is a game controller.
12. An encoding device capable of communicating with a second information processing device having a vibration motor, a frequency instruction data generating means for generating frequency instruction data that indicates a control frequency of the vibration motor; a first encoding means for encoding the frequency indicating data, the first encoding means encoding the frequency indicating data based on the frequency of each note on a predetermined musical scale; a transmitting means for transmitting the encoded frequency instruction data to the second information processing device.
13. A decoding device capable of communicating with a first information processing device, a vibration motor; receiving means for receiving the encoded frequency indication data; a first decoding means for decoding the encoded frequency indication data based on the frequency of each note on a predetermined musical scale; and vibration means for vibrating the vibration motor based on the decoded frequency instruction data.
14. A method used in an information processing system for controlling vibration instruction data for vibrating a vibration motor, comprising: The method comprises: The steps performed by the one or more first processors include: generating frequency instruction data that indicates a control frequency of the vibration motor; a step of encoding the frequency indicating data using the frequency of each note on a predetermined musical scale as a reference, in the means for encoding the frequency indicating data; transmitting the encoded frequency indication data; The steps performed by the one or more second processors include: receiving the encoded frequency indication data; a step of decoding the encoded frequency indication data based on the frequency of each note on the predetermined musical scale; vibrating the vibration motor based on the decoded frequency-indicating data.
15. On the computer, an acquisition means for acquiring frequency instruction data that indicates a control frequency of the vibration motor; and a first encoding means for encoding the frequency indication data based on the frequency of each note on a predetermined musical scale.
16. On the computer, an acquisition means for acquiring encoded frequency instruction data obtained by encoding frequency instruction data that indicates a control frequency of the vibration motor; a decoding program for causing the program to execute a first decoding means for decoding the encoded frequency indication data based on the frequency of each note on a predetermined musical scale.
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