(57)【特許請求の範囲】
【請求項１】
コントローラに接続される情報処理装置であって、
前記コントローラから受信される情報に基づいて、前記コントローラに鳴動デバイスが備えられているか否かを判断する手段と、
前記判断の結果により、鳴動コマンドを出力するか否かを制御する手段と、
を含むことを特徴とする情報処理装置。
【請求項２】
少なくとも一つの鳴動デバイスを備えたコントローラに接続される情報処理装置であって、
前記コントローラから鳴動デバイスの種別情報を取得する手段と、
鳴動コマンドを受け入れて、当該鳴動コマンドと、前記取得した種別情報とに基づき、前記鳴動デバイスを駆動するための駆動パラメータ情報を生成する手段と、
前記生成した駆動パラメータ情報を前記コントローラに出力する手段と、を含み、
当該駆動パラメータ情報が、前記鳴動デバイスの制御に供されることを特徴とする情報処理装置。
【請求項３】
少なくとも一つの鳴動デバイスを備えたコントローラであって、
当該鳴動デバイスの駆動態様を規定する駆動パラメータ情報の入力を受けて、予め定められた、基準鳴動デバイスと自己の備える鳴動デバイスとの相違に基づくパラメータ変換テーブルを参照して、入力された駆動パラメータ情報を変換し、
当該変換後の駆動パラメータ情報が、前記鳴動デバイスの制御に供されることを特徴とするコントローラ。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、スピーカなどの鳴動デバイスを備えたコントローラ、及びそれに接続される情報処理装置に関する。
【背景技術】
【０００２】
従来、例えば家庭用ゲーム機のコントローラについては、種々のものが考案されている。その中には、振動モーターを内蔵し、本体側からの指示によってコントローラを振動させるものもある。
【特許文献１】米国特許第6645076号
【発明の開示】
【発明が解決しようとする課題】
【０００３】
このようにコントローラに種々のデバイスを搭載する例として、スピーカなどの鳴動デバイスを搭載して、ゲームアプリケーションなどの指示に基づき、コントローラ側で音声を鳴動させるコントローラも考えられる。しかしながら、スピーカとなる鳴動デバイスも多様であり、同じ制御を行なわせても、鳴動する音程が異なってしまう場合もある。また従来の技術では、このようにコントローラを多様化させる場合に配慮されていない。
【０００４】
本発明は上記実情に鑑みて為されたもので、少なくとも一つのスピーカを備えたコントローラ、またはそれに接続される情報処理装置であって、多様なコントローラに対応可能な情報処理装置及びコントローラを提供することを、その目的の一つとする。
【課題を解決するための手段】
【０００５】
上記従来例の問題点を解決するための本発明は、コントローラに接続される情報処理装置であって、前記コントローラから受信される情報に基づいて、前記コントローラに鳴動デバイスが備えられているか否かを判断する手段と、前記判断の結果により、鳴動コマンドを出力するか否かを制御する手段と、を含むことを特徴としている。
【０００６】
また本発明の一態様は、少なくとも一つの鳴動デバイスを備えたコントローラに接続される情報処理装置であって、前記コントローラから鳴動デバイスの種別情報を取得する手段と、鳴動コマンドを受け入れて、当該鳴動コマンドと、前記取得した種別情報とに基づき、前記鳴動デバイスを駆動するための駆動パラメータ情報を生成する手段と、前記生成した駆動パラメータ情報を前記コントローラに出力する手段と、を含み、当該駆動パラメータ情報が、前記鳴動デバイスの制御に供されることを特徴としている。
【０００７】
さらに本発明の別の態様は、少なくとも一つの鳴動デバイスを備えたコントローラであって、当該鳴動デバイスの駆動態様を規定する駆動パラメータ情報の入力を受けて、予め定められた、基準鳴動デバイスと自己の備える鳴動デバイスとの相違に基づくパラメータ変換テーブルを参照して、入力された駆動パラメータ情報を変換し、当該変換後の駆動パラメータ情報が、前記鳴動デバイスの制御に供されることを特徴としている。
【発明を実施するための最良の形態】
【０００８】
本発明の実施の形態について図面を参照しながら説明する。以下の説明においては、図１に示すように、情報処理装置がその一例として、家庭用のゲーム機本体１であり、コントローラ２は、このゲーム機本体１に有線または無線にて接続されている場合を例として説明する。
【０００９】
ゲーム機本体１は、図２に示すように、制御部１１と、記憶部１２と、表示制御部１３と、外部インタフェース部１４と、ディスクドライブ１５と、コントローラ通信部１６とを含んで構成されている。
【００１０】
また、コントローラ２は、図３に示すように、制御部２１と、記憶部２２と、音声処理部２３と、ウーファスピーカ２４と、ツイータースピーカ２５と、バッテリ２６と、通信部２７とを内蔵し、操作ボタン群である第１、第２の操作部３１，３２と、アナログ操作部３３とを備えて構成されている。
【００１１】
ゲーム機本体１の制御部１１は、例えばプロセッサチップであり、ディスクドライブ１５にセットされた外部記憶媒体から読み出されるプログラム（例えばパーソナルコンピュータによって実行されるアプリケーションや、ゲームプログラムなど）を記憶部１２に格納して実行する。本実施の形態の制御部１１の動作の内容の例については、後に詳しく述べる。
【００１２】
記憶部１２は、ＲＡＭ（Random Access Memory）等の記憶素子を含んで構成され、制御部１１によって実行されるプログラムを保持する。また、この記憶部１２は、制御部１１が処理を行うときに必要となるデータを保持するワークメモリとしても動作する。
【００１３】
表示制御部１３は、グラフィックス処理ボード等であり、制御部１１から入力される指示に従って、画像を描画し、当該描画した画像の情報を外部に接続されているディスプレイ（テレビ受像機等）に出力して、表示させる。
【００１４】
外部インタフェース部１４は、いわゆるブリッジチップであり、制御部１１と、ディスクドライブ１５と、コントローラ通信部１６とに接続されている。この外部インタフェース部１４は、制御部１１から入力される指示に従って、制御部１１が出力する信号（出力信号）の出力先を選択し、当該選択した出力先に対して、制御部１１の出力信号を選択的に出力する。また、外部インタフェース部１４は、ディスクドライブ１５やコントローラ通信部１６から入力される信号を制御部１１に出力する。
【００１５】
ディスクドライブ１５は、例えばBlu-ray Discや、ＤＶＤ等のディスクから、記録されている情報を読み取って、外部インタフェース部１４を介して制御部１１に出力する。
【００１６】
コントローラ通信部１６は、コントローラ２との間で無線または有線にて通信可能に接続され、コントローラ２から入力される利用者の操作の内容を表す情報を制御部１１に出力する。また、このコントローラ通信部１６は、制御部１１から入力される指示に従って鳴動するべき音声を表すデータ等をコントローラ２へ送出する。このコントローラ通信部１６は、後に示すように、各コントローラ２との間で定期的に通信を行なう。また各コントローラ２に対する信号の送出タイミングを時間的にずらして、時分割多重方式にて複数のコントローラ２との間の通信を行なうこととしている。
【００１７】
コントローラ２は、例えば図４に示すような外観をなし、把持部３０Ｒ，３０Ｌを有している。ユーザは、これら把持部３０をそれぞれ左右の手で把持することになる。ユーザが把持部３０を把持した状態で、各親指にて操作可能な位置には、第１，第２の操作部３１，３２と、アナログ操作部３３Ｒ，３３Ｌとがそれぞれ設けられている。
【００１８】
ここで第１の操作部３１には、上方向指示キー３１ａ、下方向指示キー３１ｂ、右方向指示キー３１ｃ及び左方向指示キー３１ｄが設けられている。ユーザはこれらの指示キー３１ａ、３１ｂ、３１ｃ及び３１ｄを利用して、例えば画面上の操作対象を特定する。また、第２の操作部３２には、三角（「△」）形状の刻印が設けられた三角ボタン３２ａと、Ｘ字（「×」）状の刻印が設けられたＸボタン３２ｂと、Ｏ字（「○」）状の刻印が設けられたＯボタン３２ｃと、矩形（「□」）形状の刻印が設けられた矩形ボタン３２ｄとが設けられている。これらのボタン３２ａ，３２ｂ，３２ｃ及び３２ｄは、例えば、指示キー３１ａ，３１ｂ，３１ｃ及び３１ｄにて特定された操作対象に応じて、夫々操作内容が割り当てられる。これによりユーザは、適切なボタン３２ａ，３２ｂ，３２ｃ及び３２ｄを選択し押下することで指示キー３１ａ，３１ｂ，３１ｃ及び３１ｄにて特定された操作対象に対する操作を行うことができることになる。
【００１９】
アナログ操作部３３Ｒ，３３Ｌは、傾倒操作が可能となっており、また、傾倒させた状態で、この回転操作が可能となっている。このアナログ操作部３３Ｒ，３３Ｌは、非傾倒操作時には、起立した状態（傾きのない状態）でそのポジションが保持されるようになっている（基準ポジション）。そして、アナログ操作部３３Ｒ或いはアナログ操作部３３Ｌを押圧操作しながら傾倒操作すると、上記基準ポジションに対する傾き量と傾き方向に応じたｘｙ座標上の座標値（ｘ,ｙ）が検出され、この座標値が操作出力として制御部２１に出力される。
【００２０】
また、このコントローラ２には、ゲーム機本体１に対してゲームプログラムの実行を指示するためのスタートボタン３４や、各種モードを切替える指示などを行うためのセレクトボタン３５等を有する。
【００２１】
さらに、このコントローラ２には、各把持部３０Ｒ，３０Ｌを左右の手で把持した状態において例えば各手の人差し指等で操作可能な位置に、右ボタン３８及び左ボタン３９が設けられている。この各ボタン３８，３９は、それぞれコントローラの厚さ方向に並設された、第１，第２の右ボタン３８Ｒ１，３８Ｒ２、及び第１，第２の左ボタン３９Ｌ１，３９Ｌ２を有する。
【００２２】
コントローラ２の制御部２１は、マイクロコンピュータ等であり、記憶部２２に格納されているプログラムに従って動作する。この制御部２１は、ゲーム機本体１側の電源が投入されたとき（ゲーム機本体１との通信を開始するとき）など所定のタイミングにおいて、予め記憶部２２に格納されるコントローラ種別情報をゲーム機本体１に送出する。また、この制御部２１は、操作ボタン群である第１、第２の操作部３１，３２やアナログ操作部３３に対する利用者の操作内容を受けて、当該操作内容を表す情報を、通信部２７を介してゲーム機本体１側に送信出力する。
【００２３】
また、この制御部２１は、ゲーム機本体１側から通信部２７を介して受信される指示に従ってウーファスピーカ２４やツイータースピーカ２５を鳴動制御する。この鳴動制御の処理については後に詳しく述べる。
【００２４】
記憶部２２は、ＲＡＭやＲＯＭを含んで構成され、例えばＲＯＭ内部に制御部２１によって実行されるプログラムを保持している。また、この記憶部２２は、制御部２１のワークメモリとしても動作する。また、この記憶部２２には、コントローラ２の種別を表すコントローラ種別情報が格納される。
【００２５】
音声処理部２３は、Ｄ／Ａ変換器（ＤＡＣ）や、フィルタ（アナログフィルタ）、アンプ等を含んで構成され、制御部２１から入力されるデータに基づいて音声信号を生成し、ウーファスピーカ２４と、ツイータースピーカ２５との少なくとも一方に、生成した音声信号を出力する。
【００２６】
ウーファスピーカ２４は、本発明の第１スピーカに相当し、音声処理部２３が出力する音声信号のうち比較的低周波数領域の音声信号を鳴動する。このウーファスピーカ２４は、例えば図３に示すように、２つの弾性体４１ａ、４１ｂによってその両側を支持された錘４２を備え、この錘を弾性体４１の弾性力の方向に沿って電磁気的な作用などによって音声信号に従って移動制御するものであってもよい。この図３に示す構成のウーファスピーカによると、小型化を図りつつ低周波数領域の再現特性を向上できる。
【００２７】
ツイータースピーカ２５は、本発明の第２スピーカに相当し、音声処理部２３が出力する音声信号のうち、ウーファスピーカ２４よりも比較的高い周波数領域の音声信号を鳴動する。バッテリ２６は、コントローラ２が無線にて接続される際に、各部に電源を供給する。このバッテリ２６は、例えば二次電池であってもよい。
【００２８】
通信部２７は、有線または無線にてゲーム機本体１との間で通信し、ゲーム機本体１から音声信号など、コントローラ２側で鳴動するべき音声に関する指示を受信してバッファに保持し、制御部２１から入力される指示に従ってバッファから制御部２１に出力する。また、この通信部２７は、利用者の操作内容に係る情報の入力を制御部２１から受けて、ゲーム機本体１へ送信出力する。
【００２９】
このコントローラ２において音声を鳴動させるゲーム機本体１の機能的な構成は、図５に示すように、ゲーム等のアプリケーションプログラム実行部５１と、ドライバプログラム実行部５２とを含み、ドライバプログラム実行部５２には、鳴動コマンド受入部５５と、音声データ生成部５６と、エンコーダ５７とを含んで構成される。
【００３０】
また、コントローラ２は、機能的には、図６に示すように、データ受入部６１と、鳴動制御部６２と、鳴動部６３とを含む。鳴動部６３は、ウーファスピーカ２４とツイータースピーカ２５とのそれぞれに対応して、フィルタＦ及びアンプＡを含むアナログ回路を備えてなる。
【００３１】
ここでゲーム機本体１側のアプリケーションプログラム実行部５１は、ゲームプログラム等を実行するものである。このアプリケーションプログラム実行部５１は、コントローラ２から受信されるコントローラ種別情報を参照し、コントローラ２が鳴動デバイスを備えているか否かを調べる。例えば図７に示すように、受信され得るコントローラ種別情報ごとに、備えている鳴動デバイスの種別を特定するデバイス種別情報を関連づけたデバイス種別テーブルを記憶部１２に格納しておき、このデバイス種別テーブルを参照して、コントローラ２から受信されるコントローラ種別情報に少なくとも一つのデバイス種別情報が関連づけられているか否かによって特定されるコントローラ２が鳴動デバイスを備えているか否かを調べてもよい。
【００３２】
なお、受信されているコントローラ種別情報を取得する方法としては、制御部１１がシステムの処理として、コントローラ２から受信されるコントローラ種別情報を記憶部１２の所定の領域に予め格納しておき、ゲームプログラムが当該格納されているコントローラ種別情報を参照する特定のシステム命令（ＡＰＩ）を呼び出した場合に、制御部１１がアプリケーションプログラム実行部５１に対して、当該コントローラ種別情報を記憶部１２から読み出して出力するようにしておけばよい。
【００３３】
ここで鳴動デバイスを備えていると判断したときにはアプリケーションプログラム実行部５１は、受信されたコントローラ種別情報に関連づけられているデバイス種別情報をエンコーダ５７に出力する。
【００３４】
またこのアプリケーションプログラム実行部５１は、ゲームプログラムの指示に従い、コントローラ２が鳴動デバイスを備えていると判断される場合に鳴動コマンドの出力するよう指示があればコントローラ２側で鳴動させるべき音声を指示する鳴動コマンドをドライバプログラム実行部５２に出力する。ここで鳴動コマンドでは、例えば低音音声波形データと、高温音声波形データとを指定する。一方で、アプリケーションプログラム実行部５１は、ゲームプログラムの指示に従い、コントローラ２が鳴動デバイスを備えていないと判断される場合に鳴動コマンドの出力指示がなければ、鳴動コマンドの出力を行なわない。このように、アプリケーションプログラム実行部５１は、コントローラ２が鳴動デバイスを備えているか否かの判断の結果により、鳴動コマンドを出力するか否かを制御する。
【００３５】
ドライバプログラム実行部５２の鳴動コマンド受入部５５は、アプリケーションプログラム実行部５１から入力される音声コマンドを受け入れて、音声データ生成部５６に出力する。音声データ生成部５６は、入力される音声コマンドによって指定される低音音声波形データと、高温音声波形データとを合成して、合成波形データを生成する。ここで合成は、各波形データを加算してミキシングする処理でもよい。
【００３６】
エンコーダ５７は、アプリケーションプログラム実行部５１から入力される鳴動デバイスの種類を表すデバイス種別情報を参照し、音声データ生成部５６にて生成された合成波形データを符号化して出力する。このエンコーダ５７は、例えば、合成波形データの所定のサンプリングタイミングごとの周波数値を数値としてエンコードして出力するものである。本実施の形態においては、ゲーム機本体１の記憶部１２は、デバイス種別情報ごとに、鳴動コマンドに応じた駆動パラメータ情報を図８に示すようなテーブルとして保持しておく。ここでは鳴動コマンドは、エンコーダ５７が合成波形データの各サンプリングタイミングにおいて取得した、鳴動するべき音声の周波数である。そして、エンコーダ５７は、予め取得されている種別情報に対応するテーブルを参照して、各サンプリングタイミングにおける周波数に対応する駆動パラメータ情報としての数値を取得する。エンコーダ５７は、こうして生成した駆動パラメータ情報を、コントローラ通信部１６を介してコントローラ２側へ送信する。
【００３７】
このようにしてゲーム機本体１の制御部１１は、コントローラ２から受信される鳴動デバイスのデバイス種別情報を取得し、以下、鳴動コマンドを受け入れたときに、当該鳴動コマンドと、上記取得したデバイス種別情報とに基づき、鳴動デバイスを駆動するための駆動パラメータ情報を生成する。
【００３８】
一方、コントローラ２のデータ受入部６１は、ゲーム機本体１側から受信される、駆動パラメータ情報を鳴動制御部６２に出力する。
【００３９】
鳴動制御部６２は、データ受入部６１にて受け入れた駆動パラメータ情報から、合成波形データを復号するデコーダを備える。鳴動制御部６２は、このデコーダにて合成波形データを復号する。すなわち、鳴動制御部６２は、サンプリングタイミングごとの周波数値である駆動パラメータ情報から、鳴動デバイスであるウーファスピーカ２４とツイータースピーカ２５とのそれぞれに共通に出力するべきパルス信号を生成して鳴動部６３に出力する（鳴動制御）。
【００４０】
なお、このデコーダとしての復号の処理は、制御部２１によって行うこととしてもよいし、制御部２１とは別に音声処理部２３においてハードウエア的に行ってもよい。
【００４１】
鳴動部６３は、音声処理部２３の機能として実現される。この鳴動部６３は、鳴動制御部６２が出力するパルス信号を共通の信号源として、ウーファスピーカ２４とツイータースピーカ２５とのそれぞれに対応して設けられたアナログ回路に、それぞれ出力する。ここでウーファスピーカ２４に対応して設けられたアナログ回路においては、鳴動制御部６２が出力するパルス信号から所定のカットオフ周波数を越える周波数成分を除去する第１フィルタＦ１と、当該第１フィルタＦ１を通過した信号を増幅してウーファスピーカ２４に出力する第１アンプＡ１とを含む。
【００４２】
また、ツイータースピーカ２５に対応して設けられたアナログ回路においては、鳴動制御部６２が出力するパルス信号から少なくとも所定の周波数帯域を通過させる第２フィルタＦ２と、当該第２フィルタＦ２を通過した信号を増幅してツイータースピーカ２５に出力する第２アンプＡ２とを含む。
【００４３】
ここで第１フィルタＦ１のカットオフ周波数ｆ１と、第２フィルタＦ２が通過させる帯域の下限周波数ｆ２とは、ｆ１≦ｆ２となるように設定されてもよい。これにより、所定の周波数未満の音声については専らウーファスピーカ２４を鳴動させ、ツイータースピーカ２５の鳴動を抑制できる。
【００４４】
そして、この鳴動部６３の第１アンプＡ１及び第２アンプＡ２によりそれぞれ増幅された信号により、ウーファスピーカ２４とツイータースピーカ２５とが鳴動される。
【００４５】
本実施の形態において特徴的なことの一つは、同じ周波数のパルス信号が入力された場合であっても、ウーファスピーカ２４やツイータースピーカ２５の種類によっては異なる音程（周波数）の音声が鳴動される場合があることに配慮して、各鳴動デバイスの種別に応じたパルス信号が生成されるよう、情報処理装置としてのゲーム機本体１側において駆動パラメータ情報を予め調整して出力するようにしていることである。これにより、多様な鳴動デバイスに対応して、鳴動させる音声の周波数を統一することができる。
【００４６】
本実施の形態ではゲーム機本体１とコントローラ２との間は、図９に示すように周期的に下り（ゲーム機本体１からコントローラ２へ）の信号と上り（コントローラ２からゲーム機本体１へ）の信号とを含むデータパケットを送受することで行なわれる。ここで下り信号に含まれるデータは、通信部２７のレジスタに取り込まれて保持される。そして通信部２７は制御部２１に対して読み出しの要求を発行する（Ｓ１）。制御部２１は、通信部２７のレジスタから音声データを取得してワークメモリに取り込む（Ｓ２）。そしてこの取り込んだ音声データから通信周期の間、鳴動させ続けるに十分な音声データ部分を音声処理部２３に出力する（Ｓ３）。
【００４７】
一方、操作部３１、３２や、アナログ操作部３３に対する利用者の操作に係るデータは、制御部２１のワークメモリに取り込まれ（Ｓ４）、このワークメモリから所定のタイミングで、通信部２７のバッファに書込まれる（Ｓ５）。通信部２７は、次の上り信号の通信タイミングで、この信号をゲーム機本体１側へ送出する（Ｓ６）。
【００４８】
なお、本実施の形態では、ゲーム機本体１側は、この通信周期を超える期間に亘り鳴動させ続けるに十分な音声データを送出してもよい。この場合、コントローラ２は、当該音声データを記憶部２２などに保持しておく。そして、ゲーム機本体１側からの通信において音声データが到達しない場合（何らかの理由により下りの信号が受信されない場合、または他のデータ量が多く、十分な量の音声データが受信できない場合）には、この記憶部２２に格納されている音声データを利用して音声の鳴動再生を継続する。
【００４９】
コントローラ２に内蔵される各部は、その例を図１０（ａ）から（ｃ）に示すように、把持部３０の一方にウーファスピーカ２４を配置し、制御部２１や記憶部２２等を実装したプリント基板と、バッテリ２６とをコントローラ２の中央部に配置し、ツイータースピーカ２５を、コントローラ２の中央部手前側に配置することとしてもよい（図１０（ａ））。また、この配置に代えて、バッテリ２６をウーファスピーカ２４とは反対側の把持部３０に収納してもよい（図１０（ｂ））。図１０（ｂ）では、バッテリ２６がコントローラ２の右側の把持部３０Ｒに内蔵される例を示しているが、左右を逆にしてもよい。つまり、バッテリ２６がコントローラ２の左側の把持部３０Ｌに内蔵されてもよい。さらに、図１０（ａ）においてバッテリ２６とウーファスピーカ２４の配置位置を交換してもよい（図１０（ｃ））。なお、図１０は、図４に例示したコントローラ２を平面視した状態において、内部を透視した場合の概要を表す概要図である。
【００５０】
［音声信号の変形例］
なお、ここまでの説明では、ゲーム機本体１側においてアプリケーションプログラム実行部５１側で音声波形信号を生成ないし指示して、これを符号化して送信することとしたが、ゲーム機本体１からコントローラ２へと送信される音声の鳴動指示（鳴動パラメータ情報）はこれに限られるものではない。
【００５１】
例えばゲーム機本体１側において、予め複数の波形データをそれぞれ固有の波形識別子に関連づけて記憶部１２などに保持させておき、アプリケーションプログラム実行部５１から指定される波形識別子に関連づけて保持している波形データを、符号化して送信してもよい。この場合にも、アプリケーションプログラム実行部５１から音声波形信号の入力を受けてもよく、そのときには波形データによって表される波形信号を、音声波形信号にミキシングして合成し、その後に符号化すればよい。
【００５２】
さらにこの波形データは符号化済みの波形データであってもよい。この場合は、アプリケーションプログラム実行部５１から指定される波形識別子に関連づけて保持している波形データの符号を送信すればよい。この場合においてコントローラ２の鳴動デバイスの種別に対応する符号とするためには、ゲーム機本体１の記憶部１２に、図８に示したテーブルに代えて、入力される符号に応じて出力するべき駆動パラメータ情報を関連づけるテーブルを保持しておく。そしてこのテーブルを参照して、波形データの符号を、駆動パラメータ情報に変換し、この変換後の駆動パラメータ情報をコントローラ２に送信する。
【００５３】
また、さらにアプリケーションプログラム実行部５１から音声波形信号の入力を受けている場合は、このアプリケーションプログラム実行部５１から入力される音声波形信号を符号化した上で、符号化済みの波形データを多重化して送信する。このように多重化されている場合は、コントローラ２側では、当該多重化されたデータから、符号化済みの波形データと、符号化された音声波形信号を分離し、それぞれを復号してから合成することになる。
【００５４】
このように予め波形データを用意しておくと、例えばゲームにおいてゲームキャラクタの動作と同期して出力するべき音声（足音や銃撃音等）について、アプリケーションプログラム実行部５１からデバイスドライバまでに音声波形信号そのものを出力する必要がないので、同期制御が容易となる。また利用頻度の高い効果音などをここでの波形データとして用意しておくことで、アプリケーションプログラムの開発を容易にできる。なお、ここでの波形データは、ウーファスピーカ２４にて主として鳴動させるべき音声に係るもの（第１フィルタＦ１を通過し、第２フィルタＦ２に阻止される周波数成分を主として含むもの）や、ツイータースピーカ２５にて主として鳴動させるべき音声に係るもの（第１フィルタＦ１にて阻止され、第２フィルタＦ２を通過する周波数成分を主として含むもの）など、コントローラ２に設けられたスピーカーごとに対応した周波数特性を有するデータとしておいてもよい。
【００５５】
さらに、ゲーム機本体１からコントローラ２へと送信される音声のデータは、ステレオ音声など、複数チャネルのデータであってもよい。例えば左チャネル（Ｌｃｈ）と、右チャネル（Ｒｃｈ）とのそれぞれの信号を含んでもよい。
【００５６】
この場合において、ウーファスピーカ２４とツイータースピーカ２５とのそれぞれで鳴動させるべき音声を、互いに異なるチャネルの信号としてもよい。すなわちこの例では、互いに異なるチャネルの音声信号がそれぞれ、ウーファスピーカ２４とツイータースピーカ２５との各々に対する信号源となる。このようにするときには、コントローラ２の鳴動部６３では、予めウーファスピーカ２４のための信号として定められたチャネルの音声信号（例えばＬｃｈの音声信号）を、第１フィルタＦ１、第１アンプＡ１を介して濾過、増幅し、ウーファスピーカ２４に出力する。同様に、予めツイータースピーカ２５のための信号として定められたチャネルの音声信号（例えばＲｃｈの音声信号）を、第２フィルタＦ２、第２アンプＡ２を介して濾過、増幅し、ツイータースピーカ２５に出力する。この例によると、例えば低音部（ウーファスピーカ２４）だけを鳴動させてコントローラ２の筐体を響かせたり、中・高音部（ツイータースピーカ２５）だけを鳴動させて軽い音声を鳴動させるなどの演出効果を得ることができる。
【００５７】
また、複数の鳴動デバイスがある場合は、各鳴動デバイスに対して出力するべき駆動パラメータ情報を個別に出力してもよい。すなわちゲーム機本体１とコントローラ２との間で送受されるデータが、例えば８ビットずつのデータ要素の列であり、このデータ要素の列によりコマンドとパラメータ群とを記述している場合、コマンドが、例えば「４２Ｈ」（末尾のＨは１６進数であることを表す）であれば、引き続く所定個数のデータ要素を駆動パラメータ情報として、ゲーム機本体１とコントローラ２とが送受信し、コントローラ２において、各鳴動デバイスについて、対応する駆動パラメータ情報を用いて鳴動制御を行なうようにしてもよい。また、例えば「４９Ｈ」であれば、引き続く１つのデータ要素を鳴動パラメータ情報とするなどとして定めておき、この場合はコントローラ２は、各鳴動デバイスに対して共通の鳴動パラメータ情報に基づく鳴動制御を行なうこととしてもよい。
【００５８】
このようにコントローラ２に含まれる複数のスピーカを選択的に鳴動させるための構成としては、このように複数チャネルの音声信号を用いる方法や、複数の駆動パラメータ情報を連続的に送信する方法のほか、次のような方法も考えられる。
【００５９】
すなわち、ゲーム機本体１側の制御部２１が、鳴動させるべきスピーカを特定する鳴動スピーカ特定情報をコントローラ２側へ送信し、コントローラ２の音声処理部２３が、当該鳴動スピーカ特定情報によって特定されるスピーカに対してのみ、音声信号を出力する。例えば、ゲーム機本体１側の制御部２１が、ウーファスピーカ２４を特定する鳴動スピーカ特定情報を送信したとする。このとき、コントローラ２の制御部２１は、当該鳴動スピーカ特定情報を音声処理部２３に出力する。音声処理部２３は、入力された鳴動スピーカ特定情報によって特定されるスピーカ（ここではウーファスピーカ２４）に対し、ゲーム機本体１側から受信される音声信号を出力する。つまり、ここでは音声信号は、第１フィルタＦ１と第１アンプＡ１とを介してウーファスピーカ２４には出力されるが、第２フィルタＦ２には出力されず、従ってツイータースピーカ２５は鳴動しないよう制御される。
【００６０】
さらに、コントローラ２の音声処理部２３は、例えばＭＩＤＩ（Musical Instruments Digital Interface）の規格に定められた音楽信号（音程、音長、音の強度、音の種類、音色効果などの情報を含む音楽の演奏情報）に基づいて音声信号を生成する機能（シンセサイザ）を備えてもよい。具体例としてＭＩＤＩの音楽信号としては、ＳＭＦ（Standard
MIDI File）などが知られている。コントローラ２の音声処理部２３では、この演奏情報に基づいてシンセサイザを鳴動させる。このようなシンセサイザは、例えば携帯電話機の着信音を鳴動させるためのチップとして広く知られたものを利用して実現できる。
【００６１】
このシンセサイザを備えた音声処理部２３では、ゲーム機本体１側が送信した音声信号に、このシンセサイザで合成した音声信号をミキシングして、ウーファスピーカ２４やツイータースピーカ２５に接続されたアナログ回路へそれぞれ出力する。なお、選択的に鳴動させる場合は、指示されたスピーカに対応するアナログ回路へ出力する。
【００６２】
コントローラ２においては、さらに予め複数の波形データをそれぞれ固有の波形識別子に関連づけて記憶部２２などに保持させておいてもよい。ゲーム機本体１側では、鳴動させたい波形データに対応する波形識別子をコントローラ２へ伝達する。コントローラ２の制御部２１は、ゲーム機本体１から受信される音声データに、この波形データを合成（ミキシング）して、音声処理部２３に出力する。
【００６３】
以上のように本実施の形態では、
（１）ゲーム機本体１側において符号化されていない音声波形データを、アプリケーションプログラム実行部５１にて生成ないし保持しておき、これを符号化して送信する。
（２）ゲーム機本体１側において符号化されていない音声波形データを予めデバイスドライバが利用可能なように保持させておき、アプリケーションプログラム実行部５１からは、デバイスドライバに対して保持している音声波形データを鳴動させる指示（複数ある場合には鳴動の対象となる音声波形データを特定する情報を含む）を出力し、デバイスドライバにて、これを符号化して送信する。
（３）ゲーム機本体１側において符号化された音声波形データを予めデバイスドライバが利用可能なように保持させておき、アプリケーションプログラム実行部５１からは、デバイスドライバに対して保持している音声波形データを鳴動させる指示（複数ある場合には鳴動の対象となる音声波形データを特定する情報を含む）を出力し、デバイスドライバが当該指示に従って音声波形データを送信する。
（４）コントローラ２側においてＭＩＤＩ信号等、音楽信号に基づく音声信号を生成する構成を備えておき、ゲーム機本体１側からは音楽信号を送信し、コントローラ２において当該ゲーム機本体１側から受信される音楽信号に基づいて音声信号を生成する。
（５）ゲーム機本体１側において符号化されていない音声波形データを保持しておき、ゲーム機本体１は、当該コントローラ２で保持している音声波形データを鳴動させる指示（複数ある場合には鳴動の対象となる音声波形データを特定する情報を含む）を出力し、コントローラ２にて、当該音声波形データに基づく音声信号を出力する。
などの種々の構成を採用し得る。なお、これらを適宜組み合わせて、例えば符号化前のデータ同士はデータ値どうしを加算するなどの処理により、また、音声信号はアナログミキサなどによりミキシングして合成した音声を鳴動させるようにしてもよい。
【００６４】
なお、例えばＭＩＤＩ信号のみを用いる場合は、コントローラ２側においてＤ／Ａ変換器は必ずしも必要でない。
【００６５】
［振動コマンドの変換］
さらに従来、内部に振動デバイスを備えたコントローラを想定したゲームなどのアプリケーションプログラムもある。そこで、本実施の形態のゲーム機本体１においては、コントローラ２が出力するコントローラ種別情報に、少なくとも一つの鳴動デバイスに係るデバイス種別情報が関連づけられていれば、こうした振動デバイスに対する振動コマンドを、音声信号に変換して、例えばコントローラ２のウーファスピーカ２４を介して鳴動させるようにしてもよい。これにより、振動モーターがあることを前提に開発されたアプリケーションプログラムの振動コマンドに応答できるようになる。
【００６６】
この場合のゲーム機本体１の機能的な構成は、図１１に示すように、ゲーム等のアプリケーションプログラム実行部５１と、振動変換部５３と、ドライバプログラム実行部５２とを含んで構成される。ここで図５に示したものと同様の構成となる部分については、同じ符号を付して詳細な説明を省略する。
【００６７】
この例では、アプリケーションプログラム実行部５１は、実行の対象となったアプリケーションプログラムに含まれる指示に従い、振動デバイスに対する振動指示コマンドを発行する。そしてアプリケーションプログラム実行部５１は、コントローラ２が出力するコントローラ種別情報に、少なくとも一つの鳴動デバイスに係るデバイス種別情報が関連づけられているか否かを判断し、関連づけられていなければ、当該振動指示コマンドをそのままコントローラ２に送信出力する。
【００６８】
一方、コントローラ２が出力するコントローラ種別情報に、少なくとも一つの鳴動デバイスに係るデバイス種別情報が関連づけられていれば、発行した振動指示コマンドを振動変換部５３に出力する。
【００６９】
このようにコントローラ２の種別に応じて、コントローラ２に出力するコマンドを異ならせる（ここでは振動コマンドと鳴動コマンドとを選択的に出力する）ことで、コントローラ２が備えているデバイスに対応した指示を出力できる。
【００７０】
振動変換部５３は、制御部１１の処理として実現できる。具体的な例としてこの振動変換部５３は図１１に示すように、振動コマンド解析部７１と、音声データ生成部７２とを含んで構成されている。振動コマンド解析部７１は、アプリケーションプログラム実行部５１が発行した振動コマンドを受信して、当該振動コマンドによって指定される振動モード（振動オン／オフや、振動強度など）の情報を取り出し、音声データ生成部７２に出力する。
【００７１】
音声データ生成部７２は、振動コマンド解析部７１が出力する振動モードの情報に基づいて、音声データを生成する。ここで音声データは、例えば振動モードによって示される振動態様に従った波形データである。
【００７２】
振動変換部５３は、この生成した音声データをドライバプログラム実行部５２に出力する。そしてドライバプログラム実行部５２のエンコーダ５７にて、この音声データが符号化されてコントローラ２へ送出される。この際も、エンコーダ５７は、音声データの所定のサンプリングタイミングごとの周波数値を、鳴動コマンドとして取得する。そして、エンコーダ５７は、予め取得されている種別情報に対応する、図８に示したテーブルを参照して、各サンプリングタイミングにおける周波数に対応する駆動パラメータ情報としての数値を取得する。エンコーダ５７は、こうして生成した駆動パラメータ情報を、コントローラ通信部１６を介してコントローラ２側へ送信する。
【００７３】
そして当該送出された駆動パラメータ情報がコントローラ２にて復号され、アナログの駆動信号（パルス信号）に変換されて、周波数帯域濾過され、増幅されてからウーファスピーカ２４やツイータースピーカ２５に出力される。ここで振動の周波数は、一般に低周波数領域にあるので、ツイータースピーカ２５に対応して設けられるアナログ回路では当該周波数の信号は通過阻止され、ツイータースピーカ２５の鳴動音量は小さくなる。
【００７４】
また、振動変換部５３の音声データ生成部７２は、振動コマンドによって示された振動の期間が終了してから（振動を停止する制御がされた時点から）、その後予め定められた残響期間に亘り、音声信号の鳴動を継続させるよう音声データを生成して出力する。この残響期間においては、音声信号は振動指示コマンドにより示される振動期間における音声信号よりも音量を小さくする。また、この残響期間に亘り、音量を漸減させてもよい。
【００７５】
例えば振動デバイスを備えたコントローラに対して、振動コマンドに基づく振動制御を１／６０秒ごとに行なっていた場合、慣性の影響により、振動制御の開始時点での立ち上がりは遅く、振動制御の終了（振動期間終了時点）において直ちに立ち下がらずに振動を継続することになる。すなわち、振動変換部５３は、振動コマンドに基づいて従来行なわれていた振動制御の時間変化に基づいて音声信号の音量を変化させる。
【００７６】
例えば制御部１１は、振動コマンドによる振動の開始の時点からの経過時間を１／６０秒で除して振動がオンとなってから振動制御が行なわれた回数を求める。そしてこの回数に対応する音量を演算して、または予め定められたテーブルを参照して決定する。そして当該決定した音量の音声信号を生成する。
【００７７】
また制御部１１は、振動コマンドによる振動の終了の時点からの経過時間（振動がオフとなってからの時間）を求める。そしてこの時間に対応する音量を演算して、または予め定められたテーブルを参照して決定する。そして当該決定した音量の音声信号を生成する。
【００７８】
これにより、振動デバイスが慣性によって振動停止指示後に振動を継続する様子を模式的に再現できる。
【００７９】
また、回数に代えて、制御部１１は、過去ｎ回（ｎは、予め定めた整数）分の振動コマンドの受け入れ履歴を保持し、このｎ回の履歴の情報に基づいて予め定めたテーブルなどを参照しつつ、音量を決定し、当該決定した音量の音声信号を生成してもよい。例えばｎ＝３の場合、振動コマンドの有無について、「なし、なし、あり」の場合と、「なし、あり、あり」の場合と、「あり、あり、あり」の場合とでこの順に大きい音量となるようにテーブルを設定しておく。同様に、振動の終了の場合について、「あり、あり、なし」の場合や、「あり、なし、なし」の場合についてこの順に小さい音量となるようテーブルを設定する。さらに、「なし、あり、なし」や「あり、なし、あり」など、周期的に振動がオン／オフされる場合についても対応する音量を予め定めておくことができる。
【００８０】
さらにここでは、例えば１／６０秒ごとに入力され得る振動コマンドについて、毎回（１／６０秒ごとに）処理を実行することとしているが、例えば１／３０秒など、間欠的に処理を実行してもよい。この場合、例えば入力される振動コマンドをΔｔ秒ごとにサンプリングして取得し、当該取得した振動コマンドに基づいて、連続ｍ回（Δｔ／（１／６０秒）＝ｍ回）分、つまりΔｔ秒分の振動コマンドに対応する音声信号を生成する。また、サンプリングしない期間については、前回サンプリングした振動コマンドに基づいて生成した音声信号の出力を継続させることとしてもよい。
【００８１】
なお、ここでは振動コマンドに基づく音声信号の生成をゲーム機本体１側にて行なう例について述べたが、コントローラ２にて振動コマンドに基づく音声信号の生成を行なってもよい。この場合、ゲーム機本体１側ではアプリケーションプログラム実行部５１の処理として、実行の対象となったアプリケーションプログラムに含まれる指示に従い、振動デバイスに対する振動コマンドを発行し、コントローラ２へ送信する。
【００８２】
コントローラ２の制御部２１は、上記振動変換部５３と同様の処理により、ゲーム機本体１から受信される振動コマンドに基づいて音声信号を生成する。この制御部２１もまた、振動コマンドによって示された振動の期間が終了してから（振動を停止する制御がされた時点から）、その後予め定められた残響期間に亘り、音声信号の鳴動を継続させるよう音声データを生成して出力してもよい。この残響期間においては、音声信号は振動コマンドにより示される振動期間における音声信号よりも音量を小さくする。また、この残響期間に亘り、音量を漸減させてもよい。
【００８３】
例えば振動デバイスを備えたコントローラに対して、振動コマンドに基づく振動制御を１／６０秒ごとに行なっていた場合、慣性の影響により、振動制御の開始時点での立ち上がりは遅く、振動制御の終了（振動期間終了時点）において直ちに立ち下がらずに振動を継続することになる。すなわち制御部２１は、振動コマンドに基づいて従来行なわれていた振動制御の時間変化に基づいて音声信号の音量を変化させる。
【００８４】
例えば制御部２１は、振動コマンドによる振動の開始の時点からの経過時間を１／６０秒で除して振動がオンとなってから振動制御が行なわれた回数を求める。そしてこの回数に対応する音量を演算して、または予め定められたテーブルを参照して決定する。そして当該決定した音量の音声信号を生成する。
【００８５】
また制御部２１は、振動コマンドによる振動の終了の時点からの経過時間（振動がオフとなってからの時間）を求める。そしてこの時間に対応する音量を演算して、または予め定められたテーブルを参照して決定する。そして当該決定した音量の音声信号を生成する。
【００８６】
これにより、振動デバイスが慣性によって振動停止指示後に振動を継続する様子を模式的に再現できる。
【００８７】
なお、この場合も回数に代えて、制御部２１は、過去ｎ回（ｎは、予め定めた整数）分の振動コマンドの受け入れ履歴を保持し、このｎ回の履歴の情報に基づいて予め定めたテーブルなどを参照しつつ、音量を決定し、当該決定した音量の音声信号を生成してもよい。
【００８８】
さらに、例えば１／６０秒ごとに入力され得る振動コマンドについて、毎回（１／６０秒ごとに）処理を実行することせず、例えば１／３０秒など、間欠的に処理を実行してもよい。この場合、例えば入力される振動コマンドをΔｔ秒ごとにサンプリングして取得し、当該取得した振動コマンドに基づいて、連続ｍ回（Δｔ／（１／６０秒）＝ｍ回）分、つまりΔｔ秒分の振動コマンドに対応する音声信号を生成する。また、サンプリングしない期間については、前回サンプリングした振動コマンドに基づいて生成した音声信号の出力を継続させることとしてもよい。
【００８９】
このように本実施の形態によると、各コントローラ２において音声を鳴動させることができ、プレイヤごとに臨場感のある音声を伝達することができる。
【００９０】
なお、このようにコントローラ２側において受信した振動コマンドから音声信号を生成して各鳴動デバイスを鳴動制御する場合は、ゲーム機本体１側のエンコーダ５７にて、コントローラ２の備える鳴動デバイスの特性に合わせた駆動パラメータ情報を生成するのではなく、コントローラ２側において、制御部２１が予め定められている基準鳴動デバイスとコントローラ２自身の備える鳴動デバイスとの相違に基づいて予め定められたパラメータ変換テーブルを参照して、音声信号の各周波数値を駆動パラメータ情報（入力パラメータ情報）として、この入力パラメータ情報を変換し、変換後の駆動パラメータ情報（出力パラメータ情報）に基づいて鳴動制御を行なうこととしてもよい。
【００９１】
この場合は、コントローラ２の記憶部２２に、図１２に示すように、入力される駆動パラメータ情報（入力パラメータ情報）を変換後の駆動パラメータ情報（出力パラメータ情報）に関連づけるテーブル（パラメータ変換テーブル）を記憶させておく。そしてコントローラ２の制御部２１が、生成した音声データを所定のサンプリングタイミングごとにサンプリングして得た周波数値を、入力パラメータ情報として、この入力パラメータ情報に対応する出力パラメータ情報を、パラメータ変換テーブルを参照して取得する。そして当該出力パラメータ情報に基づいて、各鳴動デバイスを鳴動制御する。
【００９２】
なお、振動コマンドに関する場合のみならず、効果音などの鳴動コマンドにおける場合でも、ゲーム機本体１側で鳴動コマンドに基づいて符号化された音声データを生成する際に、コントローラ２の備える鳴動デバイスの特性に合わせた駆動パラメータ情報を生成するのではなくコントローラ２において、コントローラ２自身が備える鳴動デバイスに応じた駆動パラメータ情報を生成してもよい。
【００９３】
すなわち、ゲーム機本体１側では、鳴動コマンドに基づいて、予め定められた基準鳴動デバイスに対する駆動パラメータ情報を生成して出力する。またコントローラ２の記憶部２２には、予め入力される駆動パラメータ情報（入力パラメータ情報）を変換後の駆動パラメータ情報（出力パラメータ情報）に関連づけるテーブル（パラメータ変換テーブル）を格納しておく。制御部２１は、ゲーム機本体１から受信した駆動パラメータ情報に基づいて生成した音声データを所定のサンプリングタイミングごとにサンプリングする。そしてこのサンプリングによって得た周波数値を、入力パラメータ情報として、この入力パラメータ情報に対応する出力パラメータ情報を、パラメータ変換テーブルを参照して取得する。そして当該出力パラメータ情報に基づいて、各鳴動デバイスを鳴動制御する。
【００９４】
なお、ここではコントロールデバイス２がウーファスピーカ２４と、ツイータースピーカ２５とを備える場合について説明したが、３つ以上のスピーカを備えてもよい。さらに備えるスピーカの組み合わせはこれに限られず、フルレンジ、スーパーウーファ、ウーファ、スコーカ、ツイーター、スーパーツイーター等種々の周波数特性を備えたスピーカを任意に組み合わせてもよい。
【００９５】
また、コントロールデバイス２において、ウーファスピーカ２４やツイータースピーカ２５など備えているスピーカごとに、オン／オフ、ないしボリュームを制御するスイッチや、可変抵抗器などを備えても構わない。
【００９６】
さらに、ここまでの説明ではコントローラ２が鳴動デバイスを備えている場合を例として記載したが、コントローラ２が鳴動デバイスを備えず、振動デバイスを備えている場合は、ゲーム機本体１からは鳴動コマンドに代えて振動コマンドが出力されることとなり、コントローラ２の振動デバイスは、当該振動コマンドに基づいて駆動されることとなる。
【００９７】
また、ここではコントローラ種別情報に対して鳴動デバイスの種別を表すデバイス種別情報を関連づけて保持し、コントローラ側から受信されるコントローラ種別情報をキーとしてデバイス種別情報を取得することとしたが、これに代えて、コントローラ２の記憶部２２に、コントローラ２が備えている鳴動デバイスの種別、例えばウーファスピーカ２４及びツイータースピーカー２５の種別を特定するデバイス種別情報を格納しておき、ゲーム機本体１の電源投入時（コントローラ２とゲーム機本体１との通信が開始されるとき）などの所定のタイミングで、制御部２１が、コントローラ種別情報に併せて、あるいはコントローラ種別情報に代えて、デバイス種別情報を送出するようにしてもよい。この場合は、ゲーム機本体１側のアプリケーションプログラム実行部５１が当該コントローラ２から受信されるデバイス種別情報を参照して、コントローラ２が鳴動デバイスを備えているか否かを判断し、また、当該デバイス種別情報をエンコーダ５７に出力すればよい。
【図面の簡単な説明】
【００９８】
【図１】本発明の実施の形態に係るコントローラを利用したゲームシステムの例を表す概要図である。
【図２】本発明の実施の形態に係るコントローラを制御するゲーム機本体の例を表す構成ブロック図である。
【図３】本発明の実施の形態に係るコントローラの例を表す構成ブロック図である。
【図４】本発明の実施の形態に係るコントローラの外観例を表す斜視図である。
【図５】本発明の実施の形態に係るコントローラを制御するゲーム機本体の例を表す機能ブロック図である。
【図６】本発明の実施の形態に係るコントローラの例を表す機能ブロック図である。
【図７】本発明の実施の形態に係るゲーム機本体に設定されるデバイス種別情報の例を表す説明図である。
【図８】本発明の実施の形態に係るゲーム機本体側での駆動パラメータ情報を設定するテーブルの例を表す説明図である。
【図９】本発明の実施の形態に係るコントローラとゲーム機本体との間の通信処理例を表す流れ図である。
【図１０】本発明の実施の形態に係るコントローラの内部の配置例を表す概略説明図である。
【図１１】本発明の実施の形態に係るコントローラを制御するゲーム機本体における特定の処理時の例を表す機能ブロック図である。
【図１２】本発明の実施の形態に係るコンローラにおける、駆動パラメータ情報を設定するテーブルの例を表す説明図である。
【符号の説明】
【００９９】
１  ゲーム機本体、２  コントローラ、１１，２１  制御部、１２，２２  記憶部、１３  表示制御部、１４  外部インタフェース部、１５  ディスクドライブ、１６  コントローラ通信部、２３  音声処理部、２４  ウーファスピーカ、２５  ツイータースピーカ、２６  バッテリ、２７  通信部、３０  把持部、３１  第１操作部、３２  第２操作部、３３  アナログ操作部、３４  スタートボタン、３５  セレクトボタン、４１  弾性体、４２  錘、５１  アプリケーションプログラム実行部、５２  ドライバプログラム実行部、５５  鳴動コマンド受入部、５６  音声データ生成部、５７  エンコーダ、６１  データ受入部、６２  鳴動制御部、６３  鳴動部、７１  振動コマンド解析部、７２  音声データ生成部。
【図１】
0004787008.tif 000002
【図２】
0004787008.tif 000003
【図３】
0004787008.tif 000004
【図４】
0004787008.tif 000005
【図５】
0004787008.tif 000006
【図６】
0004787008.tif 000007
【図７】
0004787008.tif 000008
【図８】
0004787008.tif 000009
【図９】
0004787008.tif 000010
【図１０】
0004787008.tif 000011
【図１１】
0004787008.tif 000012
【図１２】
0004787008.tif 000013