(57)【特許請求の範囲】
【請求項１】
振動子を備える情報処理システムであって、
振動の周波数に関する時間変化のモデルを示し、当該モデルにおけるある期間の周波数を示す周波数変数と、当該期間に関する期間変数とを変数とする周波数モデル関数を記憶する関数記憶部と、
前記周波数変数の値と、前記期間変数の値とを決定する変数決定部と、
決定された前記周波数変数の値と、決定された前記期間変数の値とを前記周波数モデル関数に適用することによって得られる周波数の時間変化を示す関数によって規定される振動パターンを示す振動情報を生成する生成部と、
前記振動情報に基づいて前記振動子の振動を制御する振動制御部とを備える、情報処理システム。
【請求項２】
前記関数記憶部は、互いに異なる周波数の時間変化のモデルを示す複数種類の周波数モデル関数を記憶し、
前記変数決定部は、前記複数種類の周波数モデル関数のうち１つを指定する関数指定情報をさらに決定し、
前記生成部は、決定された前記周波数変数の値と、決定された前記期間変数の値とを、決定された前記関数指定情報により指定される周波数モデル関数に適用することによって得られる周波数の時間変化を示す関数によって規定される振動パターンを示す前記振動情報を生成する、請求項１に記載の情報処理システム。
【請求項３】
前記期間変数は、前記周波数モデル関数が示す時間変化のモデルの開始時点から振動が開始されるまでの時間を示す開始変数を含む、請求項１または請求項２に記載の情報処理システム。
【請求項４】
前記周波数モデル関数は、前記期間変数の値が当該周波数モデル関数に適用されることによって振動パターンの時間長さが決定される関数である、請求項１から請求項３のいずれか１項に記載の情報処理システム。
【請求項５】
前記関数記憶部は、振動の振幅に関する時間変化のモデルを示し、振動の振幅を示す振幅変数を変数とする振幅モデル関数をさらに記憶し、
前記変数決定部は、前記振幅変数の値をさらに決定し、
前記生成部は、決定された前記周波数変数の値と、決定された前記期間変数の値とを前記周波数モデル関数に適用することによって得られる周波数の時間変化を示す関数と、決定された前記振幅変数の値を前記振幅モデル関数に適用することによって得られる振幅の時間変化を示す関数とによって規定される振動パターンを示す前記振動情報を生成する、請求項１から請求項４のいずれか１項に記載の情報処理システム。
【請求項６】
前記振幅変数は、振動の振幅に関する時間変化のモデルにおける終了時点の振幅を示す終了振幅変数を含む、請求項５に記載の情報処理システム。
【請求項７】
前記変数決定部は、前記周波数変数の値と前記期間変数の値との組を複数組決定し、
前記生成部は、決定された複数組の前記周波数変数の値と前記期間変数の値との組に基づく複数の振動パターンのうち、振動が生じる期間が互いに重複しない複数の振動パターンを統合することによって得られる１つの振動パターンを示す前記振動情報を生成する、請求項１から請求項６のいずれか１項に記載の情報処理システム。
【請求項８】
前記振動子は、２以上である第１所定数の振動情報にそれぞれ対応する各振動波形を合成した波形で振動可能であり、
前記変数決定部は、前記周波数変数の値と前記期間変数の値との組を、前記第１所定数より大きい第２所定数決定し、
前記生成部は、決定された組に基づく前記第２所定数の振動パターンのうち２以上の振動パターンを統合して１つの振動パターンとすることによって、合わせて前記第１所定数の振動パターンを示す前記第１所定数の振動情報を生成する、請求項７に記載の情報処理システム。
【請求項９】
前記周波数モデル関数は、繰り返し変数をさらに変数とし、
前記変数決定部は、前記繰り返し変数の値をさらに決定し、
前記生成部は、決定された前記周波数変数の値と、決定された前記期間変数の値とを当該周波数モデル関数に適用することによって得られる周波数の時間変化を示す関数によって規定される振動パターンを、決定された前記繰り返し変数が示す回数だけ繰り返すことによって得られる繰り返し振動パターンを示す振動情報を生成する、請求項１から請求項８のいずれか１項に記載の情報処理システム。
【請求項１０】
前記情報処理システムは、前記振動子を備える第１装置と、当該第１装置と通信を行う第２装置とを含み、
前記第２装置は、
前記関数記憶部と、
前記変数決定部と、
前記生成部と、
前記振動情報を前記第１装置へ送信する送信部とを備え、
前記第１装置は、
前記第２装置から前記振動情報を受信する受信部と、
前記受信部によって受信された前記振動情報に基づいて前記振動子の振動を制御する前記振動制御部とを備える、請求項１から請求項９のいずれか１項に記載の情報処理システム。
【請求項１１】
前記情報処理システムは、前記振動子を備える第１装置と、当該第１装置と無線通信を行う第２装置とを含み、
前記第２装置は、
前記変数決定部と、
決定された前記周波数変数の値および前記期間変数の値を前記第１装置へ送信する送信部とを備え、
前記第１装置は、
前記第２装置から前記周波数変数の値および前記期間変数の値を受信する受信部と、
前記受信部によって受信された前記周波数変数の値および前記期間変数の値に基づいて前記振動情報を生成する前記生成部と、
前記振動制御部とを備える、請求項１から請求項９のいずれか１項に記載の情報処理システム。
【請求項１２】
前記第１装置および前記第２装置は、第１モードと第２モードとを含む複数のモードで動作することが可能であり、
前記第１モードにおいて、
前記第２装置の前記送信部は、前記変数決定部によって決定された前記周波数変数の値および前記期間変数の値を前記第１装置へ送信し、
前記第１装置は、前記受信部によって受信された前記周波数変数の値および前記期間変数の値に基づいて前記生成部によって生成される前記振動情報に基づいて前記振動子の振動を制御し、
前記第２モードにおいて、
前記第２装置は、所定の振動パターンを示す振動情報を前記第１装置へ送信し、
前記第１装置は、前記第２装置から送信されてくる振動情報に基づいて前記振動子の振動を制御する、請求項１１に記載の情報処理システム。
【請求項１３】
前記第１装置は、
前記周波数変数の値および前記期間変数の値が前記第２装置から受信されたことに応じて、当該第２装置へ返信を行う返信部をさらに備え、
前記送信部は、前記周波数変数の値および前記期間変数の値の送信に対する前記第１装置からの返信が送信から所定時間以内にない場合、当該周波数変数の値および当該期間変数の値を当該第１装置へ再送信する、請求項１１または請求項１２に記載の情報処理システム。
【請求項１４】
振動子を制御する情報処理装置のコンピュータにおいて実行される情報処理プログラムであって、
前記情報処理装置は、振動の周波数に関する時間変化のモデルを示し、当該モデルにおけるある期間の周波数を示す周波数変数と、当該期間に関する期間変数とを変数とする周波数モデル関数を記憶し、
情報処理プログラムは、
前記周波数変数の値と、前記期間変数の値とを決定する変数決定手段と、
決定された前記周波数変数の値と、決定された前記期間変数の値とを前記周波数モデル関数に適用することによって得られる周波数の時間変化を示す関数によって規定される振動パターンを示す振動情報を生成する生成手段として前記コンピュータを機能させ、
前記振動子は前記振動情報に基づいて制御される、情報処理プログラム。
【請求項１５】
振動子を備える情報処理システムにおいて実行される情報処理方法であって、
前記情報処理システムは、振動の周波数に関する時間変化のモデルを示し、当該モデルにおけるある期間の周波数を示す周波数変数と、当該期間に関する期間変数とを変数とする周波数モデル関数を記憶しており、
前記周波数変数の値と、前記期間変数の値とを決定する変数決定ステップと、
決定された前記周波数変数の値と、決定された前記期間変数の値とを前記周波数モデル関数に適用することによって得られる周波数の時間変化を示す関数によって規定される振動パターンを示す振動情報を生成する生成ステップと、
前記振動情報に基づいて前記振動子の振動を制御する振動制御ステップとを備える、情報処理方法。
【請求項１６】
振動子を備える情報処理装置であって、
振動の周波数に関する時間変化のモデルを示し、当該モデルにおけるある期間の周波数を示す周波数変数と、当該期間に関する期間変数とを変数とする周波数モデル関数を記憶する関数記憶部と、
前記情報処理装置とは異なる他の装置から、前記周波数変数の値と、前記期間変数の値とを受信する受信部と
受信された前記周波数変数の値と、受信された前記期間変数の値とを前記周波数モデル関数に適用することによって得られる周波数の時間変化を示す関数によって規定される振動パターンを示す振動情報を生成する生成部と、
前記振動情報に基づいて前記振動子の振動を制御する振動制御部とを備える、情報処理装置。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、振動子の振動を制御する情報処理システム、情報処理プログラム、情報処理方法、および、情報処理装置に関する。
【背景技術】
【０００２】
従来、装置が備える振動子の振動を制御することが行われている（例えば、特許文献１参照）。
【先行技術文献】
【特許文献】
【０００３】
【特許文献１】特開２０１６−２０２４８６号公報
【発明の概要】
【発明が解決しようとする課題】
【０００４】
多様な振動パターンで振動子を振動させる場合、振動子を備える装置は、多数の振動パターンを記憶しておかなければならず、振動子の制御に用いられるデータ量が増加するおそれがあった。
【０００５】
それ故、本発明の目的は、振動子の制御に用いられるデータ量を少なくすることが可能な情報処理システム、情報処理プログラム、情報処理方法、および、情報処理装置を提供することである。
【課題を解決するための手段】
【０００６】
上記の課題を解決すべく、本発明は、以下の（１）〜（１３）の構成を採用した。
【０００７】
（１）
本発明の一例は、振動子を備える情報処理システムである。情報処理システムは、関数記憶部と、変数決定部と、生成部と、振動制御部とを備える。関数記憶部は、振動の周波数に関する時間変化のモデルを示し、当該モデルにおけるある期間の周波数を示す周波数変数と、当該期間に関する期間変数とを変数とする周波数モデル関数を記憶する。変数決定部は、周波数変数の値と、期間変数の値とを決定する。生成部は、決定された周波数変数の値と、決定された期間変数の値とを周波数モデル関数に適用することによって得られる周波数の時間変化によって規定される振動パターンを示す振動情報を生成する。振動制御部は、振動情報に基づいて振動子の振動を制御する。
【０００８】
上記（１）の構成によれば、周波数モデル関数を記憶しておき、周波数モデル関数に基づいて振動情報を生成することによって、振動子の制御に用いられるデータ量を少なくすることができる。
【０００９】
（２）
関数記憶部は、互いに異なる周波数の時間変化のモデルを示す複数種類の周波数モデル関数を記憶してもよい。変数決定部は、複数種類の周波数モデル関数のうち１つを指定する関数指定情報をさらに決定してもよい。生成部は、決定された周波数変数の値と、決定された期間変数の値とを、決定された関数指定情報により指定される周波数モデル関数に適用することによって得られる周波数の時間変化によって規定される振動パターンを示す振動情報を生成してもよい。
【００１０】
上記（２）の構成によれば、複数の周波数モデル関数を用いることによって、振動子の制御に用いられるデータ量を抑えつつ、多様な振動パターンで振動子を振動させることができる。
【００１１】
（３）
期間変数は、周波数モデル関数が示す時間変化のモデルの開始時点から振動が開始されるまでの時間を示す開始変数を含んでもよい。
【００１２】
上記（３）の構成によれば、振動パターンにおいて振動が開始される時点を調節することができる。上記（３）の構成を後述する（７）の構成と組み合わせる場合には、複数の振動パターンにおける振動の開始時点の間隔を容易に調整することができる。
【００１３】
（４）
周波数モデル関数は、期間変数の値が当該周波数モデル関数に適用されることによって振動パターンの時間長さが決定される関数であってもよい。
【００１４】
上記（４）の構成によれば、記憶装置の容量によらず、時間が長い振動パターンを生成することができる。
【００１５】
（５）
関数記憶部は、振動の振幅に関する時間変化のモデルを示し、振動の振幅を示す振幅変数を変数とする振幅モデル関数をさらに記憶してもよい。変数決定部は、振幅変数の値をさらに決定してもよい。生成部は、決定された周波数変数の値と、決定された期間変数の値とを周波数モデル関数に適用することによって得られる周波数の時間変化と、決定された振幅変数の値を振幅モデル関数に適用することによって得られる振幅の時間変化とによって規定される振動パターンを示す振動情報を生成してもよい。
【００１６】
上記（５）の構成によれば、周波数に加えて、振幅が異なる振動パターンを関数によって規定することができ、より多様な振動パターンで振動子を振動させることができる。
【００１７】
（６）
振幅変数は、振動の振幅に関する時間変化のモデルにおける終了時点の振幅を示す終了振幅変数を含んでもよい。
【００１８】
上記（６）の構成によれば、２つの連続する振動パターンにおいて振動が連続するように振動パターンを規定することができ、生成可能な振動パターンのバリエーションを増やすことができる。
【００１９】
（７）
変数決定部は、周波数変数の値と期間変数の値との組を複数組決定してもよい。
生成部は、決定された複数組の周波数変数の値と期間変数の値との組に基づく複数の振動パターンのうち、振動が生じる期間が互いに重複しない複数の振動パターンを統合することによって得られる１つの振動パターンを示す振動情報を生成してもよい。
【００２０】
上記（７）の構成によれば、振動パターンを統合する計算処理を容易に行うことができる。
【００２１】
（８）
振動子は、２以上である第１所定数の振動情報にそれぞれ対応する各振動波形を合成した波形で振動可能であってもよい。変数決定部は、周波数変数の値と期間変数の値との組を、第１所定数より大きい第２所定数決定してもよい。生成部は、決定された組に基づく第２所定数の振動パターンのうち２以上の振動パターンを統合して１つの振動パターンとすることによって、合わせて第１所定数の振動パターンを示す第１所定数の振動情報を生成してもよい。
【００２２】
上記（８）の構成によれば、変数決定部により決定された変数の組に応じて規定される振動パターンの数によらず、振動子が対応可能な数（すなわち、第１所定数）の振動情報を生成することができる。
【００２３】
（９）
周波数モデル関数は、繰り返し変数をさらに変数としてもよい。変数決定部は、繰り返し変数の値をさらに決定してもよい。生成部は、決定された周波数変数の値と、決定された期間変数の値とを当該周波数モデル関数に適用することによって得られる周波数の時間変化によって規定される振動パターンを、決定された繰り返し変数が示す回数だけ繰り返すことによって得られる繰り返し振動パターンを示す振動情報を生成してもよい。
【００２４】
上記（９）の構成によれば、ある態様の振動が繰り返されるような振動パターンをより少ないデータ量で生成することができる。
【００２５】
（１０）
情報処理システムは、振動子を備える第１装置と、当該第１装置と通信を行う第２装置とを含んでもよい。第２装置は、関数記憶部と、変数決定部と、生成部と、振動情報を第１装置へ送信する送信部とを備えてもよい。第１装置は、第２装置から振動情報を受信する受信部と、受信部によって受信された振動情報に基づいて振動子の振動を制御する振動制御部とを備えてもよい。
【００２６】
上記（１０）の構成によれば、第２装置における、振動子の制御に用いられるデータ量を少なくすることができる。
【００２７】
（１１）
情報処理システムは、振動子を備える第１装置と、当該第１装置と無線通信を行う第２装置とを含んでもよい。第２装置は、変数決定部と、決定された周波数変数の値および期間変数の値を第１装置へ送信する送信部とを備えてもよい。第１装置は、受信部と、生成部と、振動制御部とを備えてもよい。受信部は、第２装置から周波数変数の値および期間変数の値を受信する。生成部は、受信部によって受信された周波数変数の値および期間変数の値に基づいて振動情報を生成する。
【００２８】
上記（１１）の構成によれば、変数を示す情報が第２装置から第１装置へ送信されるので、装置間の通信量および通信の頻度の少なくとも一方を低減することができる。
【００２９】
（１２）
第１装置および第２装置は、第１モードと第２モードとを含む複数のモードで動作することが可能であってもよい。第１モードにおいて、第２装置の送信部は、変数決定部によって決定された周波数変数の値および期間変数の値を第１装置へ送信し、第１装置は、受信部によって受信された周波数変数の値および期間変数の値に基づいて生成部によって生成される振動情報に基づいて振動子の振動を制御する。第２モードにおいて、第２装置は、所定の振動パターンを示す振動情報を第１装置へ送信し、第１装置は、第２装置から送信されてくる振動情報に基づいて振動子の振動を制御する。
【００３０】
上記（１２）の構成によれば、関数を用いることによって、振動子の制御に用いられるデータ量を少なくすることができるとともに、関数から生成することができない振動パターンによっても振動子を振動させることができる。
【００３１】
（１３）
第１装置は、返信部をさらに備えてもよい。返信部は、周波数変数の値および期間変数の値が第２装置から受信されたことに応じて、当該第２装置へ返信を行う。送信部は、周波数変数の値および期間変数の値の送信に対する第１装置からの返信が送信から所定時間以内にない場合、当該周波数変数の値および当該期間変数の値を当該第１装置へ再送信してもよい。
【００３２】
上記（１３）の構成によれば、第１装置と第２装置との間で無線通信を行う場合において、振動子を振動させることができる可能性を向上することができる。
【００３３】
本発明の他の一例は、上記（１）〜（１３）における情報処理システムが備える各部のうちいくつか（例えば、変数決定部および生成部）における処理を、情報処理装置のコンピュータに実行させる情報処理プログラムであってもよい。また、本発明の他の一例は、上記（１）〜（１３）における情報処理システムにおいて実行される情報処理方法であってもよい。また、本発明の他の一例は、上記（１）〜（１３）における関数記憶部と、生成部と、振動制御部とを備える情報処理装置であって、当該情報処理装置とは異なる他の装置から、周波数変数の値と、期間変数の値とを受信する受信部を備える情報処理装置であってもよい。また、本発明の他の一例は、周波数変数の値と期間変数の値とを上記情報処理装置へ送信する他の情報処理装置であってもよい。
【発明の効果】
【００３４】
本発明によれば、振動子の制御に用いられるデータ量を少なくすることができる。
【図面の簡単な説明】
【００３５】
【図１】ゲームシステムに含まれる各装置の一例を示す図
【図２】本体装置２に左コントローラ３および右コントローラ４を装着した状態の一例を示す図
【図３】本体装置２から左コントローラ３および右コントローラ４をそれぞれ外した状態の一例を示す図
【図４】本体装置２の一例を示す六面図
【図５】右コントローラ４の一例を示す六面図
【図６】本体装置２の内部構成の一例を示すブロック図
【図７】本体装置２と左コントローラ３および右コントローラ４との内部構成の一例を示すブロック図
【図８】リング型拡張装置５の一例を示す図
【図９】リング型拡張装置５の内部構成の一例を示すブロック図
【図１０】リング型拡張装置５をユーザが使用する様子の一例を示す図
【図１１】振動子１１７の振動制御に関するリング型拡張装置５および右コントローラ４の機能的構成を示すブロック図
【図１２】本実施形態において用いられる第１の振動モデルの一例を示す図
【図１３】本実施形態において用いられる第２の振動モデルの一例を示す図
【図１４】対応情報の一例を示す図
【図１５】複数の振動パターンを統合した統合振動パターンの一例を示す図
【図１６】振動情報の生成方法の一例を示す図
【図１７】２つの振動パターンを示す振動情報に基づいて振動子を振動させる一例を示す図
【図１８】リング型拡張装置５によって実行される振動制御処理の一例を示すフローチャート
【図１９】振動子１１７の振動制御に関する本体装置２および右コントローラ４の機能的構成を示すブロック図
【図２０】変形例における振動制御処理の一例を示すフローチャート
【図２１】振動モデルの他の一例を示す図
【図２２】振動モデルの他の一例を示す図
【発明を実施するための形態】
【００３６】
［１．ゲームシステムの構成］
以下、本実施形態の一例に係るゲームシステムについて説明する。図１は、ゲームシステムに含まれる各装置の一例を示す図である。図１に示すように、ゲームシステム１は、本体装置２と、左コントローラ３および右コントローラ４と、リング型拡張装置５とを含む。
【００３７】
本体装置２は、情報処理装置の一例であり、本実施形態ではゲーム機本体として機能する。本体装置２には、左コントローラ３および右コントローラ４がそれぞれ着脱可能である（図１および図３参照）。つまり、ユーザは、左コントローラ３および右コントローラ４をそれぞれ本体装置２に装着して一体化された装置として使用することができる（図２参照）。また、ユーザは、本体装置２と左コントローラ３および右コントローラ４とを別体として使用することもできる（図３参照）。なお、以下においては、本体装置２と各コントローラ３および４とをまとめて、「ゲーム装置」と呼ぶことがある。
【００３８】
リング型拡張装置５は、右コントローラ４に用いられる拡張装置の一例である。リング型拡張装置５は、右コントローラ４をリング型拡張装置５に装着した状態で使用される。このように、本実施形態においては、ユーザは、右コントローラ４をリング型拡張装置５に装着した状態で使用することもできる（図１０参照）。なお、リング型拡張装置５は、右コントローラ４に限らず、左コントローラ３を自身に装着することが可能であってもよい。
【００３９】
［１−１．ゲーム装置の構成］
図２は、本体装置２に左コントローラ３および右コントローラ４を装着した状態の一例を示す図である。図２に示すように、左コントローラ３および右コントローラ４は、それぞれ本体装置２に装着されて一体化されている。本体装置２は、ゲームシステム１における各種の処理（例えば、ゲーム処理）を実行する装置である。本体装置２は、ディスプレイ１２を備える。左コントローラ３および右コントローラ４は、ユーザが入力を行うための操作部を備える装置である。
【００４０】
図３は、本体装置２から左コントローラ３および右コントローラ４をそれぞれ外した状態の一例を示す図である。図２および図３に示すように、左コントローラ３および右コントローラ４は、本体装置２に着脱可能である。なお、以下において、左コントローラ３および右コントローラ４の総称として「コントローラ」と記載することがある。
【００４１】
図４は、本体装置２の一例を示す六面図である。図４に示すように、本体装置２は、略板状のハウジング１１を備える。本実施形態において、ハウジング１１の主面（換言すれば、表側の面、すなわち、ディスプレイ１２が設けられる面）は、大略的には矩形形状である。
【００４２】
図４に示すように、本体装置２は、ハウジング１１の主面に設けられるディスプレイ１２を備える。ディスプレイ１２は、本体装置２が生成した画像を表示する。本実施形態においては、ディスプレイ１２は、液晶表示装置（ＬＣＤ）とする。ただし、ディスプレイ１２は任意の種類の表示装置であってよい。なお、本体装置２は画像を外部モニタに出力することもできる。
【００４３】
本体装置２は、ハウジング１１の内部においてスピーカを備えている。図４に示すように、ハウジング１１の主面には、スピーカ孔１１ａおよび１１ｂが形成される。そして、スピーカの出力音は、これらのスピーカ孔１１ａおよび１１ｂからそれぞれ出力される。
【００４４】
また、本体装置２は、本体装置２が左コントローラ３と有線通信を行うための端子である左側端子１７と、本体装置２が右コントローラ４と有線通信を行うための右側端子２１を備える。
【００４５】
図４に示すように、本体装置２は、スロット２３を備える。スロット２３は、ハウジング１１の上側面に設けられる。スロット２３は、所定の種類の記憶媒体を装着可能な形状を有する。所定の種類の記憶媒体は、例えば、ゲームシステム１およびそれと同種の情報処理装置に専用の記憶媒体（例えば、専用メモリカード）である。所定の種類の記憶媒体は、例えば、本体装置２で利用されるデータ（例えば、アプリケーションのセーブデータ等）、および／または、本体装置２で実行されるプログラム（例えば、アプリケーションのプログラム等）を記憶するために用いられる。また、本体装置２は、電源ボタン２８を備える。
【００４６】
図５は、右コントローラ４の一例を示す六面図である。図５に示すように、右コントローラ４は、ハウジング５１を備える。本実施形態においては、ハウジング５１は、縦長の形状、すなわち、上下方向（すなわち、図５に示すｙ軸方向）に長い形状である。右コントローラ４は、本体装置２から外された状態において、縦長となる向きで把持されることも可能である。ハウジング５１は、縦長となる向きで把持される場合に片手、特に右手で把持可能な形状および大きさをしている。また、右コントローラ４は、横長となる向きで把持されることも可能である。右コントローラ４が横長となる向きで把持される場合には、両手で把持されるようにしてもよい。
【００４７】
右コントローラ４は、方向入力部としてアナログスティック５２を備える。図５に示すように、アナログスティック５２は、ハウジング５１の主面に設けられる。ユーザは、アナログスティック５２を傾倒することによって傾倒方向に応じた方向の入力（および、傾倒した角度に応じた大きさの入力）が可能である。また、右コントローラ４は、アナログスティックに代えて、十字キーまたはスライド入力が可能なスライドスティック等を備えるようにしてもよい。また、本実施形態においては、アナログスティック５２を押下する入力が可能である。
【００４８】
また、右コントローラ４は、各種操作ボタンを備える。右コントローラ４は、ハウジング５１の主面上に４つの操作ボタン５３〜５６（具体的には、Ａボタン５３、Ｂボタン５４、Ｘボタン５５、およびＹボタン５６）を備える。さらに、右コントローラ４は、＋（プラス）ボタン５７およびホームボタン５８を備える。また、右コントローラ４は、ハウジング５１の側面の右上に第１Ｒボタン６０およびＺＲボタン６１を備える。また、右コントローラ４は、ハウジング５１の側面の、本体装置２に装着される際に装着される側の面に第２Ｌボタン６５および第２Ｒボタン６６を備える。これらの操作ボタンは、本体装置２で実行される各種プログラム（例えば、ＯＳプログラムやアプリケーションプログラム）に応じた指示を行うために用いられる。
【００４９】
また、右コントローラ４は、右コントローラ４が本体装置２と有線通信を行うための端子６４を備える。
【００５０】
図５に示すように、右コントローラ４は、通知用ＬＥＤ６７を備える。通知用ＬＥＤ６７は、ユーザに対して所定の情報を通知するための通知部である。通知用ＬＥＤ６７は、上記スライダ６２に設けられ、具体的には、スライダ６２の装着面（すなわち、図５に示すｘ軸正方向側を向く面）に設けられる。本実施形態においては、右コントローラ４は、通知用ＬＥＤ６７として、４つのＬＥＤを備える。上記所定の情報は、例えば、本体装置２によって右コントローラ４に対して付された番号や、右コントローラ４の電池残量に関する情報である。
【００５１】
なお、左コントローラ３は、右コントローラ４と同様、アナログスティックおよび複数の操作ボタンを備える。また、左コントローラ３は、右コントローラ４と同様、本体装置２と有線通信を行うための端子を備える。
【００５２】
図６は、本体装置２の内部構成の一例を示すブロック図である。本体装置２は、図４に示す構成の他、図６に示す各構成要素８１〜９１、９７、および９８を備える。これらの構成要素８１〜９１、９７、および９８のいくつかは、電子部品として電子回路基板上に実装されてハウジング１１内に収納されてもよい。
【００５３】
本体装置２は、プロセッサ８１を備える。プロセッサ８１は、本体装置２において実行される各種の情報処理を実行する情報処理部であって、例えば、ＣＰＵ（Ｃｅｎｔｒａｌ  Ｐｒｏｃｅｓｓｉｎｇ  Ｕｎｉｔ）のみから構成されてもよいし、ＣＰＵ機能、ＧＰＵ（Ｇｒａｐｈｉｃｓ  Ｐｒｏｃｅｓｓｉｎｇ  Ｕｎｉｔ）機能等の複数の機能を含むＳｏＣ（Ｓｙｓｔｅｍ−ｏｎ−ａ−ｃｈｉｐ）から構成されてもよい。プロセッサ８１は、記憶部（具体的には、フラッシュメモリ８４等の内部記憶媒体、あるいは、スロット２３に装着される外部記憶媒体等）に記憶される情報処理プログラム（例えば、ゲームプログラム）を実行することによって、各種の情報処理を実行する。
【００５４】
本体装置２は、自身に内蔵される内部記憶媒体の一例として、フラッシュメモリ８４およびＤＲＡＭ（Ｄｙｎａｍｉｃ  Ｒａｎｄｏｍ  Ａｃｃｅｓｓ  Ｍｅｍｏｒｙ）８５を備える。フラッシュメモリ８４およびＤＲＡＭ８５は、プロセッサ８１に接続される。フラッシュメモリ８４は、主に、本体装置２に保存される各種のデータ（プログラムであってもよい）を記憶するために用いられるメモリである。ＤＲＡＭ８５は、情報処理において用いられる各種のデータを一時的に記憶するために用いられるメモリである。
【００５５】
本体装置２は、スロットインターフェース（以下、「Ｉ／Ｆ」と略記する。）９１を備える。スロットＩ／Ｆ９１は、プロセッサ８１に接続される。スロットＩ／Ｆ９１は、スロット２３に接続され、スロット２３に装着された所定の種類の記憶媒体（例えば、専用メモリカード）に対するデータの読み出しおよび書き込みを、プロセッサ８１の指示に応じて行う。
【００５６】
プロセッサ８１は、フラッシュメモリ８４およびＤＲＡＭ８５、ならびに上記各記憶媒体との間でデータを適宜読み出したり書き込んだりして、上記の情報処理を実行する。
【００５７】
本体装置２は、コントローラ通信部８３を備える。コントローラ通信部８３は、プロセッサ８１に接続される。コントローラ通信部８３は、左コントローラ３および／または右コントローラ４と無線通信を行う。本体装置２と左コントローラ３および右コントローラ４との通信方式は任意であるが、本実施形態においては、コントローラ通信部８３は、左コントローラ３との間および右コントローラ４との間で、Ｂｌｕｅｔｏｏｔｈ（登録商標）の規格に従った通信を行う。
【００５８】
また、ディスプレイ１２は、プロセッサ８１に接続される。プロセッサ８１は、（例えば、上記の情報処理の実行によって）生成した画像および／または外部から取得した画像をディスプレイ１２に表示する。
【００５９】
図７は、本体装置２と左コントローラ３および右コントローラ４との内部構成の一例を示すブロック図である。なお、本体装置２に関する内部構成の詳細については、図６で示しているため図７では省略している。
【００６０】
右コントローラ４は、本体装置２との間で通信を行う通信制御部１１１を備える。図７に示すように、通信制御部１１１は、端子６４を含む各構成要素に接続される。本実施形態においては、通信制御部１１１は、端子６４を介した有線通信と、端子６４を介さない無線通信との両方で本体装置２と通信を行うことが可能である。通信制御部１１１は、右コントローラ４が本体装置２に対して行う通信方法を制御する。すなわち、右コントローラ４が本体装置２に装着されている場合、通信制御部１１１は、端子６４を介して本体装置２と通信を行う。また、右コントローラ４が本体装置２から外されている場合、通信制御部１１１は、本体装置２（具体的には、コントローラ通信部８３）との間で無線通信を行う。コントローラ通信部８３と通信制御部１１１との間の無線通信は、例えばＢｌｕｅｔｏｏｔｈ（登録商標）の規格に従って行われる。
【００６１】
また、右コントローラ４は、例えばフラッシュメモリ等のメモリ１１２を備える。通信制御部１１１は、例えばマイコン（マイクロプロセッサとも言う）で構成され、メモリ１１２に記憶されるファームウェアを実行することによって各種の処理を実行する。
【００６２】
右コントローラ４は、各ボタン１１３（具体的には、ボタン５３〜５８、６０、６１、６５、および６６）を備える。また、右コントローラ４は、アナログスティック（図７では「スティック」と記載する）５２を備える。各ボタン１１３およびアナログスティック５２は、自身に対して行われた操作に関する情報を、適宜のタイミングで繰り返し通信制御部１１１へ出力する。
【００６３】
通信制御部１１１は、各入力部（具体的には、各ボタン１１３、および、アナログスティック５２）から、入力に関する情報（具体的には、操作に関する情報）を取得する。通信制御部１１１は、取得した情報（または取得した情報に所定の加工を行った情報）を含む操作データを本体装置２へ送信する。なお、操作データは、所定時間に１回の割合で繰り返し送信される。なお、入力に関する情報が本体装置２へ送信される間隔は、各入力部について同じであってもよいし、同じでなくてもよい。
【００６４】
上記操作データが本体装置２へ送信されることによって、本体装置２は、右コントローラ４に対して行われた入力を得ることができる。すなわち、本体装置２は、各ボタン１１３およびアナログスティック５２に対する操作を、操作データに基づいて判別することができる。
【００６５】
右コントローラ４は、振動によってユーザに通知を行うための振動子１１７を備える。本実施形態においては、振動子１１７は、本体装置２からの指令によって制御される。すなわち、通信制御部１１１は、本体装置２からの上記指令を受け取ると、当該指令に従って振動子１１７を駆動させる。ここで、右コントローラ４は、コーデック部１１６を備える。通信制御部１１１は、上記指令を受け取ると、指令に応じた制御信号をコーデック部１１６へ出力する。コーデック部１１６は、通信制御部１１１からの制御信号から振動子１１７を駆動させるための駆動信号を生成して振動子１１７へ与える。これによって振動子１１７が動作する。
【００６６】
振動子１１７は、より具体的にはリニア振動モータである。リニア振動モータは、回転運動をする通常のモータと異なり、入力される電圧に応じて所定方向に駆動されるため、入力される電圧の波形に応じた振幅および周波数で振動をさせることができる。本実施形態において、本体装置２から右コントローラ４に送信される振動制御信号は、単位時間ごとに周波数と振幅とを表すデジタル信号であってよい。別の実施形態においては、本体装置２から波形そのものを示す情報を送信するようにしてもよいが、振幅および周波数だけを送信することで通信データ量を削減することができる。また、さらにデータ量を削減するため、そのときの振幅および周波数の数値に替えて、前回の値からの差分だけを送信するようにしてもよい。この場合、コーデック部１１６は、通信制御部１１１から取得される振幅および周波数の値を示すデジタル信号をアナログの電圧の波形に変換し、当該波形に合わせて電圧を入力することで振動子１１７を駆動させる。したがって、本体装置２は、単位時間ごとに送信する振幅および周波数を変えることによって、そのときに振動子１１７を振動させる振幅および周波数を制御することができる。なお、本体装置２から右コントローラ４に送信される振幅および周波数は、１つに限らず、２つ以上送信するようにしてもよい。その場合、コーデック部１１６は、受信された複数の振幅および周波数それぞれが示す波形を合成することで、振動子１１７を制御する電圧の波形を生成することができる。
【００６７】
右コントローラ４は、電力供給部１１８を備える。本実施形態において、電力供給部１１８は、バッテリおよび電力制御回路を有する。図示しないが、電力制御回路は、バッテリに接続されるとともに、右コントローラ４の各部（具体的には、バッテリの電力の給電を受ける各部）に接続される。
【００６８】
なお、図示しないが、左コントローラ３は、図７に示す右コントローラ４の各構成と同様の構成を備える。
【００６９】
［１−２．リング型拡張装置の構成］
図８は、リング型拡張装置の一例を示す図である。なお、図８は、右コントローラ４が装着された状態のリング型拡張装置５を示している。本実施形態においては、リング型拡張装置５は、右コントローラ４を装着可能な拡張装置である。詳細は後述するが、本実施形態においては、ユーザは、リング型拡張装置５に力を加えて変形させるという新規な操作を行う。ユーザは、例えばエクササイズを行う感覚でリング型拡張装置５を用いたフィットネス動作を行うことによって、リング型拡張装置５に対する操作を行うことができる。
【００７０】
図８に示すように、リング型拡張装置５は、環状部２０１と、本体部２０２とを備える。環状部２０１は、環状の形状を有する。なお、本実施形態においては、環状部２０１は、後述する弾性部材および台座部によって環状に形成される。本実施形態においては、環状部２０１は円環状である。なお、他の実施形態においては、環状部２０１の形状は任意であり、例えば楕円環状であってもよい。
【００７１】
本体部２０２は、環状部２０１に設けられる。本体部２０２は、図示しないレール部を有する。レール部は、右コントローラ４を装着可能な装着部の一例である。本実施形態においては、レール部は、右コントローラ４のスライダ６２（図５参照）に対してスライド可能に係合する。スライダ６２がレール部材に対して所定の直線方向（すなわち、スライド方向）に挿入されることで、レール部材に対してスライダ６２が当該直線方向にスライド移動が可能な状態でレール部材がスライダ６２と係合する。なお、レール部は、コントローラのスライダに対してスライド可能に係合することが可能である点で、本体装置２が有するレール部と同様である。そのため、レール部は、本体装置２が有するレール部と同様の構成であってもよい。
【００７２】
本実施形態においては、右コントローラ４は、係止部６３を有する（図５参照）。係止部６３は、スライダ６２から側方（すなわち、図５に示すｚ軸正方向）に突出して設けられる。係止部６３は、スライダ６２の内部の方向へ移動可能であるとともに、上記側方へ突出した状態となる向きに（例えばバネによって）付勢されている。また、レール部には、切欠きが設けられる。スライダ６２がレール部の奥まで挿入された状態において、係止部６３は切欠きに係止する。レール部にスライダ６２が係合した状態で係止部６３が切欠きに係止することによって、本体部２０２に右コントローラ４が装着される。
【００７３】
なお、右コントローラ４は、押下可能な解除ボタン６９を備える（図５参照）。上記係止部６３は、解除ボタン６９が押下されることに応じて、スライダ６２の内部の方向へ移動し、スライダ６２に対して突出しない（あるいは、ほとんど突出しない）状態となる。したがって、リング型拡張装置５の本体部２０２に右コントローラ４が装着された状態において、解除ボタン６９が押下されると、係止部６３は切欠きに係止しなくなる（あるいは、ほとんど係止しなくなる）。以上より、リング型拡張装置５の本体部２０２に右コントローラ４が装着される状態において、ユーザは、解除ボタン６９を押下することによって右コントローラ４をリング型拡張装置５から容易に取り外すことができる。
【００７４】
図８に示すように、リング型拡張装置５は、グリップカバー２０３および２０４を有する。グリップカバー２０３および２０４は、ユーザが把持するための部品である。本実施形態においては、グリップカバー２０３および２０４を設けることによって、ユーザはリング型拡張装置５を把持しやすくなっている。本実施形態においては、環状部２０１の左端付近の部分に左グリップカバー２０３が設けられ、環状部２０１の右端付近の部分に右グリップカバー２０４が設けられる。
【００７５】
図９は、リング型拡張装置５が備える構成要素の電気的な接続関係を示すブロック図である。図９に示すように、リング型拡張装置５は、歪み検出部２１１を備える。歪み検出部２１１は、環状部２０１が変形したことを検出する検出部の一例である。本実施形態においては、歪み検出部２１１は、歪みゲージを含む。歪み検出部２１１は、後述する弾性部材の変形に応じた台座部の歪みを示す信号（換言すれば、弾性部材の変形の大きさおよび変形の向きを示す信号）を出力する。
【００７６】
ここで、本実施形態においては、環状部２０１は、弾性変形可能な弾性部と、台座部とを有する。台座部は、当該台座部と弾性部材とによって環が形成されるように当該弾性部材の両端部を保持する。なお、台座部は、本体部２０２の内部に設けられるので、図８において図示されていない。台座部は、弾性部材よりも剛性が高い材質で構成される。例えば、弾性部材は、樹脂（具体的には、ＦＲＰ（Ｆｉｂｅｒ  Ｒｅｉｎｆｏｒｃｅｄ  Ｐｌａｓｔｉｃｓ））で構成され、台座部は、金属で構成される。上記歪みゲージは、台座部に設けられ、当該台座部の歪みを検出する。環状部２０１が定常状態から変形した場合、変形によって台座部に歪みが生じるので、歪みゲージによって台座部の歪みが検出される。検出された歪みに基づいて、環状部２０１が変形する向き（すなわち、２つのグリップカバー２０３および２０４が近づく向き、または、離れる向き）と、変形量とを算出することができる。
【００７７】
なお、他の実施形態においては、歪み検出部２１１は、歪みゲージに代えて、環状部２０１が定常状態から変形したことを検出可能な任意のセンサを含んでもよい。例えば、検出部２１１は、環状部２０１が変形した場合に加わる圧力を検出する感圧センサを含んでもよいし、環状部２０１が曲げられた量を検出する曲げセンサを含んでもよい。
【００７８】
リング型拡張装置５は、信号変換部２１２を備える。本実施形態においては、信号変換部２１２は、アンプと、ＡＤコンバータとを含む。信号変換部２１２は、歪み検出部２１１に電気的に接続され、歪み検出部２１１の出力信号をアンプによって増幅し、ＡＤコンバータによってＡＤ変換を行う。信号変換部２１２は、歪み検出部２１１によって検出された歪み値を示すデジタル信号を出力する。なお、他の実施形態においては、信号変換部２１２はＡＤコンバータを含まず、後述する制御部２１３がＡＤコンバータを含んでいてもよい。
【００７９】
リング型拡張装置５は、制御部２１３を備える。制御部２１３は、プロセッサとメモリとを備える処理回路であり、例えばＭＣＵ（Ｍｉｃｒｏ  Ｃｏｎｔｒｏｌｌｅｒ  Ｕｎｉｔ）である。制御部２１３は、信号変換部２１２に電気的に接続され、信号変換部２１２の出力信号が制御部２１３に入力される。また、リング型拡張装置５は、端子２１４を備える。端子２１４は、制御部２１３に電気的に接続される。リング型拡張装置５に右コントローラ４が装着されている場合、制御部２１３は、信号変換部２１２の出力信号が示す歪み値を示す情報（換言すれば、後述するリング操作データ）を、端子２１４を介して右コントローラ４へ送信する。
【００８０】
リング型拡張装置５は、電力変換部２１５を備える。電力変換部２１５は、上記各部２１１〜２１４に電気的に接続される。電力変換部２１５は、端子２１４を介して外部（すなわち、右コントローラ４）から供給される電力を、上記各部２１１〜２１４に供給する。電力変換部２１５は、供給される電力について電圧等の調整を行って上記各部２１１〜２１４に供給してもよい。
【００８１】
なお、リング型拡張装置５が他の装置へ送信する「歪み検出部の検出結果に関するデータ」は、当該検出結果（本実施形態においては、台座部の歪みを示す、歪み検出部２１１の出力信号）そのものを示すデータであってもよいし、当該検出結果に対して何らかの処理（例えば、データ形式の変換、および／または、歪み値に対する計算処理等）が行われることによって得られるデータであってもよい。例えば、制御部２１３は、上記検出結果である歪み値に基づいて弾性部材の変形量を算出する処理を行ってもよく、このとき、「歪み検出部の検出結果に関するデータ」は、当該変形量を示すデータであってもよい。
【００８２】
なお、他の実施形態においては、リング型拡張装置５は、電池を備え、当該電池の電力によって動作してもよい。また、リング型拡張装置５が備える電池は、右コントローラ４から供給される電力によって充電可能な充電池であってもよい。
【００８３】
図１０は、リング型拡張装置５をユーザが使用する様子の一例を示す図である。図１０に示すように、ユーザは、ゲーム装置（すなわち、本体装置２ならびに各コントローラ３および４）に加えて、リング型拡張装置５を用いてゲームを行うことができる。
【００８４】
例えば図１０に示すように、ユーザは、右コントローラ４が装着されたリング型拡張装置５を両手で把持する。このとき、ユーザは、リング型拡張装置５に対する操作（例えば、リング型拡張装置５を変形させる操作、および、リング型拡張装置５を動かす操作）によって、ゲームを行うことができる。
【００８５】
なお、図１０においては、ユーザがグリップカバー２０３および２０４を把持してリング型拡張装置５を押し込むことで変形させる動作を行う様子を例示している。この動作によって、ユーザは、両腕を鍛えるフィットネス動作をゲーム操作として行うことができる。なお、ユーザはリング型拡張装置５に対する種々の動作でゲーム操作を行うことができる。例えば、ユーザは、一方のグリップカバーを両手で把持し、他方のグリップカバーを腹部に当てた状態で、リング型拡張装置５を変形させる動作を行うこともできる。この動作によって、ユーザは、腕と腹筋を鍛えるフィットネス動作をゲーム操作として行うことができる。また、ユーザは、両足の内股にグリップカバー２０３および２０４を当ててリング型拡張装置５を足で挟んだ状態で、リング型拡張装置５を変形させる動作を行うこともできる。この動作によって、ユーザは、足の筋肉を鍛えるフィットネス動作をゲーム操作として行うことができる。このように、本実施形態によれば、円環状であるリング型拡張装置５を用いることによって、ユーザは多くの種類のフィットネス動作を行うことができる。
【００８６】
［２．振動制御処理の概要］
次に、右コントローラ４の振動子１１７の振動を制御する処理について説明する。本実施形態においては、振動子１１７は、上述したように本体装置２からの指令によって制御される他、リング型拡張装置５からの指令（後述する振動情報）によっても制御される。以下、図１１〜図１６を参照して、リング型拡張装置５が振動子１１７の振動を制御する処理について説明する。
【００８７】
図１１は、振動子１１７の振動制御に関するリング型拡張装置５および右コントローラ４の機能的構成を示すブロック図である。本実施形態においては、リング型拡張装置５が振動子１１７を振動させる処理については本体装置２は関連しない。ここで、本実施形態においては、右コントローラ４およびそれが装着されたリング型拡張装置５は、本体装置２とは独立して処理を実行する独立動作モードで動作することが可能である。独立動作モードにおいては、右コントローラ４は本体装置２と通信を行わずに動作する。本実施形態においては、リング型拡張装置５が振動子１１７を振動させる処理は、上記独立動作モードにおいて実行される。ただし、他の実施形態においては、リング型拡張装置５が振動子１１７を振動させる処理は、独立動作モードとは異なるモードにおいて実行されてもよく、右コントローラ４と本体装置２とが通信を行うモードにおいて実行されてもよい。
【００８８】
図１１に示すように、リング型拡張装置５は、関数記憶部３０１と、変数決定部３０２と、生成部３０３とを備える。本実施形態においては、関数記憶部３０１は、制御部２１３のメモリによって実現される。変数決定部３０２および生成部３０３は制御部２１３によって実現される。また、図１１に示すように、右コントローラ４は、上述の振動子１１７に加えて、振動制御部３０４を備える。本実施形態においては、振動制御部３０４は、通信制御部１１１およびコーデック部１１６によって実現される。
【００８９】
関数記憶部３０１は、振動子１１７の振動パターンのモデル（以下、「振動モデル」と呼ぶ）を示す関数を記憶する。ここで、振動パターンとは、ある期間における、具体的な振幅値および／または周波数値の推移を指す便宜上の概念である（図１５および図１７参照）。また、振動モデルは、当該振動モデルに対して振幅および周波数の具体的な値が設定されることによって上記の振動パターンが規定されるものである。振動モデルは、期間、振幅、および／または、周波数の具体的な値は異なるが振幅および／または周波数の推移の傾向が共通する振動パターンを一般化したものを示す（図１２および図１３参照）。
【００９０】
図１２は、本実施形態において用いられる第１の振動モデルの一例を示す図である。図１２に示す第１の振動モデルは、開始時点から時間ｔ１が経過するまでの期間は、振動を発生させず、時間ｔ１が経過した時点から時間ｔ２が経過するまでの期間は、振幅ａ１で、かつ、周波数ｆ１で振動を行う振動パターンのモデルを示している。第１の振動モデルにおいて、振幅ａ１、時間ｔ１、時間ｔ２、および、周波数ｆ１は、変数である。第１の振動モデルは、振動の振幅および周波数が上記のように推移する傾向を示すものであり、上記４つの変数に具体的な値を設定することによって、具体的な振動パターンが決定されることとなる。
【００９１】
第１の振動モデルは、周波数を示す変数と、振幅を示す変数とを含む。したがって、第１の振動モデルは、下記の式（１）および（２）のように、周波数の時間変化の関数Ｆ（ｔ）と、振幅の時間変化の関数Ａ（ｔ）とによって表すことができる。
Ｆ（ｔ）＝０（０≦ｔ＜ｔ１），Ｆ（ｔ）＝ｆ１（ｔ１≦ｔ＜ｔ２）…（１）
Ａ（ｔ）＝０（０≦ｔ＜ｔ１），Ａ（ｔ）＝ａ１（ｔ１≦ｔ＜ｔ２）…（２）
なお、本実施形態においては、振動が発生していない（すなわち、振幅が０である）状態における振動の周波数を「０」と表す。本実施形態においては、上記Ｆ（ｔ）のように、振動モデルを示す関数であって、周波数の時間変化の関数を、周波数モデル関数と呼ぶ。周波数モデル関数は、振動モデルにおけるある期間の周波数を示す変数（以下、周波数変数と呼ぶ。ここでは、変数ｆ１）と当該期間に関する変数（以下、期間変数と呼ぶ。ここでは、変数ｔ１およびｔ２）とを変数とする関数である。なお、周波数変数は、関数の出力となる変数（すなわち、上記Ｆ（ｔ））を決定する変数であって、関数の出力となる変数自体ではない。また、期間に関する変数とは、期間を特定可能な変数であり、例えば、期間の開始時点、終了時点、または、長さを示す変数を含む意味である。本実施形態においては、期間変数である変数ｔ１およびｔ２は時間の長さを示す変数であったが、期間変数は、振動モデルにおけるある時点（すなわち、開始時点からの経過時間）を示す変数であってもよい。
【００９２】
また、本実施形態においては、上記Ａ（ｔ）のように、振動モデルを示す関数であって、振幅の時間変化の関数を、振幅モデル関数と呼ぶ。振幅モデル関数は、振動モデルにおけるある時点の振幅を示す変数（以下、振幅変数と呼ぶ。ここでは、変数ａ１）と、上記期間変数とを変数とする関数である。なお、本実施形態においては、振幅モデル関数は、振幅変数と、振幅変数が示す振幅に対応する期間に関する期間変数（ここでは、変数ｔ１およびｔ２）とを変数とする。ただし、他の実施形態においては、振幅モデル関数は、期間変数を変数としないものであってもよい。例えば、振幅モデル関数は、振動パターンにおける全期間における振幅を示す振幅変数のみを変数とする関数であってもよい。
【００９３】
図１３は、本実施形態において用いられる第２の振動モデルの一例を示す図である。図１３に示す第２の振動モデルは、下記（ａ）〜（ｃ）のように振幅および周波数が推移する振動パターンのモデルを示している。
（ａ）開始時点から時間ｔ４が経過するまでの期間は、振動を発生させない。
（ｂ）時間ｔ４が経過した時点から時間ｔ５が経過するまでの期間は、一定の振幅ａ２で、かつ、周波数ｆ２で振動を行う。
（ｃ）時間ｔ５が経過した時点から時間ｔ６が経過するまでの期間は、振幅がａ２から０まで減少し（具体的には、単位時間当たりの減少量が一定である減少態様で減少し）、かつ、周波数ｆ２で振動を行う。
なお、時間ｔ４，ｔ５，およびｔ６と、周波数ｆ２と、振幅ａ１とは、それぞれ変数である。第２の振動モデルは第１の振動モデルと同様、振動の振幅および周波数の推移する傾向を示すものであり、上記の変数に具体的な値を設定することによって、具体的な振動パターンが決定される。上記の第２の振動モデルについても第１の振動モデルと同様、周波数モデル関数と振幅モデル関数とによって示される。なお、第２の振動モデルによれば、例えば、変数ｔ６を０にすることによって、第１の振動モデルと同様に、振幅が一定となる振動パターン（例えば、図１７に示すパターンＢ−Ｄ）を規定することも可能であるし、変数ｔ５を０にすることによって、振幅が減少していく振動パターン（例えば、図１７に示すパターンＡ）を規定することも可能である。
【００９４】
本実施形態においては、関数記憶部３０１は、振動モデルを示す関数として、周波数モデル関数と振幅モデル関数とを記憶する。具体的には、本実施形態においては、上記第１および第２の振動モデルが用いられるものとし、関数記憶部３０１は、第１の振動モデルを示す周波数モデル関数および振幅モデル関数と、第２の振動モデルを示す周波数モデル関数および振幅モデル関数とを記憶する。
【００９５】
上記のように、本実施形態においては、ゲームシステム１は、振動子１１７を振動させる振動パターンのモデル（すなわち、振動モデル）を記憶する。ここで、仮に、振動子１１７を振動させる振動波形自体を示すデータを記憶しておくこととすると、複数種類の振動パターンで振動子１１７を振動させる場合、ゲームシステム１は、振動パターン毎にデータを記憶しておかなければならず、振動パターンの種類の増加に応じてデータ量が増大してしまう。これに対して、本実施形態においては、ゲームシステム１は、振動モデルを記憶しておき、振動モデルを用いて振動波形を生成する（詳細は後述する）。これによれば、振動波形のデータを記憶しておく場合に比べて、ゲームシステム１におけるデータ量を低減することができる。
【００９６】
なお、他の実施形態においては、振動モデルは、周波数モデル関数と振幅モデル関数とのうちいずれか一方で示されるものであってもよい。例えば、他の実施形態においては、第１の振動モデルにおける振幅ａ１が固定値であるとした振動モデルが用いられてもよい。この振動モデルは、振幅変数を含まないので、周波数モデル関数のみによって示されることができる。したがって、このような振動モデルについては、関数記憶部３０１は周波数モデル関数のみを記憶すればよい。また、関数記憶部３０１は、周波数変数を含まない振動モデルについては、振幅モデル関数のみを記憶すればよい。
【００９７】
また、ゲームシステム１において記憶される振動モデル（具体的には、周波数モデル関数および振幅モデル関数）の数は任意であり、関数記憶部３０１は、１つの振動モデルのみを記憶してもよいし、３つ以上の振動モデルを記憶してもよい。
【００９８】
本実施形態においては、周波数モデル関数および振幅モデル関数は、期間変数が当該周波数モデル関数に適用されることによって振動パターンの時間長さが決定される関数である。例えば、第１の振動モデルについては、期間変数ｔ１およびｔ２を決定することによって、振動パターンの時間長さは（ｔ１＋ｔ２）に決定される。また、第２の振動モデルについては、期間変数ｔ４〜ｔ６を決定することによって、振動パターンの時間長さは（ｔ４＋ｔ５＋ｔ６）に決定される。ここで、振動子１１７を振動させる振動波形自体を示すデータを記憶しておく方法によれば、振動波形の時間が長くなるほどデータ量が大きくなるので、記憶装置の容量によっては、時間が長い振動波形を記憶することができなくなる可能性がある。これに対して、本実施形態においては、振動パターンの時間が長くなっても振動モデル（すなわち、周波数モデル関数および振幅モデル関数）のデータ量は実質的に変わらないので、ゲームシステム１は、記憶装置の容量によらず、時間が長い振動パターンを生成することができる。
【００９９】
なお、他の実施形態においては、周波数モデル関数および振幅モデル関数により示される振動モデルは、振動パターンの時間長さが固定（すなわち、期間変数によって変化しない）であってもよい。例えば、図１２に示す振動モデルにおいて、振動パターンの時間長さ（ｔ１＋ｔ２）が所定値に固定されてもよい。なお、このとき、期間変数ｔ１およびｔ２は、（ｔ１＋ｔ２）が一定となる条件下で設定可能となる。
【０１００】
図１１に示す変数決定部３０２は、振動モデルにおける変数の値を決定する。本実施形態においては、変数決定部３０２は、所定の振動条件が満たされたことに応じて、満たされた条件に応じた変数の値を決定する。振動条件は、振動子１１７に振動を行わせる条件である。ここで、本実施形態においては、リング型拡張装置５は、リング型拡張装置５に対する押し込み操作または引っ張り操作を検出し、操作回数をカウントする。なお、押し込み操作は、リング型拡張装置５の２つのグリップカバー２０３および２０４が互いに近づく方向に環状部２０１を変形させる操作である。また、引っ張り操作は、２つのグリップカバー２０３および２０４が互いに離れる方向に環状部２０１を変形させる操作である。第１の振動条件は、上記操作回数が所定の区切り回数（例えば、１００，２００，３００，４００回）となったことである。また、第２の振動条件は、上記操作回数が上限回数（例えば、５００回）となったことである。本実施形態においては、変数決定部３０２は、第１の振動条件、または、第２の振動条件が満たされたことに応じて、満たされた条件に応じた値を決定する。これによって、振動条件が満たされたことに応じて、満たされた条件に応じた振動パターンで振動子１１７が振動する（詳細は後述する）。
【０１０１】
なお、振動条件は任意であり、他の実施形態においては、他の条件が用いられてもよい。例えば、振動条件は、上記押し込み操作または引っ張り操作が検出されたことであってもよいし、右コントローラ４の所定のボタンに対する操作が検出されたことであってもよい。
【０１０２】
本実施形態においては、変数決定部３０２は、振動条件が満たされた場合、対応情報に基づいて、用いるべき振動モデルと変数の値とを決定する。図１４は、対応情報の一例を示す図である。図１４に示すように、対応情報は、振動条件と、当該振動条件が満たされた場合に用いる振動モデルと、当該振動条件が満たされた場合に用いる各変数の値との対応付けを示す。変数決定部３０２は、対応情報を記憶しており、振動条件が満たされた場合、対応情報を参照して、用いるべき振動モデルと変数の値とを決定する。
【０１０３】
本実施形態においては、変数決定部３０２は、第１の振動条件が満たされた場合、第１の振動モデルを用いて規定される振動パターンの振動が行われるように変数を決定する。第１の振動モデルは、ａ１，ｆ１，ｔ１，ｔ２という４つの変数を含むので、上記の場合、変数決定部３０２は、これら４つの変数の値を決定する。また、第２の振動条件が満たされた場合も同様に、変数決定部３０２は、第２の振動モデルを用いて規定される振動パターンの振動が行われるように、当該第２の振動モデルに含まれる各変数（具体的には、変数ａ２，ｆ２，ｔ４，ｔ５，ｔ６）を決定する。なお、図１４に示すように、１つの振動条件が満たされた場合において、変数決定部３０２は、振動モデルと各変数の値との組を複数組（図１４に示す例においては、４組）決定してもよい。また、図１４に示す例においては、１つの振動条件が満たされた場合に用いられる振動モデルは１種類であるとしたが、他の実施形態においては、１つの振動条件が満たされた場合複数種類の振動モデルが用いられてもよい。例えば、ある振動条件が満たされた場合に、変数決定部３０２は、第１の振動モデルとそれに対応する各変数の値との組、および、第２の振動モデルとそれに対応する各変数の値との組をそれぞれ決定してもよい。
【０１０４】
他の実施形態においては、リング型拡張装置５は、振動モデルに対して適用すべき変数の値を記憶する変数記憶部を備える構成であってもよい。このとき、変数決定部３０２は、振動条件が満たされた場合、関数記憶部３０１に記憶される関数のうちから振動条件に応じた関数を決定するとともに、変数記憶部に記憶される変数の値のうちから当該関数に適用すべき値を決定する。なお、本実施形態においては、変数決定部３０２は上記対応情報を記憶しており、振動モデルの関数に対して適用すべき変数の値を記憶していると言うことができるので、当該変数の値を記憶する変数記憶部を兼ねていると言うこともできる。
【０１０５】
なお、他の実施形態においては、リング型拡張装置５は、上記変数の値を予め記憶している必要はない。他の実施形態においては、変数決定部３０２は、計算によって変数の値を算出してもよく、例えば、上記操作回数から周波数変数の値を算出してもよい。このとき、変数決定部３０２は、操作回数から周波数変数の値を算出するための計算式を予め記憶しておき、振動条件が満たされた場合に変数の値を計算すればよい。
【０１０６】
変数決定部３０２は、以上のようにして振動モデルと変数の値とを決定すると、決定した振動モデル（すなわち、周波数モデル関数および／または振幅モデル関数）を指定する関数指定情報と、決定した変数の値を示す変数情報とを生成部３０３に渡す。
【０１０７】
生成部３０３は、関数記憶部３０１に記憶される関数と、変数決定部３０２によって決定された変数の値とに基づいて、振動情報を生成する。具体的には、生成部３０３は、決定された変数の値を周波数モデル関数に適用する（すなわち、代入する）ことによって得られる周波数の時間変化と、決定された変数の値を振幅モデル関数に適用することによって得られる振幅の時間変化とによって規定される振動パターンを示す振動情報を生成する。なお、上記振動情報の生成に用いられる周波数モデル関数および振幅モデル関数は、変数決定部３０２から送られる関数指定情報により示される関数である。生成部３０３は、生成された振動情報を振動制御部３０４に渡す。
【０１０８】
上記のように、本実施形態においては、関数記憶部３０１は、互いに異なる周波数の時間変化の振動モデル（すなわち、第１および第２の振動モデル）を示す複数種類の周波数モデル関数を記憶する。変数決定部３０２は、複数種類の周波数モデル関数のうち１つを指定する関数指定情報を決定する。生成部３０３は、決定された周波数変数の値と、決定された期間変数の値とを、関数指定情報により指定される周波数モデル関数に適用することによって得られる周波数の時間変化によって規定される振動パターンを示す振動情報を生成する。したがって、本実施形態によれば、複数の振動モデルを用いることで、ゲームシステム１は、データ量を抑えつつ、多様な振動パターンで振動子１１７を振動させることができる。
【０１０９】
また、振動モデルと変数の値との組が複数組である場合、各組にそれぞれ対応する複数の振動パターンが規定される。この場合、生成部３０３は、必要に応じて、複数の振動パターンを１つに統合した統合振動パターンを示す振動情報を生成する。
【０１１０】
図１５は、複数の振動パターンを統合した統合振動パターンの一例を示す図である。図１５は、上記第１の振動条件が満たされた場合に規定される４つの振動パターンを１つの統合振動パターンに統合する例を示している。図１５に示す例においては、変数決定部３０２から送られてくる４組の変数を示す変数情報に基づいて、４つの振動パターンＡ〜Ｄが規定されるものとする。このとき、生成部３０３は、４つの振動パターンＡ〜Ｄを統合した１つの統合振動パターンを示す振動情報を生成し、振動制御部３０４に渡す。そして、振動制御部３０４は、渡された振動情報に基づいて振動子１１７の振動パターンを指示する。
【０１１１】
複数の振動パターンを１つの統合振動パターンに統合する方法は任意である。本実施形態においては、図１５に示すように、生成部３０３は、振動が発生する期間が互いに重複しない複数の振動パターンを足し合わせることによって統合する。したがって、生成部３０３は、複数の振動パターンを容易に統合することができる。なお、他の実施形態においては、生成部３０３は、振動が発生する期間が互いに重複しない複数の振動パターンを単純に足し合わせるのではなく、適宜の演算を加えて統合してもよい。また、他の実施形態においては、生成部３０３は、振動が発生する期間が互いに重複する複数の振動パターンを統合してもよい。このとき、生成部３０３は、例えば、振動が発生する期間が互いに重複する期間においては、統合振動パターンにおける周波数を、重複する振動の周波数の平均値とし、統合振動パターンにおける振幅を、重複する振動の振幅の合計値（または平均値）としてもよい。
【０１１２】
また、上記のように、本実施形態においては、生成部３０３は、１つの周波数モデル関数に基づく複数の振動パターンを統合することによって得られる１つの統合振動パターンを示す振動情報を生成する。これによれば、ゲームシステム１は、１つの振動モデルから得られる複数の振動パターンを統合することで、より複雑な振動パターンで振動子１１７を振動させることができる。例えば、図１５に示す例においては、第１の振動モデルを用いて、次第に周波数を上げながら４回の振動が発生するという、複雑な振動パターンで振動子１１７を振動させることができる。すなわち、関数記憶部３０１は、１回の振動が発生する第１の振動モデルを記憶していれば、同様の傾向の振動が４回発生する振動モデルを別途記憶する必要が無い。
【０１１３】
ここで、本実施形態においては、振動モデルは、期間変数として、周波数モデル関数が示す時間変化のモデルにおける開始時点から振動が開始されるまでの時間を示す開始変数（上記変数ｔ１およびｔ４）を含む。これによって、ゲームシステム１は、振動パターンにおいて振動が開始される時点を調節することができる。
【０１１４】
さらに、本実施形態においては、複数の振動パターンを統合する場合において上記開始変数が用いられるので、ゲームシステム１は、上記開始変数を適宜調節することによって、１つの振動パターンにおいて振動が開始される時点と、他の振動パターンにおいて振動が開始される時点との間隔を設定することができる。例えば、図１５に示す例においては、４つの振動パターンにおける変数ｔ１を７５［ｍｓ］間隔とすることによって、４回の振動が開始される間隔を容易に揃えることができる。ここで、図１５に示す４つの振動パターンで振動子１１７を振動させる場合において、仮に、４つの振動パターンについて個別に振動情報を生成してそれぞれ送信するとすれば、生成部３０３は、１つの振動パターンを示す振動情報を振動制御部３０４に送信するタイミングと、次の振動パターンを示す振動情報を振動制御部３０４に送信するタイミングとを調整することになり、振動情報の生成および送信の処理が煩雑になるおそれがある。これに対して、本実施形態においては、複数の振動パターンを統合する場合に上記開始変数を用いることで、複数の振動パターンにおける振動の開始時点の間隔を容易に調整することができる。
【０１１５】
本実施形態においては、生成部３０３は、振動パターンを示す振動情報として、所定期間（具体的には、１フレーム期間（例えば、１０［ｍｓ］））毎の複数の単位振動情報を生成する。具体的には、生成部３０３は、１フレーム期間に１回の割合で、当該フレーム期間における振動パターンを示す単位振動情報を生成し、単位振動情報が生成される毎に当該単位振動情報を振動制御部３０４に渡す。なお、本実施形態においては、生成部３０３がリング型拡張装置５に設けられ、振動制御部３０４が右コントローラ４に設けられるので、単位振動情報はリング型拡張装置５から端子２１４を介して右コントローラ４へ送信される。なお、詳細は後述するが、生成部３０３は、１フレーム期間において、異なる振動パターンを示す２つの単位振動情報を振動制御部３０４へ送信してもよい。
【０１１６】
図１６は、単位振動情報の生成方法の一例を示す図である。図１６に示す例では、開始時点からのフレーム期間ｐ１〜ｐ１０における振動パターンを示している。本実施形態においては、生成部３０３は、１フレーム期間毎に単位振動情報を生成する。ここで、生成部３０３は、ある１つのフレーム期間における振動パターンを示す単位振動情報として、当該振動パターンのうちで当該フレーム期間における部分の振幅および周波数を示す情報を生成する。例えば、図１６に示す例においては、期間ｐ１において、生成部３０３は、振幅が０で、周波数が０であることを示す単位振動情報を生成する。また、期間ｐ６においては、生成部３０３は、振幅が１で、周波数が５２３であることを示す単位振動情報を生成する。
【０１１７】
上記のように、本実施形態においては、生成部３０３は、振動パターンの全体を示す振動情報を一度に生成せず、１フレーム期間分の振動パターンを示す単位振動情報を繰り返し生成することによって、振動パターンの全体を示す振動情報を生成する。つまり、振動パターンが規定される期間において単位振動情報が繰り返し生成され、生成された複数の単位振動情報（換言すれば、複数の単位振動情報からなる振動情報）が当該振動パターンを示すこととなる。また、生成部３０３は、振動パターンを示す振動情報を単位振動情報に分割して振動制御部３０４へ送信すると言うことができる。
【０１１８】
上記のように、生成部３０３は、所定の単位期間（すなわち、フレーム期間）に１回の割合で単位振動情報を生成する。生成部３０３は、ある単位期間において単位振動情報を生成する場合、振動パターンのうちで当該単位期間における部分を示す単位振動情報を生成する。これによれば、生成された振動パターンの長さにかかわらず、単位時間あたりの振動情報のデータ量を低減することができる。
【０１１９】
また、本実施形態における振動情報（および単位振動情報）は、振動パターンの振幅および周波数の情報を含む。ここで、他の実施形態においては、振動情報は、他の情報を含んでいてもよい。例えば、本実施形態においては、振動制御部３０４は正弦波の振動波形で振動子１１７を振動させるものとするが、他の実施形態においては、振動制御部３０４は、複数種類の基本波形（例えば、正弦波および三角波）で振動子１１７を振動させることが可能であってもよい。このとき、生成部３０３が振動子１１７を振動させる基本波形を指定するようにしてもよい。すなわち、生成部３０３は、基本波形を示す情報を含む振動情報を生成してもよい。
【０１２０】
振動制御部３０４は、生成部３０３から送られた振動情報に基づいて振動子１１７の振動を制御する。すなわち、振動制御部３０４は、生成部３０３から送られた単位振動情報が示す振動パターンで振動子１１７を振動させる。具体的には、振動制御部３０４は、単位振動情報が示す振動パターンにより規定される振動波形を示す駆動信号を振動子１１７に与える。本実施形態においては、駆動信号は、単位振動情報により示される振幅および周波数の正弦波の振動波形で振動子１１７を振動させる電気信号である。
【０１２１】
なお、振動制御部３０４は、１フレーム期間毎に生成部３０３から単位振動情報を受信し、受信した単位振動情報に基づいて振動子１１７を振動させる。ここで、あるフレーム期間と次のフレーム期間との境界において振幅および／または周波数が急に変化すると、ノイズが発生したり、ユーザに違和感を与えたりするおそれがある。そのため、振動制御部３０４は、フレーム期間の境界において振幅および／または周波数が連続的に変化するように補間処理を行い、補間処理後の振幅および周波数を有する振動波形で振動子１１７を振動させるようにしてもよい。例えば、あるフレーム期間から次のフレーム期間において振幅および周波数が変化する場合、振動制御部３０４は、当該次のフレーム期間において、単位振動情報が示す振幅および周波数に次第に近づくように連続的に振幅および周波数が変化する駆動信号を生成してもよい。
【０１２２】
上述のように、本実施形態においては、生成部３０３は、１フレーム期間において２つの単位振動情報を振動制御部３０４へ送信することが可能である。２つの単位振動情報が送信されてくる場合、振動制御部３０４は、２つの単位振動情報が示す２つの振動波形を合成した振動波形で振動子１１７を振動させる。具体的には、振動制御部３０４は、２つの振動波形を合成した振動波形に対応する駆動信号を生成して振動子１１７に与える。このように、本実施形態においては、ゲームシステム１は、周波数が異なる２種類の振動波形を合成した振動波形で振動子１１７を振動させることができる。
【０１２３】
図１７は、２つの振動パターンを示す振動情報に基づいて振動子を振動させる一例を示す図である。本実施形態においては、上記第２の振動条件が満たされた場合、変数決定部３０２は、第２の振動モデルを示す関数を指定する関数指定情報と、図１７に示すパターンＡ〜Ｄの４つの振動パターンを表す４組の変数情報を生成部３０３に渡す。このとき、第２の振動モデルを示す周波数モデル関数および振幅モデル関数と、４組の変数情報とに基づいて、４つの振動パターンＡ〜Ｄが規定される。ここで、振動パターンＡは、振動が発生する期間が他の３つの振動パターンＢ〜Ｄと重複し、振動パターンＢ〜Ｄは、振動が発生する期間が互いに重複しないものとする（図１７参照）。また、振動パターンＡ〜Ｄの周波数は、それぞれ、１６０［Ｈｚ］，５８７［Ｈｚ］，６５９［Ｈｚ］，６９８［Ｈｚ］であるとする。
【０１２４】
上述のように、本実施形態においては、振動制御部３０４は、２つの単位振動情報が示す２つの振動波形を合成することが可能である一方、変数決定部３０２によって決定される変数に基づいて３つ以上の振動パターンが規定される場合がある（図１７）。この場合、生成部３０３は、３つ以上の振動パターンのうちいくつかを統合することで、２つの振動パターンを示す振動情報を生成する。なお、図１７に示す例においては、４つの振動パターンＡ〜Ｄが統合された結果、２つの振動パターンを示す２つの振動情報が生成されるが、他の実施形態においては、統合の結果、１つの振動パターンを示す１つの振動情報が生成されてもよい。
【０１２５】
本実施形態においては、生成部３０３は、上記３つ以上の振動パターンのうち、振動が発生する期間が互いに重複しない振動パターンを統合した統合振動パターンを示す振動情報を生成する。図１７に示す例においては、生成部３０３は、振動が発生する期間が互いに重複しない振動パターンＢ〜Ｄが統合された１つの統合振動パターンを示す振動情報を生成する（図１７に示す第２の振動パターン参照）。また、振動パターンＡについては、振動パターンＢ〜Ｄと振動が発生する期間が重複するので、生成部３０３は、振動パターンＡについては統合せずにそのまま、振動パターンＡを示す振動情報を生成する（図１７に示す第１の振動パターン参照）。生成部３０３は、上記２つの振動情報に対応する２つの単位振動情報を振動制御部３０４へ送信する。上記２つの単位振動情報を受信した振動制御部３０４は、２つの単位振動情報に基づく２つの振動波形を合成した振動波形で振動子１１７を振動させる（図１７に示す合成波形の振動パターン参照）。
【０１２６】
なお、３つ以上の振動パターンのうちでどの振動パターンを統合するかを決定する方法は任意である。例えば、３つ以上の振動パターンのうちで振動が発生する期間が互いに重複しない振動パターンの組が既知である場合、当該組に含まれる振動パターンが１つに統合されてもよい。また、周波数が所定の閾値以上である複数の振動パターンについては振動が発生する期間が互いに重複せず、かつ、周波数が所定の閾値未満である複数の振動パターンについては振動が発生する期間が互いに重複しない場合（つまり、そのような振動パターンが規定されるように変数が決定される場合）には、周波数が当該閾値以上である振動パターン同士が統合され、周波数が当該閾値未満である振動パターン同士が統合されてもよい。例えば、図１７に示す例においては、振動パターンＡの周波数は１６０［Ｈｚ］であり、振動パターンＢ〜Ｄの周波数は５８７〜６９８［Ｈｚ］であるので、１６０［Ｈｚ］より大きく、５８７［Ｈｚ］より小さい閾値（例えば、３２０［Ｈｚ］）が設定されてもよい。このとき、４つの振動パターンＡ〜Ｄを、周波数が閾値未満のグループと、周波数が閾値以上のグループとに分けることができるので、生成部３０３は、グループに含まれる振動パターンを統合した統合振動パターンを示す振動情報を生成すればよい。
【０１２７】
上記のように、本実施形態においては、振動子１１７は、２以上である第１所定数（ここでは、２）の振動情報にそれぞれ対応する各振動波形を合成した波形で振動可能であり、変数決定部３０２は、周波数変数の値と期間変数の値との組として、第１所定数より大きい第２所定数（図１７に示す例では、４）の組を決定する。このとき、生成部３０３は、決定された組に基づく第２所定数の振動パターンのうち２以上の振動パターンを統合して１つの振動パターンとすることによって、合わせて第１所定数の振動パターンを示す第１所定数の振動情報を生成する。上記によれば、変数決定部３０２により決定された変数の組に応じて規定される振動パターンの数によらず、振動子１１７が対応可能な数（すなわち、第１所定数）の振動情報を生成することができる。
【０１２８】
また、本実施形態においては、生成部３０３は、複数の振動パターンのうち、振動が生じる期間が互いに重複しない複数の振動パターンを統合することによって得られる１つの振動パターンを示す振動情報を生成する。これによって、振動パターンを統合する計算処理が容易になる。
【０１２９】
［３．振動制御処理の具体例］
次に、振動制御処理の具体例について説明する。図１８は、リング型拡張装置５によって実行される振動制御処理の一例を示すフローチャートである。本実施形態においては、図１８に示す一連の振動制御処理は、上述の独立動作モードが開始されたことに応じて開始される。
【０１３０】
なお、本実施形態では、リング型拡張装置５の制御部２１３のプロセッサが、制御部２１３が備えるメモリに記憶されるプログラムを実行することによって、図１８に示す各ステップの処理を実行するものとして説明する。ただし、他の実施形態においては、上記各ステップの処理のうちの一部の処理を、制御部２１３のプロセッサとは別のプロセッサ（例えば、専用回路等）が実行するようにしてもよいし、右コントローラ４のプロセッサ（例えば、通信制御部１１１）が実行するようにしてもよい。また、図１８（後述する図２０についても同様である）に示す各ステップの処理は、単なる一例に過ぎず、同様の結果が得られるのであれば、各ステップの処理順序を入れ替えてもよいし、各ステップの処理に加えて（または代えて）別の処理が実行されてもよい。
【０１３１】
また、制御部２１３は、図１８に示す各ステップの処理を、メモリを用いて実行する。すなわち、制御部２１３は、各処理ステップによって得られる情報（換言すれば、データ）をメモリに記憶し、それ以降の処理ステップにおいて当該情報を用いる場合には、メモリから当該情報を読み出して利用する。
【０１３２】
振動制御処理が開始されると、プロセッサは、ステップＳ１〜Ｓ６の一連の処理を、１フレーム期間に１回の割合で繰り返し実行する。
【０１３３】
ステップＳ１において、プロセッサは、上述の振動条件のいずれかが満たされたか否かを判定する。本実施形態においては、ステップＳ１の判定は、リング型拡張装置５に対する操作回数に基づいて行うことができる。ここで、プロセッサは、歪み検出部２１１から出力される歪み値に基づいてリング型拡張装置５の変形量を算出し、当該変形量に基づいて押し込み操作または引っ張り操作を検出する。具体的には、トレーニング装置は、押し込み方向の変形量が所定の押し込み閾値よりも大きくなった場合、押し込み操作を検出し、引っ張り方向の変形量が所定の引っ張り閾値よりも大きくなった場合、引っ張り操作を検出する。さらに、プロセッサは、押し込み操作または引っ張り操作が１回検出される毎に、操作回数を１増加させるようにカウントを行う。そして、操作回数が上記区切り回数になった場合（すなわち、操作回数が区切り回数に等しくなった場合）、プロセッサは、第１の振動条件が満たされたと判断する。また、操作回数が上記上限回数になった場合（すなわち、操作回数が上限回数に等しくなった場合）、プロセッサは、第２の振動条件が満たされたと判断する。なお、ステップＳ１において振動条件が満たされたと判断されるのは、前回のステップＳ１から操作回数が増加した結果、区切り回数または上限回数に等しくなった場合である。前回のステップＳ１の判定から操作回数が増加していない場合は、操作回数が区切り回数または上限回数に等しいとしても振動条件はすでに満たされた後であるので、ステップＳ１の判定結果は否定となる。ステップＳ１の判定結果が肯定である場合、ステップＳ２の処理が実行される。一方、ステップＳ１の判定結果が否定である場合、ステップＳ２〜Ｓ４の処理がスキップされて、後述のステップＳ５の処理が実行される。
【０１３４】
ステップＳ２において、プロセッサは、ステップＳ１で満たされた条件に基づいて振動モデルを決定する。上述のように、振動モデルは、対応情報を参照することによって決定される。ステップＳ２の次に、ステップＳ３の処理が実行される。
【０１３５】
ステップＳ３において、プロセッサは、ステップＳ１で満たされた条件に基づいて変数の値を決定する。上述のように、変数の値は、対応情報を参照することによって決定される。ステップＳ３の次に、ステップＳ４の処理が実行される。
【０１３６】
ステップＳ４において、プロセッサは、ステップＳ２で決定された振動モデルを示す関数（すなわち、周波数モデル関数および振幅モデル関数）と、ステップＳ３で決定された変数の値とに基づいて規定される振動パターンを示す振動情報を生成する。なお、振動情報の生成は、上記“［２．振動制御処理の概要］”で述べた方法に従って行われる。具体的には、プロセッサは、上記振動パターンについて、現在のフレーム期間における単位振動情報を生成する。すなわち、プロセッサは、振動パターンのうちで現在のフレーム期間における部分の振幅および周波数を示す単位振動情報を生成する。なお、現在のフレーム期間に対応する振動パターンが存在しない場合、プロセッサは、振幅および周波数が０であることを示す単位振動情報を生成してもよいし、単位振動情報を生成しないようにしてもよい。また、ステップＳ４において、プロセッサは、上述したように２つの単位振動情報を生成してもよい。ステップＳ４の次に、ステップＳ５の処理が実行される。
【０１３７】
ステップＳ５において、プロセッサは、ステップＳ４で生成された単位振動情報を右コントローラ４へ送信する。これに応じて、振動情報を受信した右コントローラ４は、当該振動情報に基づいて振動子１１７を振動させる。ステップＳ５の処理が１フレーム期間毎に繰り返し実行されることによって、ステップＳ４で生成された振動情報が示す振動パターンで振動子１１７が振動することとなる。ステップＳ５の次に、ステップＳ６の処理が実行される。
【０１３８】
ステップＳ６において、プロセッサは、振動制御処理を終了するか否かを判定する。例えば、プロセッサは、上記独立動作モードを終了する指示を示すユーザ入力が検出されたか否かを判定する。ステップＳ６の判定結果が肯定である場合、プロセッサは、振動制御処理を終了する。一方、ステップＳ６の判定結果が否定である場合、ステップＳ１の処理が再度実行される。以降、ステップＳ６の判定結果が肯定となるまで、プロセッサは、ステップＳ１〜Ｓ６の一連の処理を繰り返し実行する。
【０１３９】
［４．本実施形態の作用効果および変形例］
上記実施形態においては、振動子１１７を備える情報処理システム（具体的には、ゲームシステム１）は、下記の構成を備える。
・振動の周波数に関する時間変化のモデルを示し、当該モデルにおけるある期間の周波数を示す周波数変数と、当該期間に関する期間変数とを変数とする周波数モデル関数を記憶する関数記憶部３０１
・周波数変数の値と、期間変数の値とを決定する変数決定部３０２
・決定された周波数変数の値と、決定された期間変数の値とを周波数モデル関数に適用することによって得られる周波数の時間変化によって規定される振動パターンを示す振動情報を生成する生成部３０３
・振動情報に基づいて振動子１１７の振動を制御する振動制御部３０４
上記の構成によれば、ゲームシステム１は、周波数モデル関数を記憶しておくことによって、周波数モデルを用いて振動情報を生成することができる。これによれば、複数種類の振動パターンで振動子１１７を振動させる場合において、振動子１１７を振動させるための振動波形のデータを記憶しておく方法に比べて、振動子１１７の制御に用いられるデータ量を少なくすることができる。
【０１４０】
また、上記実施形態においては、関数記憶部３０１は、振動の振幅に関する時間変化のモデルを示し、振動の振幅を示す振幅変数を変数とする振幅モデル関数をさらに記憶する。変数決定部３０２は、振幅変数の値をさらに決定する。生成部３０３は、決定された周波数変数の値と、決定された期間変数の値とを周波数モデル関数に適用することによって得られる周波数の時間変化と、決定された振幅変数の値を振幅モデル関数に適用することによって得られる振幅の時間変化とによって規定される振動パターンを示す振動情報を生成する。これによれば、情報処理システムは、周波数に加えて、振幅が異なる振動パターンを１つの振動モデルから生成することができ、より多様な振動パターンで振動子１１７を振動させることができる。
【０１４１】
なお、上記実施形態においては、情報処理システムは、振動子を備える第１装置（具体的には、右コントローラ４）と、当該第１装置と通信を行う第２装置（具体的には、リング型拡張装置５）とを含む。第２装置は、関数記憶部３０１と、変数決定部３０２と、生成部３０３と、振動情報を第１装置へ送信する送信部（具体的には、ステップＳ６を実行する制御部２１３）とを備える。第１装置は、第２装置から振動情報を受信する受信部（具体的には、端子６４および通信制御部１１１）と、受信部によって受信された振動情報に基づいて振動子の振動を制御する振動制御部３０４とを備える。上記の構成によれば、第２装置における、振動子の制御に用いられるデータ量を少なくすることができる。これによれば、第２装置は記憶容量の大きい記憶装置を備える必要がないので、第２装置の製造コストを低減することができる。
【０１４２】
（本体装置２によって振動子１１７を制御する変形例）
上記実施形態においては、リング型拡張装置５が振動モデルを用いた振動パターンで右コントローラ４の振動子１１７を制御する場合を例として説明したが、他の実施形態においては、振動モデルを用いた振動パターンで本体装置２が振動子１１７を制御するようにしてもよい。以下、上記実施形態における変形例として、本体装置２が振動子１１７を制御する例について説明する。
【０１４３】
図１９は、振動子１１７の振動制御に関する本体装置２および右コントローラ４の機能的構成を示すブロック図である。本変形例においては、本体装置２が右コントローラ４と無線通信を行い、当該右コントローラ４の振動子１１７を振動させる例について説明する。なお、本変形例においては、振動子１１７を振動させる処理にリング型拡張装置５は関係しないので、右コントローラ４はリング型拡張装置５に装着されている必要はない。
【０１４４】
図１９に示すように、本体装置２は、変数決定部３１１を備える。また、右コントローラ４は、関数記憶部３１２と、生成部３１３と、上述の振動制御部３０４および振動子１１７とを備える。変数決定部３１１は、例えばプロセッサ８１およびＤＲＡＭ８５によって実現される。また、関数記憶部３１２は例えばメモリ１１２によって実現され、生成部３１３は例えば通信制御部１１１およびメモリ１１２によって実現される。
【０１４５】
変数決定部３１１は、上記実施形態における変数決定部３０２と同様の機能を有する。すなわち、変数決定部３１１は、所定の振動条件が満たされたことに応じて、満たされた条件に応じた振動モデルおよび変数の値を決定する。なお、本体装置２の変数決定部３１１が用いる振動条件は、リング型拡張装置５の変数決定部３０２が用いる振動条件と異なっていてもよいし、同じであってもよい。本体装置２の変数決定部３１１が用いる振動条件は、例えば、本体装置２において実行されるゲームに関する条件（例えば、ゲームにおいて所定の条件が満たされたこと）であってもよい。
【０１４６】
本変形例においては、変数決定部３１１は、決定された振動モデルを指定する関数指定情報と、決定された変数の値を示す変数情報とを、右コントローラ４の生成部３１３に渡す。すなわち、変数決定部３１１は、これらの情報を無線で右コントローラ４へ送信する。
【０１４７】
関数記憶部３１２は、上記実施形態における関数記憶部３０１と同様の機能を有する。なお、関数記憶部３１２は、本体装置２から送信される関数指定情報が示す振動モデルに対応する関数を記憶する。右コントローラ４の関数記憶部３１２に記憶される関数と、リング型拡張装置５の関数記憶部３０１に記憶される関数とは、異なっていてもよい。
【０１４８】
生成部３１３は、上記実施形態における生成部３０３と同様の機能を有する。すなわち、生成部３１３は、関数記憶部３１２に記憶される関数と、変数決定部３１１によって決定された変数の値とに基づいて振動情報を生成する。
【０１４９】
本変形例においても上記実施形態と同様、生成された振動情報は振動制御部３０４に渡され、振動制御部３０４は、当該振動情報に基づいて振動子１１７の振動を制御する。これによって、本変形例においても上記実施形態と同様、ゲームシステム１は、振動モデルに基づく振動パターンで振動子１１７を振動させることができる。
【０１５０】
図２０は、本変形例における振動制御処理の一例を示すフローチャートである。図２０に示す一連の振動制御処理は、右コントローラ４によって実行される。本変形例においては、図２０に示す一連の振動制御処理は、例えば本体装置２においてゲームアプリケーションが起動されたことに応じて開始される。
【０１５１】
なお、本変形例では、右コントローラ４の通信制御部１１１のプロセッサが、メモリ１１２に記憶されるプログラムを実行することによって、図２０に示す各ステップの処理を実行するものとして説明する。また、プロセッサは、図２０に示す各ステップの処理を、メモリを用いて実行する。すなわち、プロセッサは、各処理ステップによって得られる情報（換言すれば、データ）をメモリに記憶し、それ以降の処理ステップにおいて当該情報を用いる場合には、メモリから当該情報を読み出して利用する。
【０１５２】
振動制御処理が開始されると、プロセッサは、ステップＳ１１〜Ｓ１７の一連の処理を、１フレーム期間に１回の割合で繰り返し実行する。
【０１５３】
ステップＳ１１において、プロセッサは、本体装置２から上記関数指定情報および変数情報を受信したか否かを判定する。本変形例においては、本体装置２は、振動条件のいずれかが満たされた場合、満たされた条件に応じた関数指定情報および変数情報を右コントローラ４へ送信する。プロセッサは、無線によりこれらの情報が受信されたか否かを判定する。ステップＳ１１の判定結果が肯定である場合、ステップＳ１２の処理が実行される。一方、ステップＳ１１の判定結果が否定である場合、ステップＳ１２〜Ｓ１４の処理がスキップされて、後述のステップＳ１５の処理が実行される。
【０１５４】
ステップＳ１２において、プロセッサは、ステップＳ１で本体装置２から情報を受信した旨を示す確認通知を本体装置２へ送信する。ステップＳ１２の次に、ステップＳ１３の処理が実行される。
【０１５５】
ここで、本変形例においては、本体装置２は、上記関数指定情報および変数情報を送信してから所定時間内に右コントローラ４からの確認通知が受信されない場合、当該関数指定情報および変数情報を再送する。本体装置２は、上記関数指定情報および変数情報の送信を、上記確認通知を右コントローラ４から受信するまで繰り返し実行する。このように、本変形例においては、本体装置２と右コントローラ４との間の無線通信において、関数指定情報および変数情報が右コントローラ４において受信されたことが本体装置２において確認されるまで、当該関数指定情報および変数情報が送信される。これによれば、右コントローラ４において関数指定情報および変数情報を取得する可能性を向上することができる。
【０１５６】
本変形例におけるステップＳ１３〜Ｓ１５の処理は、それぞれ、（実行主体がリング型拡張装置５のプロセッサであるか、右コントローラ４のプロセッサであるかという点で異なるものの、）上記実施形態におけるステップＳ２〜Ｓ４の処理と同様であるので、詳細な説明を省略する。
【０１５７】
ステップＳ１６において、プロセッサは、ステップＳ１５で生成された単位振動情報に基づいて振動子１１７を振動させる。ステップＳ１６の処理が１フレーム期間毎に繰り返し実行されることによって、ステップＳ１５で生成された振動情報が示す振動パターンで振動子１１７が振動することとなる。ステップＳ１６の次に、ステップＳ１７の処理が実行される。
【０１５８】
ステップＳ１７において、プロセッサは、振動制御処理を終了するか否かを判定する。例えば、プロセッサは、ゲームアプリケーションにおけるゲーム処理を終了する旨の指示が本体装置２から送信されたか否かを判定する。ステップＳ１７の判定結果が肯定である場合、プロセッサは、振動制御処理を終了する。一方、ステップＳ１７の判定結果が否定である場合、ステップＳ１１の処理が再度実行される。以降、ステップＳ１７の判定結果が肯定となるまで、プロセッサは、ステップＳ１１〜Ｓ１７の一連の処理を繰り返し実行する。
【０１５９】
なお、図２０においては示していないが、右コントローラ４は、本体装置２におけるゲームアプリケーションの実行中においては、上述の操作データを本体装置２へ送信する処理等を実行してもよい。
【０１６０】
上記のように、上記変形例においては、情報処理システムは、振動子を備える第１装置（具体的には、右コントローラ４）と、当該第１装置と無線通信を行う第２装置（具体的には、本体装置２）とを含む。第２装置は、変数決定部３１１と、決定された周波数変数および期間変数を第１装置へ送信する変数送信部（具体的には、コントローラ通信部８３）とを備える。また、第１装置は、下記の構成を備える。
・第２装置から周波数変数および期間変数を受信する変数受信部（具体的には、通信制御部１１１）
・変数受信部によって受信された周波数変数および期間変数に基づいて振動情報を生成する生成部３１３
・振動制御部３１４
上記によれば、第１装置に周波数モデル関数を記憶しておき、周波数モデル関数を用いて振動情報を生成することによって、第１装置において振動子の制御に用いられるデータ量を少なくすることができる。また、上記によれば、第２装置は、変数を示す情報を第１装置に送信するので、振動情報または振動波形自体を示すデータをフレーム期間毎に第１装置へ送信する場合に比べて、装置間の通信量および通信の頻度の少なくとも一方を低減することができる。さらに、上記によれば、第２装置は、振動子を振動させる開始時に上記変数を第１送信すればよく、振動子の振動中において第２装置は第１装置と通信を行う必要はなく、振動中に第２装置が起動している必要もない。したがって、上記変形例においては、右コントローラ４の振動中において、第２装置は、スリープ状態となることによって省電力化を図ることも可能である。
【０１６１】
また、他の実施形態においては、本体装置２が変数決定部および関数記憶部を備え、右コントローラ４は関数記憶部を備えず、生成部および振動制御部を備える構成であってもよい。このとき、本体装置２は、振動条件が満たされたことに応じて、満たされた振動条件に応じた振動モデルを示す関数と、当該関数に適用する変数の値とを右コントローラ４へ送信する。右コントローラ４の生成部は、本体装置２から受信される、上記関数と変数の値とに基づいて振動パターンを生成する。上記の構成によっても上記変形例と同様、第１装置において振動子の制御に用いられるデータ量を少なくすることができる。また、装置間の通信量および通信の頻度の少なくとも一方を低減することができる。なお、他の実施形態においては、本体装置２は、関数と変数の値とを右コントローラ４へ送信することに代えて、当該関数に当該変数の値を適用した結果（すなわち、振動パターンを示す関数）を右コントローラ４へ送信してもよい。
【０１６２】
また、上記変形例においては、右コントローラ４は、本体装置２から周波数変数および期間変数が受信されたことに応じて、当該本体装置２へ返信を行う（ステップＳ１２）。このとき、本体装置２は、周波数変数および期間変数の送信に対する右コントローラ４からの返信が送信から所定時間以内にない場合、当該周波数変数および当該期間変数を当該右コントローラ４へ再送信する。これによれば、本体装置２と右コントローラ４との間で無線通信を行う場合であっても、振動子１１７を振動させることができる可能性を向上することができる。なお、上記のように情報の再送信を行う場合、再送信を行わない場合に比べて装置間の通信量が増加する。しかし、上記変形例においては、本体装置２から右コントローラ４へは、データ量が少ない変数情報が送信されるので、情報の再送信を行うようにしても通信量が過大となるおそれは少ない。なお、本体装置２は、上記返信が送信から上記所定時間以内にあるか否かの判定を、当該返信が行われてからの時間を計測することによって行ってもよいし、当該時間に相当する指標（例えば、当該返信が行われてからの経過フレーム数）を用いて行ってもよい。
【０１６３】
なお、仮に、本体装置２から右コントローラ４へフレーム期間毎に振動情報を送信する場合には、無線通信において生じるパケットの消失が原因で、本体装置２から送信される複数の振動情報のうちでいくつかの振動情報が右コントローラ４において受信されないおそれがある。このとき、本体装置２が指示する振動パターン（すなわち、本体装置２が送信する情報により規定される振動パターン）が振動子１１７において正しく再現されないおそれがある。これに対して、上記変形例においては、再送信を行う通信方法で変数情報が送信され、当該変数情報に基づいて、受信側である右コントローラ４において振動情報が生成される。これによれば、受信側で生成された振動情報が、本体装置２が指示する振動パターンとは異なる内容を示すものとなる可能性は低くなる。
【０１６４】
また、他の実施形態においては、本体装置２および右コントローラ４は、振動モデルを用いる第１モードと、振動モデルを用いない第２モードとのいずれかで動作可能であってもよい。第１モードにおいては、上記変形例において示したように、本体装置２が変数情報を右コントローラ４へ送信し、右コントローラ４が変数情報に基づいて生成される振動情報に基づいて振動子１１７の振動を制御する。一方、第２モードにおいては、本体装置２は、所定の振動パターンを示す振動情報を右コントローラ４へ送信し（例えば、１フレーム期間に１回の割合で単位振動情報を送信し）、右コントローラ４は、本体装置２から送信されてくる振動情報に基づいて振動子１１７の振動を制御する。ここで、第２モードにおける振動情報は、本体装置２において、振動モデルを用いる方法以外の任意の方法で生成される。例えば、第２モードにおける振動情報は、本体装置２において実行中のアプリケーションのプログラムにおいて含まれるものであってもよい。また例えば、第２モードにおける振動情報は、本体装置２においてユーザの入力に基づいて生成された振動情報（例えば、ユーザが一連の入力を行ったときの各入力タイミングで振動する振動パターンを示す振動情報）であってもよい。上記によれば、ゲームシステム１は、第１モードにおいては振動モデルを用いることによって、振動子１１７の制御に用いられるデータ量を少なくすることができるとともに、第２モードにおいて、振動モデルから生成することができない振動パターンによっても振動子１１７を振動させることができる。
【０１６５】
（振動モデルに関する変形例）
振動モデルの内容は任意であり、他の実施形態においては、上記第１および第２の振動モデルとは異なる振動モデルが用いられてもよい。図２１は、振動モデルの他の一例を示す図である。図２１に示す振動モデルは、下記（ａ）〜（ｄ）のように振幅および周波数が推移する振動パターンのモデルを示している。
（ａ）開始時点から時間ｔ１１が経過するまでの期間は、振動を発生させない。
（ｂ）時間ｔ１１が経過した時点から時間ｔ１２が経過するまでの期間は、振幅が０からａ１１まで増加し（具体的には、単位時間当たりの増加量が一定である増加態様で増加し）、かつ、周波数ｆ１１で振動を行う。
（ｃ）時間ｔ１２が経過した時点から時間ｔ１３が経過するまでの期間は、一定の振幅ａ１１で、かつ、周波数ｆ１２で振動を行う。
（ｄ）時間ｔ１３が経過した時点から時間ｔ１４が経過するまでの期間は、振幅がａ１１からａ１２まで減少し（具体的には、単位時間当たりの減少量が一定である減少態様で減少し）、かつ、周波数ｆ３で振動を行う。
なお、時間ｔ１１〜ｔ１４と、周波数ｆ１１〜ｆ１３と、振幅ａ１１およびａ１２とは、それぞれ変数である。図２１に示す振動モデルを用いることによって、ゲームシステム１は、より多様な振動パターンを生成することができる。
【０１６６】
上記のように、振幅変数は、振動モデル（図２１参照）における終了時点の振幅を示す終了振幅変数（すなわち、変数ａ１２）を含んでいてもよい。これによれば、ゲームシステム１は、終了時点の前において振幅が次第に減少しつつ、終了時点における振幅が０でない振動パターンを規定することができる。また、ゲームシステム１は、上記の振動パターンの直後に他の振動パターンが連続するように、２つの振動パターンを統合した統合振動パターンを規定することができる。例えばこのとき、連続する直後の振動パターンの開始時点の振幅を上記の終了時振幅変数（すなわち、変数ａ１２）とすれば、２つの振動パターンにおける振動が連続する振動パターンを規定することができ、振動モデルに基づく振動パターンのバリエーションを増やすことができる。
【０１６７】
また、図２１に示す振動モデルにおいては、振幅が連続的に変化する振動モデルを示したが、周波数が連続的に変化する振動モデルが用いられてもよい。図２２は、振動モデルの他の一例を示す図である。図２２は、下記（ｅ）〜（ｈ）のように周波数が推移する振動パターンのモデルを示している。
（ｅ）開始時点から時間ｔ２１が経過するまでの期間は、周波数ｆ２１で振動を行う。
（ｆ）時間ｔ２１が経過した時点から時間ｔ２２が経過するまでの期間は、周波数がｆ２１からｆ２２まで増加する（具体的には、単位時間当たりの減少量が一定である増加態様で増加する）振動を行う。
（ｇ）時間ｔ２２が経過した時点から時間ｔ２３が経過するまでの期間は、一定の周波数ｆ２２で振動を行う。
（ｈ）時間ｔ２３が経過した時点から時間ｔ２４が経過するまでの期間は、周波数がｆ２２からｆ２３まで減少する（具体的には、単位時間当たりの減少量が一定である減少態様で減少する）振動を行う。
なお、時間ｔ２１〜ｔ２４と、周波数ｆ２１〜ｆ２３とは、それぞれ変数である。図２２に示す振動モデルを用いることによって、ゲームシステム１は、周波数が連続的に変化する振動パターンを規定することができる。また、他の実施形態においては、図２２に示す振動モデルが用いられる場合において、振幅に関しては図２１に示す振動モデルが用いられてもよい。すなわち、ゲームシステム１は、周波数モデル関数として図２２に示す関数を用い、振幅モデル関数として図２１に示す関数を用いるようにしてもよい。これによって、振動モデルに基づく振動パターンのバリエーションをより増やすことができる。
【０１６８】
（振動モデルの変数に関する変形例）
他の実施形態においては、振動モデルを示す関数（すなわち、周波数モデル関数および振幅モデル関数）は、繰り返し変数を変数とする関数であってもよい。繰り返し変数は、繰り返し変数以外の他の変数（すなわち、周波数変数、振幅変数、および、期間変数）によって規定される振動パターンを繰り返す回数を示す変数である。振動モデルを示す関数が繰り返し変数を含む場合、変数決定部３０２は、上記他の変数に加えて繰り返し変数の値を決定する。生成部３０３は、決定された上記他の変数を周波数モデル関数および振幅モデル関数に適用することによって得られる周波数および振幅の時間変化によって規定される振動パターンを、決定された繰り返し変数が示す回数だけ繰り返すことによって得られる繰り返し振動パターンを示す振動情報を生成する。
【０１６９】
例えば、図１５に示すパターンＢの振動パターンを３回繰り返す振動パターンを規定する場合、上記実施形態においては、変数決定部３０２は、４つの変数（すなわち、変数ａ１，ｆ１，ｔ１，ｔ２）からなる組を３組決定することになる。これに対して、関数が繰り返し変数を含む場合には、ゲームシステム１は、４つの変数の組を１組と、１つの繰り返し変数とのみを決定することで上記振動パターンを規定することができる。このように、繰り返し変数を用いることによって、繰り返し振動パターンをより少ないデータ量で規定することができる。
【０１７０】
また、振動モデルが、周波数または振幅が時間に応じて増加または減少する期間を含む場合、当該振動モデルを示す関数は、増加または減少の変化態様を示す変数を含んでいてもよい。この変数は、変化態様が、例えば、線形の変化であるか、放物線に沿った変化であるか、あるいは、サインカーブに沿った変化であるか等を示す。上記変数を用いることによって、ゲームシステム１は、振動パターンにおける周波数および振幅の変化態様を多様にすることができ、振動子をより多様な振動パターンで振動させることができる。
【０１７１】
（コントローラに関する変形例）
上記実施形態および変形例においては、右コントローラ４が備える振動子１１７の振動を制御する場合を例として説明したが、左コントローラ３が備える振動子についても、右コントローラ４と同様に制御することができる。例えば、左コントローラ３がリング型拡張装置５に装着可能である場合には、リング型拡張装置５は、右コントローラ４の振動子１１７と同様の処理によって左コントローラ３の振動子を制御することができる。また、本体装置２は、右コントローラ４の振動子１１７と同様の処理によって、左コントローラの振動子を無線通信によって制御することができる。また、本体装置２は、右コントローラ４および左コントローラ３の両方と通信を行うことによって、２つのコントローラ３および４の振動子を同時に制御するようにしてもよい。
【０１７２】
また、上記実施形態においては、振動子に対する制御を、当該振動子を備える装置（すなわち、右コントローラ４）とは異なる他の装置（すなわち、リング型拡張装置５または本体装置２）が行う場合を例として説明した。ここで、他の実施形態においては、振動子を備える装置自身によって振動子を制御する処理が実行されてもよい。つまり、他の実施形態においては、振動子を備える単一の情報処理装置が、上記関数記憶部、変数決定部、生成部、および、振動制御部を備える構成であってもよい。
【０１７３】
上記実施形態においては、振動子１１７はリニア振動モータであり、振動とともに音を出力する（換言すれば、振動によって音が出力される）ことが可能である。上記実施形態においては、振動子１１７が出力する振動は、音として出力される振動（すなわち、人間の可聴帯域内の周波数を含む振動）であってもよいし、音として出力されない振動（すなわち、人間の可聴帯域内の周波数を含まない振動）であってもよい。
【産業上の利用可能性】
【０１７４】
上記実施形態は、振動子の制御に用いられるデータ量を少なくすること等を目的として、例えば、ゲームシステムやゲームプログラムに利用することが可能である。
【符号の説明】
【０１７５】
１  ゲームシステム
２  本体装置
４  右コントローラ
５  リング型拡張装置
８１  プロセッサ
１１１  通信制御部
１１２  メモリ
１１６  コーデック部
１１７  振動子
２１３  制御部
３０１，３１２  関数記憶部
３０２，３１１  変数決定部
３０３  生成部
３０４  振動制御部
【要約】
【課題】振動子の制御に用いられるデータ量を少なくする。
【解決手段】情報処理システムは、振動子を備える。情報処理システムは、振動の周波数に関する時間変化のモデルを示し、当該モデルにおけるある期間の周波数を示す周波数変数と、当該期間に関する期間変数とを変数とする周波数モデル関数を記憶する。情報処理システムは、周波数変数の値と、期間変数の値とを決定する。情報処理システムは、決定された周波数変数の値と、決定された期間変数の値とを周波数モデル関数に適用することによって得られる周波数の時間変化によって規定される振動パターンを示す振動情報を生成する。情報処理システムは、振動情報に基づいて振動子の振動を制御する。
【選択図】図１１【図１】
0006731531.tif 000002
【図２】
0006731531.tif 000003
【図３】
0006731531.tif 000004
【図４】
0006731531.tif 000005
【図５】
0006731531.tif 000006
【図６】
0006731531.tif 000007
【図７】
0006731531.tif 000008
【図８】
0006731531.tif 000009
【図９】
0006731531.tif 000010
【図１０】
0006731531.tif 000011
【図１１】
0006731531.tif 000012
【図１２】
0006731531.tif 000013
【図１３】
0006731531.tif 000014
【図１４】
0006731531.tif 000015
【図１５】
0006731531.tif 000016
【図１６】
0006731531.tif 000017
【図１７】
0006731531.tif 000018
【図１８】
0006731531.tif 000019
【図１９】
0006731531.tif 000020
【図２０】
0006731531.tif 000021
【図２１】
0006731531.tif 000022
【図２２】
0006731531.tif 000023