Vibration control system, vibration control device, information processing device, and computer program product
Patent Information
- Application Number
- CN202610419905.5
- Authority / Receiving Office
- CN · China
- Patent Type
- Applications(China)
- Current Assignee / Owner
- Priority Date
- 2025-04-01
- Filing Date
- 2026-04-01
- Publication Date
- 2026-10-16
Smart Images

Figure CN122912453A_ABST
Abstract
Description
Technical Field
[0001] This disclosure relates to a vibration control system, a vibration control device, an information processing device, and a computer program product. Background Technology
[0002] Previously, there have been game systems that provide vibration effects to users playing games. For example, Japanese Patent Application Publication No. 2016-202486 discloses a vibration signal generation system for games. Summary of the Invention
[0003] There is still room for improvement in the flexible application of previous vibration systems.
[0004] (Structure 1) In one embodiment, the vibration control system is a vibration control system for a vibration device capable of reproducing the frequency band of sound. The vibration control system includes the following units: a unit for sequentially specifying pulse-code modulation data (PCM data) at a predetermined sampling rate to indicate stream reproduction; and a unit for controlling the vibration device using the sequentially acquired PCM data. Thus, the vibration device can be used to perform stream reproduction of sound.
[0005] (Structure 2) In Structure 1, the sampling rate of the PCM data is the same as the update cycle of the control data used in the control.
[0006] (Structure 3) In Structure 1, the sampling rate of the PCM data is the same as the sampling rate of the amplifier controlling the vibration device.
[0007] (Structure 4) In Structure 1, there is also a unit that specifies the amplitude and frequency for vibration indication. In control, control data is generated in a prescribed cycle based on the vibration indication and the specified amplitude and frequency, and the control data is used for control. Thus, it is possible to use a vibration device to perform vibration output with specified amplitude and frequency and to reproduce the sound stream.
[0008] (Structure 5) In Structure 4, the frequency of the sound is specified in the vibration indication. This allows the use of a vibration device to produce sound output with specified amplitude and frequency, as well as flow-based sound output. An appropriate method can be selected depending on the application.
[0009] (Structure 6) In Structure 5, an information processing device and a controller are included. The information processing device includes a unit that sends sound-specific information and sound data to the controller. The controller includes a unit that associates the sound-specific information received from the information processing device with the sound data and stores them in a memory of the controller. The information processing device also includes a unit that specifies the sound-specific information to perform a preset reproduction instruction. The controller has a unit that performs the control, and in the control, it also performs control by reading the sound data corresponding to the specified sound-specific information from the memory according to the preset reproduction instruction. Thus, it is possible to use a vibration device to perform sound output with specified amplitude and frequency, flow-based sound output, and preset-based sound output. An appropriate method can be selected according to the application.
[0010] (Structure 7) In any of Structures 4 to 6, a system program and an application program are included. The system program performs the following processing: issuing the stream reproduction instruction based on a request from the application program obtained via a first application programming interface (API), and issuing the vibration instruction based on a request from the application program obtained via a second application programming interface (API). This facilitates application development.
[0011] (Structure 8) In Structure 4, the sampling rate of the PCM data is the same as the specified cycle. This enables efficient control of flow reproduction and the reproduction of indicated amplitude and frequency.
[0012] (Structure 9) In Structure 4, the vibration indicator specifies the amplitude and frequency with a first cycle. Regarding the control data, a second cycle of control data shorter than the first cycle is generated, and the sampling rate of the PCM data is the same as that of the second cycle. Thus, the reproduction of the indicated amplitude and frequency can be controlled with a cycle shorter than the indicator cycle, and the flow reproduction and control of the reproduction of the indicated amplitude and frequency can be performed efficiently.
[0013] (Structure 10) In Structure 4 or Structure 5, control based on flow reproduction indication and control based on vibration indication are mutually exclusive.
[0014] (Structure 11) In Structure 6, control based on flow reproduction indication, control based on preset reproduction indication, and control based on vibration indication are exclusively controlled.
[0015] (Structure 12) In Structure 1, there is an information processing device and a controller. The controller includes: a memory; and an input unit. The vibration device is capable of reproducing the frequency band of sound. The controller determines whether a predetermined operation is received at the input unit and controls the vibration device based on first data stored in the memory. The control based on the predetermined operation and the control based on the stream reproduction instruction can be combined.
[0016] (Structure 13) In Structure 12, when control based on the prescribed operation and control based on the flow reproduction indication occur simultaneously, control based on the flow reproduction indication is reduced at least.
[0017] (Structure 14) In Structure 13, when control based on the prescribed operation and control based on the flow reproduction instruction occur simultaneously, only the control based on the flow reproduction instruction is reduced.
[0018] (Structure 15) In one embodiment, the vibration control device is a vibration control device for a vibration device capable of reproducing the frequency band of sound. The vibration control device includes the following units: a unit for successively acquiring PCM data at a predetermined sampling rate; and a unit for controlling the vibration device using the successively acquired PCM data.
[0019] (Structure 16) In Structure 15, the sampling rate of the PCM data is the same as the update cycle of the control data of the control.
[0020] (Structure 17) In Structure 15, the sampling rate of the PCM data is the same as the sampling rate of the amplifier controlling the vibration device.
[0021] (Structure 18) In Structure 16, there is also a unit that acquires a vibration indication specifying an amplitude and frequency. In the control, control is also performed by generating control data in a prescribed cycle based on the vibration indication and the specified amplitude and frequency, and using the control data.
[0022] (Structure 19) In Structure 18, the vibration indicator specifies the amplitude and frequency with a first period. Regarding the control data, a second period of control data shorter than the first period is generated, and the sampling rate of the PCM data is the same as that of the second period.
[0023] (Structure 20) In structure 18, there is also a unit that performs exclusive control of the control based on the flow reproduction indication and the control based on the vibration indication.
[0024] (Structure 21) In Structure 15 or Structure 16, there is also a memory that stores sound-specific information and PCM data; and a unit for obtaining a reproduction instruction of the PCM data specifying the sound-specific information. In the control, control is also performed to read the PCM data corresponding to the specified sound-specific information from the memory according to the reproduction instruction.
[0025] (Structure 22) In structure 20, there is also a unit that performs exclusive control of control based on flow reproduction indication, control based on preset reproduction indication and control based on vibration indication.
[0026] (Structure 23) In structure 20, there is also a memory and an input unit. In the control, it is also determined whether a specified operation is received in the input unit and the control is based on the data stored in the memory.
[0027] (Structure 24) In Structure 23, there is also a unit that, when control based on the prescribed operation and control based on the flow reproduction instruction occur simultaneously, reduces at least the control based on the flow reproduction instruction.
[0028] (Structure 25) In Structure 23, there is also a unit that, when control based on the prescribed operation and control based on the flow reproduction instruction occur simultaneously, reduces only the control based on the flow reproduction instruction.
[0029] (Structure 26) In one embodiment, the information processing apparatus includes a memory storing system programs and application programs executed by its own computer. The application program performs the following processing: sequentially specifying PCM data at a predetermined sampling rate and requesting a stream reproduction instruction via a first application programming interface (API) of the system program; specifying frequency and amplitude and requesting a vibration instruction via a second application programming interface (API) of the system program; and the system program performs the following processing: issuing a command for the stream reproduction instruction to the control unit of the vibration device based on the request from the application program obtained via the first API; and issuing a command for the vibration instruction based on the request from the application program obtained via the second API.
[0030] (Structure 27) In one embodiment, the program is used to enable a computer of a vibration control device for a vibration device capable of reproducing the frequency band of sound to function as a unit that successively acquires PCM data at the same sampling rate as the control cycle of the vibration device or the sampling rate of the amplifier controlling the vibration device; and a unit that uses the successively acquired PCM data to control the vibration device.
[0031] (Structure 28) In Structure 27, the computer also functions as a unit that acquires a vibration indication specifying amplitude and frequency, and in control, generates control data in a prescribed cycle based on the vibration indication and the specified amplitude and frequency, and uses the control data.
[0032] (Structure 29) In Structure 28, the vibration indicator specifies the amplitude and frequency with a first period, and with respect to the control data, generates control data with a second period shorter than the first period, wherein the sampling rate of the PCM data is the same as that of the second period.
[0033] (Structure 30) In Structure 28, the program enables the computer to also function as a unit that exclusively controls the control based on the flow reproduction indication and the control based on the vibration indication.
[0034] The above and other objects, features, aspects and advantages of the present invention will become more apparent from the following detailed description of the invention as understood in conjunction with the accompanying drawings. Attached Figure Description
[0035] Figure 1 This is a schematic diagram illustrating an example of the vibration control system in this embodiment.
[0036] Figure 2 This is a diagram illustrating an example of data stored in volatile memory.
[0037] Figure 3 It is a diagram used to illustrate the process of vibration occurrence.
[0038] Figure 4 This is a flowchart illustrating the process of handling a preset registration request in a game program.
[0039] Figure 5 This is a flowchart illustrating the process of processing preset registration instructions in the system program.
[0040] Figure 6 This is a flowchart illustrating the pre-registration process in the MCU program.
[0041] Figure 7 This is a flowchart illustrating the process of handling API requests corresponding to events in a game program.
[0042] Figure 8 This is a flowchart illustrating the process of processing preset reproduction instructions in the system program.
[0043] Figure 9 This is a flowchart illustrating the preset reproduction process in the MCU program.
[0044] Figure 10This is a flowchart illustrating the process of handling stream reproduction instructions in the system program.
[0045] Figure 11 This is a flowchart illustrating the process of stream reproduction in an MCU program.
[0046] Figure 12 It is a graph used to illustrate vibration indication data based on sound files.
[0047] Figure 13 This is a table showing the relationship between the frequencies of the musical scales in the 12-tone equal temperament and their encoded frequencies.
[0048] Figure 14 It is a diagram used to illustrate vibration indication data based on vibration files.
[0049] Figure 15 This is a flowchart illustrating the encoding process of vibration indication data executed by the gaming device.
[0050] Figure 16 This is a flowchart illustrating the decoding process of encoded vibration indication data performed by the game controller.
[0051] Figure 17 This is a flowchart illustrating the process of generating control data executed by the game controller.
[0052] Figure 18 This is a flowchart illustrating the process of starting the process in step S1018.
[0053] Figure 19 This is a flowchart illustrating the autonomous reproduction process in the MCU program. Detailed Implementation
[0054] This embodiment will be described in detail with reference to the accompanying drawings. Furthermore, the same or equivalent parts in the drawings will be labeled with the same reference numerals, and their descriptions will not be repeated.
[0055] [Implementation Method 1]
[0056] [A. Summary]
[0057] This embodiment describes a structural example of the vibration control system 10 that controls the vibration motor 206.
[0058] Figure 1 This is a schematic diagram illustrating an example of the vibration control system 10 in this embodiment. The vibration control system 10 in this embodiment is applied to a gaming system. The vibration control system 10 includes a gaming device 100 and a game controller 200. The gaming device 100 is a main device for providing a game to a user. The game controller 200 is a device for receiving input by being held by a user playing the game.
[0059] The gaming device 100 is programmed to display images or graphics on a TV monitor, LCD, OLED (Electroluminescence) or head-mounted display (HMD) and to advance the game. The user operates the game controller 200 based on the images or graphics displayed on the display device. The gaming device 100 receives input from the user to the game controller 200 and advances the game accordingly.
[0060] The game controller 200 of this embodiment has a vibration motor 206 that vibrates according to the progress of the game. Regarding the vibration motor 206, for example, the MCU 201 controls the vibration motor 206 based on at least one of vibration indication data and PCM (Pulse Code Modulation) data, thereby causing the vibration motor 206 to vibrate. The vibration indication data is data specifying the frequency and amplitude of the vibration. The PCM data is wave data that quantizes the amplitude at a certain sampling rate, capable of representing sound waves. The sampling rate of the PCM data can be, for example, a period of 0.125 ms. Hereinafter, each 0.125 ms of data within the PCM data is sometimes referred to as one unit of PCM data.
[0061] Furthermore, in the vibration control system 10 of this embodiment, control can be performed based on both vibration indication data and PCM data. For application developers, specifying amplitude and frequency is sometimes better, while using PCM data is sometimes better; the application developer can choose which method to use. As described later, the vibration indication data is converted into control data by the MCU 201, and this control data is in PCM format in this embodiment. Therefore, when using PCM data to cause vibration, it can be used as control data without changing its format.
[0062] In this embodiment, the vibration motor 206 can vibrate not only at frequencies within the tactile frequency band but also at frequencies within the audible frequency band. When vibrating at frequencies within the tactile frequency band, it functions to impart vibration to the user's sense of touch; when vibrating at frequencies within the audible frequency band, it functions as a speaker, enabling the user to recognize the sound. The tactile frequency band refers, for example, to the frequency band in which a person can perceive vibration.
[0063] The vibration motor 206 is a type of vibration device, and in this embodiment, it is a voice coil motor. More specifically, it is a voice coil motor that performs reciprocating motion. The vibration motor 206 of this embodiment is a device capable of vibrating at high speed and with high output at frequencies within the audible band, in a manner audible to the user, based on the aforementioned PCM data. That is, the vibration motor 206 can function as a speaker based on PCM data. Furthermore, the vibration motor 206 can vibrate in both the tactile frequency and the audible frequency band. In other words, the vibration indication data can specify both the tactile frequency and the audible frequency band, allowing the vibration motor 206 to function as an vibrator that imparts vibration to the user's touch, and also as a speaker. Additionally, vibration devices employing piezoelectric elements can also be used as vibration devices.
[0064] In this embodiment, the game controller 200 uses four different methods to enable the vibration motor 206 to function as a speaker. The first method involves pre-setting PCM data along with identification information (ID, etc.) from the game device 100 to the game controller 200's memory, and then having the game device 100 specify the identification information of the preset PCM data for reproduction (hereinafter referred to as "preset reproduction"). The second method involves sequentially sending PCM data from the game device 100 to the game controller 200 (hereinafter referred to as "stream reproduction"). The third method involves reproducing the vibration based on vibration indication data, specifying the amplitude and frequency (frequency within the audible band) (hereinafter referred to as "specified amplitude and frequency reproduction"). The fourth method involves reproducing the vibration based on the operation of the game controller 200, through processing by the processor within the game controller (since this is done independently of the processing of the game device 100, it is referred to as "autonomous reproduction"). The data used for autonomous reproduction can be either PCM data or vibration indication data (data indicating amplitude and frequency, specified within the audible frequency band).
[0065] [B. Structure of the Game Device]
[0066] The gaming device 100 includes a processor 101, non-volatile memory 102, volatile memory 103, and a communication interface (I / F) 104. The processor 101 is the processing unit for executing the processing provided by the gaming device 100. The processor 101 reads the system program 102P1 and the game program 102P2 stored in the non-volatile memory 102 and expands them in the volatile memory 103 for execution.
[0067] Processor 101 is a processing circuit, such as a CPU (Central Processing Unit). Furthermore, in this specification, the term "processor" includes not only processing circuits that execute processing according to command codes described in a program, such as CPUs, MPUs (Micro Processing Units), and GPUs (Graphics Processing Units), but also hard-wired circuits such as ASICs and FPGAs. Hard-wired circuits such as ASICs and FPGAs have pre-formed circuitry corresponding to the processing to be executed. Moreover, the term "processor" in this specification can also include circuits that integrate multiple functions, such as SoCs (System-on-Chips). Processor 101 can, for example, be an SoC integrating the functions of a CPU and a GPU. Additionally, the processing in this embodiment can be executed by a single processor or by multiple processors working together.
[0068] Non-volatile memory 102 is a non-volatile storage device that can be accessed by processor 101, such as an SSD (Solid State Drive), flash memory, or hard disk. Alternatively, non-volatile memory 102 can also be a storage medium that can be mounted and dismounted relative to the gaming device 100, such as an optical disc or cartridge.
[0069] System program 102P1 is a program that processes the system portion of the game device 100, implements the basic functions of the game device 100, and provides various functions for application programs. System program 102P1 also includes programs for sending various data stored in volatile memory 103 to the game controller 200. Game program 102P2, as an application program, is a program for executing the game, for example, stored in a storage medium that is removably installed in the game device 100, or downloaded to non-volatile memory 102 via the Internet. System program 102P1 may also include menu programs or other application programs, which may also use vibration indication data or PCM data to cause the vibration motor to output vibration or sound.
[0070] (b1. Game Program 102P2)
[0071] The game program 102P2 in this embodiment includes a vibration file 105A, a sound file 105B, preset PCM data PD1, and streamed PCM data SD1. Hereinafter, the vibration file 105A and the sound file 105B included in the game program 102P2 will be explained first.
[0072] (b1-1. Vibration file 105A and sound file 105B)
[0073] Vibration file 105A and sound file 105B contain vibration indication data, specifically, data indicating frequency and data indicating amplitude. Vibration file 105A will be discussed later. Figure 14 A specific example is shown regarding sound file 105B, which will be discussed later. Figure 12 Specific examples are shown. For example... Figure 12 , Figure 14 As shown, vibration file 105A and sound file 105B are each a file that continuously specifies the frequency and amplitude for various events occurring in game program 102P2. That is, vibration file 105A and sound file 105B are not single data representing a certain vibration, but rather a collection of data indicating multiple consecutive vibrations.
[0074] Vibration file 105A contains data for each vibration event that enables vibration motor 206 to function as an vibrator that imparts vibrations to the user's touch, including parameters indicating frequency (frequency within a specified tactile frequency band) and amplitude.
[0075] The sound file 105B contains data for each sound event used to enable the vibration motor 206 to function as a speaker for the user to perceive sounds, including parameters representing frequency (frequency within a specified audible band) and amplitude. In this embodiment, the vibration indication data contained in the vibration file 105A and the sound file 105B have the same format, but indicate different frequency bands. Alternatively, the vibration indication data contained in the vibration file 105A and the sound file 105B may have different formats.
[0076] The frequency band specified by vibration file 105A is, for example, 40Hz to 400Hz. A heavy vibration is output when a lower frequency is specified, and a sharp vibration is output when a higher frequency is specified. The frequency band specified by sound file 105B is, for example, 400Hz to 3500Hz. A low sound is output when a lower frequency is specified, and a high sound is output when a higher frequency is specified. Furthermore, 40Hz to 400Hz is an example of "frequency within the effective frequency band of vibration." 400Hz to 3500Hz is an example of "frequency within the audible frequency band" in this disclosure. Frequencies outside of 400Hz to 3500Hz are an example of "frequency within the non-audible frequency band" in this disclosure. The boundary between frequencies within the audible frequency band and frequencies within the tactile frequency band can be appropriately changed.
[0077] For example, vibration and sound events can include collisions between objects within the virtual game space, explosions, the firing of firearms, and cars driving on roads. The vibrations and / or sounds corresponding to these events are output through the vibration of the vibration motor 206. Additionally, sound events can include sounds emitted by characters within the virtual space, collisions between objects, in-game phenomena, user selection of UI (User Interface) buttons, and moments when the SE (Sound Effect) is triggered. Furthermore, the sounds generated in response to sound events can include voice data, SE, background music (BGM), and instrument sounds. The frequency can also be specified according to a defined musical scale in the sound file 105B. The defined musical scale could be, for example, the 12-tone equal temperament.
[0078] The frequencies included in the vibration indication data can be changed based on factors such as the magnitude of a collision in the virtual game space, the weight and material of the object that collided. In other words, the sound effect can be altered by changing the frequency. The magnitude of a collision is determined, for example, by the collision speed and the weight of the object that collided. The frequency can also sometimes be limited by various system conditions.
[0079] Vibration file 105A and sound file 105B contain two parameters: frequency and amplitude, used to make the vibration motor 206 vibrate. The gaming device 100 uses these two parameters—frequency and amplitude—contained in vibration file 105A and sound file 105B to generate vibration indication data. Furthermore, in this specification, "generating" includes both reading data from non-volatile or volatile memory (for direct use in subsequent processing) and generating additional data based on the read data.
[0080] Vibration indication data is data specifying amplitude and frequency with a defined period. For example, this defined period is 5 ms. That is, vibration indication data for each defined period is contained in vibration file 105A and sound file 105B. Furthermore, as described later, control of the vibration motor 206 based on the vibration indication data is performed with a period shorter than the period of the vibration indication data. The vibration indication data contained in vibration file 105A and sound file 105B are successively sent to the game controller 200, thereby causing the game controller 200 to vibrate continuously for a period of 5 ms or more. Alternatively, it can be specified that the vibration period of the vibration motor 206 is different for each generated vibration indication data. The game controller 200 receives vibration indication data from the game device 100 and causes the vibration motor 206 to vibrate based on the frequency and amplitude specified in the received vibration indication data.
[0081] The maximum value of the input voltage of the vibration motor 206 is predetermined for each frequency. In this embodiment, the indicated amplitude of the vibration specified by the application is normalized relative to the maximum voltage at each indicated frequency. Specifically, the amplitude contained in the vibration indication data is represented by a value between 0 and 1.0. When the amplitude is "1.0", control data is generated based on the maximum voltage at the indicated frequency contained in the vibration indication data. When the amplitude is "0.5", control data is generated based on a voltage of 50% of the maximum voltage at the indicated frequency contained in the vibration indication data. The data representing the maximum voltage at each frequency is stored in the non-volatile memory of the game device and / or the non-volatile memory of the game controller and is referenced when generating control data. Alternatively, the maximum value of the output voltage of the amplifier controlling the vibration motor 206 can be set as the reference. Furthermore, the method of indicating the amplitude in the vibration indication data is not limited to this example, and normalization relative to the maximum input voltage at each frequency may not be required.
[0082] (b1-2. Preset PCM data PD1 and streaming PCM data SD1)
[0083] Next, the preset PCM data PD1 and the stream PCM data SD1 will be explained. The preset PCM data PD1 and the stream PCM data SD1 are each a set of multiple PCM data obtained by sampling at a specified period.
[0084] Preset PCM data PD1 is sent to the game controller 200 in advance, before the time of the preset playback request, and stored in the memory of the game controller 200. On the other hand, streamed PCM data SD1 is sent to the game controller 200 sequentially in real time as the stream playback request is made.
[0085] like Figure 1 As shown, the preset PCM data PD1 includes identification information Pi1. Identification information Pi1 is information used to identify each of the multiple preset PCM data PD1s. For example, each preset PCM data PD1 is assigned a different ID as identification information Pi1. Therefore, in the vibration control system 10, the desired preset PCM data can be determined based on the identification information Pi1.
[0086] Furthermore, the preset PCM data and streamed PCM data can be included in both the game program 102P2 and the system program (menu program, etc.). Alternatively, they can be pre-stored in non-volatile memory or downloaded from a server. This data is used by the game program 102P2, the system program 102P1, and so on.
[0087] For example, game program 102P2 can use all or selectively use vibration file 105A, sound file 105B, preset PCM data PD1, and stream PCM data SD1 to request the game controller 200 to generate vibration. Game program 102P2 requests the system program 102P1 to vibrate the vibration motor 206 via API (Application Programming Interface). In the vibration control system 10, a predefined command system as an API is provided for applications such as game program 102P2 to request the system program 102P1 to perform specified processes. Furthermore, in this specification, "a processor or other device executing a program performs a certain process" is sometimes expressed as "a program performs a certain process".
[0088] Specifically, game program 102P2, based on the detection of vibration or sound events according to game progress, uses a vibration indication API to request vibration from the system program by passing vibration indication data read from vibration file 105A and sound file 105B as a parameter. Alternatively, it uses a preset reproduction API to request preset reproduction from the system program by passing the identification information of preset PCM data PD1 as a parameter. Furthermore, it uses a preset registration API to request preset execution from the system program by passing preset PCM data as a parameter. Alternatively, it uses a stream reproduction API to request stream reproduction from the system program by passing stream PCM data SD1 sequentially as a parameter. Since the vibration indication data contained in the vibration and sound files differ only in frequency band, vibration indication requests can be made using a common API. Hereinafter, requests using APIs will sometimes be referred to simply as "API requests." Next, system program 102P1, which accepts API requests from game program 102P2, will be described. In addition, in some aspects, it is also possible to make these requests without preparing an API in advance.
[0089] (b2. System Program 102P1)
[0090] System program 102P1 sends various instructions to game controller 200 based on API requests from game program 102P2. Additionally, system program 102P1 includes a preset registration command program A1, a preset playback command program A2, a stream playback command program A3, a PCM encoding program PE1, a frequency encoding program En1, and an amplitude encoding program En2.
[0091] System program 102P1, based on a request from game program 102P2 to use the preset playback API, sends a preset playback command to game controller 200. The preset playback command contains identification information of the PCM data to be played back, transmitted by game program 102P2 using the preset playback API. Additionally, system program 102P1, based on a request from game program 102P2 to use the preset registration API, sends a preset registration command to game controller 200. The preset registration command contains the PCM data and its identification information transmitted by game program 102P2 using the preset playback API.
[0092] System program 102P1 sends a streaming instruction to game controller 200 by executing a request to use the streaming API based on game program 102P2. The streaming instruction contains PCM data (with a specified sample size) transmitted by game program 102P2 using the streaming API.
[0093] System program 102P1 executes a request using the vibration indication API based on game program 102P2 to send a vibration indication command to game controller 200. The vibration indication command contains vibration indication data transmitted by game program 102P2 using the vibration indication API.
[0094] When a request to use the vibration indication API is received from game program 102P2, system program 102P1 performs a process of encoding the vibration indication data obtained from game program 102P1 and sending the encoded vibration indication data to game controller 200. In the process of encoding the vibration indication data, system program 102P1 executes frequency encoding program En1 and amplitude encoding program En2. Alternatively, the process of encoding the vibration indication data may be performed by game program 102P2 instead of system program 102P1. Furthermore, when a request to use the streaming playback API is received from game program 102P2, system program 102P1 (PCM encoding program PE1) performs a process of encoding the PCM data obtained from game program 102P2 using a specified audio codec. The encoded PCM data is then sent to game controller 200.
[0095] In this embodiment, vibration indication data is encoded to enable transmission between the gaming device 100 and the game controller 200 at a capacity of 20 bits per vibration indication data. More specifically, the gaming device 100 encodes the frequency contained in the vibration indication data using 10 bits and the amplitude contained in the vibration indication data using 10 bits. Hereinafter, the encoded frequency will be referred to as the "encoded frequency," the encoded amplitude as the "encoded amplitude," and the 20 bits of data containing the encoded frequency and encoded amplitude will be referred to as "encoded vibration indication data." The gaming device 100 transmits the encoded vibration indication data to the game controller 200.
[0096] Therefore, compared to the case where unencoded vibration indication data is sent from the game device 100 to the game controller 200, the amount of communication between the game device 100 and the game controller 200 is reduced. Furthermore, the number of bits used to encode the frequency and the number of bits used to encode the amplitude can be arbitrary. Hereinafter, the frequency encoding procedure En1 and the amplitude encoding procedure En2 will sometimes be collectively referred to as "encoding procedure En". The encoding of the vibration indication data will be explained in detail in the following description.
[0097] (b3. Volatile memory 103)
[0098] Next, the volatile memory 103 within the gaming device 100 will be described. The volatile memory 103 is a volatile storage device accessible to the processor 101, such as DRAM (Dynamic Random Access Memory) or SRAM (Static Random Access Memory). The volatile memory 103 has a data area 103B1, an operation data area 103B2, and a vibration indication data area 103B3. The data area 103B1, for example, is an area that temporarily stores data generated when the processor 101 executes the game program 102P2.
[0099] Operation data area 103B2 is a temporary storage area for operation data received from the game controller 200. Operation data refers to data representing user input to the game controller 200, and includes detection values from the accelerometer 208, gyroscope 209, and operation switches 210, etc.
[0100] Vibration indication data area 103B3 is an area for temporarily storing encoded vibration indication data. PCM data area 103B4 is an area for temporarily storing PCM data such as preset PCM data PD1 and stream PCM data SD1 contained in game program 102P2, etc. Furthermore, in this specification, the term "memory" includes at least both non-volatile memory 102 and volatile memory 103.
[0101] The gaming device 100 transmits data from the volatile memory 103 to the game controller 200 via the communication interface 104. The communication interface 104 uses, for example, an antenna (not shown) to wirelessly communicate with the game controller 200. The communication method between the gaming device 100 and the game controller 200 is arbitrary. In this embodiment, the communication between the gaming device 100 and the game controller 200 conforms to the Bluetooth standard (registered trademark), but it may also conform to other standards such as IEEE 802.11, or use independent standard communication protocols. The communication between the gaming device 100 and the game controller 200 can also be wired communication. In this case, the communication interface 104 may be, for example, a terminal of the USB (Universal Serial Bus) standard.
[0102] [C. Structure of Game Controller 200]
[0103] Description of Game Controller 200. Game controller 200 includes an MCU (Micro Controller Unit) 201, an amplifier 205, a vibration motor 206, a communication interface (I / F) 207, an accelerometer sensor 208, a gyroscope sensor 209, and an operation switch 210, etc. In addition, game controller 200 has optical sensors and other features, enabling mouse functionality.
[0104] The game controller 200 can be a typical game controller held by the user with both hands or one hand, with its operation switch 210 operated by the user's fingers, thereby accepting input from the user. For example, it can also be configured as a mouse equipped with a vibration motor 206 that can be used in a general PC. Alternatively, the game controller 200 can have both the functions of a typical game controller and the functions of a mouse that can be used in a PC. Furthermore, the game controller 200 can also take other forms, such as a form that accepts input by placing it on the floor and having the user's foot contact the sensor, or a general keyboard.
[0105] MCU 201 includes a processor 202, non-volatile memory 203, and volatile memory 204. The processor 202, non-volatile memory 203, volatile memory 204, and communication interface 207 in the game controller 200 have the same hardware structure as the processor 101, non-volatile memory 102, volatile memory 103, and communication interface 104 in the game device 100 described above. Therefore, the description of these hardware structures will not be repeated. However, to reduce the cost of the game controller 200, the processor 202 may also be a processor with lower processing power than the processor 101.
[0106] Non-volatile memory 203 stores preset PCM data and MCU program 203P. Additionally, non-volatile memory 203 may also store the aforementioned PCM data for autonomous playback. The preset data area PD2 can store PCM data sent in advance from game program 102P2, or PCM data specified at the factory time of game controller 200. Alternatively, PCM data downloaded from a server by the game device 100 executing system programs may be sent to game controller 200 for storage. The PCM data for autonomous playback may also be saved as PCM data in preset data area PD2 at the factory time of game controller 200. Downloading from a specified server may refer to, for example, firmware updates. Preset data area PD2 includes an identification information area Pi2 that stores identification information Pi1.
[0107] The MCU program 203P includes a frequency decoding program De1, an amplitude decoding program De2, a preset registration program 2030, a vibration indication program 2031, a preset playback program 2032, a stream playback program 2033, an autonomous playback program 2034, and a PCM decoding program DP1. Additionally, although in Figure 1 Not shown in the figure, but the MCU program 203P includes programs for sending the detection values of the operation switch 210, the accelerometer sensor 208 and the gyroscope sensor 209 to the game device 100 via the communication interface 207, programs for performing various processes such as receiving coded vibration indication data from the game device 100.
[0108] Frequency decoding program De1 is a program used to decode the encoded frequency. Amplitude decoding program De2 is a program used to decode the encoded amplitude. Hereinafter, frequency decoding program De1 and amplitude decoding program De2 will sometimes be collectively referred to as "decoding program De". PCM decoding program DP1 is a program used to decode the PCM data sent from the game device 100 along with the stream playback instruction and the preset registration instruction. The processor 202 uses frequency decoding program De1, amplitude decoding program De2, and PCM decoding program DP1 to decode the encoded vibration indication data to generate decoded vibration indication data.
[0109] Vibration indication program 2031 is a program used to generate control data to be sent to amplifier 205 based on decoded vibration indication data. The control data is typically data representing voltage values of the waveform used to drive vibration motor 206.
[0110] The preset playback program 2032 is a program for generating control data based on the preset playback command received from the game device 100 and the preset PCM data corresponding to the identification information Pi1 sent together with the preset playback command.
[0111] The streaming program 2033 is a program for generating control data based on the streaming PCM data SD1 sent together with the streaming instruction received from the game device 100.
[0112] Autonomous Reproduction Procedure 2034 is used to reproduce according to the Figure 19 The program that generates control data based on the corresponding PCM data, as specified later in the text, is a procedure that generates control data when the conditions are met. The PCM decoding program DP1 is used to decode the PCM data encoded by the PCM encoding program PE1.
[0113] Next, use Figure 2 This describes the data stored in the volatile memory 204 of the game controller 200. Figure 2 This diagram illustrates an example of data stored in volatile memory 204. Volatile memory 204 includes a vibration indication data area 204B1, a control data area 204B2, an operation data area 204B3, a preset reproduction area 204B4, a stream reproduction area 204B5, an autonomous reproduction area 204B6, a current amplitude data area 204V1, a current frequency data area 204V2, a current phase data area 204V3, a previous amplitude data area 204V4, a previous frequency data area 204V5, a preset data area PD3, and an exclusive control flag 2035.
[0114] Vibration indication data area 204B1 is used to temporarily store coded vibration indication data and decoded vibration indication data received from the game device 100. Control data area 204B2 is used to temporarily store control data generated by the processor 202. Operation data area 204B3 is used to temporarily store operation data. Preset playback area 204B4 is used to temporarily store preset PCM data identified by the preset playback program 2032 as the playback target. Stream playback area 204B5 is used to temporarily store stream PCM data SD1 received along with the stream playback command. Furthermore, at certain times, data of a sampled amount sent from the game device 100 is stored in the stream playback area 204B5. Autonomous playback area 204B6 is used to temporarily store PCM data for autonomous playback.
[0115] The current amplitude data region 204V1, the current frequency data region 204V2, the current phase data region 204V3, the previous amplitude data region 204V4, and the previous frequency data region 204V5 are temporary regions used in the generation of control data based on vibration indication data. These regions will be described in detail later.
[0116] Preset data area PD3 is a volatile area used to store preset PCM data, similar to preset data area PD2. That is, preset PCM data can be stored in either a non-volatile or volatile manner. Preset PCM data temporarily used by a game program 102P2 can also be stored in the volatile area. Preset data area PD3 can also store PCM data sent from game program 102P2.
[0117] The exclusive control flag 2035 is used to determine which of the four reproduction methods (preset reproduction, flow reproduction, specified amplitude and frequency reproduction, and autonomous reproduction) should be used to vibrate the vibration motor 206 when multiple reproductions occur simultaneously. The exclusive control flag 2035 includes the preset reproduction flag Fg1, the flow reproduction flag Fg2, and the autonomous reproduction flag Fg3. The preset reproduction flag Fg1 is set to "True" when the vibration motor 206 is vibrating via the preset reproduction command, and set to "False" when it is not.
[0118] In flow reproduction, flag Fg2 is set to "true" when the vibration motor 206 is vibrating via flow reproduction command, and set to "false" otherwise. In autonomous reproduction, flag Fg3 is set to "true" when the vibration motor 206 is vibrating via autonomous reproduction, and set to "false" otherwise.
[0119] Return to Figure 1 The control data stored in the control data area 204B2 of the volatile memory 204 is transferred to the amplifier 205, for example, via DMA (Direct Memory Access). In this embodiment, multiple (specifically, for example, 40) control data are transferred to the amplifier 205 simultaneously. The amplifier 205 in this embodiment is an amplifier that performs PWM (Pulse Width Modulation) control at a frequency of 8 kHz. Based on the received control data, the amplifier 205 determines the duty cycle every 0.125 ms to supply power to the vibration motor 206. Hereinafter, the 0.125 ms period in which one control data is used to determine the duty cycle is sometimes referred to as the "control loop". The vibration control system 10 is configured such that the control loop (0.125 ms) is consistent with the sampling rate of each of the aforementioned PCM data. That is, in this embodiment, the sampling rate of each of the aforementioned PCM data is a 0.125 ms period. Furthermore, the frequency of the PWM control of the amplifier 205 may not be 8 kHz. For example, when the PWM control frequency of amplifier 205 is 48kHz, the sampling rate of PCM data can also be approximately 0.0208ms. Furthermore, the sampling rate of amplifier 205 (the update frequency of the data input to the amplifier) is 0.125ms.
[0120] As described above, the vibration motor 206 is typically a voice coil motor, or it could be a motor using a piezoelectric element, etc., and the type of motor is arbitrary. Additionally, the vibration motor 206 may also include a component such as a paper cone that vibrates the surrounding air, but the vibration motor 206 may also be constructed to produce sound by vibrating the housing. That is, the vibration motor 206 is configured to produce sound in accordance with the design of the housing, etc. The vibration motor 206 can provide both physical vibration and sound to the user holding the game controller 200 that houses the vibration motor 206.
[0121] Accelerometer 208 detects the magnitude of linear acceleration along a specified three-axis direction. Additionally, accelerometer 208 can also detect acceleration along one or two axes. Gyroscope sensor 209 detects the tilt, angular velocity, and angular acceleration of the game controller 200, and outputs the detection results to the operation data area 204B3.
[0122] The detection results from the accelerometer 208 and the gyroscope 209 are output to the processor 101. The processor 101 in the gaming device 100 is able to calculate information related to the motion and / or posture of the game controller 200 based on the detection results from the accelerometer 208 and the gyroscope 209.
[0123] When the game controller 200 includes functions as a general-purpose mouse, the operation switch 210 may include, for example, a left-click receiving unit, a right-click receiving unit, and a cursor operating unit. Furthermore, in addition to the left-click receiving unit, right-click receiving unit, and cursor operating unit, the operation switch 210 may also include at least one button, key, and / or joystick disposed on the surface of the game controller 200. The button, key, and / or joystick may include, for example, buttons corresponding to characters such as A button and B button, a cross-shaped button for inputting up, down, left, and right directions, a 3D joystick for inputting tilt direction and tilt amount, etc. Additionally, the operation switch 210 may also be a device for reading specified information, such as an NFC (Near Field Communication) reader. Successful NFC reading may also be included as a specified condition.
[0124] Figure 3 This diagram illustrates the process of causing the vibration motor 206 to generate vibrations in the tactile frequency band or the audible frequency band. First, the process in the case of generating vibrations in the tactile frequency band is explained. Based on the occurrence of a vibration event, the game program 102P2 reads the corresponding vibration indication data (containing parameters representing frequency and amplitude) from the vibration file 105A and passes it to the system program 102P1 via the vibration indication API.
[0125] System program 102P1 sends vibration indication commands to game controller 200 based on vibration indication data obtained from game program 102P2. More specifically, system program 102P1 uses encoding program En to encode the obtained vibration indication data and sends the encoded vibration indication data and the vibration indication command containing the encoded vibration indication data to game controller 200. MCU 201 uses decoding program De to decode the encoded vibration indication data.
[0126] Subsequently, MCU 201 executes vibration indication program 2031 on the decoded vibration indication data. MCU 201 obtains the value of exclusive control flag 2035 and performs processing corresponding to the values of each flag contained in exclusive control flag 2035. After confirming the value of exclusive control flag 2035, vibration indication program 2031 determines whether to perform vibration control based on vibration indication data, and generates control data based on the decoded vibration indication data and saves it to control data area 204B2. MCU 201 outputs the control data saved in control data area 204B2 to amplifier 205. As a result, vibration motor 206 vibrates based on the control data, functioning as a vibrator that provides tactile feedback. Thus, the vibration indication data generated based on vibration file 105A, after being encoded by game device 100, is decoded by game controller 200 and processed to make vibration motor 206 vibrate. Alternatively, encoding and decoding processing can be omitted.
[0127] Next, use Figure 3 To illustrate the output of the audible frequency band based on preset reproduction, the game program 102P2 uses the preset registration API to transmit the preset PCM data PD1 and its identification information to the system program 102P1 at the preset registration time. The preset registration time could be, for example, when the game program 102P2 starts running, when the game starts, when entering a specified level, or when a character moves to a specified map in the virtual space.
[0128] System program 102P1 receives a preset registration request from game program 102P2 via a preset registration API and sends a preset registration instruction containing preset PCM data PD1 and identification information from game program 102P2 to game controller 200. Although not shown, in this embodiment, system program 102P1 uses PCM encoding program PE1 to encode the PCM data and then sends the encoded PCM data. Alternatively, system program 102P1 can also send the PCM data without encoding. MCU 201, upon receiving the preset registration instruction, uses PCM decoding program DP1 to decode the encoded PCM data and stores the decoded preset PCM data PD1 along with the identification information in at least one of preset data area PD2 and preset data area PD3. Thus, game controller 200 can pre-store PCM data for outputting sound within game controller 200.
[0129] When the game program 102P2 is running, based on an audio event that causes the preset PCM data to be reproduced, it uses the preset reproduction API to request the system program 102P1 to reproduce the pre-registered preset PCM data of the game controller 200. When making this request, the game program 102P2 uses the preset reproduction API to pass the identification information Pi1 associated with the preset PCM data PD1 to be reproduced, as well as reproduction parameters representing the parameters during reproduction, to the system program 102P1. The reproduction parameters may also include at least one of the following parameters for PCM data reproduction: volume, pitch, reproduction speed, equalizer, sound imaging, and echo.
[0130] System program 102P1 receives a request from game program 102P2 using the preset playback API and sends a preset playback instruction containing the transmitted identification information and playback parameters to game device 100. When MCU 201 receives the preset playback instruction, it executes preset playback program 2032. Preset playback program 2032 performs the following processing: determines the preset PCM data PD1 corresponding to the received identification information Pi1, and performs playback using the received playback parameters. That is, preset playback program 2032 saves the determined preset PCM data PD1 to preset playback area 204B4.
[0131] At this time, MCU 201 accesses the exclusive control flag 2035 and updates the preset playback flag Fg1 to "true". Each sampled data of the determined preset PCM data PD1 is read out sequentially and saved to the control data area 204B2. For example, each sampled data of the determined preset PCM data PD1 is adjusted according to the value of the volume value data, which is a playback parameter. For example, when the volume value is 1, the sampled data is directly set as control data; when the volume value is 0.5, the value that makes the sampled data 0.5 times is saved as control data. MCU 201 outputs each sampled data of the PCM data saved in the control data area 204B2 as control data to amplifier 205. Thus, vibration motor 206 vibrates based on this PCM data, functioning as a speaker to output sound. In this way, vibration control system 10 can enable vibration motor 206 to output sound by sending the preset PCM data to game controller 200 in advance and only sending identification information Pi1 from system program 102P1 to game controller 200.
[0132] Next, the output of the audible frequency band based on the above-described stream reproduction will be explained. When the game program 102P2 is running, etc., based on an audio event that causes the stream PCM data SD1 to be reproduced, it uses the stream reproduction API to request the system program 102P1 to reproduce the stream PCM data SD1. This request includes one or more sampled data sequentially read from the stream PCM data SD1, which is the object of reproduction, along with the aforementioned reproduction parameters (volume value, etc.).
[0133] System program 102P1 sends a streaming playback instruction to game controller 200 based on a request from game program 102P2 via the streaming playback API. Although not shown, in this embodiment, system program 102P1 encodes the streaming PCM data using PCM encoding program PE1. Alternatively, system program 102P1 may proceed without encoding the streaming PCM data. The streaming playback instruction includes one or more sampled data and playback parameters from the encoded streaming PCM data SD1 obtained from game device 100. Based on the received streaming playback instruction, MCU 201 decodes the encoded streaming PCM data using PCM decoding program DP1 and executes streaming playback program 2033. Streaming playback program 2033 saves the sampled data and playback parameters of the received streaming PCM data SD1 to streaming playback area 204B5.
[0134] At this time, MCU 201 accesses the exclusive control flag 2035 and updates the streaming playback flag Fg2 to "true". The sampled data of the received PCM data is saved to the control data area 204B2. At this time, for example, each sampled data of the determined preset PCM data PD1 is adjusted according to the value of the volume value data as a playback parameter and then saved to the control data area 204B2. MCU 201 outputs the control data saved in the control data area 204B2 to the amplifier 205. As a result, the vibration motor 206 uses the sampled data of the PCM data as control data to vibrate and functions as a speaker to output sound. In this way, the vibration control system 10 can enable the vibration motor 206 to output sound in real time by sending streaming PCM data to the game controller 200 according to the occurrence of sound events.
[0135] Next, the output of the audible frequency band reproduced based on the specified amplitude frequency described above will be explained. During game execution, game program 102P2 reads vibration indication data (containing parameters representing frequency and amplitude) from the corresponding sound file 105B based on the occurrence of a sound event and passes it to system program 102P1 using the vibration indication API. System program 102P1, based on the vibration indication data passed using the vibration indication API, sends a vibration indication command to game controller 200. When using vibration indication data, the processing remains the same whether the frequency of the specified haptic frequency band is specified (based on vibration file 105A) or the frequency of the specified audible frequency band is specified (based on sound file 105B), therefore, it will not be described again.
[0136] Next, the sound output based on the above-described autonomous playback will be explained. For example, the MCU 201 continuously executes the autonomous playback program 2034 while the game controller 200 is being powered. During the execution of the autonomous playback program 2034, the MCU 201 determines whether predetermined conditions have been met. Prescribed conditions may include, for example, the operation switch 210 being activated, the detection values of the accelerometer 208 and gyroscope 209 falling within a predetermined range, a predetermined mouse operation being performed, or a combination thereof.
[0137] When specified conditions are met, MCU 201 reads the autonomous reproduction data corresponding to those conditions. The autonomous reproduction data may be, for example, PCM data, stored in at least one of preset data area PD2 and preset data area PD3. Alternatively, the autonomous reproduction data may be vibration indication data (data specifying amplitude and frequency), stored in at least one of non-volatile memory 203 and volatile memory 204. Figure 3The diagram illustrates a scenario where PCM data is stored in at least one of preset data areas PD2 and PD3. The MCU 201 accesses either preset data area PD2 or preset data area PD3, acquires PCM data for autonomous playback, and saves it to the autonomous playback area 204B6. It then sequentially reads out sampled data for use as control data. Thus, during autonomous playback, regardless of whether there is an instruction from the game device 100, the vibration motor 206 outputs sound based on the operation of the game controller 200.
[0138] The following flowchart illustrates the processes performed by each of the game program 102P2, system program 102P1, and MCU 201.
[0139] [D. Pre-set Registration Processing]
[0140] Figure 4 This is a flowchart illustrating the process of handling a preset registration request in game program 102P2. Figure 4 The process shown in the flowchart is achieved by the processor 101 executing the game program 102P2, which begins execution based on the fact that the game program 102P2 has been started.
[0141] The processor 101 executing game program 102P2 (hereinafter, sometimes referred to as "game program 102P2") determines whether it is a preset registration time (step S100). If it is not a preset registration time ("No" in step S100), game program 102P2 repeats the process of step S100. If it is a preset registration time ("Yes" in step S100), game program 102P2 uses the preset registration API to request system program 102P1 to use the preset registration API (step S101). That is, game program 102P2 uses the preset registration API to transmit the preset PCM data PD1, which is the registration object, and the identification information Pi1 corresponding to the preset PCM data PD1 to system program 102P1 (step S101), causing the process to return to step S100.
[0142] Figure 5 This is a flowchart illustrating the process of issuing a preset registration command in system program 102P1. Figure 5 The process shown in the flowchart is implemented by the processor 101 executing the preset registration command program A1 contained in the system program 102P1, which starts execution when the game device 100 is powered on.
[0143] The processor 101 (hereinafter, sometimes referred to as "system program 102P1") executing the preset registration command program A1 of system program 102P1 determines whether game program 102P2 has made a preset registration request via the preset registration API (step S201). If game program 102P2 has not made a preset registration request ("No" in step S201), system program 102P1 repeats the process of step 201. If game program 102P2 has made a preset registration request ("Yes" in step S201), system program 102P1 acquires the preset PCM data PD1 as the registration object, the identification information Pi1 corresponding to the preset PCM data PD1, and the reproduction parameters (step S202). System program 102P1 sends a preset registration instruction containing the acquired preset PCM data, identification information, and reproduction parameters to game controller 200 (step S203), causing the process to return to step S201. As described above, system program 102P1 can also encode PCM data in step S203 and send the encoded PCM data.
[0144] Figure 6 This is a flowchart illustrating the preset registration process in MCU program 203P. Figure 6 The flowchart shown is implemented by the MCU 201 executing the preset registration program 2030. The MCU 201 (hereinafter, sometimes referred to as "MCU program 203P") executing the preset registration program 2030 of MCU program 203P determines whether a preset registration instruction has been received (step S251).
[0145] When the MCU 201 of the game controller 200 receives a preset registration instruction ("Yes" in step S251), it saves the preset PCM data and identification information contained in the instruction to at least one of the preset data area PD2 and preset data area PD3 (step S252). If the PCM data received in step S251 is encoded, the MCU 201 decodes the encoded preset PCM data. If the MCU 201 of the game controller 200 does not receive a preset registration instruction ("No" in step S251), it repeats the process of step S251. Therefore, the MCU 201 of the game controller 200 can then output sound based on the pre-registered preset PCM data by receiving a preset playback instruction specifying the identification information Pi1 from the game device 100.
[0146] [E. Various playback requests based on game program 102P2]
[0147] Figure 7This is a flowchart illustrating various processing steps of controlling the vibration motor 206 based on events as part of the processing of game program 102P2. The processor 101 executing game program 102P2 (hereinafter simply referred to as "game program 102P2") obtains operation data from the game controller 200 (step S301). Based on the obtained operation data, game program 102P2 causes game objects to perform actions (step S302). Game objects may include, for example, a player character that the user operates in the virtual space within the game, or a car body in a racing game.
[0148] Game program 102P2 determines whether a vibration event occurred in the game based on an action performed by a game object, or based on an in-game event unrelated to the action of the game object (step S303). If a vibration event occurred in the game ("Yes" in step S303), game program 102P2 requests system program 102P1 to use the vibration indication API (step S304). That is, game program 102P2 transmits the vibration indication data from the vibration file 105A corresponding to the occurred vibration event to system program 102P1 via the vibration indication API. Alternatively, game program 102P2 can generate vibration indication data based on vibration file 105A and transmit the generated vibration indication data to system program 102P1.
[0149] If no vibration event occurs (No in step S303), the game program 102P2 determines whether a sound event occurred in the game based on an action performed by a game object or based on an in-game event unrelated to the action of the game object (step S305).
[0150] In the event of a sound event ("Yes" in step S305), the game program 102P2 determines whether the sound event corresponds to a preset reproduction, a stream reproduction, or a reproduction with a specified amplitude and frequency (step S306). Specifically, depending on whether the code of the game program 102P2 executed when the sound event occurs uses the preset reproduction API, the stream reproduction API, or the vibration indication API, it executes any one of the following: a request for a preset reproduction indication, a request for a stream reproduction indication, or a request for a reproduction indication with specified amplitude and frequency.
[0151] If the code corresponding to the occurring sound event uses the vibration indication API, the game program 102P2 requests the system program 102P1 to use the vibration indication API (step S307). That is, the game program 102P2 transmits the corresponding vibration indication data (including frequency and amplitude parameters, specified as frequencies within the audible band) from the sound file 105B to the system program 102P1. The processing in step S307 is the same as that in step S304 (only the specified frequency is different).
[0152] If the code corresponding to the sound event is code that uses the streaming API, the game program 102P2 requests the system program 102P1 to use the streaming API (step S308). In step S308, the game program 102P2 uses the streaming API to read the first 20ms of data contained in the streaming PCM data SD1 corresponding to the sound event and passes it to the system program 102P1, as well as the playback parameters.
[0153] If the code corresponding to the sound event is a code that uses the preset reproduction API, the game program 102P2 requests the system program 102P1 to use the preset reproduction API (step S309). That is, the game program 102P2 passes the identification information Pi1 and the reproduction parameters to the system program 102P1.
[0154] After the processing in steps S307, S308, and S309, the game program 102P2 determines whether there is any unsent streaming PCM data (step S310). That is, the game program 102P2 determines whether all sampled data contained in the streaming PCM data SD1, which has been reproduced since step S308, has been transmitted to the system program 102P1. If not all sampled data contained in the streaming PCM data SD1, which is the object of reproduction, has been transmitted, the game program 102P2 determines that it is in the middle of the reproduction of the streaming PCM data, i.e., there is unsent streaming PCM data.
[0155] Then, game program 102P2 sends the first 20ms of unsent stream PCM data and reproduction parameters to request stream reproduction (step S311). Thus, game program 102P2 does not send the entire stream PCM data SD1 at once, but rather transmits one or more sampled data. In other words, the stream PCM data SD1 is divided into 20ms segments and passed sequentially to system program 102P1. Afterwards, game program 102P2 performs other processing for game progression (step S312), returning the processing to step S301.
[0156] Thus, in the vibration control system 10 of this embodiment, the game program 102P2 can make control requests for the vibration motor 206 using various APIs based on sound events.
[0157] [F. Preset Reproduction Processing Based on System Program and MCU Program]
[0158] Figure 8 This is a flowchart illustrating the process of issuing a preset reproduction command in system program 102P1. Figure 8 The processing in the flowchart shown is achieved by the processor 101 executing the preset playback command program A2 contained in the system program 102P1. The processor 101 (hereinafter, sometimes referred to as "system program 102P1") executing the preset playback command program A2 of system program 102P1 determines whether it has received... Figure 7 The preset reproduction request shown in step S309 (step S401). If no preset reproduction request is received (no in step S401), the process of step S401 is repeated.
[0159] Upon receiving a preset playback request ("Yes" in step S401), system program 102P1 obtains identification information Pi1 and playback parameters from game program 102P2 (step S402). System program 102P1 sends a preset playback command containing the obtained identification information Pi1 and playback parameters to game controller 200 (step S403), causing the process to return to step S401.
[0160] Figure 9 This is a flowchart illustrating the preset reproduction process of MCU program 203P. Figure 9 The processing in the flowchart shown is achieved by the MCU 201 executing the MCU program 203P, for example, starting based on the game controller 200 being powered on and the game controller 200 being connected to the game device 100. Figure 9 The flowchart shown illustrates the processing.
[0161] The MCU 201 (hereinafter, sometimes referred to as "MCU program 203P") executing MCU program 203P determines whether a preset playback instruction has been received (step S501). If no preset playback instruction has been received ("No" in step S501), MCU program 203P repeats the process of step S501. If a preset playback instruction has been received ("Yes" in step S501), MCU program 203P updates the preset playback flag Fg1 in the exclusive control flag 2035 to "True" (step S502).
[0162] The MCU program 203P reads the preset PCM data PD1 corresponding to the identification information Pi1 contained in the received preset playback instruction from the preset data areas PD2 and PD3 and saves it to the preset playback area 204B4 (step S503).
[0163] The MCU program 203P reads the preset PCM data PD1 in the preset reproduction area 204B4 sequentially from the initial sampled data, and adjusts it according to the received reproduction parameters, setting each sampled data (sampling rate of 0.125ms period, i.e., sampling rate of 8kHz) as control data (step S505).
[0164] MCU 201 determines whether flag Fg3 in autonomous playback is "true" (step S506). If flag Fg3 in autonomous playback is "true" ("yes" in step S506), MCU program 203P reduces the voltage represented by the control data set in S505 (e.g., by 0.7 times). Thus, even if autonomous playback and preset playback occur simultaneously, there is a countermeasure for situations where the voltage exceeds the maximum voltage predetermined for the vibration motor 206 or amplifier 205. For example, the preset playback process is allocated 70% of the maximum voltage, and the autonomous playback process is allocated 30% of the maximum voltage. Furthermore, the maximum voltage allocated to the preset playback process and the autonomous playback process is not limited to 7:3, but can also be 8:2, 9:1, or 6:4.
[0165] If the MCU program 203P sets Fg3 to "false" during autonomous playback ("no" in step S506), or after executing step S507, it writes one sampled data from the PCM data to the control data area 204B2 (step S508). The 0.125ms amount of control data written to the control data area 204B2 is sent to the amplifier 205 via DMA.
[0166] MCU 201 determines whether it has completed writing all sampled data contained in the preset PCM data PD1 within the preset reproduction area 204B4 as control data to the control data area 204B2 (step S509). If not all data has been written ("No" in step S509), MCU 201 returns the process to step 505. If all data has been written ("Yes" in step S509), MCU 201 deletes the preset PCM data PD1 within the preset reproduction area 204B4, updates the preset reproduction flag Fg1 to "False" (step S510), and returns the process to step S501.
[0167] In this way, the MCU 201 only needs to receive the identification information Pi1 from the system program 102P1 to reproduce the preset PCM data. When multiple game controllers 200 are connected to the game device 100, if the PCM data itself is sent to each game controller 200 every time a sound event occurs, the sound generation may sometimes be delayed. In this embodiment, when a sound event occurs, the identification information Pi1 is sent to each game controller 200 to reproduce the PCM data pre-registered in each game controller 200, thereby suppressing the delay in sound generation in each game controller 200. Furthermore, since there is no interaction between the game controller 200 and the game device 100 to communicate the PCM data itself when a sound event occurs, sound output can be performed without data loss compared to real-time PCM data transmission. Therefore, preset reproduction can be used for sounds that require reliable output.
[0168] [G. Stream Reproduction Processing Based on System Programs and MCU Programs]
[0169] Figure 10 This is a flowchart illustrating the process of issuing a stream reproduction instruction in system program 102P1. Figure 10 The processing of the flowchart shown is achieved by the processor 101 executing the stream reproduction command program A3 contained in the system program 102P1. The processor 101 (hereinafter, sometimes referred to as "system program 102P1") executing the stream reproduction command program A3 of the system program 102P1 determines whether it has received... Figure 7 Steps S308 and S311 show the request using the Stream Reproduction API (step S601). If no request using the Stream Reproduction API is received (No in step S601), the process of step S601 is repeated.
[0170] Upon receiving a request to use the streaming playback API ("Yes" in step S601), system program 102P1 acquires 20ms of streaming PCM data from game program 102P2 (step S602). System program 102P1 sends a streaming playback instruction containing the acquired 20ms of streaming PCM data to game controller 200 (step S603), causing the process to return to step S601. That is, processor 101 sends multiple samples of the streaming PCM data SD1 to game controller 200 at the same time. As described above, system program 102P1 can also encode the PCM data in step S603 and send the encoded PCM data.
[0171] Figure 11This is a flowchart illustrating the stream playback process in MCU program 203P. The MCU 201 (hereinafter, sometimes referred to as "MCU program 203P") executing MCU program 203P determines whether a stream playback instruction has been received (step S701). If no stream playback instruction has been received ("No" in step S701), MCU program 203P repeats the process in step S701. If a stream playback instruction has been received ("Yes" in step S701), MCU program 203P determines whether the preset playback flag Fg1 is "True" (step S701A). If the preset playback flag Fg1 is "True" ("Yes" in step S701A), MCU program 203P moves the process to step S710. Thus, the stream playback process and the preset playback process are mutually exclusive, with the preset playback process taking precedence over the stream playback process.
[0172] The data is read by replacing the preset playback flag Fg1 with the streaming playback flag Fg2, replacing the preset PCM data PD1 with the streaming PCM data SD1, and replacing the preset playback area 204B4 with the streaming playback area 204B5. Figure 11 Steps S702~S710 in the middle Figure 9 Steps S502 to S510 correspond to each other. Therefore, they are not repeated. Figure 11 Explanation of steps S702 to S710.
[0173] In this way, by acquiring 20ms of stream PCM data SD1 sequentially, the MCU 201 can perform real-time sound output processing based on the occurrence of sound events. Therefore, it is unnecessary to send PCM data in advance during the loading time of the game program 102P2.
[0174] [H. Encoding and Decoding Processing When Using Vibration Indication Data]
[0175] The following explains the generation of vibrations based on sound file 105B. Figure 12 This is a diagram used to illustrate vibration indication data based on sound file 105B. Figure 12 The image from left to right shows sound file 105B, vibration indication data 114 encoded from the sound file, and vibration indication data 110 decoded from the sound file.
[0176] The sound file 105B stores vibration indication data (data of parameters specifying the frequency and amplitude of the vibration) that should be generated for each event. Figure 12 As an example of sound file 105B, this illustrates an example of outputting melody A due to the occurrence of a specific sound event. Furthermore, vibration indication data can be generated in real-time without being pre-stored in file format.
[0177] Melody A is a musical note, such as background music (BGM) representing the progression of a game or the sound of an instrument played within a virtual game space. In other words, a melody is a collection of notes output sequentially; it is the sound that expresses music. Melody A combines multiple notes from the 12-tone equal temperament scale. Specifically, melody A is constructed by outputting 5ms of La0 (A0), 5ms of La#0 (A#0), and 5ms of La1 (A1). Furthermore, melody A can combine more notes, or it can be a single note. Sounds generated by sound events can also include sounds outside the frequencies of the scale. Additionally, it can be a SE (Sequence of Sound) rather than a melody.
[0178] The frequencies of each note are predetermined. The frequency of La0 (A0) is 27.500. Figure 12 In the example, the frequency of La0 (A0) is specified with an amplitude of "1.0". When the tone of La0 (A0) is to be output, the frequency is specified as 27.500Hz, and the vibration motor 206 outputs a waveform signal with a peak voltage of 27.500Hz at the maximum permissible voltage. However, the sound file 105B may also specify the pitch itself instead of the frequency.
[0179] Next, the frequency encoding will be explained. The processor 101 uses the following frequency encoding formula to generate the frequencies contained in the decoded vibration indication data.
[0180] (Frequency encoding formula) Encoded frequency = 96 × log2(indication frequency / 110) + 333… (Formula A)
[0181] Since the frequency of La0 (A0) is 27.500 Hz, the encoded frequency is 141 if the above-described encoding formula is used. In this embodiment, the encoded frequency is a non-negative integer. Furthermore, the value represented as "96" in the frequency encoding formula is sometimes called the "first constant." The value represented as "110" in the encoding formula is sometimes called the "second constant." The value represented as "333" in the encoding formula is sometimes called the "third constant." The frequency encoding formula encodes each note on the 12-tone equal temperament scale based on this formula.
[0182] When indicating a frequency of 29.135 Hz, if the frequency encoding formula is used, 149 is calculated. In this case, the tone "La#0 (A#0)" is indicated. When indicating a frequency of 55.000 Hz, if the frequency encoding formula is used, 237 is calculated. In this case, the tone "La1 (A1)" is indicated.
[0183] Next, the amplitude encoding will be explained. The processor 101 encodes the amplitude contained in the vibration indication data using the following amplitude encoding formula. The amplitude is linearly encoded during the encoding process. Linear encoding means setting an encoded value proportional to the amplitude value. In this embodiment, the amplitude value is encoded proportionally as a value obtained by dividing the value from 0 to 1.0 into 1024 equal parts.
[0184] (Encoding formula for amplitude) Encoded amplitude = Amplitude × 1023… (Formula B)
[0185] exist Figure 12 In the example, the amplitude indicated by the vibration indication data is 1.0. Therefore, if the above amplitude encoding formula is used, the encoded amplitude is 1023.
[0186] Processor 101 generates coded vibration indication data 114 containing coded frequency and coded amplitude. Then, the coded vibration indication data 114 containing coded frequency and coded amplitude is sent from game device 100 to game controller 200. Processor 202 of game controller 200 decodes the coded vibration indication data 114 using a frequency decoding program De1. Processor 202 decodes the coded frequency using the frequency decoding formula described below. Furthermore, the frequency decoding formula is a formula obtained by transforming the frequency encoding formula, and is essentially the same formula.
[0187] (Frequency decoding formula) Decoding frequency = 110 × 2 (编码频率-333) / 96 …(Formula C)
[0188] The value represented as "96" in the frequency decoding formula corresponds to "96" in the frequency encoding formula. Similarly, the values represented as "110" and "333" in the frequency decoding formula also correspond to "110" and "333" in the frequency encoding formula, respectively.
[0189] With an encoding frequency of 141, the decoding frequency is 27.500Hz when using the decoding method for calculation. With encoding frequencies of 149 and 237, the decoding frequencies are 29.135Hz and 55.000Hz respectively when using the decoding method for calculation.
[0190] Figure 12 The vibration indication data shown does not change the numerical value of the frequency represented before and after encoding, and is reproduced as the frequencies of "La0(A0)", "La#0(A#0)" and "La1(A1)". In this way, in the vibration control system 10 of this embodiment, when any of the notes of the 12-tone equal temperament scale is indicated, the frequencies of each note of the 12-tone equal temperament scale can be maintained and output from the vibration motor 206 in a way that does not degrade the data.
[0191] Next, the amplitude decoding will be explained. The processor 202 uses the following amplitude decoding formula to decode the encoded amplitude.
[0192] (Amplitude decoding formula) Decoded amplitude = Encoded amplitude / 1023… (Formula D)
[0193] For the value calculated using the decoding formula described above, processor 202 rounds it to the nearest decimal. The result is as follows: Figure 12 As shown, the decoded amplitude becomes the same value as before encoding.
[0194] Figure 13 This is a table showing the relationship between the frequencies of the musical scales in the 12-tone equal temperament and their encoded frequencies. Figure 13 The image shows a portion of the 12-tone equal temperament scale and its corresponding frequencies. 12-tone equal temperament is a scale expressed by dividing an octave into 12 equal parts. For example, in the case of a piano scale, it consists of 88 notes including "La0 (A0)," "La#0 (A#0)," "Si (B7)," and "Do (C8)." The frequencies for all 88 notes are predetermined. The notes in 12-tone equal temperament can be expressed by setting the first term to 27.500 Hz and the common ratio to 2. (1 / 12) It can be expressed as a geometric sequence.
[0195] The lowest note in the 88-tone scale is "La0 (A0)", with a frequency of 27.500 Hz. The second lowest note is "La#0 (A#0)", with a frequency of approximately 29.135 Hz. The frequency of "La#0 (A#0)," which is one note higher than "La0 (A0)," is the frequency of "La0 (A0)" multiplied by the common factor (2). (1 / 12) The value obtained is [value]. The highest note in the 88-tone scale is "Do8 (C8)," with a frequency of approximately 4186.009 Hz. Some of the other notes included in the 12-tone equal temperament scale are also [information missing]. Figure 13 As shown in the figure. In this embodiment, the frequency of the musical scale is indicated by the value after rounding to the fourth decimal place, but in another respect, it may also indicate the frequency value including values below the fourth decimal place.
[0196] In addition, such as Figure 13 As shown, the frequency of "La1(A1)," which is one octave (12 notes) higher than "La0(A0)," is twice the frequency of "La0(A0)." The same applies to the other notes in the 12-tone equal temperament; when raised by one octave, their frequencies double.
[0197] Common ratio 2 (1 / 12)The denominator "12" in the exponent part indicates 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-tone, 7-tone, 15-tone, and 17-tone equal temperaments can be expressed in addition to 12-tone equal temperament.
[0198] As explained above, in this embodiment, the decoding frequency is obtained by decoding the encoded frequency using the following frequency decoding formula.
[0199] (Frequency decoding formula) Decoding frequency = 110 × 2 (编码频率-333) / 96
[0200] In this embodiment, the encoding frequency can range from 0 to 1023. Therefore, the minimum decoding frequency is 110 multiplied by 2. (-333 / 96) The obtained value, i.e. Figure 13 The encoding frequency shown is 0, which is "9.936Hz". The maximum decoding frequency is 110 multiplied by 2. ((1023-333) / 96) The obtained value, i.e. Figure 13 The encoded frequency shown is "16034.140Hz" at 1023. The common ratio of the sequence that can be expressed by the decoded frequency is 2. (1 / 96) .
[0201] In the frequency decoding formula, 110 is a multiple of the first term of the 12-tone equal temperament, "27.5". 96 in the frequency decoding formula is a multiple of 12 representing the number of notes contained in an octave. The minimum decoded frequency, "9.936Hz", is greater than the frequency of the lowest note in the 12-tone equal temperament, "La0 (A0)", at 27.500Hz. The maximum decoded frequency, "16034.140Hz", is less than the frequency of the highest note in the 12-tone equal temperament, "Do8 (C8)", at 4186.009Hz. Therefore, the above frequency decoding formula represents a sequence of frequencies containing all 88 notes of the 12-tone equal temperament, and also includes frequencies greater than 88 notes. Decoding frequencies can express the frequencies of all 88 notes in the 12-tone equal temperament.
[0202] Therefore, as through Figure 13 As explained, the frequencies corresponding to "La0 (A0)", "La#0 (A#0)", and "La1 (A1)" in the 12-tone equal temperament scale are also output in the decoding process while maintaining the frequencies of "La0 (A0)", "La#0 (A#0)", and "La1 (A1)" respectively. By using the above frequency encoding and decoding methods, it is possible to encode and decode while maintaining the frequencies of all the 88 notes contained in the 12-tone equal temperament.
[0203] Thus, in this embodiment, the encoding and decoding of vibration indication data takes into account the frequency of the sound, but the frequency of the sound may not be considered.
[0204] Figure 14 This is a graph used to illustrate vibration indication data based on vibration file 105A. Figure 14 The text describes the control of the vibration motor 206 based on both sound file 105B and vibration file 105A. Figure 14 The diagram illustrates vibration file 105A and sound file 105B, encoded vibration indication data 114, and decoded vibration indication data 110. The following is a description... Figure 14 The contents of vibration file 105A and sound file 105B.
[0205] Vibration file 105A, like sound file 105B, includes event names, event occurrence conditions, and frequency and amplitude data representing the vibration content. Data containing the first to third vibration events is an example of vibration file 105A. Data containing the first to third sound events is... Figure 14 An example of audio file 105B.
[0206] Figure 14 The diagram shows an example of vibration file 105A and sound file 105B in the case that game program 102P2 is an adventure game. The processor 101 executing game program 102P2 generates vibration indication data based on parameters representing the frequency and amplitude of vibration content within vibration file 105A and sound file 105B. For example, vibration indication data such as (100, 1.0) is generated corresponding to a first vibration event.
[0207] The event name "First Vibration Event" is associated with object 1 "Sword" and object 2 "Sword" as the conditions for the event to occur. The First Vibration Event is an event that causes vibration by colliding the object representing the sword with the object representing another sword in virtual space. The event name "First Vibration Event" is associated with a frequency of "100" and an amplitude of "1.0". That is, when the First Vibration Event occurs, a waveform signal with a peak voltage of 100Hz, which is the maximum voltage that the vibration motor 206 can tolerate at a frequency of 100Hz, is output to the vibration motor 206.
[0208] The second vibration event is the collision between the sword and the shield in virtual space. In the second vibration event, a waveform signal with a peak voltage of 80% of the maximum allowable voltage value of the vibration motor 206 at a frequency of 50Hz is output to the vibration motor 206.
[0209] The third vibration event is the collision between the sword and the rock in virtual space. In the third vibration event, a waveform signal with a peak voltage of 70% of the maximum allowable voltage value of the vibration motor 206 at a frequency of 50Hz is output to the vibration motor 206.
[0210] The event name "First Sound Event" is associated with object 1 "Sword" and object 2 "Sword". The First Sound Event is an event that produces a sound when the objects representing swords collide with each other 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 at a frequency of 2000Hz, with the peak voltage being the maximum allowable voltage value of the vibration motor 206 at a frequency of 2000Hz, is output to the vibration motor 206.
[0211] The second sound event is a collision between the sword and shield in virtual space. During this event, a waveform signal at a frequency of 1000Hz, with a peak voltage of 80% of the maximum permissible voltage value of the vibration motor 206 at 1000Hz, is output to the vibration motor 206. The third sound event is a collision between the sword and rock in virtual space. During this event, a waveform signal at a frequency of 700Hz, with a peak voltage of 70% of the maximum permissible voltage value of the vibration motor 206 at 700Hz, is output to the vibration motor 206.
[0212] Thus, in this embodiment, two vibration indication data points—one for vibration and one for sound—are generated based on the collision of objects within the virtual space. Specifically, when swords collide in the virtual space, vibration indication data based on a first vibration event and vibration indication data based on a first sound event are generated. Therefore, the game controller 200 can output both vibration and sound simultaneously to represent the collision of objects within the virtual space.
[0213] Next, an explanation Figure 14 The frequency is encoded. Since the frequency indicated by the vibration indication data based on the first vibration event is 100Hz, if the above-mentioned frequency encoding formula (Formula A) is used, the encoded frequency becomes 319.7996617, and the encoded value is set to an integer value, becoming 319. Next, the processor 101 performs an approximation determination process to determine whether "319" or "320" is appropriate for the encoded frequency. The approximation determination process will be explained in the following description. Figure 14 As shown, the result of the approximation determination process is that the encoded frequency based on the first vibration event becomes 320.
[0214] In the case of the second and third vibration events indicated by a frequency of 50 Hz, if the frequency encoding formula (Formula A) is used, 223.7996617 is calculated, and the encoded value becomes 223. For example... Figure 14 As shown, the result of the approximation determination process is that the value "224" becomes the coding frequency. Similarly, Figure 14The encoded frequencies are also shown for 2000Hz, 1000Hz, and 700Hz.
[0215] The amplitude indicated by the vibration indication data based on the first vibration event is 1.0, therefore, if the above amplitude encoding formula (Formula C) is used, the encoded amplitude becomes 1023. In the case of the second vibration event and the second sound event, which are indicated by an amplitude of 0.8, if the amplitude encoding formula (Formula C) is used, 818.4 is calculated. In the amplitude, the value below the decimal point is rounded to the nearest integer. Figure 14 The value "818" obtained after rounding to the nearest integer is shown as the encoded frequency. Examples of other data are omitted regarding the encoding of amplitude.
[0216] With an encoding frequency of 320Hz, when using decoding formula (Formula B) for calculation, the decoding frequency becomes 100.1447546Hz. The processor 202 sets the number of significant decimal places (e.g., 6 decimal places below the decimal point). That is, the decoding frequency based on the first vibration event becomes 100.145Hz. Figure 14 Regarding events other than the first vibration event, the decoded frequencies obtained in the decoding formula (Formula B) for the aforementioned frequencies are also shown. For the values calculated using the decoding formula (Formula D) for the aforementioned amplitude, the processor 202 rounds to the nearest decimal. The results are as follows: Figure 14 As shown, the decoded amplitude becomes the same value as before encoding.
[0217] Figure 15 This is a flowchart illustrating the encoding process of vibration indication data executed by the gaming device 100. System program 102P1 determines whether vibration indication data has been received. Figure 7 Steps S304 and S307 show the request for using the vibration indicator API (step S800). If no request for using the vibration indicator API is received from the game program 102P2 (no in step S800), the process of step S800 is repeated.
[0218] System program 102P1 obtains vibration indication data (including frequency and amplitude parameters) from game program 102P2 via the vibration indication API (step S801). Furthermore, in step S801, the specified amplitude parameter is adjusted considering the maximum input voltage at the specified frequency (the specified amplitude is reduced at frequencies where vibration is easier, based on the ease of vibration at each frequency). The system program performs frequency clamping processing (step S802). Clamping processing refers to exception handling for cases where the vibration indication data specifies a frequency that exceeds the range of frequencies that can be expressed using the decoding formula (Formula C) described above.
[0219] As described above, the minimum decoding frequency is "9.936Hz" and the maximum decoding frequency is "16034.140Hz". Therefore, when the processor 101 receives a frequency less than "9.936Hz" from the game program 102P2 in step S801, it rewrites the frequency contained in the vibration indication data to "9.936Hz". Conversely, when the processor 101 receives a frequency greater than "16034.140Hz" from the game program 102P2 in step S801, it rewrites the frequency contained in the vibration indication data to "16034.140Hz".
[0220] Next, the system program encodes the frequencies contained in the vibration indication data based on the frequency encoding formula (Formula A) mentioned above (step S803). That is, the encoded frequency is calculated. Next, the system program performs a process of rounding down the decimal places of the encoded frequency calculated in step S803 (step S804).
[0221] The system program uses the above-described decoding formula (Formula B) to decode the encoded frequency calculated in step S804 and the value obtained by adding 1 to the encoded frequency (step S805). Furthermore, the system program determines which of the following decoded frequencies the frequency contained in the vibration indication data obtained in step S801 is closest to: the decoded frequency obtained by decoding the encoded frequency calculated in step S804; and the decoded frequency obtained by decoding the encoded frequency obtained by adding 1 in step S805 (step S806). Additionally, in step S805, if a table of frequency values and encoded values is available, the calculation of the decoded value may not be necessary each time.
[0222] If the decoded frequency obtained by decoding the encoded frequency after adding 1 in step S805 is closer to the frequency contained in the vibration indication data obtained in step S801 (yes in step S806), the system program updates the encoded frequency to the value of the encoded frequency after adding 1 in step S805 (step S807). If the decoded frequency obtained by decoding the encoded frequency calculated in step S804 is closer to the frequency contained in the vibration indication data obtained in step S801 (no in step S806), the system program makes the encoded frequency calculated in step S804 the encoded frequency. The processing of the mantissa of the calculated frequency shown in steps S804 to S807 corresponds to the "approximate value determination processing" described above.
[0223] The system program determines whether the total amplitude contained in the vibration indication data indicating vibrations at the same time exceeds 1 (step S808). The vibration indication data indicating vibrations at the same time, for example, refers to... Figure 14The vibration indication data based on the first vibration event and the vibration indication data based on the first sound event are described in the text. Furthermore, the start and end times of the vibration can also be different, as long as there is some overlap.
[0224] The system program updates the amplitude of each vibration indication data to avoid vibrations exceeding 1 at the same time. Specifically, the sum of the indicated amplitude of the first vibration event and the indicated amplitude of the first sound event is "2.0", which exceeds 1 ("Yes" in step S808). In this case, the processor 101 performs amplitude update processing (step S809).
[0225] The amplitude update process is as follows: while maintaining the ratio of the indicated amplitude of the first vibration event to the indicated amplitude of the first sound event, the amplitude is recalculated so that the total value of the indicated amplitude is "1.0". The ratio of the indicated amplitude of the first vibration event to the indicated amplitude of the first sound event is 1:1, therefore the indicated amplitudes of the first vibration event and the first sound event are updated to "0.5" and "0.5" respectively.
[0226] Next, the system program encodes the amplitude contained in the updated vibration indication data based on the amplitude encoding formula (Formula B) described above (step S810). Furthermore, if the total of the indicated amplitudes does not exceed 1 ("No" in step S808), the processor 101 does not perform amplitude update processing, but instead encodes the amplitude contained in the vibration indication data based on the amplitude encoding formula (Formula B) described above (step S810). That is, the encoded amplitude is calculated. The processor 101 performs rounding processing on the encoded amplitude, rounding down to the nearest integer (step S811). Furthermore, in the amplitude encoding, similarly to the frequency encoding processing shown in steps S805-S807, both the encoded amplitude and the value obtained by adding 1 to the encoded amplitude are decoded to obtain a value close to the original amplitude.
[0227] The system program transmits the encoded vibration indication data, which includes the encoded frequency and encoded amplitude, to the game controller 200 (step S812), causing the processing to return to step S800.
[0228] Figure 16This is a flowchart illustrating the decoding process of coded vibration indication data executed by the game controller 200. The MCU program determines whether coded vibration indication data has been received (step S900). If no coded vibration indication data has been received ("No" in step S900), the MCU program repeats step S900. If coded vibration indication data has been received ("Yes" in step S900), the MCU program acquires the coded vibration indication data (step S901). The processor 202 decodes the coded frequency based on the frequency decoding formula (Formula C) described above (step S902). That is, the decoded frequency is calculated. Furthermore, the decoded frequency can be either rounded down by the number of significant bits or rounded to the nearest whole number.
[0229] The MCU program decodes the encoded amplitude based on the above-mentioned amplitude decoding formula (Formula D) (step S903). That is, it calculates the decoded amplitude. Based on the decoding frequency and the decoded amplitude, the MCU program saves the decoded vibration indication data to the vibration indication data area 204B1 (step S904).
[0230] Thus, in this embodiment, by using the above-described frequency encoding and decoding formula, it is possible to perform encoding processing that takes sound into account while suppressing the amount of communication between the game device 100 and the game controller 200.
[0231] The following explains an example of changing some constants in the above encoding formula. In both the encoding and decoding formulas for frequency, the first constant simply needs to be a multiple of the number of notes contained in one scale. The frequency ratio of the scale can be determined based on the number of notes contained in one scale in equal temperament. When expressing a 12-tone equal temperament, the first constant simply needs to be a multiple of 12. When expressing a 7-tone equal temperament, the first constant simply needs to be a multiple of 7. Therefore, by adjusting the first constant, any of the following equal temperaments can be expressed: 5-tone equal temperament, 7-tone equal temperament, 12-tone equal temperament, 15-tone equal temperament, 17-tone equal temperament, 19-tone equal temperament, 22-tone equal temperament, 31-tone equal temperament, 34-tone equal temperament, 41-tone equal temperament, 53-tone equal temperament, and 72-tone equal temperament.
[0232] In the frequency encoding and decoding formulas, the second constant can be set as the frequency of a certain note in the equal temperament, or it can be set as the value obtained by multiplying the frequency of a certain note in the equal temperament by 21 / first constant or 2-1 / first constant by a specified number of times. That is, the second constant is 2N / first constant, where N is an integer. In this way, the decoded frequency will include the frequencies of all notes in the equal temperament. In addition, the second constant can also be set as a multiple of the lowest note (27.500Hz) included in the equal temperament. For example, the second constant can be set to values such as 55, 82.5, 110, 137.5, or 220.
[0233] The third constant is used to shift the range of frequencies that the encoding formula (Formula A) can express, and it can be specified according to the lower and upper limits of the frequencies that you want to express.
[0234] [I. Processing of MCU's specified amplitude frequency reproduction (processing when using vibration indication data)]
[0235] The following describes the case where control data is generated using the decoded vibration indication data saved to the vibration indication data area 204B1 in step 904. Figure 17 This is a flowchart illustrating the processing procedure for generating control data based on vibration indication data, executed by the game controller 200. In the reproduction of a specified amplitude frequency, the control data is generated by the processor 202 based on the decoded vibration indication data stored in the vibration indication data area 204B1. The control data typically represents the voltage value used to drive the vibration motor 206; it represents the voltage value at each instant of a waveform based on a specified frequency and amplitude. In other words, the data representing the voltage value at each instant refers to the instantaneous value. Hereinafter, the control data is output at predetermined intervals, referred to as a "control cycle".
[0236] The MCU 201 generates control data based on one vibration indication data, which is the number of vibration indication cycles (cycles based on the vibration indication data) divided by the number of control cycles. In this embodiment, the vibration indication cycle is 5ms long, and the control cycle is 0.125ms long; therefore, the processor 202 generates 40 control data based on one vibration indication data. A reference waveform is determined for each control cycle (0.125ms) based on the frequency and amplitude values of the decoded vibration indication data 110. The reference waveform is the waveform determined for each control cycle and is used to determine the voltage value output as control data. The processor 202 determines the voltage value output as control data based on the reference waveform.
[0237] Figure 17 The process shown in the flowchart is implemented by the processor 202 executing the MCU program 203P. Figure 17 The process shown in the flowchart begins, for example, by supplying power to the game controller 200.
[0238] In the volatile memory 204, regions 204V1 (current amplitude data area), 204V2 (current frequency data area), and 204V3 (current phase data area) are prepared for the decoded vibration indication data. These regions are used to store the current amplitude data, current frequency data, and current phase data, respectively.
[0239] In step S1001, the processor 202 copies the current amplitude data in the current amplitude data region 204V1 and the current frequency data in the current frequency data region 204V2 to another region of the volatile memory 204. Specifically, the current amplitude data and current frequency data are saved as the previous amplitude data and previous frequency data to the previous amplitude data region 204V4 and the previous frequency data region 204V5, respectively (step S1001). Furthermore, this is executed for the first time after the game controller 200 is started. Figure 17 In the case of the flowchart shown, as an initialization process, the processor 202 saves "0V" as the value of the current amplitude data and the value of the previous amplitude data, saves "0Hz" as the value of the current frequency data and the value of the previous frequency data, and saves "0 degrees" as the value of the current phase data.
[0240] Processor 202 determines whether decoded vibration indication data exists in vibration indication data area 204B1 (step S1002). If decoded vibration indication data does not exist in vibration indication data area 204B1 (no in step S1002), processor 202 executes end processing (step S1003). End processing may also be as follows: For vibration indication data, new vibration indication data is generated with the amplitude value set to "0" and the value of the previous frequency data area 204V5 saved in step S1001 is set to the frequency value of the vibration indication data, and saved to vibration indication data area 204B1.
[0241] Therefore, after the vibration ends based on the coded vibration indication data 110 indicated by the game program 102P2, control data that gradually decreases to 0 is generated through processing S1006 to S1014, described later. This vibration is also called the end vibration. The most recent frequency value means the frequency value used in the most recent control or the frequency value represented by the most recent vibration indication data. Similarly, the most recent amplitude value means the amplitude value used in the most recent control or the amplitude value represented by the most recent vibration indication data.
[0242] Furthermore, when the vibration indication data saved in step S1003 is processed through S1004~S1015 and then returned to S1002, there may be times when the decoded vibration indication data is not present in the vibration indication data area 204B1 again. In this case, vibration indication data with an amplitude value of "0" is saved in S1003, and control data with a voltage value of zero is output in subsequent processing. Thus, in this embodiment, when 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.
[0243] Next, the processor 202 acquires the first vibration indication data in the vibration indication data area 204B1 and deletes that vibration indication data from the vibration indication data area 204B1 (step S1004). The earliest vibration indication data saved to the vibration indication data area 204B1 is stored at the beginning of the vibration indication data area 204B1. In step S1002, if vibration indication data exists in the vibration indication data area 204B1 ("Yes" in step S1002), the processor 202 executes the processing of step S1004.
[0244] Processor 202 determines whether flag Fg1 in preset reproduction or flag Fg2 in stream reproduction is "true" (step S1005). If flag Fg1 in preset reproduction or flag Fg2 in stream reproduction is "true" ("yes" in step S1005), processor 202 discards the acquired vibration indication data (step S1017), and the process returns to step S1001. Therefore, in either preset reproduction processing or stream reproduction processing, reproduction processing of control data based on vibration indication is not performed. That is, exclusive control is applied among preset reproduction processing, stream reproduction processing, and vibration indication processing, with vibration indication processing having the lowest priority.
[0245] If the flag Fg1 in the preset reproduction or the flag Fg2 in the stream reproduction is not "true" ("no" in step S1005), the processor 202 determines whether the value of the previous amplitude data saved in step S1001 exceeds 0 (step S1006). If the value of the previous amplitude data exceeds 0 ("yes" in step S1006), it can be determined that the process is in a state where vibration has continued since the beginning, and the process transitions to the vibration continuation after step S1006. The state where vibration has continued since the beginning refers to a state where vibration did not begin from a state where there was no vibration.
[0246] In step S1007, the processor 202 substitutes 1 into the counting variable X (step S1007). The counting variable X is a region prepared in the volatile memory 204 and is a counter variable used to repeat the process 40 times in order to generate 40 control data.
[0247] In step S1008, processor 202 substitutes the current amplitude data with a value. In step S1008, processor 202 subtracts the value of the previous amplitude data from the indicated amplitude value. The indicated amplitude value represents the amplitude value indicated by the encoded vibration indication data, and the indicated frequency represents the frequency indicated by the encoded vibration indication data. Processor 202 multiplies the result of the subtraction operation by the value obtained by dividing the value stored in the count variable X by 40. Processor 202 adds the result of the multiplication operation to the value obtained from the previous amplitude data and saves it as the current amplitude data (step S1008).
[0248] In step S1009, processor 202 substitutes the current frequency data with a value. In step S1009, processor 202 subtracts the value of the previous frequency data from the indicated frequency. Processor 202 multiplies the result of the subtraction operation by the value obtained by dividing the value stored in the count variable X by 40. Processor 202 adds the result of the multiplication operation to the value of the previous frequency data and saves the result as the current frequency data (step S1009).
[0249] Through the processing in steps S1008 and S1009, the amplitude value and frequency of the reference waveform used to generate control data are saved as the current amplitude data and current frequency data. In step S1010, the processor 202 substitutes the current phase data with a value. Specifically, the processor 202 makes the current phase data value lead the current phase data by 0.125ms based on the value of the current frequency data. Next, the processor 202 calculates the voltage value based on the current amplitude data, current frequency data, and current phase data, and generates control data corresponding to the calculated voltage value (step S1011). At this time, as described above, the indicated amplitude data is data obtained by standardizing the maximum voltage relative to each indicated frequency, so control data is generated by referring to the maximum voltage value corresponding to the frequency represented by the current frequency data.
[0250] Processor 202 determines whether flag Fg3 is "true" in autonomous playback (step S1012). If flag Fg3 is "true" in autonomous playback ("yes" in step S1012), processor 202 makes the voltage represented by the generated 0.125ms control data 0.7 times. Therefore, with... Figure 9 Similarly, step S507 can not exceed the maximum voltage specified for the vibration motor 206 or amplifier 205, while performing the autonomous reproduction process and vibration based on the vibration indication described later.
[0251] If the processor 202 flags Fg3 as "false" during autonomous reproduction ("no" in step S1012), or after executing step S1013, the processor 202 determines the amplitude and current phase based on the values of the current amplitude data, current frequency data, and current phase data, and generates control data corresponding to the voltage value to be output by the amplifier 205. More specifically, the processor 202 determines a reference waveform based on the values of the current amplitude data and current frequency data, generates control data of 0.125 ms at the voltage value at the phase represented by the current phase data value in the reference waveform, and writes the generated control data to the control data area 204B2 (step S1014). The 0.125 ms control data written to the control data area 204B2 is sent to the amplifier 205 via DMA. The control data written to the control data area 204B2 is sent to the amplifier 205 via DMA. The amplifier 205 amplifies the voltage to the voltage value corresponding to the control data written to the control data area 204B2 and applies the amplified voltage to the vibration motor 206.
[0252] Processor 202 substitutes the current value of counter variable X plus 1 into the counting variable X (step S1015). Processor 202 determines whether the value of counter variable X exceeds 40 (step S1016). If the value of counter variable X does not exceed 40 ("No" in step S1016), processor 202 returns the process to step S1008.
[0253] If the value of the counting variable X exceeds 40 ("Yes" in step S1016), the processor 202 returns the process to step S1001. The fact that the value of the counting variable X exceeds 40 means that the generation of 40 control data corresponding to the vibration indication data obtained in step S1004 has been completed. That is, it means that the processing of the obtained vibration indication data has been completed.
[0254] As shown in steps S1008 to S1011, in the vibration control system 10 of this embodiment, when the amplitude and frequency are indicated by vibration indication data, a process is performed to gradually approximate the indicated amplitude and frequency from the most recent amplitude value and the most recent frequency. This is called interpolation processing. Furthermore, this interpolation processing is not performed at the start of vibration. Additionally, through the processing in steps S1008 to S1011, 40 control data points are generated for each vibration indication data point, output every 0.125 ms.
[0255] Returning to step S1006, when the value of the previous amplitude data is 0 ("No" in step S1006), the processor 202 determines that vibration has started and executes the start process (step S1018). The case where the value of the previous amplitude data is 0 refers to the case where operation begins from the stopped state of the vibration motor 206. Furthermore, in step S1006, it is also possible to determine that the previous amplitude data is approximately zero. Alternatively, in step S1006, it is also possible not to determine that the previous amplitude data exceeds 0, but instead to determine that the previous control data exceeds 0. In this case, the start process is executed if the previous amplitude data is 0, or if the previous amplitude data is not 0 but the control data is 0 based on the phase. Alternatively, it is also possible to determine that it is approximately zero in this case as well.
[0256] Figure 18 This is a flowchart illustrating the process of starting the process in step S1018. Figure 18 The processing of the flowchart shown is performed by processor 202. Figure 17 The process begins with step S1018. That is, in step S205, if the value of the previous amplitude data saved in step S1001 is 0, the process is executed. Figure 18 The flowchart.
[0257] Processor 202 substitutes 1 into the count variable X (step S1101). Processor 202 substitutes the indicated amplitude value into the current amplitude data (step S1102). Thus, at the start of vibration, the amplitude value quickly becomes the indicated value, thereby improving the effect of the impact vibration. Additionally, processor 202 substitutes the indicated frequency into the current frequency data (step S1103). Processor 202 substitutes the phase value into the current phase data, based on the frequency substituted into the current frequency data, with the phase value advanced by 0.125 ms from the value substituted into the current phase data (step S1104).
[0258] The processor 202 calculates the voltage value to be output by the amplifier 205 based on the current amplitude data and the current phase data, and writes the control data corresponding to the calculated voltage value into the control data area 204B2 (step S1105). The processor 202 substitutes the current value of the counting variable X with the value obtained by adding 1 to the counting variable X (step S1106). Then, the processor 202 determines whether the value of the counting variable X exceeds 40 (step S1107).
[0259] If the value of the counting variable X does not exceed 40 (No in step S1107), processor 202 returns the process to step S1102. If the value of the counting variable X exceeds 40 (Yes in step S1107), processor 202 terminates. Figure 18 The flowchart is processed. Then, processor 202 executes... Figure 17 The processing of step S1001.
[0260] Thus, the vibration control system 10 in this embodiment can determine the control data corresponding to the voltage value according to each control cycle, thereby precisely controlling the vibration waveform. When changing the amplitude value, noise may be generated if the voltage value does not change from 0V. Therefore, the vibration control system 10 gradually changes the amplitude value in control cycle units (0.125ms) by executing steps S1008 to S1011. On the other hand, in order to prevent the generation of noise, the amplitude value change can be waited until the voltage value becomes 0V, but in this case, the timing of the amplitude value change is delayed. The vibration control system 10 in this embodiment generally suppresses the generation of noise by gradually changing the amplitude value or frequency value within the vibration indication cycle (5ms), and controls it in such a way that the previous voltage value is 0V to become the indication amplitude value, thus suppressing the generation of noise and generating vibration with good rise.
[0261] [J. Autonomous Reproduction Processing]
[0262] Figure 19 This is a flowchart illustrating the autonomous reproduction process in MCU program 203P. Figure 19 The process shown in the flowchart is implemented by the MCU 201 executing the MCU program 203P, for example, starting execution based on the game controller 200 being powered on and the game controller 200 being connected to the game device 100. In this embodiment, the autonomous playback function can be enabled / disabled via a user interface during the processing of the system program 102P1 of the game device 100. When the user sets it to be enabled, the autonomous playback function enable / disable flag (not shown) stored in the non-volatile memory within the MCU 201 is set to enabled; when the user sets it to be disabled, the flag is set to disabled. Although not shown, in Figure 19 In the process, it is also possible to determine whether the flag is turned on at the beginning (for example, before the process of S1201), and start the process after S1201 if it is turned on.
[0263] In this embodiment, the game controller 200 determines whether a predetermined condition has been met based on the information input to the game controller 200 and its processor 202. If the predetermined condition has been met, the game controller 200 outputs a sound by vibrating the vibration motor 206. For example, the game controller 200 can output a specific sound each time the operation switch 210 is operated.
[0264] The specific sound output for each condition is defined in the MCU program 203P. That is, each condition is associated with PCM data or parameters of frequency and amplitude, as well as reproduction parameters. The game controller 200 can store either sound information for autonomous reproduction as preset PCM data, as described above, or sound information for autonomous reproduction as parameters of frequency and amplitude.
[0265] Furthermore, in the game controller 200, 30% of the pre-defined maximum voltage for the amplifier 205 or vibration motor 206 is set as the upper limit of the voltage that can be used for autonomous reproduction. Thus, as described above... Figure 9 Steps S506, S507 Figure 11 Steps S706, S707, and Figure 17 As described in steps S1012 and S1013, it is possible to perform autonomous reproduction and other sound reproduction simultaneously.
[0266] Reference Figure 19 MCU 201, executing MCU program 203P, determines whether the specified conditions for autonomous reproduction have been met (step S1201). If the specified conditions are not met ("No" in step S1201), MCU 201 repeats the process of step S1201. If the specified conditions are met ("Yes" in step S1201), MCU 201 updates the autonomous reproduction flag Fg3 in the exclusive control flag 2035 to "True" (step S1202).
[0267] MCU 201 saves the sound information associated with the established conditions to the autonomous reproduction area 204B6 (step S1203). As described above, in this embodiment, the autonomously reproduced sound information is pre-stored in the preset data area PD2 as PCM data for autonomous reproduction. However, the autonomously reproduced sound information can also be stored as vibration indication data (parameters of frequency and amplitude). In this case, MCU program 203P can also save the vibration indication data to the vibration indication data area 204B1. MCU program 203P uses identification information to specify one PCM data in the PCM data stored in the preset data area PD2 that corresponds to the established conditions.
[0268] The MCU program 203P adjusts the specified preset PCM data according to the reproduction parameters, storing the adjusted PCM data in the autonomous reproduction area 204B6. Then, starting from the beginning, it sequentially reads the sampled PCM data stored in the autonomous reproduction area 204B6 and writes it to the control data area 204B2 (step S1206). The 0.125ms control data written to the control data area 204B2 is sent to the amplifier 205 via DMA.
[0269] MCU program 203P determines whether writing all sampled data contained in the PCM data of autonomous playback region 204B6 as control data to control data region 204B2 has been completed (step S1207). If not all data has been written ("No" in step S1207), MCU 201 returns the process to step S1205. If all data has been written ("Yes" in step S1207), MCU 201 deletes the PCM data in autonomous playback region 204B6, updates the autonomous playback flag Fg3 to "False" (step S1208), and returns the process to step S1201.
[0270] Thus, the MCU 201 is configured such that, as a function of the game controller 200 itself, it can output sound using the vibration motor 206 even without receiving instructions from the game device 100. This enhances the enjoyment of games using the game controller 200. Furthermore, the aforementioned conditions can be modified based on instructions from the game program 102P2, including the content of the specified conditions, the sound information associated with those conditions, and the reproduction parameters.
[0271] [K. Variation]
[0272] The following describes a variation. In the above example, the game program 102P2 requests the system program 102P1 via an API, and the system program 102P1 performs processing according to the request. However, some or all of the processing performed in the game program 102P2 may also be performed by the system program 102P1, and some or all of the processing performed in the system program 102P1 may also be performed by the game program 102P2. Furthermore, the PCM data sent to the game controller 200 may vary, for example, depending on the type of game controller 200.
[0273] Furthermore, the flowchart described above may include processes other than those shown in the illustrations, or it may exclude some processes. Additionally, the order of the processes is not fixed; for example, the processes may be executed simultaneously or in reverse order. Furthermore, while the processes may be described separately for convenience, they can also be integrated into a single process. Additionally, the processes may be executed at predetermined intervals (e.g., per processing frame, per 1 / 30th of a second). Moreover, even when using the same terminology to describe data, the data need not be completely identical. At least when using certain data and other data to substantially convey certain information, they can be considered the same data. The name of the data does not limit the scope of what the data represents.
[0274] Additionally, "processor" can mean, for example, one or more processors present in a single device such as the main unit in the game device 100, or it can mean a portion or all of one or more processors present in multiple devices such as the main unit and controller, or the main unit, controller, and server. The same applies to "memory".
[0275] Furthermore, the program that enables the computer to perform each process can be a single program or a group of programs. "A program" does not necessarily mean a single program; it can include a group of programs. Additionally, the programs do not need to be stored entirely in a single device. "A program" can, for example, mean the sum of various programs stored in multiple devices included in the information processing system. At least a portion of the series of processes described above can also be executed by a server in an information processing system that includes the game device 100 and a server capable of communication via a network. Furthermore, the server can also be composed of multiple information processing devices, with the processing being shared among the multiple information processing devices.
[0276] (Item 1) A vibration control system comprising a vibration device capable of reproducing a frequency band of sound, the vibration control system comprising: a unit for providing a first instruction to vibrate the vibration device by specifying an amplitude and a frequency of an audible frequency band; a unit for providing a second instruction to vibrate the vibration device by specifying PCM data; and a unit for controlling the vibration device according to each of the first and second instructions.
[0277] (Item 2) In Item 1, in control, control data is generated based on the specified amplitude and frequency according to the first instruction, and control is performed using the control data. In control, PCM data is used for control according to the second instruction.
[0278] (Item 3) In Item 1, in control, control data is generated based on the specified amplitude and frequency according to the first instruction, and control is performed using the control data. In control, PCM data is used for control according to the second instruction, and the sampling rate of the PCM data is the same as the update period of the control data.
[0279] (Item 4) In Item 2, the first indication specifies the amplitude and frequency with a first period. In the control, control data based on the first indication is used to generate a second period shorter than the first period. The control data is the PCM data with the sampling period set to the second period.
[0280] (Item 5) In any one of items 1, 2, and 4, the device further comprises: an information processing device; and a controller, which includes a vibration device, has a processing unit and an operation unit, wherein a first instruction is generated by the information processing device and performed by the controller, and a second instruction is an instruction generated by the processing unit when the operation unit is present, and control is performed by the controller.
[0281] (Item 6) In any one of items 1, 2, and 4, the device further comprises: an information processing apparatus; and a controller including the vibration device, having a processing unit and an operation unit. The information processing apparatus includes the following units: a unit for encoding specified data of amplitude and frequency associated with the first indication using a predetermined method; a unit for encoding PCM data associated with the second indication using a method different from the predetermined method; a unit for transmitting the first indication along with the encoded amplitude and frequency indication data to the controller; and a unit for transmitting the second indication along with the encoded PCM data to the controller. The controller includes the following units: a unit for receiving the first indication along with the encoded amplitude and frequency indication data; a unit for receiving the second indication along with the encoded PCM data; a unit for decoding the encoded amplitude and frequency indication data upon receiving the first indication; and a unit for decoding the encoded PCM data upon receiving the second indication. Control is performed by the controller.
[0282] (Item 7) In item 5, there is also a unit that stores an application program executed by a computer of an information processing device, and generates a first instruction and a second instruction by executing the application program.
[0283] (Item 8) In item 5, the unit further comprises an application program and a system program executed by a computer of an information processing device. The application program includes code that requests a first instruction via a first API of the system program and / or code that requests a second instruction via a second API of the system program. The system program includes code that accepts the execution of the code requesting the first instruction to command a control unit to perform control corresponding to the first instruction, and code that accepts the execution of the code requesting the second instruction to command a control unit to perform control corresponding to the second instruction.
[0284] (Item 9) In Item 1 or Item 4, there is also a unit that performs exclusive control over the first instruction and the second instruction.
[0285] (Item 10) In Item 1 or Item 4, the sampling period of the PCM data is the same as the control period.
[0286] (Item 11) A vibration control device comprising a vibration device capable of reproducing a frequency band of sound, the vibration control device comprising: a unit for acquiring a first indication of a specified amplitude and frequency of an audible frequency band to cause the vibration device to vibrate; a unit for acquiring specified PCM data to cause the vibration device to vibrate; and a unit for controlling the vibration device according to each of the first and second indications.
[0287] (Item 12) In Item 11, in control, control data is generated based on the specified amplitude and frequency according to the first instruction, and control is performed using the control data. In control, PCM data is used for control according to the second instruction.
[0288] (Item 13) In Item 11, in control, control data is generated based on the specified amplitude and frequency according to the first instruction, and control is performed using the control data. In control, PCM data is used for control according to the second instruction, and the sampling rate of the PCM data is the same as the update period of the control data.
[0289] (Item 14) In Item 11 or Item 12, the first indication specifies the amplitude and frequency with a first period. In control, control data with a second period shorter than the first period is generated based on the first indication. The PCM data is data with the sampling period set to the second period.
[0290] (Item 15) In Item 11 or Item 12, the first instruction is given to the vibration control device by an information processing device outside the application execution device, and the second instruction is given by the processing unit of the vibration control device when there is operation in the vibration control device.
[0291] (Item 16) includes the following units: a unit that gives a first instruction to the control unit of a vibration device capable of reproducing a frequency band of sound, the first instruction specifying the amplitude and the frequency of the audible frequency band to cause the vibration device to vibrate; and a unit that gives a second instruction to the control unit, the second instruction specifying PCM data to cause the vibration device to vibrate.
[0292] (Item 17) Item 16 includes the following units: a unit that, through the execution of an application, requests a first instruction via a first API of a system program, the first instruction specifying an amplitude and a frequency of an audible band to cause a vibration device capable of reproducing sound to vibrate; a unit that, through the execution of an application, requests a second instruction via a second API of a system program, the second instruction specifying PCM data to cause the vibration device to vibrate; a unit that, through the execution of a system program, commands the control unit of the vibration device to perform control corresponding to the first instruction by accepting the execution of a code requesting the first instruction; and a unit that, through the execution of a system program, commands the control unit to perform control corresponding to the second instruction by accepting the execution of a code requesting the second instruction.
[0293] (Item 18) In Item 16 or Item 17, the following units are included: a unit for storing an application program and a system program executed by its own computer; a unit for requesting a first instruction via a first API of the system program through the execution of the application program, the first instruction specifying an amplitude and a frequency of an audible frequency band to cause a vibration device capable of reproducing sound to vibrate; a unit for requesting a second instruction via a second API of the system program through the execution of the application program, the second instruction specifying PCM data to cause the vibration device to vibrate; a unit for commanding the control unit of the vibration device to perform control corresponding to the first instruction by accepting the execution of code requesting the first instruction through the execution of the system program; and a unit for commanding the control unit to perform control corresponding to the second instruction by accepting the execution of code requesting the second instruction through the execution of the system program.
[0294] (Item 19) A program for enabling a computer of a vibration control device for a vibration device having a frequency band capable of reproducing sound to function as: a unit for acquiring a first indication of a specified amplitude and frequency of an audible frequency band to vibrate the vibration device; a unit for acquiring a second indication of specified PCM data to vibrate the vibration device; and a unit for controlling the vibration device according to the respective indications of the first and second indications.
[0295] (Item 19) In Item 19, in control, control data is generated based on the specified amplitude and frequency according to the first instruction, and control is performed using the control data. In control, PCM data is used for control according to the second instruction.
[0296] (Item 20) In Item 19, in control, control data is generated based on the specified amplitude and frequency according to the first instruction, and control is performed using the control data. In control, PCM data is used for control according to the second instruction, and the sampling rate of the PCM data is the same as the update period of the control data.
[0297] (Item 21) In Item 20, the first indication specifies the amplitude and frequency with a first period. In control, control data with a second period shorter than the first period is generated based on the first indication. The PCM data sets the sampling period to the second period.
[0298] (Item 23) In items 19 to 21, the first instruction is given to the vibration control device by an information processing device outside the application program, and the second instruction is given by the processing unit of the vibration control device when there is operation in the vibration control device equipped with vibration equipment.
[0299] (Item 24) A program for enabling a computer to function as: a unit for giving a first instruction to a control unit of a vibration device capable of reproducing a frequency band of sound, the first instruction specifying an amplitude and a frequency of an audible frequency band to cause the vibration device to vibrate; and a unit for giving a second instruction to the control unit, the second instruction specifying PCM data to cause the vibration device to vibrate.
[0300] (Item 25) An application for enabling a computer to function as: a unit that requests a first instruction via a first API of a system program, the first instruction specifying an amplitude and a frequency of an audible band to cause a vibrating device capable of reproducing a sound frequency band to vibrate; and a unit that requests a second instruction via a second API of a system program, the second instruction specifying PCM data to cause the vibrating device to vibrate.
[0301] (Item 26) A control method for a vibration control system, the vibration control system comprising a vibration device capable of reproducing a frequency band of sound, wherein the control method selectively or simultaneously provides a first instruction to vibrate the vibration device by specifying a frequency of a specified amplitude and an audible frequency band, and a second instruction to vibrate the vibration device by specifying PCM data, and controls the vibration device according to each of the first and second instructions.
[0302] (Item 27) In Item 26, control data is generated based on the specified amplitude and frequency according to the first instruction, and control is performed using the control data. According to the second instruction, PCM data is used for control.
[0303] (Item 28) In Item 26, the first indication specifies the amplitude and frequency with a first period. In control, control data with a second period shorter than the first period is generated based on the first indication. The PCM data sets the sampling period to the second period.
[0304] (Item 29) In items 26 to 28, the sampling period of the PCM data is the same as the control period.
[0305] Embodiments of the invention have been described, but all aspects of the disclosed embodiments should be considered exemplary rather than limiting. The scope of the invention is set forth in the claims and is intended to include all modifications within the meaning and scope equivalent to the claims.
Claims
1. A vibration control system comprising a vibration device capable of reproducing the frequency band of sound, the vibration control system comprising the following units: A unit that sequentially specifies the sampling rate of pulse code modulation data (PCM data) to indicate the stream reproduction; and The unit of the vibration device is controlled using the PCM data acquired sequentially.
2. The vibration control system according to claim 1, wherein, The sampling rate of the PCM data is the same as the update cycle of the control data used in the control.
3. The vibration control system according to claim 1, wherein, The sampling rate of the PCM data is the same as the sampling rate of the amplifier controlling the vibration device.
4. The vibration control system according to claim 1, wherein, It also includes a unit that specifies amplitude and frequency for vibration indication. The control also includes generating control data in a prescribed cycle based on the vibration indication, the specified amplitude and frequency, and using the control data.
5. The vibration control system according to claim 4, wherein, The vibration indicator specifies the frequency of the sound.
6. The vibration control system according to claim 5, wherein, Equipped with information processing devices and controllers, The information processing device includes a unit that sends sound-specific information and sound data to the controller. The controller includes a unit that associates the sound-specific information received from the information processing device with the sound data and saves it to a memory provided by the controller. The information processing device further includes a unit that specifies the sound-specific information to perform a preset reproduction instruction. The controller has a unit for performing the control. The control also includes reading sound data corresponding to the specified sound-specific information from the memory according to the preset reproduction instruction.
7. The vibration control system according to any one of claims 4 to 6, wherein, Including system programs and application programs, The system program performs the following processing: The streaming reproduction instruction is issued based on a request from the application obtained via the first application programming interface, i.e., the first API. The vibration indication is emitted based on a request from the application obtained via a second application programming interface, i.e., a second API.
8. The vibration control system according to claim 4, wherein, The sampling rate of the PCM data is the same as the specified cycle.
9. The vibration control system according to claim 4, wherein, The vibration indicator specifies the amplitude and frequency with a first period. Regarding the control data, control data for a second period shorter than the first period is generated. The sampling rate of the PCM data is the same as that of the second period.
10. The vibration control system according to claim 4 or 5, wherein, Control based on the flow reproduction indication and control based on the vibration indication are mutually exclusive.
11. The vibration control system according to claim 6, wherein, The control based on the flow reproduction indication, the control based on the preset reproduction indication, and the control based on the vibration indication are subject to exclusive control.
12. The vibration control system according to claim 1, wherein, Equipped with information processing devices and controllers, The controller has: Memory; and Input section The vibration device is capable of reproducing the frequency band of sound. The controller determines whether a specified operation has been received at the input unit, and controls the vibration device based on the first data stored in the memory. Control based on the specified operation and control based on the flow reproduction instruction can be combined.
13. The vibration control system according to claim 12, wherein, When control based on the specified operation and control based on the stream reproduction indication occur simultaneously, at least the control based on the stream reproduction indication shall be reduced.
14. The vibration control system according to claim 13, wherein, When control based on the specified operation and control based on the flow reproduction indication occur simultaneously, only the control based on the flow reproduction indication is reduced.
15. A vibration control device comprising a vibration apparatus capable of reproducing the frequency band of sound, the vibration control device comprising the following units: A unit that sequentially acquires pulse code modulation data (PCM data) at a specified sampling rate; and The unit of the vibration device is controlled using the successively acquired PCM data.
16. The vibration control device according to claim 15, wherein, The sampling rate of the PCM data is the same as the update cycle of the control data.
17. The vibration control device according to claim 15, wherein, The sampling rate of the PCM data is the same as the sampling rate of the amplifier controlling the vibration device.
18. The vibration control device according to claim 15 or 16, wherein, It also includes a unit that acquires vibration indications with specified amplitude and frequency. The control also includes generating control data in a prescribed cycle based on the vibration indication, the specified amplitude and frequency, and using the control data.
19. The vibration control device according to claim 18, wherein, The vibration indicator specifies the amplitude and frequency with a first period. Regarding the control data, control data for a second period shorter than the first period is generated. The sampling rate of the PCM data is the same as that of the second period.
20. The vibration control device according to claim 18, wherein, It also includes a unit that performs exclusive control over control based on the flow reproduction indication and control based on the vibration indication.
21. The vibration control device according to claim 15 or 16, wherein, It also has: Memory, which stores sound-specific information and PCM data; and A unit that acquires a reproduction instruction for the PCM data specifying the sound-specific information. The control also includes reading PCM data corresponding to the specified sound-specific information from the memory according to the reproduction instruction.
22. The vibration control device according to claim 20, wherein, It also includes the following unit, which performs exclusive control over control based on the flow reproduction indication, control based on the preset reproduction indication, and control based on the vibration indication.
23. The vibration control device according to claim 20, wherein, It also has a memory and an input unit. The control also includes determining whether a specified operation has been received at the input unit and controlling the data stored in the memory.
24. The vibration control device according to claim 23, wherein, It also includes a unit that, when control based on the specified operation and control based on the stream reproduction instruction occur simultaneously, at least reduces the control based on the stream reproduction instruction.
25. The vibration control device according to claim 23, wherein, It also includes a unit that, when control based on the specified operation and control based on the stream reproduction instruction occur simultaneously, reduces only the control based on the stream reproduction instruction.
26. An information processing apparatus comprising a memory storing system programs and application programs executed by its own computer, wherein, The application performs the following processing: The system program, through its first application programming interface (API), sequentially specifies PCM data at a predetermined sampling rate and requests stream reproduction instructions. The system program's second application programming interface (API) specifies the frequency and amplitude, and requests a vibration indication. The system program performs the following processing: Based on the request from the application obtained via the first API, a command for the flow reproduction instruction is issued to the control unit of the vibration equipment. The command to indicate the vibration is issued based on a request from the application obtained via the second API.
27. A computer program product containing a program, wherein, The program is used to enable a computer of a vibration control device for a vibrating device capable of reproducing the frequency band of sound to function as the following unit: A unit that sequentially acquires pulse code modulation (PCM) data at the same sampling rate as the control cycle of the vibration device or the sampling rate of the amplifier controlling the vibration device; and The unit of the vibration device is controlled using the successively acquired PCM data.
28. The computer program product comprising a program according to claim 27, wherein, The program enables the computer to also function as a unit that acquires vibration indications specifying amplitude and frequency. The control also includes generating control data in a prescribed cycle based on the vibration indication, the specified amplitude and frequency, and using the control data.
29. The computer program product comprising a program according to claim 28, wherein, The vibration indicator specifies the amplitude and frequency with a first period. Regarding the control data, control data for a second period shorter than the first period is generated. The sampling rate of the PCM data is the same as that of the second period.
30. The computer program product comprising a program according to claim 28, wherein, The program enables the computer to also function as a unit that exclusively controls the control based on the flow reproduction indication and the control based on the vibration indication.
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