説明

項目選択装置、項目選択方法、ならびに、プログラム

【課題】タッチスクリーンを操作して項目リストから素早く項目を選択するのに好適な項目選択装置、項目選択方法、ならびにプログラムを提供することを目的とする。
【解決手段】記憶部201は、選択対象となる項目を要素とする表と、当該表の一部を覆う窓の位置と、を記憶する。表示部202は、窓の領域に存在する表の要素を表示する。ユーザが表示部202に接触して、振り掃う操作を行なうと、検知部203により検知された接触位置の変化のうち、ユーザが接触を解放する直前の接触位置の変化に基づいて、移動部205は、当該窓の位置を移動するように記憶部201を更新し、これにより、表示部202により表示される表の要素も変化する。項目出力部204は、ユーザが接触を開始してから解放するまでほぼ接触位置を移動しなかった場合、当該座標値に表示されている要素の項目を選択結果として出力する。

【発明の詳細な説明】
【技術分野】
【0001】
タッチスクリーンを操作して項目リストから素早く項目を選択するのに好適な項目選択装置、項目選択方法、ならびにプログラムに関する。
【背景技術】
【0002】
従来から、タッチスクリーン(またはタッチパネル)に接触して入力操作を行なうゲーム等において、ゲームキャラクタの操作性を向上させる技術が提案されている。このような技術は、例えば、以下の文献に開示されている。
【特許文献1】特許第3924579号公報
【0003】
特許文献1に開示の技術では、タッチペンなどの接触部材をタッチスクリーンに接触させると、最初に接触した位置と、タッチペンを接触移動(即ち、接触させたまま移動)させた位置とに基づいて、タッチペンの移動方向及び移動距離が計算処理される。タッチペンの移動方向及び移動距離に応じてキャラクタが所定の一方向に向くようにキャラクタを回転させるキャラクタ回転処理が行われ、キャラクタ70を所定の一方向に推進させるキャラクタ推進処理が行われる。
【0004】
一方、項目リストから項目を選択する場合についても、タッチスクリーンを用いてより簡便に行なう方法が強く求められている。
【発明の開示】
【発明が解決しようとする課題】
【0005】
本発明は以上のような課題を解決するためのものであり、タッチスクリーンを操作して項目リストから素早く項目を選択するのに好適な項目選択装置、項目選択方法、ならびにプログラムを提供することを目的とする。
【課題を解決するための手段】
【0006】
上記目的を達成するため、本発明の第1の観点に係る項目選択装置は、記憶部と、表示部と、検知部と、項目出力部と、移動部と、を備える。
【0007】
記憶部は、選択対象となる項目を要素とする表と、当該表の一部を覆う領域の位置と、を記憶する。表の要素のそれぞれは、少なくとも1つ以上の行、および、列に配置される。また、表の一部を覆う領域は、後述の表示部によって表示される当該表の領域を指定するものである。即ち、当該領域の配置される位置に応じて、表示される表の項目が決定される。
【0008】
表示部は、当該表のうち、記憶部に位置が記憶される領域に含まれる要素を表示する。ここで、表示部は、タッチセンサを重畳した所謂タッチスクリーンである。なお、表の一部を覆う領域の位置は、ユーザがタッチスクリーンを接触することによって行なう指示に応じて変化し、当該位置の変化に応じて表示部に表示される項目も変化する。
【0009】
検知部は、ユーザが表示部の表面に接触していればその位置を、当該表面を解放していれば、その旨を検知する。即ち、検知部は、ユーザがタッチスクリーンに接触すると、その位置を示す座標値を検出する。また、検知部は、タッチスクリーンへの接触がないと、接触がない旨を検出する。なお、検知部は例えば所定の時間間隔で検知状態の検出を行なう。
【0010】
項目出力部は、当該ユーザが当該表面に接触して以降、当該表面を解放するまでに検知された位置が所定の範囲内にある場合、当該検知された位置に表示されている要素の項目を選択結果として出力する。即ち、ユーザがタッチスクリーンに接触したまま、その接触位置をほぼ移動せずにタッチスクリーンを放した場合、項目出力部は、当該接触している位置に表示されている項目が選択されたものとして出力する。
【0011】
移動部は、当該ユーザが当該表面に接触して以降、当該表面を解放するまでに検知された位置が所定の範囲内でない場合、当該表面に接触する位置の変化を表す速度のうち、当該表面を解放する直前の速度を取得し、当該速度に基づいて、記憶部に記憶される領域の位置を移動する。
【0012】
即ち、移動部は、ユーザがタッチスクリーンを放す直前の接触移動の速度に応じて当該領域の移動速度と移動方向を算出して、表の一部を覆う領域の位置を移動する。よって、所望の項目を選択するために、表示されている表の項目をスクロールして表示させる場合、ユーザは、タッチスクリーンを掃う操作(即ち、タッチスクリーンに接触し、当該接触する位置を変化させ、接触する位置の変化を0以上に保ちながら、タッチスクリーンを放す操作)を行なえばよい。一方、タッチスクリーンを放す直前、接触位置を移動させなければ、表はスクロールして表示されない。
【0013】
このような項目選択装置によれば、表示される項目は、ユーザがタッチスクリーンを接触する位置の変化の速度に基づいて決定される。したがって、表の項目が表示される際のスクロール速度を上げたい場合には、早い速度でタッチスクリーンを掃う操作を行なえばよい。スクロール速度を上げるために、スクロールさせたい方向を示すキーを一定時間以上押し続ける典型的な方法と比較して、待ち時間を排除することができ、操作性が向上される。また、移動部は、掃う操作が行なわれた方向に基づいて、当該表の一部を覆う領域の位置を移動するため、2次元に配置される当該表の要素の中から、素早く目的の項目を見つけ出すことが可能となる。
【0014】
また、当該ユーザがつまんで当該表面に接触するための接触部材をさらに備えるようにしてもよい。このとき、当該接触部材は、ピック形状、もしくは、ピック形状の先端に突起を配置した形状としてもよい。即ち、接触部材は、所謂タッチペンであり、ユーザが掃う動作を行い易いようにその持ち手の部分はギターピックの形状を有しており、先端には接触位置が検出され易いように突起を備えるようにしてもよい。
【0015】
このような接触部材を用いることにより、タッチスクリーンを掃う操作をより簡単に行なうことが可能となり、タッチスクリーンの操作性をより向上させることができる。
【0016】
また、移動部は、当該領域の位置を、当該表の行もしくは列のいずれか一方に沿って移動させてもよい。このとき、当該領域の位置を移動させる向きは、取得された速度の向きに最も近い向きであり、当該領域の位置を移動させる速さは、取得された速度が大きくなるにつれて増加するように移動させてもよい。
【0017】
即ち、移動部は、縦方向または横方向に表の一部を覆う領域の位置を移動する。このとき、移動部は、ユーザがタッチスクリーンを解放する直前の接触移動の速度方向について、縦方向成分、および横方向成分を算出し、より大きい成分を有する方向に当該領域を移動する。一方、当該領域の移動速度は、ユーザがタッチスクリーンを解放する直前の速度に基づいて決定し、解放直前の接触移動の速度が遅ければ、当該領域の位置の移動速度も遅くなり、接触移動の速度が速ければ、当該領域の位置の移動速度も速くなる。
【0018】
このように縦方向、または横方向に、表の一部を覆う領域の移動する方向を決めることで、ユーザは、現在表示されている項目が表のどの部分に位置するかを容易に把握でき、選択したい項目を素早く見つけ出すことができる。
【0019】
また、移動部は、当該領域の位置が当該表の端に達すると、当該領域の位置を巡回的に移動させるようにしてもよい。例えば、当該表の要素のそれぞれが、M行、N列(M、N:任意の正の整数)に配置される場合について説明する。このとき、移動部は、M行目に続いて、1行目、2行目、3行目…が配置され、N列目に続いて、1列目、2列目、3列目…が配置されるように当該領域の位置を移動させてもよい。あるいは、1行目の前には、M行目、M−1行目、M−2行目…が配置され、1列目の前にはN列目、N−1列目、N−2列目…が配置されるように当該領域の位置を移動させてもよい。これにより、巡回的に表の項目が表示される。
【0020】
また、移動部は、当該領域の位置が当該表の端に達すると、当該領域の位置を移動させる向きを逆にするようにしてもよい。即ち、上述のように巡回的に項目を表示するのではなく、当該表の端に達すると、当該領域の位置が跳ね返って逆向きに移動したかのように、当該表の要素を表示する。
【0021】
このように、表の一部を覆う領域が表の端に達しても、スクロールを停止させないことで、ユーザは再度タッチスクリーンを操作することなく、選択項目を探すことができる。
【0022】
また、移動部は、当該ユーザが当該表面に接触を開始した位置に表示されていた要素が、当該ユーザが当該表面に接触している間、当該接触している位置に表示されるように、当該領域の位置を移動するようにしてもよい。
【0023】
即ち、ユーザがタッチスクリーンに接触している間は、接触位置に表示されている項目が接触位置とともに移動するように、表示部に表示されている領域(即ち、表の一部を覆う領域)の位置を移動する。これにより、ユーザは、少しずつ表示されている表の項目を移動することができる。また、例えば、ユーザがタッチスクリーンの表面を掃って当該領域の位置の移動を開始させた場合(即ち、表のスクロール表示を開始させた場合)、タッチスクリーンを再度接触して、接触位置を移動しなければ、上述したように当該領域の位置が接触位置に連動するため、スクロール表示を停止することができる。
【0024】
また、項目出力部は、当該ユーザが当該表面に接触して以降、当該表面を解放するまでに検知された位置が所定の範囲内にあり、さらに、当該接触から当該解放までの時間が所定の閾時間以下である場合、当該検知された位置に表示されている要素の項目を選択結果として出力するようにしてもよい。
【0025】
ここで、上述したように、ユーザは、タッチスクリーンの表面を掃ってスクロール表示を開始させた場合、タッチスクリーンを再度接触することにより、スクロール表示を停止することができる。このとき、再度接触した際の位置にほぼ変化がない場合、閾時間という条件を加えることで、その接触が単に移動を停止するためのものなのか、あるいは、接触した位置に表示される項目を選択するものなのかを判別することが可能となる。即ち、接触した項目を選択する場合は、当該項目が表示されるタッチスクリーンの位置を素早く(閾時間以下)接触する。一方、スクロール表示を単に止めたいときは、ユーザはタッチスクリーンの同じ位置を所定の閾時間以上接触すればよい。
【0026】
また、本発明の他の観点に係る項目選択方法は、記憶部、表示部、検知部、項目出力部、移動部、を備える項目選択装置による項目選択方法であり、表示工程、検知工程、出力工程、移動工程、を備える。
【0027】
ここで、記憶部は、選択対象となる項目を要素とする表と、当該表の一部を覆う領域の位置と、を記憶する。
【0028】
表示工程では、表示部が、当該表のうち、記憶部に位置が記憶される領域に含まれる要素を表示する。
検知工程では、検知部が、ユーザが表示部の表面に接触していればその位置を、当該表面を解放していれば、その旨を検知する。
出力工程では、項目出力部が、当該ユーザが当該表面に接触して以降、当該表面を解放するまでに検知された位置が所定の範囲内にある場合、当該検知された位置に表示されている要素の項目を選択結果として出力する。
【0029】
そして、移動工程では、移動部が、当該ユーザが当該表面に接触して以降、当該表面を解放するまでに検知された位置が所定の範囲内でない場合、当該表面に接触する位置の変化を表す速度のうち、当該表面を解放する直前の速度を取得し、当該速度に基づいて、記憶部に記憶される領域の位置を移動する、ことを特徴とする。
【0030】
また、本発明の他の観点に係るプログラムは、コンピュータを、上記の項目選択装置として機能させるように構成する。本発明の他の観点に係るプログラムは、コンピュータに上記の項目選択方法を実行させるように構成する。
【0031】
また、本発明のプログラムは、コンパクトディスク、フレキシブルディスク、ハードディスク、光磁気ディスク、ディジタルビデオディスク、磁気テープ、半導体メモリ等のコンピュータ読取可能な情報記録媒体に記録することができる。上記プログラムは、当該プログラムが実行されるコンピュータとは独立して、コンピュータ通信網を介して配布・販売することができる。また、上記情報記録媒体は、当該コンピュータとは独立して配布・販売することができる。
【発明の効果】
【0032】
本発明によれば、タッチスクリーンを操作して項目リストから素早く項目を選択するのに好適な項目選択装置、項目選択方法、ならびにプログラムを提供することができる。
【発明を実施するための最良の形態】
【0033】
本実施の形態に係るゲーム装置は、後述するように、大きく分けて、項目選択装置、および、音声処理装置として機能する。即ち、まず、ユーザは、項目選択装置としてのゲーム装置で、ギター演奏のシミュレーションを行いたい楽曲を、曲目リストから選択する。そして、次に、音声処理装置としてのゲーム装置で、選択された楽曲を用いて、ギター演奏のシミュレーションを行なう。
【0034】
図1は、本発明の実施の形態に係る項目選択装置、および、音声処理装置が実現される典型的な携帯型のゲーム装置の概要構成を示す模式図である。また、図2には、当該携帯型のゲーム装置の外観図を示す。以下、本図を参照して説明する。
【0035】
ゲーム装置100は、CPU(Central Processing Unit)101と、ROM(Read Only Memory) 102と、RAM(Random Access Memory)103と、インターフェイス104 と、入力部105と、メモリカセット106と、画像処理部107 と、タッチスクリーン108と、NIC(Network Interface Card)109と、音声処理部110と、マイク111と、スピーカ112と、を備える。
【0036】
ゲーム用のプログラムおよびデータを記憶したメモリカセット106(詳細は後述)をインターフェイス104に接続されたスロット(図示せず)に装着して、ゲーム装置100の電源を投入することにより、当該プログラムが実行され、本実施形態の項目選択装置、および、音声処理装置が実現される。
【0037】
CPU 101は、ゲーム装置100全体の動作を制御し、各構成要素と接続され制御信号やデータをやりとりする。 CPU 101は、クロック(図示せず)を備えており、クロックの生成する信号に同期して、周辺機器が動作する。
【0038】
ROM 102は、電源投入直後に実行されるIPL(Initial Program Loader)を記憶する。このIPLをCPU 101が実行することにより、メモリカセット106等に記録されたプログラムがRAM 103に読み出され、CPU 101による実行が開始される。
また、ROM 102にはゲーム装置100全体の動作制御に必要なオペレーティングシステムのプログラムや各種のデータが記録される。
【0039】
RAM 103は、データやプログラムを一時的に記憶するためのもので、メモリカセット106等から読み出したプログラムやデータ、その他ゲームの進行に必要なデータ等が保持される。
【0040】
インターフェイス104を介して着脱自在に接続されたメモリカセット106は、前述のようにゲームを実現するためのプログラムとゲームに付随する画像データや音声データとを記憶する、読出し専用のROM領域と、プレー結果などのデータをセーブするSRAM領域とを有する。CPU 101はメモリカセット106に対する読み出し処理を行って、必要なプログラムやデータを読み出し、読み出したデータをRAM 103等に一時的に記憶する。
【0041】
入力部105は、図2に示すコントロールボタンなどであり、ユーザによる指示入力を受け付ける。
【0042】
画像処理部107は、メモリカセット106から読み出されたデータをCPU 101や画像処理部107が備える画像演算プロセッサ(図示せず)によって加工処理した後、これを画像処理部107が備えるフレームメモリ(図示せず)に記録する。フレームメモリに記録された画像情報は、所定の同期タイミングでビデオ信号に変換されタッチセンサ式のディスプレイ(タッチスクリーン108)へ出力される。これにより、各種の画像表示が可能となる。
【0043】
画像演算プロセッサは、2次元の画像の重ね合わせ演算やαブレンディング等の透過演算、各種の飽和演算を高速に実行できる。
【0044】
また、3次元仮想空間に配置され、各種のテクスチャ情報が付加されたポリゴン情報を、Zバッファ法によりレンダリングして、所定の視点位置から3次元仮想空間に配置されたポリゴンを俯瞰したレンダリング画像を得る演算の高速実行も可能である。
【0045】
さらに、CPU 101と画像演算プロセッサが協調動作することにより、文字の形状を定義するフォント情報にしたがって、文字列を2次元画像としてフレームメモリへ描画したり、各ポリゴン表面へ描画することが可能である。フォント情報は、ROM 102に記録されているが、メモリカセット106に記録された専用のフォント情報を利用することも可能である。
【0046】
なお、上記タッチスクリーン108は、タッチセンサを重畳して構成される液晶パネルである。タッチスクリーン108はユーザが指もしくは入力ペンなどによって押圧した位置に応じた位置情報を検知し、CPU 101へ入力する。
【0047】
なお、入力部105やタッチスクリーン108を介してユーザにより入力された指示に応じて、RAMに一時的に記憶されたデータを適宜メモリカセット106に記憶することができる。
【0048】
NIC 109は、ゲーム装置100をインターネット等のコンピュータ通信網(図示せず)に接続するためのものである。NIC 109は、例えば、ゲーム装置を無線でLAN(Local Area Network)に接続する場合、IEEE 802.11などの規格に準拠するインターフェイス(図示せず)により構成される。また、有線でLANに接続する場合は、10BASE−T/100BASE−T規格に準拠するものや、電話回線を用いてインターネットに接続するためのアナログモデム、ISDN(Integrated Services Digital Network)モデム、ADSL(Asymmetric Digital Subscriber Line)モデム、ケーブルテレビジョン回線を用いてインターネットに接続するためのケーブルモデム等と、これらとCPU 101との仲立ちを行うインターフェイス(図示せず)により構成される。
【0049】
NIC 109を介してインターネット内のSNTPサーバに接続し、ここから情報を取得することによって現在の日時情報を得ることもできる。また、各種のネットワークゲームのサーバ装置が、SNTPサーバと同様の機能を果たすように構成設定してもよい。
【0050】
音声処理部110は、メモリカセット106から読み出した音声データをアナログ音声信号に変換し、音声処理部110に接続されたスピーカ112から出力させる。また、CPU 101の制御の下、ゲームの進行の中で発生させるべき効果音や音声データを生成し、これに対応した音声をスピーカ112から出力させる。
【0051】
音声処理部110は、メモリカセット106に記録された音声データがMIDIデータである場合には、これが有する音源データを参照して、MIDIデータをPCMデータに変換する。また、ADPCM形式やOgg Vorbis形式等の圧縮済音声データである場合には、これを展開してPCMデータに変換する。PCMデータは、そのサンプリング周波数に応じたタイミングでD/A(Digital/Analog) 変換を行って、スピーカ112などに出力することにより、音声出力が可能となる。
【0052】
また、音声処理部110は、マイク111から入力されたアナログ信号を適当なサンプリング周波数でA/D 変換を行い、PCM形式のディジタル信号を生成する。
【0053】
このほか、ゲーム装置100はメモリカセット106に替えて、DVD−ROMからプログラムやデータを読み出す、DVD−ROMドライブを備えるように構成して、DVD−ROMにメモリカセット106と同様の機能を持たせるようにしてもよい。また、インターフェイス104は、メモリカセット106以外の外部メモリ媒体からデータを読み出すように構成してもよい。
【0054】
あるいは、ゲーム装置100は、ハードディスク等の大容量外部記憶装置を用いて、ROM 102、RAM 103、メモリカセット106等と同じ機能を果たすように構成してもよい。
【0055】
なお、本実施の形態に係る項目選択装置、および、音声処理装置は、携帯型のゲーム装置上に実現されるが、一般的なコンピュータ上に実現することもできる。一般的なコンピュータは、上記ゲーム装置100と同様に、CPU、RAM、ROM、NIC、等を備え、ゲーム装置100よりも簡易な機能を備えた画像処理部を備え、外部記憶装置としてハードディスクを有する他、フレキシブルディスク、光磁気ディスク、磁気テープ等が利用できるようになっている。また、入力部ではなく、キーボードやマウスなどを入力装置として利用する。そして、プログラムをインストールした後に、そのプログラムを実行させると、項目選択装置、および音声処理装置として機能させることができる。
【0056】
以下では、項目選択装置について説明し、その後音声処理装置について説明する。なお、注記しない限り、項目選択装置、および、音声処理装置について、図1に示したゲーム装置100により説明を加える。項目選択装置、および、音声処理装置は、必要に応じて適宜一般的なコンピュータの要素に置換することができ、これらの実施の形態も本発明の範囲に含まれる。
【0057】
(項目選択装置)
図3は、本実施の形態に係る項目選択装置200の概要構成を示すブロック図である。項目選択装置200は、図3に示すように、記憶部201、表示部202、検知部203、項目出力部204、移動部205、等を備える。なお、後述するように、項目選択装置200は、図8に示すように接触部材206を備えてもよい。以下に項目選択装置200の各構成要素について本図を参照して説明する。
【0058】
記憶部201は、選択対象となる項目を要素とする表を記憶する。当該表は、少なくとも1つの行、および列を備える、2次元配列の構成をしている。例えば、ゲーム装置100を利用して複数の曲目を選択して再生するような場合、当該表は当該曲目のそれぞれを要素として構成されるようにしてもよい。なお、N個の要素を備える1次元の表の場合、当該表をA個ごとにグループに分けて、A行、N/A列(または、N/A行、A列)の2次元の表を構成するようにしてもよい。メモリカセット106や、RAM 103等が、協働して記憶部201として機能する。
【0059】
表示部202は、記憶部201から表の構成情報を取得し、図4(A)に示すように、表の画像データ(300を参照)を生成する。なお、図において、表は、5行4列の要素を備えるが、表の大きさはこれに限らない。本実施の形態では、表の大きさが、タッチスクリーン平面の大きさよりも大きい場合を考慮して、表の画像データの一部を覆う、所定の大きさの領域を備える窓(310を参照)を用意する。この窓の大きさや位置は、記憶部201に記憶される。窓の位置は、ユーザの操作指示に基づいて移動するように更新される。表示部202は、記憶部201に記憶される窓の位置を取得し、当該窓によって覆われた領域に含まれる当該表の要素を、例えば、図4(B)に示すように表示する。
【0060】
なお、図4(B)で表示される項目の一覧は、要素の境界と、表示領域の境界が一致していないが、必ず一致するように調整するようにしてもよい。
【0061】
このように、窓によって覆われる領域が表示部202によって表示される領域であるため、以降、窓および領域は、注記しない限り同じ意味として用いる。CPU 101、RAM 103、画像処理部107、タッチスクリーン108などが協働して、表示部202として機能する。
【0062】
窓の位置は、例えば、表の原点O(例えば表の左上)からの、当該窓の原点O’の座標値(例えば、OからのO’までのX方向、およびY方向のピクセル数)で表す。また、表示される表のX方向の大きさがWだとすると、各要素が表示されるセル(図4(A)の301を参照)のX方向の大きさwは、W/N(N:列数)であり、表のY方向の大きさがLだとすると、セルのY方向の大きさlはL/M(M:行数)である。
【0063】
検知部203は、タッチスクリーンに接触があるかないかを所定の時間間隔で検知する。ユーザがタッチしたタッチスクリーン平面の位置は、例えば、タッチスクリーンの左上の隅を原点としたときの座標値として表される。また、検知部203は、タッチスクリーンがタッチされていない場合、タッチされていない旨を検知する。タッチスクリーン108、CPU 101などが協働して検知部203として機能する。
【0064】
項目出力部204は、検知部203の検知結果により、ユーザがタッチスクリーンへの接触を開始し、その接触位置をほぼ移動せずにタッチスクリーンを放したと判断した場合、当該接触している位置に表示されている項目を選択結果として出力する。ここで、「ほぼ移動せずに」とは、接触が開始されてから、解放されるまでの間に検知された位置が、全て所定の範囲内であればよい。CPU 101等が項目出力部204として機能する。
【0065】
移動部205は、検知部203の検知結果により、ユーザがタッチスクリーンを掃うように接触移動したと判断した場合、タッチスクリーンを解放する直前の接触移動の速度を取得する。そして、当該速度に基づいて、記憶部201に記憶される窓の位置が移動されるように更新する。表示部202が、移動する窓に覆われている表の領域を表示すると、表がスクロールして表示される。
【0066】
また、移動部205は、ユーザによってタッチスクリーンが接触されている間は、タッチスクリーンへの接触を開始したときに接触位置に表示されている項目と同じものが接触位置に表示されるように、窓の位置を移動する。即ち、接触を開始したときに接触している項目が、接触位置に固定される。したがって、表がスクロールしている場合、再度タッチスクリーンを接触すれば、当該接触位置に表示されている内容が接触位置に固定され、スクロールを止めることもできる。移動部205は、CPU 101、RAM 103、メモリカセット106などが協働して、移動部205として機能する。
【0067】
(動作処理)
上記構成を備える項目選択装置200の処理動作を図5を参照して説明する。
【0068】
項目選択装置200の電源が入れられると、IPLをCPU 101が実行することにより、メモリカセット106に記録されたプログラムがRAM 103に読み込まれるなどの、初期化処理が行われる。プログラムの進行に伴い、項目選択処理が開始されると、まず、表示部202が、選択対象となる項目の一部を一覧として示す選択画面を表示する(ステップS400)。本実施の形態においては、選択対象の項目はギターシミュレーションを行なう楽曲を特定するための情報(曲目等)である。
【0069】
このとき、表示部202は、上述したように、記憶部201から表の構成情報を取得し、表の画像データを生成する。窓の位置は、初期状態においては、表の原点に配置されるため、表示部202は、表の原点から、X方向に窓の幅W、および、Y方向に窓の長さLに覆われる領域を表示する。
【0070】
次いで、CPU 101は、検知部203が座標値を検知すると、記憶部201に蓄積する(ステップS401)。蓄積された座標値は、後に、接触位置の変化の速度を算出するために利用する。
【0071】
続いて、CPU 101は、検知部203が検知した状態が変化したか否かを判定する(ステップS402)。 即ち、前回検知されたのが座標値のときに、今回解放状態(即ち、タッチスクリーンが接触されていない状態)が検知されるか、前回と異なる座標値が検知されると、状態が変化したと判定される。あるいは、前回検知されたのが解放状態のときに、今回いずれかの座標値が検知されれば、状態が変化したと判定される。CPU 101は状態が変化しない間は(ステップS402;N)再度ステップS402に戻って、状態が変化するのを待つ。
【0072】
CPU 101は、検知状態が変化したと判定すると(ステップS402;Y)、次いで、今回検知されたのが解放状態なのか、あるいは、座標値なのかを判定する(ステップS403)。
【0073】
今回検知されたのが座標値の場合(ステップS403;N)、次に、CPU 101は、前回検知された状態が解放状態なのか、あるいは異なる座標値なのかを判定する(ステップS410)。前回検知された状態が解放状態であれば、ユーザにより接触が開始されたと判定し(ステップS410;Y)、CPU 101は、接触が開始された際のタッチスクリーン上の座標値と、窓の位置とをRAM 103に一時的に記憶する(ステップS411)。そして、処理はステップS400に戻る。
【0074】
一方、今回検知されたのが座標値であって(ステップS403;N)、且つ、前回検知された状態が解放状態でない場合(ステップS410;N)、前回検知された座標値とは異なる座標値が、今回検知されていることを意味する。即ち、接触された状態で、接触位置が移動している。このとき、移動部205は、前回接触した位置に表示される要素が今回接触している位置にドラッグ表示されるように窓を移動する(ステップS412)。
【0075】
即ち、図6(A)に示すように、前回検知された状態が座標値(p1, q1)、今回検知された状態が座標値 (p, q)であった場合、接触位置は、p-p1だけX方向に、そしてq-q1だけY方向に移動している。したがって、図6(B)に示すように、移動部205は、窓310の位置(x1, y1)を接触位置の移動した分だけ逆方向(即ち、(x1-(p-p1), y1-(q-q1))に移動する。図6(B)では、移動した窓を310’として表し、当該窓310’の位置を(x, y)=(x1-(p-p1), y1-(q-q1))で示している。
【0076】
例えば、図6(C)では、要素GGの左上部が接触された状態にある。この接触された状態で、図6(C)に示す矢印の方向に接触位置を移動した場合、接触位置の変化の方向と逆向きに同じ変化量だけ窓の位置を移動する。これにより、図6(D)に示すように、接触位置には、図6(C)と同様に要素GGの左上部が示される。
【0077】
なお、ドラッグ操作によって、窓の位置が変化して、窓の領域が、表の領域からはみ出した場合、窓の位置(x, y)は常に表の領域内の座標を示すように再配置する。例えば、窓の位置が表の端に到達した場合は、表の対極する位置に窓の位置を移動するようにする。即ち、表が、原点(0, 0)、(W, 0)、(0, L)、(W, L)に囲まれる領域に表されるとき、X=Wによって示される表300の境界線はX=0の境界線となるように扱い、Y=Lによって示される境界線はY=0の境界線となるように扱う。
【0078】
よって、窓の位置を示す座標値が、X方向にWより大きい分については、0に加算する。また、X方向に0より小さい分については、Wから減算する。一方、Y方向にLより大きい分については、0に加算する。また、Y方向に0より小さい分については、Lから減算する。このようにして窓の位置は巡回して移動される。
【0079】
例えば、図7(A)では、窓310の位置が表300の原点から(-cx, -dy)の位置にあり(c、dは任意の定数)、(-cx, -dy)が表300の領域外にある場合、窓の位置が、表の領域内の(W-cx,L-dy)に再配置される様子を示す。再配置された窓を310’で表す。
【0080】
これにより、処理がステップS400に戻り、表示部202は、現在窓に覆われている表の領域を表示すると、ユーザが接触したタッチスクリーンの位置に表示されていた要素は、ユーザが接触を移動した移動先の位置にドラッグ移動されているように表示される。なお、窓の大きさは、記憶部201に予め記憶される。
【0081】
ただし、ステップS412における窓の位置の移動にともない、窓の領域の一部が表からはみ出して配置されるような場合、表示部202は、表からはみ出した窓の領域については、表の行、および列のそれぞれの先頭と最後尾の要素が隣接するように巡回的に表示する。
【0082】
これは、例えば、次のように算出する。例えば、WおよびLをそれぞれ、表300のX方向およびY方向の大きさとし、W’およびL’をそれぞれ、窓310のX方向およびY方向の大きさとする。窓310の原点O’の座標値が(x, y)であれば、表示すべき表の領域は、表300の原点Oから、(x,y)、(x+W',y)、(x,y+L')、(x+W',y+L')に囲まれる領域となる。この表示すべき表の領域内の任意の点の座標値を(s, t)とすると、(s', t') = (s mod W, t mod L)を算出することで、座標値(s' ,t')は、窓の領域が表の領域を超えて配置された場合でも、巡回して、表の領域内の座標値を与える。
【0083】
これにより、例えば、図7(B)に示すように、表300において、窓310が位置していた場合、表示される表の要素は、図7(C)に示す通りとなる。
【0084】
一方、今回検知されたのが解放状態であれば(ステップS403;Y)、項目出力部204は、ステップS400で記憶部201に蓄積された座標値が、所定の範囲内にあるか否かを判定する(ステップS404)。
【0085】
例えば、蓄積された検知位置が、すべて所定の半径を有する領域内に含まれる場合、接触位置が移動していないと判定し(ステップS404;Y)、項目出力部204は、例えば、蓄積された検知位置の平均座標値に現在表示されている表の項目を選択結果として出力する(ステップS405)。
【0086】
選択結果が得られると、項目選択処理は終了し、CPU 101は得られた選択結果に基づいて所定の処理を行う。
【0087】
なお、蓄積された座標値は、ステップS405の後、破棄されるようにすればよい(ステップS420)。
【0088】
一方、蓄積された検知位置が、全て所定の範囲内でない場合(ステップS404;N)、接触位置が移動していると判断され、CPU 101は、接触が解放される直前の接触位置の移動速度を算出し、算出した移動速度が所定の閾速度以上か否かを判定する(ステップS406)。
【0089】
例えば、接触が解放される直前の検知座標を(p1, q1)、さらにその直前の検知座標を(p2, q2)とし(これらは、記憶部201に蓄積された、最新の座標値と、その前の座標値を参照することで得られる)、検知部203が検知する時間間隔をT1秒とした場合、接触が解放される直前の接触位置の変化を示す速度ベクトルは、次式によって求められる:
((p1-p2)/T1, (q1-q2)/T1)
【0090】
上記x成分およびy成分のうち、大きい方の成分が所定の閾速度以上であれば(ステップS406;Y)、ユーザがタッチスクリーンに対して掃う操作を行なったものとして判定し、移動部205は、窓の位置を、ユーザの掃う速度に応じた速度で、大きいほうの成分の方向に移動させる(ステップS407)。
【0091】
即ち、x成分がy成分よりも大きい場合、接触が解放される直前の接触位置の移動速度の方向は、x方向に近いことを意味する。よって、窓の位置を行方向(左右方向)に(p1-p2)/T1の速度で移動させる。一方、y成分がx成分よりも大きい場合、当該移動速度の方向が、y方向に近いことを意味する。よって、窓の位置を列方向(上下方向)に(q1-q2)/T1の速度で移動させる。当該算出された接触位置のx方向、およびy方向の移動速度に、所定の係数を乗じたものを窓の移動速度としてもよい。なお、x成分及びy成分の大きさが同じであれば、行または列のいずれか所定の方向に、その方向の成分の速度で移動させる。
【0092】
次いで、表示部202は、ステップS400と同様の処理を行い、選択項目を要素として備える表のうち、窓に覆われている領域を表示する(ステップS408)。そして、CPU 101は接触が検知されたか判定し(ステップS409)、接触が検知されたと判定すると(ステップS409;Y)、接触が開始されたものとして、ステップS411に処理を進める。一方、接触が検知されない間は(S409;N)ステップS407に処理を戻す。この結果、表は次に接触が検知されるまで、表示部202によって行方向、または列方向に、掃う直前の接触移動の速度に基づいてスクロール表示される。
【0093】
また、ドラッグ操作について上述したように、窓が表の画像の境界に達した場合、移動部は、巡回的に窓の位置を移動させるようにする。
【0094】
一方、CPU 101は、接触位置の移動速度が所定の速度より遅いと判断すると(ステップS406;N)、処理をステップS400へと戻す。以上により、項目選択処理は終了する。
【0095】
(音声処理装置)
次に、上述のようにして選択された曲目によって特定される楽曲で、ギター演奏のシミュレーションを実現する音声処理装置1000について説明する。
【0096】
図9は、本実施の形態に係る音声処理装置1000の概要構成を示す模式図である。音声処理装置1000は、図9に示すように、検知部1001、音声出力部1002、などを備える。なお、音声処理装置1000は、後述するように、接触部材206(図8を参照)を備えてもよい。以下に本実施の形態に係る音声処理装置1000の各構成要素について本図を参照して説明する。
【0097】
検知部1001は、項目選択装置の検知部203と同様のものであり、タッチスクリーンに接触があるかないかを所定の時間間隔で検知する。ユーザがタッチしたタッチスクリーン平面の位置は、例えば、タッチスクリーンの左上の隅を原点としたときの座標値として表される。また、タッチスクリーンがタッチされていない場合は、タッチされていない旨を検知する。タッチスクリーン108、およびCPU 101などが協働して検知部1001として機能する。
【0098】
音声出力部1002は、検知された結果に基づいて、ユーザがタッチスクリーンに対して行なった操作が所定の操作条件を満たしているかを判断し、満たしている場合は、出力音声の出力を開始したり、停止したりする制御を行なう。音声処理部110などが、音声出力部1002として機能する。
【0099】
(動作処理)
以下に、上記構成を備える本実施の形態に係る音声処理装置の動作処理について説明する。
【0100】
メモリカセット106には、曲目など、楽曲の属性情報に対応して、当該楽曲の伴奏音声、演奏音声、当該演奏音声が出力されるべきタイミング等が記憶される。
【0101】
ユーザの指示により曲目が選択され、所定の制御ボタンが押下されるなどして、ゲーム開始の指示がなされると、CPU 101は、当該曲目に対応する伴奏音声をメモリカセット106からRAM 103に展開し、音声処理部110を介して、スピーカ112などに出力する。伴奏音声は、例えば、カラオケのガイドメロディーのようにガイド演奏音声を含んでおり、演奏音声を出力すべきタイミングをユーザに示す。ユーザはガイド演奏音声に合わせて、所定の操作条件が満たされるように(即ち、音声処理装置1000によって、有効なストローク操作であると判定されるように)、タッチスクリーンに対して操作を行なう。
【0102】
あるいは、現在の演奏音声を出力するタイミングは、視覚的にユーザに知らせるようにしてもよい。例えば、時間とともに所定の間隔で所定の方向に進むマーカーを表示し、当該マーカーの進む方向に演奏音声を出力するタイミングを示すタイミング用マーカーを表示する。ユーザは、当該移動するマーカーが、当該タイミング用マーカーに到達した時点で、所定の操作条件が満たされるように、タッチスクリーンに対して操作を行なうようにしてもよい。なお、演奏音声のそれぞれを出力するタイミングは、例えば、伴奏音声の開始される時刻を0とした場合の、当該開始時刻からの相対的な時間として表され、当該各演奏音声に対応して記憶される。
【0103】
以下に、図10を参照して、本実施の形態に係る音声処理装置1000が、ユーザによるタッチスクリーンの操作に応じて、音声を出力、あるいは停止する処理の流れについて説明する。
【0104】
検知部1001は、まず、ステップS500で、タッチスクリーンの状態を検知する。即ち、接触があれば接触があった位置を示す座標値を、そして、接触がなければ、接触がない旨を検知する。そして、CPU 101は、前回検知部1001によって検知されたのが、座標値の場合、RAM 103などに用意した当該座標値を蓄積する領域に記憶する。初期状態ではそれ以前に検知された状態は存在しないため、座標値は蓄積されずに、ステップS501に進む。
【0105】
なお、後続の処理から明らかなように、蓄積される座標値は継続して検知されたすべての座標値の軌跡、またはその一部となる。解放状態が検知されたり、あるいは、有効なストローク操作が特定された後に、蓄積された座標値は破棄され、その時点から検知座標の蓄積が再度開始される。このように蓄積された座標値は、後に出力音量などを決定する際に用いられる。
【0106】
次いで、CPU 101は、所定の件数分の蓄積された検知座標の全てが、所定の範囲内にある(例えば、所定の件数分の蓄積された検知座標の中点、または平均値から、所定の範囲内に全ての検知座標が含まれている)か否かを特定する(ステップS501)。全ての検知座標が所定の範囲内であれば(ステップS501;Y)、所定の時間、接触位置の変化が停止していることを意味する。範囲外のものがあれば(ステップS501;N)、所定の件数分の蓄積された検知座標は変化していることを意味する。ステップS501;Nの場合、処理は、続いてステップS502へ進む。
【0107】
CPU 101は、検知部1001が検知した状態が前回検知した状態から変化したか否かを判定する(ステップS502)。 即ち、前回座標値が検知された場合、今回解放状態(即ち、タッチスクリーンが接触されていない状態)が検知されるか、あるいは、前回と異なる座標値が検知されるかのいずれかの条件が満たされると、状態が変化したと判定される。また、前回、解放状態が検知された場合、今回いずれかの座標値が検知されれば、状態が変化したと判定される。CPU 101は状態が変化しない間は(ステップS502;N)再度ステップS500に戻って、状態が変化するのを待つ。なお、前回検知された状態は例えばRAM 103などに一時記憶する。
【0108】
CPU 101は、検知状態が変化したと判定すると(ステップS502;Y)、次に、今回検知されたのが解放状態なのか、座標値なのかを判定する(ステップS503)。
【0109】
今回検知されたのが解放状態ではなく、座標値の場合(ステップS503;N)、前回検知された状態は、解放状態か、あるいは別の座標値である。まず、前回検知されたのが解放状態であれば(ステップS521;Y)、CPU 101は処理をステップS500に戻す。なお、ステップS500では、前回検知された状態が座標値の場合に、当該前回検知された座標値が蓄積されるので、ステップS521において接触が開始された位置として特定された座標値は、次にステップS500を実行したときに、記憶される。
【0110】
一方、今回検知された座標値が前回検知された座標値とは異なる座標値である場合(ステップS521;N)、継続して検知された接触の位置が変化したことを意味する。このとき、CPU 101は、当該接触位置の移動ベクトル(移動方向)を算出する(ステップS531)。移動ベクトルは、ステップS501で蓄積される座標値のうち、今回検知された座標値とその1つ前の座標値(即ち、蓄積されている最新の座標値)を減算して求める。そして当該移動ベクトルと、前回ステップS531を実行して求められた接触位置の移動ベクトル(ステップS531を実行した結果は、RAM 103に一時記憶しておく)とを比較して、ほぼ逆向きであるか否かを判定する(ステップS532)。
【0111】
即ち、CPU 101は今回求めた移動ベクトルと、前回ステップS531を実行して求められた接触位置の移動ベクトルとの内積を求める。内積が負の所定値より小さければ、当該2つのベクトルがほぼ逆向きであると判定する(ステップS532;Y)。一方、当該内積が上述の所定値より大きければ、当該2つのベクトルは逆向きでないと判定する(ステップS532;N)。
【0112】
なお、接触が開始されてから、継続して検知された接触位置に初めて変化があった場合、「前回の移動方向」は存在しない。よってこの場合、移動方向は逆向きに変化していないものとして扱う(即ち、ステップS532;Nとして処理を進める)。
【0113】
上述のように、ストロークの方向が逆向きに変化したと判定された場合(即ち、S532;Yと判断された場合)、本実施の形態においては、有効な往復ストロークが行なわれたものと判定する。有効な往復ストロークが行なわれたとの判定が、演奏音声が出力されるべきタイミングの前後所定の範囲内の時刻で得られれば、音声出力部1002は、当該タイミングに対応づけて記憶される演奏音声をRAM 103から取得して、所定の方法で音量を特定し(ステップS533)、出力を開始する(ステップS534)。一方、有効な往復ストロークが行なわれたとしても、それが、演奏音声が出力されるべきタイミングから前後所定の範囲内の時刻で行なわれなかった場合、音声出力部1002は、ステップS534において、失敗を示す音声を出力する。なお、演奏音声の出力が開始されてから継続して出力され続ける時間は予め定めておく。
【0114】
有効な往復ストローク操作が行なわれたときに、音声出力部1002が出力する演奏音声の音量を決定する方法について、図11を参照して説明する。図11は、点Aから接触を開始して、点Bで折り返して逆向きのストロークを行ない、さらに点Cで折り返してストロークを行なった場合を示す。
【0115】
図11の例では、ストロークが逆向きに変わったと初めて特定されるのは、点Bの直後の接触位置(即ち点B’)が検知された時点である。したがって、点B’が検知された時点で初めて有効な往復ストローク操作が行なわれたと判定される。この場合、接触が開始された点Aから移動方向が変化する直前の点Bまでの距離に応じて音量が決定され演奏音声が出力される。同様に、点C’が検知された時点で、再度有効な往復ストローク操作が行なわれたと判定され、点B’から点Cまでの距離に応じて音量が決定され、演奏音声が出力される。
【0116】
点Aから点B、または点B’から点Cまでの距離は、直線距離であってもよいし、あるいは、軌跡の長さであってもよい。ここで、軌跡の長さとは、例えば、点Aから点B、または点B’から点Cに到達するまでに継続して検知された接触座標間の直線距離の総和である。本実施の形態では、いずれの距離を利用した場合においても、得られた距離が長いほど、大きな音量を出力する。例えば、得られた距離に所定の定数を乗じて音量を求めても、あるいは距離に応じた音量を示すテーブルを準備しておき、当該テーブルを参照して、算出された音量から、対応する音量を取得してもよい。
【0117】
なお、蓄積された検知座標がステップS535にて廃棄された後に、今回検知された接触位置が、処理がステップS500に戻った時点で、RAM 103に蓄積される。よって有効なストローク操作が行なわれた直後に接触が開始された位置は、必ず蓄積された検知座標の最も古い座標値として記憶される。そして、以降、継続して検知された座標値が続いて蓄積される。これにより、有効なストローク操作が行なわれたと判定された直前の値が、蓄積されている検知座標値のうち、最も新しい座標値として記憶される。よって、音声出力部1002は、当該蓄積されている検知座標値を参照することで、距離の算出に必要な座標値を得ることが可能となる。
【0118】
最後に、後述の処理で利用するため、往復ストローク操作が行なわれたことをRAM 103などに記憶する(例えば、RAM 103に、往復ストローク操作を行なったか否かを示す往復フラグを用意すればよい)(ステップS536)。
【0119】
本実施の形態では、後述するように、ユーザがタッチスクリーンに対して、一方向に振り掃った場合についても有効なストローク操作が行なわれたものと判定する。しかしながら、ユーザが往復ストローク操作を行い、逆向きのストロークを開始した時点でも演奏音声が出力される。したがって、往復ストローク操作後に、ユーザが振り掃う操作を行なって、再度演奏音声が出力されるのは不自然である。
【0120】
よって、本実施の形態においては、解放状態が検知された場合、その直前に往復ストローク操作が行なわれていたか否かを、往復フラグを参照して特定する(ステップS504)。そして、往復ストローク操作が行なわれたことが往復フラグに記憶されている場合(ステップS504;Y)は、往復フラグの情報を破棄(ステップS505)する。さらに、蓄積された検知座標を破棄し(ステップS506)、処理をステップS500に戻す。即ち、解放状態が検知された直前に往復ストローク操作が行なわれている場合は、演奏音声の出力は行なわずに処理はステップS500に戻る。
【0121】
一方、解放状態が検知された直前に往復ストローク操作が行なわれていなかった場合(ステップS504;N)、CPU 101は、解放状態が検知される直前の接触位置の変化の速度を算出する(ステップS507)。CPU 101は、当該変化の速度が、閾速度以上であれば(ステップS507;Y)、一方向に振り払う操作が有効に行なわれた(即ち、有効な一方向ストローク操作が行なわれた)と判定する。
【0122】
演奏音声が出力されるべきタイミングの前後所定の範囲内の時間において、ステップS507で有効な一方向ストローク操作が行なわれたと判定された場合、音声出力部1002は、当該タイミングに対応づけて記憶される演奏音声をメモリカセット106から取得する。そして、当該演奏音声の音量を所定の方法で特定し(ステップS508)、当該演奏音声を当該音量で出力する(ステップS509)。ただし、当該ストローク操作が有効であると判定された時刻が、演奏音声が出力されるべきタイミングの前後所定の範囲に含まれない場合、音声出力部1002は失敗を示す音声を出力する。
【0123】
なお、音量は、接触の検知が開始された位置から、解放状態が検知される直前の接触位置までの距離に基づいて特定される。ステップS533と同様に、当該2点間の距離は、直線距離であってもよいし、あるいは、軌跡の長さであってもよく、当該距離は、蓄積された検知座標値を取得して求められる。
【0124】
なお、ステップS501で、所定の件数分の検知位置が蓄積され、それらの検知位置が全て所定の範囲内であれば(ステップS501;Y)、CPU 101は、接触位置の変化が所定の時間停止していると判定する。接触位置の変化が所定の時間停止していると判定されたときに出力されている音声があれば、音声出力部1002は、当該出力を停止する(ステップS541)。なお、このとき、特殊なミュート音を出力するようにしてもよい。一方、接触位置の変化が所定の時間停止したときに、音声が出力されていない場合、音声出力部1002は何もせずに処理をステップS542に進める。ステップS542では、CPU 101が蓄積された検知座標をすべて破棄し、ステップS500へと処理を戻す。
【0125】
以上のようにして、音声処理装置は音声の出力、および停止を行なう。
【0126】
(他の実施の形態)
第1の実施の形態では、音声処理装置は、振り掃ったことが特定されたとき、または、タッチスクリーンに対するストロークの方向が逆向きに変化したとき、有効なストローク操作が行なわれたものとした。これにより、ユーザがゲーム装置を把持する方向や、ユーザのストロークを行なう方向などに関わらず、有効なストローク操作の判定が可能となる。
【0127】
本実施の形態では、ギターの弦に相当する判定線を導入し、ギターの音を出す仕組みをより忠実に再現する。その上で、上記実施形態と同様に、ユーザのゲーム装置を把持する方向や、ストロークを行なう方向などを吸収して、ギター演奏のシミュレーションを可能にする音声処理装置について説明する。なお、この判定線は、タッチスクリーンに表示されても、されなくともよい。
【0128】
図12に、本実施の形態に係る音声処理装置1000の機能ブロック図を示す。本実施の形態においては、上記実施の形態が備える、検知部1001、音声出力部1002に加え、さらに、調整部1003を備える。
【0129】
ただし、音声出力部1002は、上記実施の形態で説明した判定条件に代えて、継続して検知された接触位置の軌跡が所定の判定線を跨いだ場合に、有効なストローク操作が行なわれた(即ち所定の操作条件が満たされた)と判定する。
【0130】
また、調整部1003は、判定線の向きと、継続して検知された接触位置の軌跡との交差する角度が直角に近づくように判定線の向きや位置を調整する。ここで、判定線は、タッチスクリーン平面に配置されるギターの弦を模擬するためのものである。即ち、本実施の形態において、音声処理装置1000は、ユーザがタッチスクリーンに接触しながら、判定線を跨いだ場合に、有効なストローク操作が行なわれたとみなす。
【0131】
判定線の向きや位置は、例えば、グローバル座標系に基づいて、メモリカセット106に記憶され、ユーザによってゲーム開始が指示されると、RAM 103に読み込まれる。このように、メモリカセット106、RAM 103、およびCPU 101などが協働して、調整部1003として機能する。
【0132】
以下、上記のような構成を有する図12に示す音声処理装置の動作処理を、図13を参照して説明する。
【0133】
まず、ステップS601は、図10に示すステップS500と同様であり、音声処理装置1000は、座標値が検知された場合、当該座標値を蓄積する。本実施の形態においても、後続の処理から明らかなように、ステップS601で蓄積される座標値は継続して検知された座標値の軌跡、またはその一部となる。解放状態が検知されたり、あるいは、有効なストローク操作が特定された後に、蓄積された座標値は破棄され、その時点から検知座標の蓄積が再度開始される。
【0134】
次いで、蓄積された所定の件数分の検知位置が全て所定の範囲内であれば(ステップS602;Y)、接触位置の変化が所定の時間停止したことを意味する。よって、ステップS541、およびS542と同様の処理を行い、音声出力部1002は、その時点で出力されている音声があれば、当該出力を停止する(ステップS610、611)。
【0135】
ステップS602で所定の件数分の検知位置が全て所定の範囲内でなければ(ステップS602;N)CPU 101は、次いで、解放状態が検知されたか否かを判定する(ステップS603)。解放状態が検知された場合は(ステップS603;Y)、CPU 101は蓄積された検知位置を全て破棄し(ステップS604)、処理をステップS601に戻す。
【0136】
一方、今回検知されたのが、解放状態ではなく座標値であった場合(ステップS603;N)、CPU 101は、続いて、接触位置の軌跡が、判定線を跨いだか否かを判定する(ステップS620)。即ち、今回検知された座標値と、前回蓄積された座標値とを結ぶ線分と、判定線とが交差しているか否かを判定する。
【0137】
本実施の形態では、接触位置の軌跡が判定線を跨いだ場合(ステップS620;Y)、有効なストローク操作が行なわれたものと判定する。よって第1の実施の形態と同様に、演奏音声が出力されるべきタイミングの前後所定の範囲内の時間において、有効なストローク操作が行なわれたと判定された場合、音声出力部1002は、当該タイミングに対応づけて記憶される演奏音声をメモリカセット106から取得する。そして、当該取得した演奏音声の音量を所定の方法で特定し(ステップS621)、当該演奏音声の出力を開始する(ステップS622)。ただし、演奏音声が出力されるべきタイミングの前後所定の範囲に含まれない時刻において、接触位置の軌跡が判定線を跨いだと判定された場合、音声出力部1002は失敗を示す音声を出力する。なお、上記第1の実施の形態と同様に、演奏音声は所定の長さで出力される。
【0138】
なお、本実施の形態において、演奏音声の音量は、継続して検知された接触位置の軌跡のうち、前回判定線を跨いだと判定された時点の直後に検出された座標値から、今回判定線を跨いだと判定された時点の直前に検出された座標値までの距離に基づいて特定する。ここで、第1の実施の形態と同様に、当該2点間の距離は、直線距離であってもよいし、あるいは、軌跡の長さであってもよい。また、当該得られた距離の長さが大きいほど、音量が大きくなるようにすればよい。
【0139】
図14(A)を参照して、音量を算出するために特定される距離について説明する。図14(A)は、タッチスクリーン平面1081における、継続して検知された座標値の軌跡の例を示す。まず点Pでストローク操作が開始され、点Q−1から点Qが検知される間に判定線Lを跨ぐ。さらにストローク操作は継続され、点Rで折り返して、再度点S−1から点Sが検知される間に判定線を跨ぐ。
【0140】
図14(A)の例では、点PからRに向かってストロークが行なわれたとき、点Qが検知されて、はじめて判定線Lが跨がれたことが判定される。ただし、それ以前に検知座標の軌跡は判定線Lを跨いでいないので、接触開始位置である点Pを、「前回判定線を跨いだと判定された直後に検出された座標値」とし、点Pから、今回判定線を跨いだ直前に検出された座標値Q−1までの距離に基づいて音量を特定する。なお、距離は、直線距離であっても、移動距離(みちのり)であってもよい。
【0141】
続いて、点Rで折り返してストロークが行なわれたとき、点Sが検知されると、再度判定線Lが跨がれたことが特定される。この場合、「前回判定線を跨いだと判定された直後に検出された座標値」は点Qであるため、点Qから、今回判定線を跨いだ直前に検出された座標値S−1までの距離に基づいて音量を特定する。
【0142】
なお、図13に示すフロー図から明確なように、本実施の形態では、ストロークが開始された時点の座標値から蓄積される。接触位置の軌跡が判定線を跨いで、有効なストローク操作が行なわれたと判定されると、それまで蓄積された検知座標が後述のステップS624で破棄され、判定線が跨がれたあとに最初に検知された座標値から継続して検知された座標値が蓄積される。即ち、例えば、図14(A)の例のように、点Qからさらにストローク操作が続けられた場合、点Qから再度検知座標が蓄積される。
【0143】
したがって、接触が開始されて初めて判定線を跨いだ場合についても、また、判定線を跨いだ後に、接触を継続し、再度判定線を跨いだ場合についても、蓄積された座標値を参照することで、上述した距離の算出に必要な情報を取得することができる。
【0144】
なお、今回検知された接触位置と前回検知された接触位置とを結ぶ線分が判定線を跨いでいない場合(ステップS620;N)今回検知された座標値は、続いて処理がステップS601を実行したときに、継続して検知された接触位置の軌跡として蓄積される。
【0145】
次いで、調整部1003は、判定線の位置を調整する(ステップS623)。例えば、図14(A)で、ユーザが点Pから点Rに向かってストローク操作を行なった場合を例に説明する。上述したように、点Qが検知された時点で、判定線が跨がれたことが判定される。よって、調整部1003は、判定線が跨がれたと判定された時点に検知された点Qと、その直前に検知された点Q−1とを結ぶ線分と、判定線Lとが垂直に交わるように、判定線Lを図14(B)に示すように角度θだけ回転させるように、判定線の位置および方向を更新する。なお、判定線Lを回転させる中心は、判定線と検知座標の軌跡が交差する点でもよいし、所定の位置(例えばタッチスクリーンの中心)でもよい。
【0146】
なお、ゲーム装置の電源を落としたときには、電源を落とした時点での判定線の位置や方向をメモリカセット106に書き戻す。そして、次回は当該書き戻された値を、判定線の位置や方向として利用する。あるいは、判定線の位置は、電源を入れる度に、初期状態から更新されるようにしてもよい。
【0147】
このように、当該ストロークの方向と判定線とが垂直に交わるように判定線を調整することで、ユーザのゲーム装置を把持する方向やストロークを行なう方向などを吸収して、ユーザが操作しやすいように音声処理装置をカスタマイズすることが可能となる。
【0148】
以上、本発明の実施の形態について説明したが、本発明は、上述した実施の形態に限定されず、種々の変形および応用が可能である。また、上述した実施形態の各構成要素を自由に組み合わせることも可能である。
【0149】
例えば、項目選択装置、および、音声処理装置は、接触部材をさらに備えるようにし、ユーザは、タッチスクリーンに接触する際に接触部材を利用してもよい。図8(A)に示すように、接触部材206は、所謂タッチペンの変形であり、タッチスクリーンを掃う操作が容易に可能なように、ギターピックの形状をしていてもよい。また、先端には接触が検知部203や、検知部1003に検知され易いように、突起を備えていてもよい。ユーザは、接触部材206のギターピック状の部分を図8(B)に示すようにをつまんで、突起部分をタッチスクリーンに接触させる。
【0150】
図8(C)は、このような接触部材206を用いて、ユーザがタッチスクリーン平面1081に接触部材206を接触させてギター演奏のシミュレーションを行なった場合の様子を示す。点線は接触位置の変化(即ちストローク)の軌跡を示す。このとき、判定線Lは、当該ストロークの方向とほぼ垂直に交わるように調整部によって調整される。
【0151】
また、上記実施の形態に係る項目選択装置では、表がスクロールしているときに、タッチスクリーンにタッチすれば、当該接触位置に表示されている内容が接触位置に固定され、スクロールを止めることができる。しかし、接触が開始されてから、解放されるまでの間、検知された座標が全て所定の範囲内であれば、項目出力部はその座標に表示される項目を選択結果として出力するため、接触を解放した時点で、スクロールを止めるばかりでなく、接触した座標値に表示される項目が選択されてしまう。
【0152】
したがって、例えば、接触が開始されてから、解放されるまでの間、検知された座標が全て所定の範囲内であり、且つ、接触が開始されてから、解放されるまでの時間が所定の閾時間以内の場合についてのみ、項目出力部がその座標に表示される項目を選択結果として出力するようにしてもよい。これにより、解放されるまで所定の閾時間以上、同じ位置に接触された場合については、選択はされず、ユーザが接触した際の窓の位置が表示され続ける。
【0153】
また、上記実施の形態において、項目選択装置の移動部は、ユーザがタッチスクリーンに対して行なった掃う操作の方向に応じて、上下方向、または左右方向に制限して、窓の位置を移動した。そうではなく、接触を解放する直前の接触位置の変化の速度と逆の方向に窓を移動させるようにしてもよい。これにより、上下方向、左右方向以外の方向にも表がスクロールして表示される。
【0154】
また、上記実施の形態において、項目選択装置の移動部は、窓の位置が表の端に達すると、当該領域の位置を巡回的に移動させるようにした。そうではなく、逆の向きに移動させるようにしてもよい。
【0155】
例えば、表が、原点(0,0)、(W,0)、(0,L)、(W,L)に囲まれる領域に表されるときに、窓の位置(x,y)が当該領域内に含まれない場合、X方向にWより大きい分については、Wから減算した値をX方向の座標値とすればよい。あるいは、X方向に0より小さい分については、0に加算した値をX方向の座標値とすればよい。一方、Y方向にLより大きい分については、Lから減算し、また、Y方向に0より小さい分については、0に加算した値をY方向の座標値とすればよい。
【0156】
また、上記実施の形態において、項目選択装置の移動部は、解放状態が検出される直前の接触位置の変化の速度を用いて、ステップS407で窓の位置を移動した。そうではなく、ステップS407では、算出した解放直前の接触位置の速度に所定の係数を乗じて、序々に窓の位置の移動速度を減速させてもよい。
【0157】
また、他の実施の形態において、音声処理装置の調整部は、過去のストローク操作に基づいて、判定線を調整するようにしてもよい。例えば、ストローク操作時に、判定線と交差したと特定された時点の接触位置から、その直前に検知された接触位置を減算して正規化した方向ベクトル(以降、交差ベクトルと呼ぶ)を求める。そして当該交差ベクトルを加算ベクトルに加算して正規化することで新たに得られた加算ベクトルを一時記憶する。なお、初期状態では、加算ベクトルは値を持たないため、算出した交差ベクトルが加算ベクトルとなる。そして、当該加算ベクトルと垂直に交わるように、記憶される判定線の位置および向きを更新する。
【0158】
例えば、図14(A)に示すストロークが行なわれたとき、図14(C)に示すように、交差ベクトルは、点Q−1からQへ伸びるベクトルと、点S−1から点Sへと伸びるベクトルとなり、加算ベクトルはベクトルAとなる。
【0159】
以降、同様に、判定線と交差した時点で、交差ベクトルを求め、加算ベクトルに加算して正規化する。ただし、加算する際に、交差ベクトルと、加算ベクトルの方向を揃える必要があるため、当該2つのベクトルの内積を求める。内積した結果、負の所定値より小さい値が得られた場合は、当該2つの方向ベクトルがほぼ逆向きであるとみなす。よって、今回求められた交差ベクトルにマイナスを乗じて、方向を揃えてから加算ベクトルに加算する。一方、内積が当該所定値よりも大きい場合は、そのまま、交差ベクトルを加算ベクトルに加算すればよい。そして、当該加算ベクトルと垂直に交わるように、判定線の位置および向きを更新する。
【0160】
このように、ストローク操作における交差ベクトルを、過去の交差ベクトルの和である加算ベクトルに加えていくことで、より正確に、ユーザのストロークの「癖」を抽出することが可能となる。
【0161】
あるいは、上記交差ベクトルに代えて、判定線と交差するストロークの開始位置から終点までの方向ベクトルを用いてもよい。ここで、ストロークの終点とは、振り掃った場合は、接触を解放する直前の位置である。一方、往復ストローク操作を行なった場合は、ストロークの方向が逆向きになる直前の位置である。
【0162】
また、上記実施の形態に係る音声処理装置において、音声出力部は、接触が開始された時点から、所定の操作条件が満たされるまでの距離などに基づいて音量を決定した。そうではなく、継続して検知された接触位置の軌跡のうち、任意の継続して検知された2点の接触位置の変化の速度の代表値(例えば平均速度)に基づいて音量を決定してもよい。即ち、速度が速いほど、音量を大きくしてもよい。
【0163】
また、上記実施の形態に係る音声処理装置において、音声出力部が演奏音声を出力し続ける時間は予め定められるものとした。そうではなく、継続して検知された接触位置の軌跡のうち、任意の継続して検知された2点の接触位置の変化の速度の代表値(例えば平均速度)に基づいて継続して出力される演奏音声の長さを決定してもよい。即ち、速度が速いほど、演奏音声が長い時間出力されるようにしてもよい。
【0164】
また、音声出力部は、操作条件が満たされてから、所定の時間が経過した後に音声の出力を開始するようにしてもよい。例えば、広い場所で演奏を行なった場合、演奏者から遠くにいる人には、操作が行なわれてからいくらかの遅延時間が経過した後に音声が届く。よって、このように遅延時間を挿入することで、携帯式のゲーム機においても、広い場所で演奏しているかの効果を提供することが可能となる。
【0165】
また、この場合、音声出力部は、解放が検知されると当該遅延時間をデフォルト値に戻し、操作条件が続けて満たされる毎に短くしてもよい。通常、一度のみストロークを行なった場合に比べ、継続してストロークを行なった場合の方が、遅延が感じ難くなるものと考えられる。したがって、初回の遅延を強調するために、継続して操作条件が満たされると、遅延時間を前回に操作条件が満たされた場合と比較して短くすることで、序々に短くするようにしてもよい。
【0166】
また、上記実施の形態に係る項目選択装置、および音声処理装置において、検知部は、タッチスクリーンのほか、トラックパッドや、タブレットなどの、接触の有無、および、接触位置を検知するハードウェアであってもよい。
【0167】
また、上記実施の形態に係る項目選択装置や音声処理装置は、ゲーム装置の他にも、タッチスクリーンを備えるその他端末装置に実現してもよい。
【図面の簡単な説明】
【0168】
【図1】一実施形態に係る項目選択装置が実現される典型的なゲーム装置の概要構成を示す模式図である。
【図2】一実施形態に係る項目選択装置が実現される典型的なゲーム装置の外観を示す図である。
【図3】一実施形態に係る項目選択装置の機能ブロック図である。
【図4】(A)は、一実施形態に係る項目選択装置における表と窓、およびそれらの関係を示す図であり、(B)は、窓に覆われた表の要素がタッチスクリーンに表示される様子を示した図である。
【図5】一実施形態に係る項目選択装置の処理動作を説明するフロー図である。
【図6】(A)および(B)は、タッチスクリーンの接触位置の移動に対する窓の移動方向を説明する図であり、(C)および(D)は、接触位置の移動に対して、表示される表の領域の変化の様子を示す図である。
【図7】(A)は、窓の位置が、表の領域をはみ出したときに、窓を再配置する様子を示し、(B)および(C)は、窓が表の端に達したときに、表の要素が巡回して表示される様子を示す図である。
【図8】(A)は、ピック形状のタッチペンの例を示す図であり、(B)はユーザがピック形状のタッチペンを持った様子を示す図であり、(C)は、このようなタッチペンを用いて、ユーザがタッチスクリーンでギター演奏のシミュレーションを行なっている様子を示す図である。
【図9】一実施形態に係る音声処理装置の機能ブロック図である。
【図10】一実施形態に係る音声処理装置の処理動作を説明するフロー図である。
【図11】接触の位置の軌跡の例を示す図である。
【図12】他の実施の形態に係る音声処理装置の機能ブロック図である。
【図13】他の実施の形態に係る音声処理装置の処理動作を説明するフロー図である。
【図14】(A)は接触の位置の軌跡の例を示し、(B)は判定線の位置および向きを調整する様子を示し、(C)は、判定線を調整する際に、ストロークの方向を求める方法を示す図である。
【符号の説明】
【0169】
100 ゲーム装置
101 CPU
102 ROM
103 RAM
104 インターフェイス
105 入力部
106 メモリカセット
107 画像処理部
108 タッチスクリーン
109 NIC
110 音声処理部
111 マイク
112 スピーカ
200 項目選択装置
201 記憶部
202 表示部
203 検知部
204 項目出力部
205 移動部
206 接触部材
1000 音声処理装置
1001 検知部
1002 音声出力部
1003 調整部

【特許請求の範囲】
【請求項1】
選択対象となる項目を要素とする表と、当該表の一部を覆う領域の位置と、を記憶する記憶部、
当該表のうち、前記記憶部に位置が記憶される領域に含まれる要素を表示する表示部、
ユーザが前記表示部の表面に接触していればその位置を、当該表面を解放していれば、その旨を検知する検知部、
当該ユーザが当該表面に接触して以降、当該表面を解放するまでに検知された位置が所定の範囲内にある場合、当該検知された位置に表示されている要素の項目を選択結果として出力する項目出力部、
当該ユーザが当該表面に接触して以降、当該表面を解放するまでに検知された位置が所定の範囲内でない場合、当該表面に接触する位置の変化を表す速度のうち、当該表面を解放する直前の速度を取得し、当該速度に基づいて、前記記憶部に記憶される領域の位置を移動する移動部、
を備えることを特徴とする項目選択装置。
【請求項2】
請求項1に記載の項目選択装置であって、
当該ユーザがつまんで当該表面に接触するための接触部材をさらに備え、
当該接触部材は、ピック形状、もしくは、ピック形状の先端に突起を配置した形状である
ことを特徴とする項目選択装置。
【請求項3】
請求項1または2に記載の項目選択装置であって、
前記移動部は、当該領域の位置を、当該表の行もしくは列のいずれか一方に沿って移動させ、当該領域の位置を移動させる向きは、前記取得された速度の向きに最も近い向きであり、当該領域の位置を移動させる速さは、前記取得された速度が大きくなるにつれて増加するように移動させる、
ことを特徴とする項目選択装置。
【請求項4】
請求項3に記載の項目選択装置であって、
前記移動部は、当該領域の位置が当該表の端に達すると、当該領域の位置を巡回的に移動させる、
ことを特徴とする項目選択装置。
【請求項5】
請求項3に記載の項目選択装置であって、
前記移動部は、当該領域の位置が当該表の端に達すると、当該領域の位置を移動させる向きを逆にする、
ことを特徴とする項目選択装置。
【請求項6】
請求項1から5のいずれか1項に記載の項目選択装置であって、
前記移動部は、当該ユーザが当該表面に接触を開始した位置に表示されていた要素が、当該ユーザが当該表面に接触している間、当該接触している位置に表示されるように、当該領域の位置を移動する
ことを特徴とする項目選択装置。
【請求項7】
請求項6に記載の項目選択装置であって、
前記項目出力部は、当該ユーザが当該表面に接触して以降、当該表面を解放するまでに検知された位置が所定の範囲内にあり、さらに、当該接触から当該解放までの時間が所定の閾時間以下である場合、当該検知された位置に表示されている要素の項目を選択結果として出力する
ことを特徴とする項目選択装置。
【請求項8】
記憶部、表示部、検知部、項目出力部、移動部、を備える項目選択装置による項目を選択する項目選択方法であって、
前記記憶部は、選択対象となる項目を要素とする表と、当該表の一部を覆う領域の位置と、を記憶し、
前記表示部が、当該表のうち、前記記憶部に位置が記憶される領域に含まれる要素を表示する表示工程、
前記検知部が、ユーザが前記表示部の表面に接触していればその位置を、当該表面を解放していれば、その旨を検知する検知工程、
前記項目出力部が、当該ユーザが当該表面に接触して以降、当該表面を解放するまでに検知された位置が所定の範囲内にある場合、当該検知された位置に表示されている要素の項目を選択結果として出力する出力工程、
前記移動部が、当該ユーザが当該表面に接触して以降、当該表面を解放するまでに検知された位置が所定の範囲内でない場合、当該表面に接触する位置の変化を表す速度のうち、当該表面を解放する直前の速度を取得し、当該速度に基づいて、前記記憶部に記憶される領域の位置を移動する移動工程、
を備えることを特徴とする項目選択方法。
【請求項9】
コンピュータを、
選択対象となる項目を要素とする表と、当該表の一部を覆う領域の位置と、を記憶する記憶部、
当該表のうち、前記記憶部に位置が記憶される領域に含まれる要素を表示する表示部、
ユーザが前記表示部の表面に接触していればその位置を、当該表面を解放していれば、その旨を検知する検知部、
当該ユーザが当該表面に接触して以降、当該表面を解放するまでに検知された位置が所定の範囲内にある場合、当該検知された位置に表示されている要素の項目を選択結果として出力する項目出力部、
当該ユーザが当該表面に接触して以降、当該表面を解放するまでに検知された位置が所定の範囲内でない場合、当該表面に接触する位置の変化を表す速度のうち、当該表面を解放する直前の速度を取得し、当該速度に基づいて、前記記憶部に記憶される領域の位置を移動する移動部、
として機能させることを特徴とするプログラム。

【図1】
image rotate

【図2】
image rotate

【図3】
image rotate

【図4】
image rotate

【図5】
image rotate

【図6】
image rotate

【図7】
image rotate

【図8】
image rotate

【図9】
image rotate

【図10】
image rotate

【図11】
image rotate

【図12】
image rotate

【図13】
image rotate

【図14】
image rotate


【公開番号】特開2009−301092(P2009−301092A)
【公開日】平成21年12月24日(2009.12.24)
【国際特許分類】
【出願番号】特願2008−151567(P2008−151567)
【出願日】平成20年6月10日(2008.6.10)
【出願人】(506113602)株式会社コナミデジタルエンタテインメント (1,441)
【Fターム(参考)】