(57)【要約】【課題】振動を発生させる装置において振動を発生させている状況が把握可能な振動制御システム、振動制御方法、振動出力装置、ゲームコントローラ、振動出力プログラム、振動出力方法、振動制御装置、および振動制御プログラムを提供する。【解決手段】別の装置から送信される振動指示データを受信して、当該振動指示データに関連するデータを記憶手段に格納し、記憶手段に格納されたデータを用いて、振動装置を振動させる。一方、振動装置の振動状況を示す振動状況データを生成して、当該振動状況データを別の装置に送信する。【選択図】図９
2018171514.tif 000002
【特許請求の範囲】
【請求項１】
少なくとも第１の装置と第２の装置とを含み、振動装置を振動させる振動制御システムであって、
前記第１の装置は、
前記第２の装置から送信される振動指示データを受信する第１受信手段と、
前記振動指示データに基づいて前記振動装置が振動する当該振動の状況を示す振動状況データを生成する振動状況データ生成手段と、
受信した前記振動指示データに関連するデータを記憶手段に格納する記憶制御手段と、
前記記憶手段に格納されたデータを用いて、前記振動装置を振動させる振動制御手段と、
前記振動状況データを前記第２の装置に送信する第１送信手段とを備え、
前記第２の装置は、
前記第１の装置から送信される前記振動状況データを受信する第２受信手段と、
受信した前記振動状況データに基づいて、次に前記第１の装置に送信する振動指示データを決定する振動指示データ決定手段と、
前記振動指示データ決定手段が決定した前記振動指示データを前記第１の装置に送信する第２送信手段とを備える、振動制御システム。
【請求項２】
前記振動指示データ決定手段は、受信した前記振動状況データが示す前記残量に応じた振動時間分の振動を示す前記振動指示データを決定する、請求項１に記載の振動制御システム。
【請求項３】
前記振動指示データ決定手段は、受信した前記振動状況データが示す前記残量が所定量より多い場合、相対的に短い振動時間分の振動を示す前記振動指示データを決定する、請求項２に記載の振動制御システム。
【請求項４】
前記振動指示データ決定手段は、受信した前記振動状況データが示す前記振動装置の振動状況に応じた振動時間分の振動を示す前記振動指示データを決定する、請求項１に記載の振動制御システム。
【請求項５】
前記第１の装置は、当該第１の装置を操作するユーザ操作に応じた操作データを出力する操作手段を、さらに備え、
前記第１送信手段は、前記操作データとともに前記振動状況データを前記第２の装置に送信する、請求項１乃至４の何れか１つに記載の振動制御システム。
【請求項６】
前記振動状況データ生成手段は、受信した前記振動指示データに関連するデータを前記記憶手段に格納する前の時点における前記振動装置が振動する当該振動の状況を示すデータを、前記振動状況データとして生成する、請求項１乃至５の何れか１つに記載の振動制御システム。
【請求項７】
前記第１受信手段は、無線通信により前記振動指示データを受信し、
前記第１送信手段は、無線通信により前記振動状況データを送信し、
前記第２受信手段は、無線通信により前記振動状況データを受信し、
前記第２送信手段は、無線通信により前記振動指示データを送信する、請求項１乃至６の何れか１つに記載の振動制御システム。
【請求項８】
前記振動指示データ決定手段は、前記振動装置を振動させるための振動波形において振幅および／または周波数の変化を示す変調情報を符号化することによって前記振動指示データを生成し、
前記記憶制御手段は、前記振動指示データを受信するごとに、当該振動指示データを復号したデータを前記記憶手段に格納する、請求項１乃至７の何れか１つに記載の振動制御システム。
【請求項９】
前記第１の装置は、その内部に前記振動装置を有する、請求項１乃至８の何れか１つに記載の振動制御システム。
【請求項１０】
前記振動状況データ生成手段は、前記振動状況データとして、第１振動状況データおよび当該第１振動状況データとは異なる第２振動状況データを生成する、請求項１乃至９の何れか１つに記載の振動制御システム。
【請求項１１】
振動装置を振動させる少なくとも１つの装置により構成されるシステムに含まれる１つのプロセッサまたは複数のプロセッサ間の協働により以下の各ステップが実現される振動制御方法であって、
他の装置から送信される振動指示データを受信する第１受信ステップと、
前記振動指示データに基づいて前記振動装置が振動する当該振動の状況を示す振動状況データを生成する振動状況データ生成ステップと、
受信した前記振動指示データに関連するデータを記憶手段に格納する記憶制御ステップと、
前記記憶手段に格納されたデータを用いて、前記振動装置を振動させる振動制御ステップと、
前記振動状況データを他の装置に送信する第１送信ステップと、
他の装置において前記振動状況データを受信する第２受信ステップと、
受信した前記振動状況データに基づいて、次に送信する振動指示データを決定する振動指示データ決定ステップと、
前記振動指示データ決定ステップにおいて決定された前記振動指示データを他の装置から送信する第２送信ステップとを含む、振動制御方法。
【請求項１２】
振動装置を振動させる振動出力装置であって、
他の装置から送信される振動指示データを受信する受信手段と、
前記振動指示データに基づいて前記振動装置が振動する当該振動の状況を示す振動状況データを生成する振動状況データ生成手段と、
受信した前記振動指示データに関連するデータを記憶手段に格納する記憶制御手段と、
前記記憶手段に格納されたデータを用いて、前記振動装置を振動させる振動制御手段と、
前記振動状況データを他の装置に送信する送信手段とを備える、振動出力装置。
【請求項１３】
前記振動出力装置を操作するユーザ操作に応じた操作データを出力する操作手段を、さらに備え、
前記送信手段は、前記操作データとともに前記振動状況データを前記他の装置に送信する、請求項１２に記載の振動出力装置。
【請求項１４】
前記振動状況データ生成手段は、受信した前記振動指示データに関連するデータを前記記憶手段に格納する前の時点における前記振動装置が振動する当該振動の状況を示すデータを、前記振動状況データとして生成する、請求項１２または１３に記載の振動出力装置。
【請求項１５】
前記受信手段は、無線通信により前記振動指示データを受信し、
前記送信手段は、無線通信により前記振動状況データを送信する、請求項１２乃至１４の何れか１つに記載の振動出力装置。
【請求項１６】
前記振動指示データは、前記振動装置を振動させるための振動波形において振幅および／または周波数の変化を示す変調情報を符号化することによって生成され、
前記記憶制御手段は、前記振動指示データを受信するごとに、当該振動指示データを復号したデータを前記記憶手段に格納する、請求項１２乃至１５の何れか１つに記載の振動出力装置。
【請求項１７】
その内部に前記振動装置を有する、請求項１２乃至１６の何れか１つに記載の振動出力装置。
【請求項１８】
前記振動状況データ生成手段は、前記振動状況データとして、第１振動状況データおよび当該第１振動状況データとは異なる第２振動状況データを生成する、請求項１２乃至１７の何れか１つに記載の振動出力装置。
【請求項１９】
ゲーム装置と無線通信が可能であり、振動装置を内蔵するゲームコントローラであって、
前記ゲームコントローラを操作するユーザ操作に応じた操作データを出力する操作手段と、
前記振動装置に対する振動の指示を示す振動指示データを、前記ゲーム装置から無線通信により受信する受信手段と、
前記受信手段により受信した前記振動指示データに関連するデータを記憶手段に格納する記憶制御手段と、
前記記憶手段に格納されたデータを用いて、前記振動装置を振動させる振動制御手段と、
前記記憶手段に格納されたデータを用いて、前記振動装置が振動する当該振動の状況を示す振動状況データを生成する振動状況データ生成手段と、
前記操作データとともに前記振動状況データを前記ゲーム装置に無線通信により送信する送信手段とを備える、ゲームコントローラ。
【請求項２０】
振動装置を振動させる振動出力装置に含まれるコンピュータで実行される振動出力プログラムであって、
前記コンピュータを、
他の装置から送信される振動指示データを受信する受信手段と、
前記振動指示データに基づいて前記振動装置が振動する当該振動の状況を示す振動状況データを生成する振動状況データ生成手段と、
受信した前記振動指示データに関連するデータを記憶手段に格納する記憶制御手段と、
前記記憶手段に格納されたデータを用いて、前記振動装置を振動させる振動制御手段と、
前記振動状況データを他の装置に送信する送信手段として機能させる、振動出力プログラム。
【請求項２１】
振動装置を振動させる少なくとも１つの装置により構成されるシステムに含まれる１つのプロセッサまたは複数のプロセッサ間の協働により以下の各ステップが実現される振動出力方法であって、
他の装置から送信される振動指示データを受信する受信ステップと、
前記振動指示データに基づいて前記振動装置が振動する当該振動の状況を示す振動状況データを生成する振動状況データ生成ステップと、
受信した前記振動指示データに関連するデータを記憶手段に格納する記憶制御ステップと、
前記記憶手段に格納されたデータを用いて、前記振動装置を振動させる振動制御ステップと、
前記振動状況データを他の装置に送信する送信ステップとを含む、振動出力方法。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、振動制御システム、振動制御方法、振動出力装置、ゲームコントローラ、振動出力プログラム、および振動出力方法に関し、特に例えば、複数の装置間で振動に関連するデータを送信する振動制御システム、振動制御方法、振動出力装置、ゲームコントローラ、振動出力プログラム、および振動出力方法に関する。
【背景技術】
【０００２】
従来、コントローラ内に設けられたバイブレータを振動させることによって、当該コントローラを把持しているユーザの手に振動を伝達する、いわゆる振動対応ゲームを実現するゲームシステムがある（例えば、特許文献１参照）。上記ゲームシステムでは、ゲーム装置本体からコントローラへ振動を発生させる旨の信号が送信され、当該振動に基づいてコントローラ内のバイブレータが振動することによって、ユーザに振動が伝達される。
【先行技術文献】
【特許文献】
【０００３】
【特許文献１】特開２００８−２５３５６１号公報
【発明の概要】
【発明が解決しようとする課題】
【０００４】
しかしながら、上記特許文献１で開示されているような従来のゲームシステムでは、ゲーム装置本体から一定間隔で所定の信号がコントローラに送信されるだけである。したがって、ゲーム装置本体は、コントローラにおける振動出力状況を把握することができなかった。
【０００５】
それ故に、本発明の目的は、振動を発生させる装置において振動を発生させている状況が把握可能な振動制御システム、振動制御方法、振動出力装置、ゲームコントローラ、振動出力プログラム、および振動出力方法を提供することである。
【課題を解決するための手段】
【０００６】
上記目的を達成するために、本発明は例えば以下のような構成を採用し得る。なお、特許請求の範囲の記載を解釈する際に、特許請求の範囲の記載によってのみその範囲が解釈されるべきであることが理解され、特許請求の範囲の記載と本欄の記載とが矛盾する場合には、特許請求の範囲の記載が優先する。
【０００７】
本発明の振動制御システムの一構成例は、少なくとも第１の装置と第２の装置とを含み、振動装置を振動させる。第１の装置は、第１受信手段、振動状況データ生成手段、記憶制御手段、振動制御手段、および第１送信手段を備える。第１受信手段は、第２の装置から送信される振動指示データを受信する。振動状況データ生成手段は、振動装置の振動状況を示す振動状況データを生成する。記憶制御手段は、受信した振動指示データに関連するデータを記憶手段に格納する。振動制御手段は、記憶手段に格納されたデータを用いて、振動装置を振動させる。第１送信手段は、振動状況データを第２の装置に送信する。第２の装置は、第２受信手段、振動指示データ決定手段、および第２送信手段を備える。第２受信手段は、第１の装置から送信される振動状況データを受信する。振動指示データ決定手段は、受信した振動状況データに基づいて、次に第１の装置に送信する振動指示データを決定する。第２送信手段は、振動指示データ決定手段が第１の装置に振動指示データを送信することを決定した場合、当該振動指示データを第１の装置に送信する。
【０００８】
上記によれば、振動装置の振動状況を示す振動状況データが、振動装置を振動させる第１の装置から振動を制御する第２の装置へ送信されるため、当該第２の装置において振動装置の振動状況を把握することができる。
【０００９】
また、上記振動状況データ生成手段は、記憶手段に格納された振動指示データに関連するデータの状況を示す情報を振動状況データとして生成してもよい。
【００１０】
上記によれば、振動装置を振動させるために記憶手段に記憶されている振動指示データに関連するデータの状況を第２の装置が把握できるため、より精確な振動装置の振動状況を把握することができる。
【００１１】
また、上記振動制御手段は、振動装置を振動させるために記憶手段に格納された振動指示データに関連するデータを当該振動装置へ出力するとともに当該データを当該記憶手段から削除してもよい。上記振動状況データ生成手段は、記憶手段に格納された振動指示データに関連するデータの残量を示す情報を振動状況データとして生成してもよい。
【００１２】
上記によれば、振動装置を振動させるために記憶手段から当該振動装置へ出力される振動指示データに関連するデータの残量を第２の装置が把握できるため、より精確な振動装置の振動状況を把握することができる。
【００１３】
また、上記振動指示データ決定手段は、受信した振動状況データが示す残量に応じた振動時間分の振動を示す振動指示データを決定してもよい。
【００１４】
上記によれば、適切な振動時間分の振動を示す振動指示データを第１の装置へ送信することができる。
【００１５】
また、上記振動指示データ決定手段は、受信した振動状況データが示す残量が所定量より多い場合、相対的に短い振動時間分の振動を示す振動指示データを決定してもよい。
【００１６】
上記によれば、第２の装置から振動指示データを送信してから振動装置が振動するまでの遅延時間を低減することができる。
【００１７】
また、上記振動指示データ決定手段は、受信した振動状況データが示す振動装置の振動状況に応じた振動時間分の振動を示す振動指示データを決定してもよい。
【００１８】
上記によれば、第２の装置から振動指示データを送信してから振動装置が振動するまでの遅延時間の低減や振動指示データの送信遅れによって振動装置の振動が途切れることを防止することができる。
【００１９】
また、上記第１の装置は、操作手段を、さらに備えてもよい。操作手段は、当該第１の装置を操作するユーザ操作に応じた操作データを出力する。この場合、上記第１送信手段は、操作データとともに振動状況データを第２の装置に送信してもよい。
【００２０】
上記によれば、第１の装置と第２の装置の間におけるデータの送受信回数を低減することができる。
【００２１】
また、上記振動状況データ生成手段は、受信した振動指示データに関連するデータを記憶手段に格納する前の時点における振動装置の振動状況を示すデータを、振動状況データとして生成してもよい。
【００２２】
上記によれば、振動指示データに関連するデータが記憶手段に格納されている残量が相対的に少ない状況で振動状況データを作成することができるため、振動状況データによって送信可能なビット数を用いてより詳細な状況を第２の装置へ通知することができる。
【００２３】
また、上記第１受信手段は、無線通信により振動指示データを受信してもよい。上記第１送信手段は、無線通信により振動状況データを送信してもよい。上記第２受信手段は、無線通信により振動状況データを受信してもよい。上記第２送信手段は、無線通信により振動指示データを送信してもよい。
【００２４】
上記によれば、第１の装置と第２の装置との間が無線通信される場合であっても、振動装置の振動状況を示す振動状況データが第１の装置から第２の装置へ送信されるため、当該第２の装置において振動装置の振動状況を把握することができる。
【００２５】
また、上記振動指示データ決定手段は、振動装置を振動させるための振動波形において振幅および／または周波数の変化を示す変調情報を符号化することによって振動指示データを生成してもよい。上記記憶制御手段は、振動指示データを受信するごとに、当該振動指示データを復号したデータを記憶手段に格納してもよい。
【００２６】
上記によれば、周波数および／または振幅を変化させることが可能な振動波形の生成が第１の装置において可能となる。
【００２７】
また、上記第１の装置は、その内部に振動装置を有してもよい。
【００２８】
上記によれば、第１の装置に振動装置が内蔵されていても、振動装置の振動状況を示す振動状況データが第１の装置から第２の装置へ送信されるため、当該第２の装置において振動装置の振動状況を把握することができる。
【００２９】
また、上記振動状況データ生成手段は、振動状況データとして、第１振動状況データおよび当該第１振動状況データとは異なる第２振動状況データを生成してもよい。
【００３０】
上記によれば、振動装置の振動状況を示す異なるパラメータを第１の装置から第２の装置へ送信することができるため、当該第２の装置において振動装置のより詳細な振動状況を把握することができる。
【００３１】
また、本発明は、上記各手段で行われる動作を含む振動制御方法の形態で実施されてもよい。
【００３２】
本発明の振動出力装置の一構成例は、振動装置を振動させる。振動出力装置は、受信手段、振動状況データ生成手段、記憶制御手段、振動制御手段、および送信手段を備える。受信手段は、他の装置から送信される振動指示データを受信する。振動状況データ生成手段は、振動装置の振動状況を示す振動状況データを生成する。記憶制御手段は、受信した振動指示データに関連するデータを記憶手段に格納する。振動制御手段は、記憶手段に格納されたデータを用いて、振動装置を振動させる。送信手段は、振動状況データを他の装置に送信する。
【００３３】
上記によれば、振動装置の振動状況を示す振動状況データが他の装置へ送信されるため、当該他の装置において振動装置の振動状況を把握することができる。
【００３４】
また、本発明は、上記各手段として機能させる振動出力プログラムや上記各手段で行われる動作を含む振動出力方法の形態で実施されてもよい。
【００３５】
本発明のゲームコントローラの一構成例は、ゲーム装置と無線通信が可能であり、振動装置を内蔵する。ゲームコントローラは、操作手段、受信手段、記憶制御手段、振動制御手段、振動状況データ生成手段、および送信手段を備える。操作手段は、ゲームコントローラを操作するユーザ操作に応じた操作データを出力する。受信手段は、振動装置に対する振動の指示を示す振動指示データを、ゲーム装置から無線通信により受信する。記憶制御手段は、受信手段により受信した振動指示データに関連するデータを記憶手段に格納する。振動制御手段は、記憶手段に格納されたデータを用いて、振動装置を振動させる。振動状況データ生成手段は、記憶手段に格納されたデータを用いて、振動指示データに関連するデータの状況を示す振動状況データを生成する。送信手段は、操作データとともに振動状況データをゲーム装置に無線通信により送信する。
【００３６】
上記によれば、振動装置が内蔵されゲーム装置との間が無線通信されるゲームコントローラの場合であっても、振動装置の振動状況を示す振動状況データがゲームコントローラからゲーム装置へ送信されるため、当該ゲーム装置において振動装置の振動状況を把握することができる。
【００３７】
本発明の振動制御装置の一構成例は、振動装置を振動させる他の装置における当該振動を制御する。振動制御装置は、受信手段、振動指示データ決定手段、および送信手段を備える。受信手段は、振動装置の振動状況を示す振動状況データを他の装置から受信する。振動指示データ決定手段は、受信した振動状況データに基づいて、次に他の装置に送信して振動装置を振動させるための振動指示データを決定する。送信手段は、振動指示データ決定手段が他の装置に振動指示データを送信することを決定した場合、当該振動指示データを他の装置に送信する。
【００３８】
上記によれば、振動装置の振動状況を示す振動状況データが、振動装置を振動させる他の装置から送信されるため、振動を制御する振動制御装置において振動装置の振動状況を把握することができる。
【００３９】
また、本発明は、上記各手段として機能させる振動制御プログラムや上記各手段で行われる動作を含む振動制御方法の形態で実施されてもよい。
【発明の効果】
【００４０】
本発明によれば、振動装置の振動状況を示す振動状況データが別の装置へ送信されるため、当該別の装置において振動装置の振動状況を把握することができる。
【図面の簡単な説明】
【００４１】
【図１】本発明の一実施形態に係る据置型の情報処理装置２およびコントローラ型の端末装置３を含む振動制御システム１とモニタ４との外観の一例を示す平面図
【図２】振動制御システム１を用いてユーザが操作している様子の一例を示す図
【図３】情報処理装置２および端末装置３を含む振動制御システム１の一例を示すブロック図
【図４】ＡＭＦＭ符号データに基づいてＡＭＦＭ波を生成する処理の一例を説明するための図
【図５】ＡＭＦＭ波のデューティ比に対応して生成されるデータ列を生成する際に用いられる均等ビットパターンの一例を示す図
【図６】デューティ比２５％に対応して均等ビットパターンを用いて生成されるデータ列の一例を示す図
【図７】デューティ比１２．５％に対応して均等ビットパターンを用いて生成されるデータ列の一例を示す図
【図８】均等ビットパターンを用いて生成されるアナログ波形の一例を示す図
【図９】情報処理装置２および端末装置３においてデータが取り扱われる手順の一例を示す図
【図１０】振動制御処理を行う際に、情報処理装置２のメモリ２２に記憶される主なデータおよびプログラムの一例を示す図
【図１１】情報処理装置２において実行される振動制御処理の一例を示すフローチャート
【図１２】振動出力処理を行う際に、端末装置３のメモリ３７に記憶される主なデータおよびプログラムの一例を示す図
【図１３】端末装置３において実行される振動出力処理の前半の一例を示すフローチャート
【図１４】端末装置３において実行される振動出力処理の後半の一例を示すフローチャート
【発明を実施するための形態】
【００４２】
図１および図２を参照して、本実施形態の一例に係る振動出力プログラムを実行する端末装置および振動制御プログラムを実行する情報処理装置を含む振動制御システムについて説明する。なお、図１は、据置型の情報処理装置２およびコントローラ型（可搬型）の端末装置３を含む振動制御システム１とモニタ４との外観の一例を示す平面図である。図２は、振動制御システム１を用いてユーザが操作している様子の一例を示す図である。
【００４３】
本発明の振動制御プログラムは、任意のコンピュータシステムで実行されることによって適用することができるが、振動制御装置の一例として据置型の情報処理装置２を用い、情報処理装置２で実行される振動制御プログラムを用いて説明する。例えば、情報処理装置２は、交換可能な光ディスクやメモリーカード等の記憶媒体内に記憶された、または、他の装置から受信したプログラムや予めインストールされたプログラム（例えば、ゲームプログラム）を実行可能であり、一例として、仮想空間に設定された仮想カメラから見た仮想空間画像等のコンピュータグラフィックス処理により生成された画像を画面（図１および図２においてはモニタ４）に表示することができる。情報処理装置２は、一般的なパーソナルコンピュータ、据置型ゲーム機、携帯電話機、携帯ゲーム機、ＰＤＡ（Ｐｅｒｓｏｎａｌ  Ｄｉｇｉｔａｌ  Ａｓｓｉｓｔａｎｔ）等のデバイスであってもかまわない。
【００４４】
また、本発明の振動出力プログラムも、任意のコンピュータシステムで実行されることによって適用することができるが、振動出力装置の一例としてユーザが把持して操作可能なコントローラ型の端末装置３（例えば、ゲームコントローラ）を用い、端末装置３で実行される振動出力プログラムを用いて説明する。例えば、端末装置３は、予めインストールされたプログラムや他の装置から受信したプログラム、または、交換可能なメモリーカード等の記憶媒体内に記憶されたプログラムを実行可能であり、一例として、情報処理装置２と無線通信することによって画面（図１および図２においてはモニタ４）に表示された仮想オブジェクト等を操作することができる。端末装置３は、携帯電話機、携帯ゲーム機、ＰＤＡ、スマートフォン、タブレット等の、どのような形態のデバイスであってもかまわない。また、情報処理装置２は、端末装置３と通信可能である。情報処理装置２と端末装置３との通信は、有線であってもよいし無線であってもよい。また、情報処理装置２とモニタ４との接続についても、有線であってもよいし無線であってもよい。
【００４５】
情報処理装置２においては、端末装置３に対する入力に応じて情報処理装置２が情報処理を実行し、実行の結果得られた画像がモニタ４に表示される。このように、本実施形態においては、入力機能、情報処理機能、および表示機能が情報処理装置２および端末装置３によって実現される構成を用いているが、他の実施形態においては、情報処理装置２や端末装置３の機能が他の装置によって実現されてもよい。例えば、他の実施形態においては、情報処理装置２や端末装置３において実行される処理の少なくとも一部が、ネットワーク（広域ネットワークおよび／またはローカルネットワーク）によって通信可能な複数の装置によって分散されて実行されてもよい。
【００４６】
端末装置３内部には、アクチュエータ３０（図３参照）が設けられている。アクチュエータ３０は、端末装置３の本体に所定の振動を与える振動アクチュエータ（振動子）であり、当該アクチュエータ３０が振動することによって、端末装置３を操作しているユーザに振動を与えることができる。また、端末装置３は、方向指示キーや操作ボタン等を含む操作部が設けられる。一例として、操作部は、十字型の４方向プッシュスイッチ（十字キー）、タッチパネル、タッチパッド等を含んでもよい。また、操作部は、十字方向に４つのプッシュスイッチを配設し、ユーザによって押下されたプッシュスイッチに応じて操作信号を出力してもよい。また、操作部は、上記４つのプッシュスイッチとは別に、上記十字方向が交わる位置にセンタスイッチを配設し、４つのプッシュスイッチとセンタスイッチとを複合したものでもよい。また、操作部は、傾倒可能なスティック（いわゆる、ジョイスティック）を倒すことによって、傾倒方向に応じて操作信号を出力してもよい。さらに、操作部は、水平移動可能な円盤状部材をスライドさせることによって、当該スライド方向に応じた操作信号を出力してもよい。また、端末装置３は、端末装置３自身および／または情報処理装置２の制御に基づいた画像を表示する表示画面が設けられてもよい。
【００４７】
端末装置３を用いて、上記操作部を操作したり上記表示画面を見たりするために、ユーザは、一方の手（例えば、右手）または両手で端末装置３を把持する。そして、モニタ４等に表示されている仮想世界の状況に応じて、端末装置３本体が振動する。例えば、本実施例では、当該振動を生じさせるための振動制御信号を生成するための振動指示データが、情報処理装置２から端末装置３へ与えられる。例えば、情報処理装置２は、振動を生成することを指示するための振動指示データを、例えばＢｌｕｅｔｏｏｔｈ（ブルートゥース；登録商標）の技術を用いて端末装置３へ無線送信する。そして、端末装置３は、取得した振動指示データに基づいて、アクチュエータ３０を駆動制御するための振動制御信号を生成する。また、端末装置３は、操作部に対する操作を示す操作データや端末装置３における振動出力状況等を示すレポートデータを、例えばＢｌｕｅｔｏｏｔｈの技術を用いて情報処理装置２へ無線送信する。
【００４８】
次に、図３を参照して、情報処理装置２および端末装置３を含む振動制御システム１について説明する。なお、図３は、情報処理装置２および端末装置３を含む振動制御システム１の一例を示すブロック図である。
【００４９】
図３に示すように、情報処理装置２は、ＣＰＵ２１、メモリ２２、プログラム記憶部２３、および通信部２４を備える。ＣＰＵ２１は、メモリ２２を用いて所定の情報処理プログラムを実行することによって、例えば振動を生成することを指示するための振動指示データを生成して端末装置３へ送信する振動制御処理や、プレイヤオブジェクトが登場する仮想世界の画像をモニタ４に表示させたりする表示制御処理を実行する。なお、情報処理装置２は、情報処理を実行することができればどのような構成であってもよく、例えば情報処理の一部または全部が専用回路によって実行されてもよい。
【００５０】
プログラム記憶部２３は、上記情報処理プログラムを記憶する。プログラム記憶部２３は、ＣＰＵ２１がアクセス可能な任意の記憶装置である。プログラム記憶部２３は、例えばハードディスク等の、情報処理装置２に内蔵される記憶部であってもよいし、例えば光ディスク等の、情報処理装置２に着脱可能な記憶部であってもよい。また、プログラム記憶部２３は、ＣＰＵ２１とネットワークを介して接続される記憶装置（サーバ等）であってもよい。ＣＰＵ２１は、プログラムの一部または全部を適宜のタイミングでメモリ２２に読み出し、読み出されたプログラムを実行するようにしてもよい。
【００５１】
通信部２４は、端末装置３との間で無線通信する無線コントローラモジュールとして機能し、振動指示データ等を所定のタイミングで端末装置３へ送信したり、端末装置３からレポートデータや操作データ等を端末装置３から繰り返し受信したりする。
【００５２】
端末装置３は、ユーザの操作を受け付け、ユーザの操作を表す操作データを生成する入力部として、操作部３３の他に、加速度センサ３４およびジャイロセンサ３５を備えている。加速度センサ３４およびジャイロセンサ３５は、端末装置３の動きや姿勢を算出するためのセンサの一例である。例えば、端末装置３は、３軸の加速度センサ３４を備えていてもよい。３軸の加速度センサ３４は、３方向、すなわち、上下方向、左右方向、および前後方向それぞれに生じる直線加速度を検知する。また、端末装置３は、３軸のジャイロセンサ３５を備えていてもよい。３軸の加速度センサ３５は、３方向周り、すなわち、上下方向周り、左右方向周り、および前後方向周りそれぞれに生じる角速度を検知する。なお、端末装置３の動きや姿勢を算出するためのセンサとして、磁気センサを備えていてもよい。
【００５３】
端末装置３は、ＣＰＵ３６、メモリ３７、プログラム記憶部３８、および通信部３９を備える。ＣＰＵ３６は、メモリ３７を用いて振動出力プログラムを実行することによって、端末装置３を操作するユーザに情報処理装置２から取得した振動指示データに基づいた振動を与える振動出力処理を実行する。例えば、ＣＰＵ３６は、振動出力処理の一例として、通信部３９を介して情報処理装置２から転送された振動指示データを受信し、当該振動指示データに基づいてアクチュエータ３０が生成する振動を制御するための振動制御信号（例えば、アナログ電圧値を示す振動制御信号）を生成して、当該振動制御信号をローパスフィルタ３２へ出力する。なお、端末装置３は、上記振動出力処理を実行することができればどのような構成であってもよく、例えば振動出力処理の一部または全部が専用回路によって実行されてもよい。
【００５４】
プログラム記憶部３８は、上記振動出力プログラムを記憶する。プログラム記憶部３８は、ＣＰＵ３６がアクセス可能な任意の記憶装置である。プログラム記憶部３８は、端末装置３に着脱可能な記憶部であってもよい。また、プログラム記憶部３８は、ＣＰＵ３６とネットワークを介して接続される記憶装置（サーバ等）であってもよい。ＣＰＵ３６は、プログラムの一部または全部を適宜のタイミングでメモリ３７に読み出し、読み出されたプログラムを実行するようにしてもよい。
【００５５】
通信部３９は、情報処理装置２との間で無線通信する無線コントローラモジュールとして機能し、端末装置３における振動出力状況等を示すレポートデータ、操作部３３、加速度センサ３４、およびジャイロセンサ３５の少なくとも１つによって生成された操作データ等を、情報処理装置２へ送信する。上記操作データは、例えば一定時間に１回の割合で繰り返し、端末装置３から情報処理装置２へ送信される。情報処理装置２は、レポートデータや操作データを入力として用いて上記情報処理を実行する。
【００５６】
端末装置３は、ユーザに与える振動を生成する振動出力部を備えている。例えば、振動発生部は、アクチュエータ（振動子）３０、増幅部３１、およびローパスフィルタ３２を備えている。
【００５７】
ローパスフィルタ３２は、ＣＰＵ３６から出力された振動制御信号を取得して所定の周波数より高い周波数成分を逓減させる処理を行ってアナログ値に変換し、増幅部３１へ出力する。増幅部３１は、ローパスフィルタ３２から出力されたアナログ値（アナログ電圧値を示す信号）を増幅してアクチュエータ３０を駆動するための駆動信号を生成し、アクチュエータ３０へ出力する。
【００５８】
アクチュエータ３０は、増幅部３１から出力された駆動信号に応じて駆動することによって、端末装置３の本体に当該駆動信号に応じた振動を与える。例えば、アクチュエータ３０は、端末装置３本体の中心部付近に設けられている。ここで、アクチュエータ３０が端末装置３本体に振動を与える方式は、どのようなものでもかまわない。例えば、アクチュエータ３０は、偏心モーター（ＥＲＭ：Ｅｃｃｅｎｔｒｉｃ  Ｒｏｔａｔｉｎｇ  Ｍａｓｓ）によって振動を生じさせる方式や、リニア・バイブレータ（ＬＲＡ：Ｌｉｎｅａｒ  Ｒｅｓｏｎａｎｔ  Ａｃｔｕａｔｏｒ）によって振動を生じさせる方式や、ピエゾ（圧電）素子によって振動を生じさせる方式等を用いた構成であってもよい。アクチュエータ３０が振動を生じさせる方式に応じて、増幅部３１から出力される駆動信号が生成されれば、どのような方式のアクチュエータであっても様々な振動を端末装置３のユーザに与えることができる。
【００５９】
なお、上述した説明では、ローパスフィルタ３２で生成されたアナログ値が増幅されてアクチュエータ３０を駆動するための駆動信号が生成される例を用いたが、増幅部３１へ出力される信号は、デジタル信号であってもよい。例えば、パルス幅変調（ＰＷＭ：Ｐｕｌｓｅ  Ｗｉｄｔｈ  Ｍｏｄｕｌａｔｉｏｎ）制御によってアクチュエータ３０を駆動する場合、増幅部３１へアクチュエータ３０をオン／オフするためのパルス信号が入力すればよい。この場合、増幅部３１へ出力される信号は、パルス波を用いて駆動が制御されるデジタル振動信号となり、増幅部３１は、当該デジタル振動信号を増幅することになる。
【００６０】
モニタ４は、生成された画像を表示し生成された音声を出力する表示装置の一例である。モニタ４は、情報処理装置２から送信されるデータを取得可能である。情報処理装置２において生成された画像がモニタ４へ出力されてくると、モニタ４は当該画像を表示する。
【００６１】
なお、本実施形態においては、入力装置が設けられたコントローラ型の端末装置３を用いているが、他の実施形態においては、表示装置と入力装置とが一体となったデバイスでもよい。この場合、端末装置３が入力装置および表示装置として機能し、情報処理装置２は、モニタ４および端末装置３に設けられた表示装置に画像を表示させてもよい。
【００６２】
次に、図４〜図８を参照して、振動制御信号を生成する処理の一例を説明する。なお、図４は、ＡＭＦＭ符号データに基づいてＡＭＦＭ波を生成する処理の一例を説明するための図である。図５は、ＡＭＦＭ波のデューティ比に対応して生成されるデータ列を生成する際に用いられる均等ビットパターンの一例を示す図である。図６は、デューティ比２５％に対応して均等ビットパターンを用いて生成されるデータ列の一例を示す図である。図７は、デューティ比１２．５％に対応して均等ビットパターンを用いて生成されるデータ列の一例を示す図である。図８は、均等ビットパターンを用いて生成されるアナログ波形の一例を示す図である。
【００６３】
アクチュエータ３０が生成する振動を制御するための振動制御信号は、情報処理装置２から送信される振動指示データに基づいて生成される。本実施例では、情報処理装置２から送信されるＡＭＦＭ符号データを振動指示データとして端末装置３が受信し、当該ＡＭＦＭ符号データをデコードすることによって振動波形（ＡＭＦＭ波）データが生成され、当該振動波形（ＡＭＦＭ波）のデューティ比に対応したビットパターンが振動制御信号として用いられる。ここで、ＡＭ符号データは、振動の振幅変調（Ａｍｐｌｉｔｕｄｅ  Ｍｏｄｕｌａｔｉｏｎ）を表すデータを示す。ＦＭ符号データは、振動の周波数変調（Ｆｒｅｑｕｅｎｃｙ  Ｍｏｄｕｌａｔｉｏｎ）を表すデータを示す。ＡＭＦＭ符号データは、振動の振幅変調および周波数変調の両方を表すデータを示す。そして、ＡＭＦＭ波は、ＡＭＦＭ符号データに基づいて振幅変調および周波数変調された振動波形を示している。
【００６４】
図４に示すように、ＡＭＦＭ符号データは、振動指示データとして振動を変調する一定の更新周期毎（例えば、５ｍｓｅｃ毎）に情報処理装置２から送信され、振動の振幅および周波数更新コマンドとして機能する。そして、ＡＭＦＭ符号データは、所定の符号化テーブルを用いてデコードされることによって、ＡＭ情報およびＦＭ情報が取り出される。ここで、ＡＭ情報は、更新前の振動の振幅を基準として更新後の振動の振幅を示す情報である。このようなＡＭ情報を上記更新周期毎に分析することによって、所定の振幅を基準として振動振幅を時系列的に変調させる図４に示すような情報を取得することができる。また、ＦＭ情報は、更新前の振動の周波数を基準として更新後の振動の振幅を示す情報である。このようなＦＭ情報を上記更新周期毎に分析することによって、所定の周波数を基準として振動周波数を時系列的に変調させる図４に示すような情報を取得することができる。
【００６５】
次に、ＦＭ情報から周波数変調正弦波（ＦＭ波）を生成する。ここで、ＦＭ波は、上記更新周期毎に取得されるＦＭ情報に応じた周波数で変位する図４に示すような正弦波である。
【００６６】
そして、ＡＭ情報をＦＭ波に掛け合わせることによって、ＡＭＦＭ波を生成する。ここで、ＡＭＦＭ波は、上記更新周期毎に取得されるＦＭ情報に応じた周波数、かつ、上記更新周期毎に取得されるＡＭ情報に応じた振幅で変位する図４に示すような波形を有する。そして、生成されたＡＭＦＭ波を示す振動波形データは、メモリ３７内に設定された振動波形データバッファに格納される。このように生成されたＡＭＦＭ波のデューティ比に対応したビットパターンを示す振動制御信号を生成することによって、ＡＭＦＭ波で示される周波数および振幅でアクチュエータ３０を振動させることができる。
【００６７】
なお、情報処理装置２と端末装置３との間の通信データ量の削減のために、情報処理装置２から送信される振動指示データは、上記一定の更新周期より長い周期毎に送信されてもよい。例えば、情報処理装置２から同じ振動値による振動指示が続く場合、当該同じ振動値で振動することを示す振動指示データの送信を割愛して、送信周期を相対的に長く（例えば、０．５ｓｅｃ毎）してもよい。後述により明らかとなるが、端末装置３側では、振動指示データに基づいて生成された振動波形データの残量が所定の閾値未満となった場合、最後に受信した振動指示データに基づいた振動波形データを追加する処理を行っているため、上記送信周期を相対的に長くした場合であっても振動を継続することができる。また、端末装置３が振動しない場合、情報処理装置２から振動指示データを送信しなくてもよいし、振動しないことを示す振動指示データを送信してもよい。
【００６８】
このようなＡＭＦＭ伝送方式で振動指示データを送信することによって、以下のような効果を期待することができる。第１の効果として、振動波形データをそのまま送信する方式、振動波形データのサンプリングレートを落として送信する方式、振動波形データを所定の方式で圧縮して送信する方式と比較して、振動指示データを送信する際のデータ通信量を削減することができる。第２の効果として、送信されたＡＭＦＭ符号データをデコードする処理負荷が相対的に低いため、リアルタイムにデコード処理してアクチュエータ３０の振動制御に繋げることができる。第３の効果として、振動を制御するパラメータが周波数および振幅となるため、振動素材を生成する作業が簡素化することができる。第４の効果として、ＡＭＦＭ伝送方式で制御する振動周波数をアクチュエータ３０の共振周波数付近に設定することによって、相対的に強い（電力効率の良い）振動をユーザに与えることができる。なお、これらの効果を期待しない場合、ＡＭＦＭ伝送方式とは異なる伝送方式で振動指示データを端末装置３へ送信してもかまわない。
【００６９】
また、上述したＡＭＦＭ伝送方式では、周波数帯域毎にＡＭＦＭ符号データを送信してもよい。例えば、ＡＭＦＭ符号データは、振動を変調する一定の更新周期で複数の周波数帯域毎に情報処理装置２から送信され、周波数帯域毎の振動の振幅および周波数更新コマンドとして機能する。例えば、低周波数帯域（例えば、１６０Ｈｚ帯）を対象としたＡＭＦＭ符号データと、高周波数帯域（例えば、３２０Ｈｚ帯）を対象としたＡＭＦＭ符号データとの組が、上記振動指示データとして情報処理装置２から送信される。
【００７０】
低周波数帯域を対象としたＡＭＦＭ符号データは、上述した処理と同様に、所定の符号化テーブルを用いてデコードされることによって、ＡＭ情報およびＦＭ情報が取り出され、ＦＭ情報からＦＭ波が生成される。そして、低周波数帯域を対象としたＡＭ情報をＦＭ波に掛け合わせることによって、低周波数帯域を対象としたＡＭＦＭ波が生成される。
【００７１】
一方、高周波数帯域を対象としたＡＭＦＭ符号データも、上述した処理と同様に、所定の符号化テーブルを用いてデコードされることによって、ＡＭ情報およびＦＭ情報が取り出され、ＦＭ情報からＦＭ波が生成される。そして、高周波数帯域を対象としたＡＭ情報をＦＭ波に掛け合わせることによって、高周波数帯域を対象としたＡＭＦＭ波が生成される。
【００７２】
そして、低周波数帯域を対象としたＡＭＦＭ波と高周波数帯域を対象としたＡＭＦＭ波とを足し合わせることによって、合成波が生成される。そして、生成された合成波を示す振動波形データは、メモリ３７内に設定された振動波形データバッファに格納される。上記合成波は、低周波数帯域を対象としたＡＭＦＭ情報および高周波数帯域を対象としたＡＭＦＭ情報を併せ持っているため、複数の周波数帯域に対する周波数の情報および振幅の情報に基づいて変位する振動波形を有する。このように生成された合成波のデューティ比に対応したビットパターンを用いて振動制御信号を生成することによって、合成波で示される周波数および振幅でアクチュエータ３０を振動させることができる。
【００７３】
このように複数の周波数帯域毎にＡＭＦＭ伝送方式で振動データを送信する場合、複数の周波数帯域毎の周波数変化および振幅変化を転送することができるため、情報処理装置２から端末装置３へ振動をより正確に伝えることができる。したがって、他の伝送方式と比較してもユーザに与える振動感触を劣化させることなく振動波形データを伝送することが可能となる。
【００７４】
次に、図５〜図８を参照して、振動波形データバッファに格納された振動波形データから振動制御信号を生成する処理の一例について説明する。本実施例では、振動波形データバッファに格納されている振動波形データ（ＡＭＦＭ波）を順次読み出して、当該振動波形のデューティ比に対応したビットパターンを振動制御信号として生成し、ローパスフィルタ３２を介して当該振動制御信号を増幅部３１へ出力することによってアクチュエータ３０を駆動させる。
【００７５】
例えば、図５に示すような均等ビットパターンの変換テーブルを用いて、振動波形データバッファに格納されている振動波形データを振動制御信号に順次変換される。以下、均等ビットパターンについて説明する。
【００７６】
Ｎビット長の２進数において、ｍ個の「１」およびＮ−ｍ個の「０」で表される均等ビットパターンを（Ｎ，ｍ）−ビットパターンを呼称する（ここで、０≦ｍ≦Ｎ）。そして、（Ｎ，ｍ）−ビットパターンａ＿｛Ｎ，ｍ｝をＮビット長の２進数で表記した際の、上位から第ｋ桁目のビットをｂ＿｛Ｎ，ｍ，ｋ｝とする（ここで、０≦ｋ≦Ｎ−１）。この場合、ａ＿｛Ｎ，ｍ｝は、２進数で
ａ＿｛Ｎ，ｍ｝＝ｂ＿｛Ｎ，ｍ，０｝ｂ＿｛Ｎ，ｍ，１｝・・・ｂ＿｛Ｎ，ｍ，Ｎ−１｝
と表記される。このとき、ｂ＿｛Ｎ，ｍ，ｋ｝を
［ｋｍ／Ｎ］と［（ｋ−１）ｍ／Ｎ］とが一致しない場合：ｂ＿｛Ｎ，ｍ，ｋ｝＝１
［ｋｍ／Ｎ］と［（ｋ−１）ｍ／Ｎ］とが一致する場合  ：ｂ＿｛Ｎ，ｍ，ｋ｝＝０
と定義することによって、ａ＿｛Ｎ，ｍ｝は、（Ｎ，ｍ）−均等ビットパターンとなる。なお、［ｘ］は、ｘを越えない最大の整数（すなわち、ガウス記号）を示している。
【００７７】
図５は、Ｎ＝１６の場合の均等ビットパターンの例を記載している。例えば、デューティ比２５％のデータ列を振動制御信号として出力したい場合、４個の「１」および１２個の「０」で表されるデータ列を出力することになるが、４個の「１」および１２個の「０」で表される（１６，４）−均等ビットパターンは、
ａ＿｛１６，４｝＝１０００  １０００  １０００  １０００
となる。
【００７８】
したがって、図６に示すように、Ｎ＝６４の場合のデューティ比２５％のデータ列は、均等ビットパターンの場合、１６進数表記で
｛０ｘ８８，０ｘ８８，０ｘ８８，０ｘ８８，０ｘ８８，０ｘ８８，０ｘ８８，０ｘ８８｝
となる。一方、一般的なＰＷＭデータ列の場合、１６進数表記で
｛０ｘＦＦ，０ｘＦＦ，０ｘ００，０ｘ００，０ｘ００，０ｘ００，０ｘ００，０ｘ００｝
となる。
【００７９】
また、デューティ比１２．５％のデータ列を振動制御信号として出力したい場合、２個の「１」および１４個の「０」で表されるデータ列を出力することになるが、２個の「１」および１４個の「０」で表される（１６，２）−均等ビットパターンは、
ａ＿｛１６，２｝＝１０００  ００００  １０００  ００００
となる。
【００８０】
したがって、図７に示すように、Ｎ＝６４の場合のデューティ比１２．５％のデータ列は、均等ビットパターンの場合、１６進数表記で
｛０ｘ８０，０ｘ８０，０ｘ８０，０ｘ８０，０ｘ８０，０ｘ８０，０ｘ８０，０ｘ８０｝
となる。一方、一般的なＰＷＭデータ列の場合、１６進数表記で
｛０ｘＦＦ，０ｘ００，０ｘ００，０ｘ００，０ｘ００，０ｘ００，０ｘ００，０ｘ００｝
となる。
【００８１】
図６および図７から明らかなように、Ｎ＝６４の場合に、均等ビットパターンを用いて振動制御信号のデータ列を生成することによって、「０」および「１」の符号の出現頻度を相対的に均等にすることができる。したがって、図８に示すように、均等ビットパターンを用いた振動制御信号から生成されるアナログ波形のノイズを低減することができ、安定したアナログ波形を増幅部３１へ出力することができる。このようにノイズが低減されたアナログ波形を出力することによって、意図した振動をアクチュエータ３０から生成することができる。また、図６に示したデューティ比２５％（サンプル値が０．２５）の場合、ＰＷＭデータ列では０ｘＦＦ，０ｘＦＦ，０ｘ００，０ｘ００，０ｘ００，０ｘ００，０ｘ００，０ｘ００が出力されるが、均等ビットパターンでは０ｘ８８，０ｘ８８，０ｘ８８，０ｘ８８，０ｘ８８，０ｘ８８，０ｘ８８，０ｘ８８が出力される。これは、均等ビットパターンを用いることによって、ＰＷＭのキャリア周波数を１６倍高めることと同様の効果が得られることを示している。さらに、このような均等ビットパターンに変換した振動制御信号を用いる場合、Ｉ２Ｓプロトコルで用いられるデータラインから当該振動制御信号を出力して、ローパスフィルタ３２によってアナログ値に変換することによって、当該アナログ値をＰＷＭ出力として用いることができる。したがって、均等ビットパターンに変換した振動制御信号を用いることによって、高コストのＩ２Ｓアンプを用いることなく低コストのアナログアンプによって増幅部３１を構成することができる。
【００８２】
次に、図９を参照して、情報処理装置２および端末装置３においてデータを取り扱う手順の一例について説明する。なお、図９は、情報処理装置２および端末装置３においてデータが取り扱われる手順の一例を示す図である。
【００８３】
図９において、情報処理装置２は、端末装置３を振動させる場合、当該振動の生成を指示するためのＡＭＦＭ符号データを振動指示データとして生成し、端末装置３へ送信する。例えば、情報処理装置２では、指示したいオリジナルの振動波形データが準備される。そして、複数の周波数帯域毎にＡＭＦＭ符号データを送信する場合、情報処理装置２は、当該周波数帯域毎のバンドパスフィルタをそれぞれ通して各周波数帯域成分の振動波形データをそれぞれ生成し、各周波数帯域における当該振動波形のエンベロープ波形をそれぞれ生成する。また、情報処理装置２は、周波数帯域毎の振動波形データの周波数分析結果を所定の符号化テーブルを用いて符号化することによって各周波数帯域における周波数変化を示すＦＭ情報をそれぞれ生成する。そして、情報処理装置２は、周波数帯域毎にエンベロープ波形の概形およびＦＭ情報を符号化することによって、ＡＭＦＭ符号データを生成する。例えば、情報処理装置２のＣＰＵ２１は、生成されたエンベロープ波形の概形およびＦＭ情報に基づいて、周波数帯域成分毎の振幅の変化量および周波数の変化量をそれぞれ算出する。また、情報処理装置２のＣＰＵ２１は、所定の符号化テーブルに基づいて、算出された振幅の変化量および周波数の変化量をエンコードすることによって、所定の振動長さ分に対応するＡＭＦＭ符号データを周波数帯域毎に生成して端末装置３へ送信する。なお、上述したＡＭＦＭ符号データをエンコードする処理は、情報処理装置２におけるオフライン処理において、予め分析して用意されていてもよい。
【００８４】
情報処理装置２から端末装置３へ指示される振動時間は、振動指示データの送信周期に基づいて設定されるが、端末装置３の振動状況に応じて変化させることができる。例えば、情報処理装置２は、時間０ｍｓ〜１５ｍｓ（例えば、端末装置３が生成する振動波形データの０〜６０サンプル分に相当）の間で、端末装置３へ指示する振動時間を設定することができる。また、情報処理装置２から端末装置３へは、所定の送信周期毎（例えば、５ｍｓ毎）に振動指示データが生成されて送信され、振動を停止させる際は当該振動の停止を示すデータ（例えば、振幅が０となる振動を示すデータ）を送信して、以降の振動指示データの送信を停止する。なお、端末装置３内において所定の条件が満たされた場合に振動波形データを追加する処理が自動的に行われている場合、情報処理装置２から端末装置３へ振動指示データを送信する送信周期を指示可能な振動時間の最長時間より長く（例えば、０．５ｓ）するとともに、指示する振動の振幅および／または周波数が変化する場合に当該変化を示す振動指示データを情報処理装置２から送信してもよい。ここで、指示する振動の振幅および／または周波数が変化する場合に送信される振動指示データは、上記送信周期とは別のタイミングで端末装置３へ送信されてもよい。
【００８５】
端末装置３のＣＰＵ２１は、情報処理装置２から振動指示データ（ＡＭＦＭ符号データ）を受信することに応じて、レポートデータを情報処理装置２へ送信する。例えば、ＣＰＵ２１は、端末装置３における振動状況を示す情報の一例として、レポートデータ送信時点において、メモリ３７内に設定された振動波形データバッファ内に格納されている振動波形データの残量を取得する。また、ＣＰＵ２１は、前回のレポートデータ送信から今回のレポートデータ送信までの間に、振動波形データバッファ内に格納されている振動波形データの残量が所定量未満になる状態となったか否かを示すデータ（残量不足フラグデータ）を取得する。そして、ＣＰＵ２１は、振動波形データの残量および振動波形データの残量が所定量未満となったか否かを示すデータを少なくとも含むレポートデータを生成し、当該レポートデータを情報処理装置２へ送信する。なお、レポートデータは、情報処理装置２から振動指示データを受信した時点以外のタイミングでも端末装置３から送信されてもよい。例えば、振動指示データを受信とは関連しない一定周期毎にレポートデータを送信してもよいし、端末装置３から送られる他のデータ（例えば、操作部３１に対する操作データ、加速度センサ３５の検出データ、ジャイロセンサ３５の検出データ等）にレポートデータを含ませて送信してもよい。
【００８６】
そして、端末装置３のＣＰＵ２１は、受信したＡＭＦＭ符号データをデコードして振動波形データを生成し、当該振動波形データをメモリ３７内に設定された振動波形データバッファに格納する。例えば、ＣＰＵ２１は、振動波形データの２０サンプル分に相当するＡＭＦＭ符号データを受信した場合、当該ＡＭＦＭ符号データを２０サンプル分の振動波形データ（ＡＭＦＭ波データ）にデコードして、振動波形データバッファに既に格納されている振動波形データの新たなデータとして追加する。なお、ＣＰＵ２１は、振動波形データの０サンプル分に相当する振動指示データを受信した場合、上記デコード処理および振動波形データ格納処理をスキップする。
【００８７】
振動波形データバッファに格納されている振動波形データは、ＣＰＵ２１によって順次読み出されて振動制御信号に変換されて振動出力部（ローパスフィルタ３２）へ出力される。このとき、振動波形データバッファに格納されている振動波形データはＦＩＦＯ方式で読み出され、読み出されたデータは振動波形データバッファから順次消去される。
【００８８】
なお、上述した例では、レポートデータに含まれる端末装置３における振動状況を示す情報の一例として、振動波形データバッファ内に格納されている振動波形データの残量を示すデータを用いたが、他のデータを用いてもよい。例えば、振動波形データバッファにおけるデータ空き容量を示すデータ、振動波形データバッファ内から消費されたデータ量を示すデータ、振動波形データバッファの振動波形データの量が０となるまでの残り時間を示すデータが、レポートデータに含まれる振動状況を示す情報でもよい。また、レポートデータ送信時点で端末装置３が振動しているか否かを示すデータやレポートデータ送信時点で端末装置３が振動している振動パラメータ（例えば、振動の振幅や周波数）を示すデータが、レポートデータに含まれる振動状況を示す情報でもよい。さらに、端末装置３において用いられているクロックの値（例えば、クロック周波数）を示すデータが、レポートデータに含まれる振動状況を示す情報でもよい。例えば、情報処理装置２のクロックと端末装置３のクロックとがずれている場合、情報処理装置２が指示した振動時間に対して実際に端末装置３が振動する時間が短くなるまたは長くなることが考えられる。このようなクロックずれによる振動状況のずれは、情報処理装置２のクロック値と端末装置３のクロック値とを比較することによって推定することが可能であるため、端末装置３において用いられているクロックの値を端末装置３における振動状況を示す情報として用いることが可能となる。
【００８９】
レポートデータを受信した情報処理装置２は、当該レポートデータに含まれている端末装置３における振動状況を示す情報に基づいて、次に送信する振動指示データにおける振動時間を調整する。例えば、振動波形データバッファ内に格納されている振動波形データの残量が想定される量より多い場合、ＣＰＵ２１は、次に送信する振動指示データにおける振動時間を短く調整する。また、振動波形データバッファ内に格納されている振動波形データの残量が想定される量より少ない場合、ＣＰＵ２１は、次に送信する振動指示データにおける振動時間を長く調整する。さらに、振動波形データバッファ内に格納されている振動波形データの残量が所定量未満になる状態が想定外のタイミングで生じている場合、次に送信する振動指示データにおける振動時間を長く調整したり、次の振動指示データの送信タイミングが早くなるように調整したりする。
【００９０】
一方、端末装置３のＣＰＵ３６は、振動波形データバッファ内に格納されている振動波形データの残量を一定周期毎に取得して、振動波形データの残量が所定量未満であるか否かを判定している。そして、振動波形データの残量が所定量未満である場合、ＣＰＵ３６は、振動波形データバッファに振動波形データを追加する振動波形データ追加処理を行う。例えば、ＣＰＵ３６は、振動波形データの残量が１０サンプル未満となった場合、最後に受信したＡＭＦＭ符号データを再度デコードして２０サンプル分の振動波形データを振動波形データバッファに追加する。このような振動波形データ追加処理を行うことによって、端末装置３が情報処理装置２から一時的に振動指示データが受信できない場合であっても、振動を途切れさせることなく端末装置３を振動させることができる。また、このような振動波形データ追加処理を行うことによって、情報処理装置２が振動指示データを送信しなくても、最後に送信した振動指示データに基づいた振動を端末装置３が継続することができる。つまり、端末装置３側で振動波形データを自動的に追加する処理を行うことによって、情報処理装置２が端末装置３に送信する振動指示データの通信量を削減することができる。
【００９１】
なお、端末装置３のＣＰＵ３６は、振動波形データの残量が所定量未満、かつ、情報処理装置２から振動指示データの受信が一定時間以上途切れた異常状態である場合、フェードアウトデータを振動波形データバッファに追加する振動波形データ追加処理を行う。ここで、フェードアウトデータは、最後に受信したＡＭＦＭ符号データを再度デコードした振動波形の振幅を漸減的に小さくする振動波形データであり、フェードアウトデータに基づいて端末装置３を振動させることによって、端末装置３に生じる振動が徐々に小さくなって停止する。また、振動指示データの受信異常を判定するための上記一定時間は、情報処理装置２が振動指示データを送信する最大周期（例えば、０．５ｓｅｃ）より長く設定すればよく、例えば１．０ｓｅｃに設定してもよい。
【００９２】
また、上述した例では、振動波形データバッファ内に格納されている振動波形データの残量が所定量未満である場合に振動波形データを振動波形データバッファに追加しているが、振動波形データバッファ内に格納されている振動波形データの状況が他の条件を満たす場合に所定の振動波形データを振動波形データバッファに追加してもよい。第１の例として、振動波形データバッファ内に格納されている振動波形データが消費される変化量が所定量以上である場合に、最後に受信したＡＭＦＭ符号データを再度デコードした所定量の振動波形データが振動波形データバッファに追加される。第２の例として、振動波形データバッファ内にさらに格納可能な振動波形データの量が所定量以上である場合に、最後に受信したＡＭＦＭ符号データを再度デコードした所定量の振動波形データが振動波形データバッファに追加される。第３の例として、振動波形データバッファ内に格納されている振動波形データが示す振幅が所定範囲外である場合（例えば、アクチュエータ３０が振動可能な振幅未満の場合、ユーザが認識可能な振動振幅未満の場合、アクチュエータ３０が許容する振幅を越える場合等）、当該所定範囲外を示す振動波形データが振動波形データバッファから削除される。そして、上記削除対象となった振動波形データが示す振幅が上記所定範囲内の振幅に変換された上で、当該変換後の振動波形データが振動波形データバッファに追加される。第４の例として、振動波形データバッファ内に格納されている振動波形データが示す周波数が所定範囲外である場合（例えば、アクチュエータ３０が振動可能な周波数以外の場合、人間が振動を感じることができるとされる周波数帯域（例えば、０−１０００Ｈｚ）外である場合等）、当該所定範囲外を示す振動波形データが振動波形データバッファから削除される。そして、上記削除対象となった振動波形データが示す周波数が上記所定範囲内の周波数に変換された上で、当該変換後の振動波形データが振動波形データバッファに追加される。
【００９３】
次に、振動指示データ（ＡＭＦＭ符号データ）の送信元となる情報処理装置２において行われる振動制御処理の詳細を説明する。まず、図１０を参照して、情報処理装置２の振動制御処理において用いられる主なデータについて説明する。図１０は、振動制御処理を行う際に、情報処理装置２のメモリ２２に記憶される主なデータおよびプログラムの一例を示す図である。
【００９４】
図１０に示すように、情報処理装置２のメモリ２２のデータ記憶領域には、ＡＭＦＭ符号データＤａ、送信データＤｂ、受信データＤｃ、振動時間データＤｄ等が記憶される。なお、情報処理装置２のメモリ２２には、図１０に示すデータの他、実行するアプリケーションで用いるデータ等、処理に必要なデータ等が記憶されてもよい。また、情報処理装置２のメモリ２２のプログラム記憶領域には、振動制御プログラムを構成する各種プログラム群Ｐａが記憶される。
【００９５】
ＡＭＦＭ符号データＤａは、情報処理装置２において予め準備されているオリジナルの振動波形データに基づいて符号化されたＡＭＦＭ符号データ（振動指示データ）を示すデータである。
【００９６】
送信データＤｂは、端末装置３へ送信するための送信データを示すデータである。受信データＤｃは、端末装置３から受信した受信データを示すデータである。
【００９７】
振動時間データＤｄは、振動指示データとして指示する振動時間を示すデータである。
【００９８】
次に、図１１を参照して、情報処理装置２において行われる振動制御処理の一例について説明する。なお、図１１は、情報処理装置２において実行される振動制御処理の一例を示すフローチャートである。ここで、図１１に示すフローチャートにおいては、情報処理装置２における処理のうち、振動指示データを生成して送信する処理について主に説明し、これらの処理と直接関連しない他の処理については詳細な説明を省略する。また、図１１では、情報処理装置２のＣＰＵ２１が実行する各ステップを「Ｓ」と略称する。
【００９９】
上記振動制御処理を行う際、ＣＰＵ２１は、メモリ２２等を初期化し、プログラム記憶部２３から振動制御プログラムをメモリに読み込む。そして、ＣＰＵ２１によって当該振動制御プログラムの実行が開始される。図１１に示すフローチャートは、以上の処理が完了した後に行われる処理を示すフローチャートである。
【０１００】
なお、図１１に示すフローチャートにおける各ステップの処理は、単なる一例に過ぎず、同様の結果が得られるのであれば、各ステップの処理順序を入れ替えてもよいし、各ステップの処理に加えておよび／または代えて別の処理が実行されてもよい。また、本実施例では、上記フローチャートの各ステップの処理をＣＰＵ２１が実行するものとして説明するが、上記フローチャートにおける一部のステップの処理をＣＰＵ２１が実行し、その他のステップの処理をＣＰＵ２１以外のプロセッサや専用回路が実行するようにしてもよく、上記フローチャートにおける全部のステップの処理をＣＰＵ２１以外のプロセッサや専用回路が実行するようにしてもよい。
【０１０１】
図１１において、ＣＰＵ２１は、初期設定を行い（ステップ６１）、次のステップに処理を進める。例えば、ＣＰＵ２１は、端末装置３へ振動指示データ（ＡＭＦＭ符号データ）を送信するための初期設定を行う。一例として、ＣＰＵ２１は、ＡＭＦＭ符号データを送信する周波数帯域の数、各周波数帯域の範囲、ＡＭＦＭ符号データを送信する周期、振動指示する振動時間、符号化に用いる符号化テーブル等を初期設定する。
【０１０２】
次に、ＣＰＵ２１は、端末装置３に対して振動出力指示を開始するか否かを判定する（ステップ６２）。例えば、情報処理装置２において実行されているアプリケーションにおいて、端末装置３が振動出力を開始するタイミングである場合、ＣＰＵ２１は、上記ステップ６２において肯定判定する。そして、ＣＰＵ２１は、端末装置３に対して振動出力指示を開始する場合、ステップ６３に処理を進める。一方、ＣＰＵ２１は、端末装置３に対して振動出力指示をしない場合、ステップ７１に処理を進める。
【０１０３】
ステップ６３において、ＣＰＵ２１は、端末装置３へ送信するための符号データを生成し、次のステップに処理を進める。上述したように、ＣＰＵ２１は、ＡＭＦＭ符号データを生成する対象とするオリジナルの振動波形データを用いて、送信する周波数帯域毎のエンベロープ波形およびＦＭ情報を生成し、所定の符号化テーブルに基づいて振動振幅の変化量および振動周波数の変化量をエンコードすることによって、所定の振動時間分に対応するＡＭＦＭ符号データを周波数帯域毎に生成して、ＡＭＦＭ符号データＤａに格納する。
【０１０４】
次に、ＣＰＵ２１は、ＡＭＦＭ符号データＤａに格納されているＡＭＦＭ符号データを、他の送信データとともに送信データＤｂに格納する。そして、ＣＰＵ２１は、通信部２４を介して送信データＤｂに格納されている送信データを端末装置３へ送信して（ステップ６４）、次のステップに処理を進める。
【０１０５】
なお、上述したＡＭＦＭ符号データをエンコードする処理（すなわち、上記ステップ６３の処理）は、情報処理装置２におけるオフライン処理において予め処理されてＡＭＦＭ符号データＤａとして格納されていてもよいし、振動を生成する要請に応じて、リアルタイムに行われてもよい。
【０１０６】
次に、ＣＰＵ２１は、端末装置３からレポートデータを受信したか否かを判定する（ステップ６５）。そして、ＣＰＵ２１は、端末装置３からレポートデータを受信した場合、当該受信したレポートデータを受信データＤｃに格納して、ステップ６６に処理を進める。一方、ＣＰＵ２１は、端末装置３からレポートデータを受信していない場合、ステップ６７に処理を進める。
【０１０７】
ステップ６６において、ＣＰＵ２１は、上記ステップ６５で受信したレポートデータに基づいて、次に端末装置３に対して振動指示する振動時間を決定し、ステップ６７に処理を進める。例えば、ＣＰＵ２１は、レポートデータに含まれている端末装置３における振動状況を示す情報（例えば、振動波形データバッファ内における振動波形データの残量や振動波形データが自動的に追加されたか否かを示すデータ）に基づいて、次に送信する振動指示データにおける振動時間を決定する。一例として、振動波形データの残量が想定される量より多い場合、ＣＰＵ２１は、次に送信する振動指示データにおける振動時間を相対的に短い時間（例えば、前回振動指示した振動時間より短い時間や、標準的に予め定められている時間より短い時間等）に設定して、振動時間データＤｄを更新する。また、振動波形データの残量が想定される量より少ない場合、ＣＰＵ２１は、次に送信する振動指示データにおける振動時間を相対的に長い時間（例えば、前回振動指示した振動時間より長い時間や、標準的に予め定められている時間より長い時間等）に設定して、振動時間データＤｄを更新する。さらに、振動波形データバッファに振動波形データが想定外のタイミングで端末装置３において追加されている場合、次に送信する振動指示データにおける振動時間を相対的に長い時間に設定して振動時間データＤｄを更新したり、次の振動指示データの送信タイミングが早くなるように調整したりする。
【０１０８】
ステップ６７において、ＣＰＵ２１は、振動指示データを端末装置３へ送信するタイミングか否かを判定する。そして、ＣＰＵ２１は、振動指示データを端末装置３へ送信するタイミングである場合、ステップ６８に処理を進める。一方、ＣＰＵ２１は、振動指示データを端末装置３へ送信するタイミングでない場合、ステップ７０に処理を進める。ここで、上述したように、情報処理装置２が端末装置３へ振動指示データを送信するタイミングは、端末装置３が生成する振動波形データの所定サンプル分に相当する所定の送信周期毎でもいいし、指示する振動の振幅および／または周波数が変化するタイミングでもよい。
【０１０９】
ステップ６８において、ＣＰＵ２１は、振動時間データＤｄが示す振動時間に基づいて、端末装置３へ送信するための符号データを生成し、次のステップに処理を進める。例えば、ＣＰＵ２１は、ＡＭＦＭ符号データを生成する対象とするオリジナルの振動波形データを用いて、振動時間データＤｄが示す振動時間に対応する振動長さ分に対応するＡＭＦＭ符号データを上記ステップ６３と同様に生成して、ＡＭＦＭ符号データＤａに格納する。なお、上記ステップ６８において、ＣＰＵ２１は、端末装置３の振動を停止させる場合、振動の停止を示すデータ（例えば、振幅が０となる振動を示すＡＭＦＭ符号データ）を生成してもよい。
【０１１０】
次に、ＣＰＵ２１は、ＡＭＦＭ符号データＤａに格納されているＡＭＦＭ符号データを、他の送信データとともに送信データＤｂに格納する。そして、ＣＰＵ２１は、通信部２４を介して送信データＤｂに格納されている送信データを端末装置３へ送信して（ステップ６９）、ステップ７０に処理を進める。
【０１１１】
ステップ７０において、端末装置３に対する振動出力指示を終了するか否かを判断する。例えば、上記ステップ６８において、振動の停止を示すデータが生成されている場合、ＣＰＵ２１は、上記ステップ７０において肯定判定する。そして、ＣＰＵ２１は、端末装置３に対して振動出力指示を終了する場合、ステップ７１に処理を進める。一方、ＣＰＵ２１は、端末装置３に対する振動出力指示を継続する場合、上記ステップ６５に戻って処理を繰り返す。
【０１１２】
ステップ７１において、ＣＰＵ２１は、処理を終了するか否かを判断する。処理を終了する条件としては、例えば、処理を終了させる条件が満たされたことや、ユーザが処理を終了する操作を行ったこと等がある。ＣＰＵ２１は、処理を終了しない場合に上記ステップ６２に戻って処理を繰り返し、処理を終了する場合に当該フローチャートによる処理を終了する。
【０１１３】
次に、ＡＭＦＭ符号データの転送先となる端末装置３において行われる振動出力処理について説明する。まず、図１２を参照して、端末装置３の振動出力処理において用いられる主なデータについて説明する。図１２は、振動出力処理を行う際に、端末装置３のメモリ３７に記憶される主なデータおよびプログラムの一例を示す図である。
【０１１４】
図１２に示すように、メモリ３７のデータ記憶領域には、振動波形データバッファＤｍ、受信データＤｎ、送信データＤｏ、振動波形データＤｐ、振動制御信号データＤｑ、振動出力フラグデータＤｒ、残量不足フラグデータＤｓ、およびレポートデータＤｔ等が記憶される。なお、メモリ３７には、図１２に示すデータの他、実行するアプリケーションで用いるデータ等、処理に必要なデータ等が記憶されてもよい。また、メモリ３７のプログラム記憶領域には、振動出力プログラムを構成する各種プログラム群Ｐｂが記憶される。例えば、各種プログラム群Ｐｂは、振動指示データ（ＡＭＦＭ符号データ）を受信するための受信プログラム、ＡＭＦＭ符号データをデコードするためのデコードプログラム、振動制御信号を生成するための振動制御信号生成プログラム等が含まれる。
【０１１５】
振動波形データバッファＤｍは、ＣＰＵ３６におけるデコード処理によって生成された振動波形データを一時的に溜めておくデータ領域である。
【０１１６】
受信データＤｎは、情報処理装置２から受信した受信データを示すデータである。送信データＤｏは、情報処理装置２へ送信する送信データを示すデータである。
【０１１７】
振動波形データＤｐは、情報処理装置２から受信した振動指示データ（ＡＭＦＭ符号データ）をデコードすることによって生成された振動波形を示すデータである。振動制御信号データＤｑは、振動出力部（ローパスフィルタ３２）へ出力する振動制御信号を示すデータである。
【０１１８】
振動出力フラグデータＤｒは、端末装置３を振動させる処理が行われている場合にオンに設定される振動出力フラグを示すデータである。残量不足フラグデータＤｓは、振動波形データバッファＤｍへ振動波形データを自動的に追加する処理が行われた場合にオンに設定される残量不足フラグを示すデータである。
【０１１９】
レポートデータＤｔは、端末装置３における振動の状況を情報処理装置２へ通知するための情報（レポートデータ）を示すデータである。
【０１２０】
次に、図１３を参照して、端末装置３において行われる振動出力処理の一例について説明する。なお、図１３は、端末装置３において実行される振動出力処理の前半の一例を示すフローチャートである。図１４は、端末装置３において実行される振動出力処理の後半の一例を示すフローチャートである。ここで、図１３および図１４に示すフローチャートにおいては、端末装置３における処理のうち、情報処理装置２から振動指示データを受信して振動波形データを生成する処理について主に説明する。なお、端末装置３における振動出力部で用いられる振動制御信号は、振動波形データバッファＤｍに格納された振動波形データがＦＩＦＯ方式で適宜所定の周期で読み出されて符号化されて出力され、読み出された振動波形データは振動波形データバッファＤｍから順次消去されるものとする。また、これらの処理と直接関連しない他の処理については詳細な説明を省略する。また、図１３および図１４では、端末装置３のＣＰＵ３６が実行する各ステップを「Ｓ」と略称する。
【０１２１】
端末装置３のＣＰＵ３６は、メモリ３７等を初期化し、端末装置３のプログラム記憶部３８から振動出力プログラムをメモリ３７に読み込む。そして、ＣＰＵ３６によって当該振動出力プログラムの実行が開始される。図１３および図１４に示すフローチャートは、以上の処理が完了した後に行われる処理を示すフローチャートである。
【０１２２】
なお、図１３および図１４に示すフローチャートにおける各ステップの処理は、単なる一例に過ぎず、同様の結果が得られるのであれば、各ステップの処理順序を入れ替えてもよいし、各ステップの処理に加えておよび／または代えて別の処理が実行されてもよい。また、本実施例では、上記フローチャートの各ステップの処理を端末装置３のＣＰＵ３６が実行するものとして説明するが、上記フローチャートにおける一部のステップの処理をＣＰＵ３６が実行し、その他のステップの処理をＣＰＵ３６以外のプロセッサや専用回路が実行するようにしてもよく、上記フローチャートにおける全部のステップの処理をＣＰＵ３６以外のプロセッサや専用回路が実行するようにしてもよい。
【０１２３】
図１３において、ＣＰＵ３６は、初期設定を行い（ステップ８１）、次のステップに処理を進める。例えば、ＣＰＵ３６は、情報処理装置２から振動指示データ（ＡＭＦＭ符号データ）を受信するための初期設定を行う。一例として、ＣＰＵ３６は、ＡＭＦＭ符号データを受信する周波数帯域の数、各周波数帯域の範囲、ＡＭＦＭ符号データを受信する周期、デコード処理に用いる符号化テーブル等を設定して、各パラメータを初期設定する。また、ＣＰＵ３６は、振動波形データバッファＤｍのデータ残量を制御するための処理、情報処理装置２へレポートデータを送信するための処理、振動出力部へ振動制御信号を出力するための処理等に用いる各パラメータを初期設定する。なお、上記初期設定において設定するパラメータについては、情報処理装置２から受信した受信データに記述された情報に基づいて設定してもよい。
【０１２４】
次に、ＣＰＵ３６は、情報処理装置２からデータを受信する受信処理を行い（ステップ８２）、次のステップに処理を進める。例えば、ＣＰＵ３６は、通信部３９を介して情報処理装置２から受信したデータを受信データＤｎとして格納する。
【０１２５】
次に、ＣＰＵ３６は、上記ステップ８２で受信した受信データが振動出力を指示する振動指示データであるか否かを判定する（ステップ８３）。そして、ＣＰＵ３６は、受信データが振動指示データである場合、ステップ８４に処理を進める。一方、ＣＰＵ３６は、受信データが振動指示データでない場合や受信データを受信していない場合、ステップ９１（図１４参照）に処理を進める。
【０１２６】
ステップ８４において、ＣＰＵ３６は、振動出力フラグをオンに設定して、次のステップに処理を進める。例えば、ＣＰＵ３６は、振動出力フラグデータＤｒが示す振動出力フラグをオフの場合、当該振動出力フラグをオンに更新する。
【０１２７】
次に、ＣＰＵ３６は、振動波形データの残量を検出し（ステップ８５）、次のステップに処理を進める。例えば、ＣＰＵ３６は、振動波形データバッファＤｍに格納されている振動波形データの残量を検出する。なお、後述により明らかとなるが、振動波形データバッファＤｍには、振動指示データのデコード処理、追加データデコード処理、およびフェードアウトデータデコード処理によって生成された振動波形データが追加格納される。また、上述したように、振動波形データバッファＤｍに格納されている振動波形データは、振動出力部へ出力する振動制御信号が所定の周期毎に生成されることに応じて、読み出された振動波形データが振動波形データバッファＤｍから順次消去される。つまり、上記ステップ８５においては、振動波形データバッファＤｍに追加格納される振動波形データの量と振動波形データバッファＤｍから読み出されて消去される振動波形データの量とのバランスを検出していることになる。
【０１２８】
次に、ＣＰＵ３６は、上記ステップ８５において検出した振動波形データの残量を記述したレポートデータを生成し、通信部３９を介して当該レポートデータを情報処理装置２へ送信して（ステップ８６）、次のステップに処理を進める。ここで、ＣＰＵ３６は、残量不足フラグデータＤｓを参照して残量不足フラグがオンに設定されている場合、振動波形データバッファＤｍへ振動波形データを自動的に追加する処理が行われたことを示すデータも上記レポートデータに記述して、情報処理装置２へ送信する。
【０１２９】
次に、ＣＰＵ３６は、残量不足フラグデータＤｓが示す残量不足フラグがオンに設定されている場合、当該残量不足フラグをオフに更新して（ステップ８７）、次のステップに処理を進める。
【０１３０】
次に、ＣＰＵ３６は、上記ステップ８２で受信したＡＭＦＭ符号データをデコードする処理を行い（ステップ８８）、次のステップに処理を進める。例えば、ＣＰＵ３６は、上記ステップ８２で受信したＡＭＦＭ符号データからＡＭ情報およびＦＭ情報を取り出し、取り出したＦＭ情報から周波数変調正弦波（ＦＭ波）を生成して、ＡＭ情報に応じた振幅で変位するＡＭＦＭ波を生成する。そして、ＣＰＵ３６は、受信したＡＭＦＭ符号データの振動長さ分のＡＭＦＭ波を周波数帯域毎に生成し、周波数帯域毎のＡＭＦＭ波を足し合わせることによって合成波を生成して、当該合成波を示す振動波形データを振動波形データＤｐとして格納する。
【０１３１】
次に、ＣＰＵ３６は、上記ステップ８８においてデコードされた振動波形データをＦＩＦＯ方式で振動波形データバッファＤｍに格納し（ステップ８９）、ステップ９１（図１４参照）に処理を進める。
【０１３２】
図１４に進み、ステップ８９において、ＣＰＵ３６は、振動出力フラグデータＤｒが示す振動出力フラグがオンであるか否かを判定する。そして、ＣＰＵ３６は、振動出力フラグがオンである場合、ステップ９２に処理を進める。一方、ＣＰＵ３６は、振動出力フラグがオフである場合、ステップ１０３に処理を進める。
【０１３３】
ステップ９２において、ＣＰＵ３６は、振動出力処理を終了するか否かを判定する。例えば、ＣＰＵ３６は、情報処理装置２から受信した振動指示データが振動を停止させることを示すデータ（例えば、振幅が０となる振動を示すデータ）である場合、振動出力処理を終了すると判定する。そして、ＣＰＵ３６は、振動出力処理を終了しない場合、ステップ９３に処理を進める。一方、ＣＰＵ３６は、振動出力処理を終了する場合、ステップ１０２に処理を進める。
【０１３４】
ステップ９３において、ＣＰＵ３６は、振動波形データの残量を検出し、次のステップに処理を進める。なお、ＣＰＵ３６は、上記ステップ９３でも振動波形データバッファＤｍに格納されている振動波形データの残量を検出するが、上記ステップ８５における処理と同様であるため、ここでは詳細な説明を省略する。
【０１３５】
次に、ＣＰＵ３６は、上記ステップ９３において検出した振動波形データの残量が所定量未満であるか否かを判定する（ステップ９４）。例えば、ＣＰＵ３６は、振動波形データバッファＤｍに格納されている振動波形データの残量が１０サンプル未満である場合、上記ステップ９４において肯定判定する。そして、ＣＰＵ３６は、振動波形データの残量が所定量未満である場合、ステップ９５に処理を進める。一方、ＣＰＵ３６は、振動波形データの残量が所定量以上である場合、ステップ１０３に処理を進める。
【０１３６】
ステップ９５において、ＣＰＵ３６は、情報処理装置２から定期的に送信されている振動指示データの受信が所定時間以内にあったか否かを判定する。例えば、ＣＰＵ３６は、振動指示データを１．０ｓｅｃ以内に受信している場合、上記ステップ９５において肯定判定する。そして、ＣＰＵ３６は、振動指示データの受信が所定時間以内にあった場合、ステップ９６に処理を進める。一方、ＣＰＵ３６は、振動指示データの受信が所定時間以内にない場合、ステップ９９に処理を進める。
【０１３７】
ステップ９６において、ＣＰＵ３６は、追加データデコード処理を行い、次のステップに処理を進める。例えば、ＣＰＵ３６は、受信データＤｎを参照して最後に受信したＡＭＦＭ符号データを所定の振動長さ分（例えば、２０サンプル分）再度デコードすることによって、振動波形データバッファＤｍに追加する振動波形データを生成して、振動波形データＤｐに格納する。なお、ＡＭＦＭ符号データをデコードする処理については、上記ステップ８８と同様であるため、ここでは詳細な説明を省略する。
【０１３８】
次に、ＣＰＵ３６は、上記ステップ９５においてデコードされた所定の振動長さ分の振動波形データをＦＩＦＯ方式で振動波形データバッファＤｍに追加格納する処理を行い（ステップ９７）、次のステップに処理を進める。
【０１３９】
次に、ＣＰＵ３６は、残量不足フラグデータＤｓが示す残量不足フラグをオンに更新して（ステップ９８）、ステップ１０３に処理を進める。
【０１４０】
一方、上記ステップ９５において否定判定された場合（すなわち、振動指示データの受信が所定時間以内にない場合）、ＣＰＵ３６は、フェードアウトデータデコード処理を行い、次のステップに処理を進める。例えば、ＣＰＵ３６は、上記ステップ８８または上記ステップ９６において最後にデコードして生成した振動波形データに基づいて、当該振動波形が示す振幅が漸減的に小さくなって振幅が０となる振動波形を生成し、当該振動波形を示す振動波形データを振動波形データＤｐに格納する。
【０１４１】
次に、ＣＰＵ３６は、上記ステップ９９において生成された振動波形データをＦＩＦＯ方式で振動波形データバッファＤｍに追加格納するフェードアウトデータ追加処理を行い（ステップ１００）、次のステップに処理を進める。
【０１４２】
次に、ＣＰＵ３６は、振動出力フラグデータＤｒが示す振動出力フラグをオフに更新して（ステップ１０１）、ステップ１０３に処理を進める。
【０１４３】
また、上記ステップ９２において肯定判定された場合（すなわち、振動出力処理を終了する場合）、ＣＰＵ３６は、振動出力フラグデータＤｒが示す振動出力フラグをオフに更新して（ステップ１０２）、ステップ１０３に処理を進める。
【０１４４】
ステップ１０３において、ＣＰＵ３６は、情報処理装置２へレポートデータを送信するタイミングか否かを判定する。例えば、上記レポートデータは、上記ステップ８６とは関連しない一定周期毎にレポートデータを送信してもよいし、端末装置３から送られる他のデータにレポートデータを含ませて送信してもよく、上記ステップ１０３では現時点が当該周期や他のデータ送信タイミングに相当するか否かが判定される。そして、ＣＰＵ３６は、レポートデータを送信するタイミングである場合、ステップ１０４に処理を進める。一方、ＣＰＵ３６は、レポートデータを送信するタイミングでない場合、ステップ１０６に処理を進める。
【０１４５】
ステップ１０４において、上記ステップ９３において検出した振動波形データの残量を記述したレポートデータを生成し、通信部３９を介して当該レポートデータを情報処理装置２へ送信して、次のステップに処理を進める。ここで、ＣＰＵ３６は、残量不足フラグデータＤｓを参照して残量不足フラグがオンに設定されている場合、振動波形データバッファＤｍへ振動波形データを自動的に追加する処理（すなわち、上記ステップ９６における処理）が行われたことを示すデータも上記レポートデータに記述して、情報処理装置２へ送信する。
【０１４６】
次に、ＣＰＵ３６は、残量不足フラグデータＤｓが示す残量不足フラグがオンに設定されている場合、当該残量不足フラグをオフに更新して（ステップ１０５）、ステップ１０６に処理を進める。
【０１４７】
ステップ１０６において、ＣＰＵ３６は、処理を終了するか否かを判断する。処理を終了する条件としては、例えば、処理を終了させる条件が満たされたことや、ユーザが処理を終了する操作を行ったこと等がある。ＣＰＵ３６は、処理を終了しない場合に上記ステップ８２（図１３参照）に戻って処理を繰り返し、処理を終了する場合に当該フローチャートによる処理を終了する。
【０１４８】
このように、上述した実施例に係る処理では、端末装置３から振動出力状況等を示すレポートデータが情報処理装置２へ送信される。これによって、情報処理装置２は、送信されるレポートデータを用いて適切な振動制御処理を行うことができる。例えば、上記レポートデータに端末装置３が生成する振動波形データの残量が記述されている場合、情報処理装置２は、当該残量に応じた振動長さの振動を示すＡＭＦＭ符号データ符号データを端末装置３へ送信することが可能となり、適切なデータ量による振動制御が可能となる。
【０１４９】
また、上述した実施例に係る処理では、振動波形データバッファにおける振動波形データの残量が所定量未満となった場合に端末装置３において自動的に振動波形データが追加される。これによって、端末装置３が情報処理装置２から一時的に振動指示データが受信できない場合であっても、振動を途切れさせることなく端末装置３を振動させることができる。また、情報処理装置２が振動指示データを送信しなくても、最後に送信した振動指示データに基づいた振動を端末装置３が継続することができるため、情報処理装置２が端末装置３に送信する振動指示データの通信量を削減することができる。
【０１５０】
なお、上述した実施例では、情報処理装置２から送信された振動指示データを端末装置３が受信した場合、端末装置３がレポートデータを情報処理装置２へ送信した後に当該振動指示データのデコードを行っている。これによって、振動波形データバッファＤｍにおける振動波形データの残量が相対的に少ない状態でレポートデータを作成することができるため、レポートデータによって送信可能なビット数を用いてより詳細な残量を情報処理装置２へ通知することができる。なお、このような効果を期待しない場合、端末装置３は、受信した振動指示データのデコードを行って当該振動指示データに対応する振動波形データを振動波形データバッファＤｍに格納した後に、当該振動波形データバッファＤｍにおける振動波形データの残量を示すレポートデータを生成してもよい。
【０１５１】
また、上述した実施例では、情報処理装置２から端末装置３へ振動波形データを符号化することによって生成される振動指示データを送信しているが、端末装置３へ振動を指示するデータとして他の態様のデータを送信してもよい。例えば、振動波形データをそのまま振動指示データとして送信したり、振動波形データを所定の方式で圧縮したデータを振動指示データとして送信したりしてもよい。
【０１５２】
また、上述した実施例では、ＡＭＦＭ符号データをデコードすることによって生成される振動波形データを振動波形データバッファＤｍに格納し、振動出力部に振動波形データバッファＤｍに格納されている振動波形データを所定のビットパターンに変換することによって出力している。しかしながら、振動波形データバッファＤｍに格納するデータは、他のデータ形式でもよい。例えば、端末装置３が受信したＡＭＦＭ符号データをそのまま振動波形データバッファＤｍに格納し、振動出力部へ出力する際に振動波形データバッファＤｍに格納されたＡＭＦＭ符号データをその都度デコードして振動波形データを生成してもよい。また、端末装置３が受信したＡＭＦＭ符号データをデコードすることによって生成された振動波形データを所定のビットパターンに変換したデータを、振動波形データバッファＤｍに格納してもよい。
【０１５３】
また、端末装置３が生成する振動は、振幅および周波数の一方が予め定められた一定値であってもよい。この場合、情報処理装置２は、上記一定値に設定されている振幅および周波数の一方に対する振動指示を行わずに振幅および周波数の他方のパラメータを指示する振動指示データ（すなわち、ＡＭ符号データまたはＦＭ符号データ）を端末装置３へ送信すればよい。
【０１５４】
また、アクチュエータ３０は、端末装置３の外部に設けられてもよい。例えば、端末装置３を操作するユーザの身体（例えば、頭部や足）に装着可能な外部装置内や他方の手で操作可能な外部装置内にアクチュエータ３０を設けてもよい。この場合、端末装置３と外部装置との間は無線通信されてもよいし有線通信されてもよい。
【０１５５】
また、上述した実施例では、端末装置３にアクチュエータ３０が１つ設けられている例を用いたが、ユーザに振動を与えるアクチュエータが端末装置３内部および／または端末装置３の外部に複数設けられてもよい。一例として、端末装置３内の上下または左右や、一方の手で操作する端末装置３内と他方の手で操作する外部装置内とに一対のアクチュエータを設けてもよい。この場合、ＣＰＵ３６は、１つの符号データからそれぞれのアクチュエータを駆動するための振動制御信号をそれぞれ生成してもいいし、それぞれ別の符号データ（例えば、一方のアクチュエータ用の符号データと他方のアクチュエータ用の符号データ）からそれぞれのアクチュエータを駆動するための振動制御信号をそれぞれ生成してもよい。後者の場合、情報処理装置２は、一方のアクチュエータ用の符号データと他方のアクチュエータ用の符号データとをセットとした振動指示データを端末装置３へ送信する。
【０１５６】
例えば、アクチュエータ３０が複数設けられており、それぞれのアクチュエータ３０から独立した振動を発生させる場合、アクチュエータ３０毎に振動を制御するための振動制御信号がＣＰＵ３６から出力される。この場合、ユーザの皮膚における異なる２点（一例として、端末装置３を把持するユーザの一方の手と外部装置を把持する他方の手）に刺激を与えることによって擬似的な１点の刺激を知覚させるファントムセンセーションを利用して、当該アクチュエータが設けられている位置以外の場所が振動源であるように擬似的に知覚させる振動を端末装置３のユーザに与えることも可能となる。
【０１５７】
また、上述した実施例では、振動指示データを送信する情報処理装置２から端末装置３へ当該振動指示データを無線で送信する例を用いたが、情報処理装置２から端末装置３へ当該振動指示データを有線で送信してもよい。
【０１５８】
また、振動指示データの送信先となる端末装置３は、ユーザが把持して操作する操作装置（いわゆる、コントローラ）でなくてもよく、携帯ゲーム機、携帯電話機、ＰＤＡ等のデバイスであってもよい。また、情報処理装置２と無線接続される端末装置３は、複数（例えば、複数のユーザがそれぞれ把持する複数のコントローラや１人のユーザが両手にそれぞれ把持する一対のコントローラ）であってもよく、情報処理装置２とアクチュエータ３０をそれぞれ内蔵した複数の端末装置３から構成されるシステム（例えば、ゲームシステム）でもよい。この場合、情報処理装置２から複数の端末装置３へ振動波形データを生成するための振動指示データが無線通信でそれぞれ送信されることによって、それぞれの端末装置３において当該振動指示データに応じた振動を生成することができる。なお、情報処理装置２では振動波形データを符号化する処理は行わず、情報処理装置２にインストールされるプログラム等に振動波形データが予め符号化されたデータが含まれていてもよい。この場合、情報処理装置２は、予め符号化された符号データを必要に応じて端末装置３に出力し、端末装置３において当該符号データをデコードすることになる。なお、情報処理装置２と単一または複数の端末装置３との間の通信は、無線であってもよいし、有線であってもよい。
【０１５９】
また、上述した説明では振動制御処理を情報処理装置２で行い、振動出力処理を端末装置３で行う例を用いたが、上記処理における処理ステップの少なくとも一部を他の装置で行ってもかまわない。例えば、情報処理装置２や端末装置３がさらに他の装置（例えば、別のサーバ、他のゲーム装置、他の携帯端末）と通信可能に構成されている場合、上記処理における処理ステップは、さらに当該他の装置が協働することによって実行してもよい。このように、上記処理における処理ステップの少なくとも一部を他の装置で行うことによって、上述した処理と同様の処理が可能となる。また、上述した処理は、少なくとも１つの情報処理装置により構成される情報処理システムに含まれる１つのプロセッサまたは複数のプロセッサ間の協働により実行されることが可能である。なお、少なくとも１つの情報処理装置により構成される情報処理システムは、複数の情報処理装置により構成される情報処理システム（いわゆる、複数の装置の複合体で構成されるシステム）と１つの情報処理装置によって構成される情報処理システム（いわゆる、複数のユニットが構成された単独の装置で構成されるシステム）とが考えられる。また、上記実施例においては、情報処理装置２や端末装置３の制御部が所定のプログラムを実行することによって、上述したフローチャートによる処理が行われたが、情報処理装置２や端末装置３が備える専用回路によって上記処理の一部または全部が行われてもよい。
【０１６０】
ここで、上述した変形例によれば、いわゆるクラウドコンピューティングのシステム形態や分散型の広域ネットワークおよびローカルネットワークのシステム形態でも本実施例を実現することが可能となる。例えば、分散型のローカルネットワークのシステム形態では、据置型の情報処理装置（据置型のゲーム装置）と携帯型の情報処理装置（携帯型のゲーム装置）との間で上記処理を協働により実行することも可能となる。なお、これらのシステム形態では、上述した処理の各ステップの処理をどの装置で行うかについては特に限定されず、どのような処理分担をしたとしても本実施例を実現できることは言うまでもない。
【０１６１】
また、上述した情報処理で用いられる処理順序、設定値、判定に用いられる条件等は、単なる一例に過ぎず他の順序、値、条件であっても、本実施例を実現できることは言うまでもない。また、上述した情報処理装置で用いられる各構成部品の形状、数、配置位置、部品が有する機能等は、単なる一例に過ぎず他の形状、数、配置位置であってもいいし、他の機能を有するものであっても、本実施例を実現できることは言うまでもない。また、端末装置３は、携帯型の装置より相対的に大きな手持ち型の装置または可搬型の装置でもよい。ここで、手持ち型の装置とは、ユーザが手に持って操作することができる装置であり、上述した携帯型の装置を含む概念である。また、可搬型の装置とは、当該装置を用いる際に当該装置本体を移動させたり、当該装置を用いる際に当該本体の姿勢を変えたり、当該装置本体を持ち運びしたりできる装置であり、上述した手持ち型の装置や携帯型の装置を含む概念である。
【０１６２】
また、上記振動制御プログラムや振動出力プログラムは、外部メモリ等の外部記憶媒体を通じて情報処理装置２や端末装置３に供給されるだけでなく、有線または無線の通信回線を通じて情報処理装置２や端末装置３に供給されてもよい。また、上記振動制御プログラムや振動出力プログラムは、情報処理装置２や端末装置３内部の不揮発性記憶装置に予め記録されていてもよい。なお、上記振動制御プログラムや振動出力プログラムを記憶する情報記憶媒体としては、不揮発性メモリの他に、ＣＤ−ＲＯＭ、ＤＶＤ、あるいはそれらに類する光学式ディスク状記憶媒体、フレキシブルディスク、ハードディスク、光磁気ディスク、磁気テープ、などでもよい。また、上記振動制御プログラムや振動出力プログラムを記憶する情報記憶媒体としては、上記振動制御プログラムや振動出力プログラムを記憶する揮発性メモリでもよい。このような記憶媒体は、コンピュータ等が読み取り可能な記録媒体ということができる。例えば、コンピュータ等に、これらの記録媒体のゲームプログラムを読み込ませて実行させることにより、上述で説明した各種機能を提供させることができる。
【０１６３】
以上、本発明を詳細に説明してきたが、前述の説明はあらゆる点において本発明の例示に過ぎず、その範囲を限定しようとするものではない。本発明の範囲を逸脱することなく種々の改良や変形を行うことができることは言うまでもない。本発明は、特許請求の範囲によってのみその範囲が解釈されるべきであることが理解される。また、当業者は、本発明の具体的な実施例の記載から、本発明の記載および技術常識に基づいて等価な範囲を実施することができることが理解される。また、本明細書において使用される用語は、特に言及しない限り、当該分野で通常用いられる意味で用いられることが理解されるべきである。したがって、他に定義されない限り、本明細書中で使用される全ての専門用語および技術用語は、本発明の属する分野の当業者によって一般的に理解されるのと同じ意味を有する。矛盾する場合、本明細書（定義を含めて）が優先する。
【産業上の利用可能性】
【０１６４】
以上のように、本発明は、振動を発生させる装置において振動を発生させている状況を把握可能にすること等を目的として、例えば振動制御システム、振動制御方法、振動出力装置、ゲームコントローラ、振動出力プログラム、振動出力方法、振動制御装置、および振動制御プログラム等として有用である。
【符号の説明】
【０１６５】
１…振動制御システム
２…情報処理装置
２１、３６…ＣＰＵ
２２、３７…メモリ
２３、３８…プログラム記憶部
２４、３９…通信部
３…端末装置
３０…アクチュエータ
３１…増幅部
３２…ローパスフィルタ
３３…操作部
３４…加速度センサ
３５…ジャイロセンサ
４…モニタ
【図１】
2018171514.tif 000003
【図２】
2018171514.tif 000004
【図３】
2018171514.tif 000005
【図４】
2018171514.tif 000006
【図５】
2018171514.tif 000007
【図６】
2018171514.tif 000008
【図７】
2018171514.tif 000009
【図８】
2018171514.tif 000010
【図９】
2018171514.tif 000011
【図１０】
2018171514.tif 000012
【図１１】
2018171514.tif 000013
【図１２】
2018171514.tif 000014
【図１３】
2018171514.tif 000015
【図１４】
2018171514.tif 000016